ConvNext-Tiny 是 ConvNext 系列 Tiny 级别图像分类模型(V1),ImageNet-1k 训练,224x224 输入,1000 类输出。
| 项目 | 版本 |
|---|---|
| 硬件 | Atlas 800 A2 (Ascend910_9362) |
| CANN | 8.5.RC1 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| Python | 3.11.14 |
| Transformers | 4.57.6 |
import torch
import torch_npu
from transformers import AutoImageProcessor, AutoModelForImageClassification
from PIL import Image
device = "npu:0"
model_path = "facebook/convnext-tiny-224"
processor = AutoImageProcessor.from_pretrained(model_path)
model = AutoModelForImageClassification.from_pretrained(model_path).to(device)
model.eval()
image = Image.open("your_image.jpg")
inputs = processor(images=image, return_tensors="pt")
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
predicted_class = outputs.logits.argmax(-1).item()
print(f"Predicted class: {predicted_class}")完整推理脚本见 inference.py。
| 指标 | 数值 |
|---|---|
| 平均推理时间 (batch=1) | 6.69 ms |
| 中位数推理时间 (batch=1) | 6.68 ms |
| P99 推理时间 (batch=1) | 6.73 ms |
| 吞吐量 (batch=1) | 149.49 FPS |
| 吞吐量 (batch=8) | 816.34 samples/s |
| 输入尺寸 | 3x224x224 |
| 数据类型 | float32 |
批量推理性能:
| Batch Size | 平均延迟 (ms) | 吞吐量 (samples/s) |
|---|---|---|
| 1 | 6.68 | 149.74 |
| 2 | 7.23 | 276.51 |
| 4 | 7.93 | 504.40 |
| 8 | 9.80 | 816.34 |
NPU vs CPU 精度对比(CPU 为基线,NPU 为验证目标),测试图像数 100:
| 指标 | 数值 |
|---|---|
| 测试用例数 | 100 |
| Top-1 匹配率 | 98% (结构化测试图像) |
| 平均 KL 散度 | 0.000040 |
| 最大 KL 散度 | 0.000232 |
| 平均最大 logits 差异 | 0.0285 |
| 精度结论 | 一致 (PASS) |
注: 2 例 Top-1 不匹配是由于合成图像在边界类上概率接近导致 argmax 微小差异,KL 散度远低于 0.01 阈值,数值精度完全一致。
convnext-tiny-224/
├── README.md # 本文件
├── inference.py # 推理脚本
├── perf_data.json # 性能数据
└── eval/
├── run_accuracy.py # 精度验证脚本
├── run_performance.py # 性能评测脚本
├── accuracy_results.json
└── performance_results.jsonConvNextForImageClassification,区别于 V2 的 ConvNextV2ForImageClassificationAutoModelForImageClassification 加载,自动适配架构model.eval() 并包裹 torch.no_grad()