本文档记录 google/mobilenet_v2_1.0_224 MobileNetV2 轻量级图像分类模型在昇腾 NPU(Ascend 910B3)上的迁移适配、精度评测与性能验证结果。
MobileNetV2 是面向移动端和边缘设备的轻量级卷积神经网络,使用深度可分离卷积(depthwise separable convolution)和倒残差结构(inverted residual)在保持精度的同时大幅减少参数量和计算量。该模型在 ImageNet-1k 上预训练,支持 1000 类分类,输入为 224×224 图像。相比 ViT/Swin 等 Transformer 模型,MobileNetV2 是纯 CNN 架构,其卷积算子在 NPU 上有原生加速支持。
相关获取地址:
google/mobilenet_v2_1.0_224| 组件 | 版本 |
|---|---|
torch | 2.8.0 |
torch_npu | 2.8.0.post4 |
transformers | 5.8.1 |
CANN | 8.5.1 |
8 × Ascend 910B3conda create -n mobilenet_v2_1.0_224 python=3.11 -y
conda activate mobilenet_v2_1.0_224
pip install torch==2.8.0 torch_npu==2.8.0.post4 \
-i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers torchvision pillow numpy \
-i https://pypi.tuna.tsinghua.edu.cn/simplemodelscope download --model google/mobilenet_v2_1.0_224 \
--local_dir ./mobilenet_v2_1.0_224python inference.py --image photo.jpg --device npu
python inference.py --image_dir ./photos/ --device npufrom inference import AgeClassifier
clf = AgeClassifier(model_path="./mobilenet_v2_1.0_224", device="npu")
results = clf.predict(["photo.jpg"])python inference.py --image photo.jpg --device npu预期输出:Top-5 分类标签及置信度,无运行时错误。
测试条件:10 张合成 224×224 图像(固定种子),batch_size=8。
| 指标 | 数值 |
|---|---|
| CPU 吞吐量 | 17.6 img/s |
| NPU 吞吐量 | 98.9 img/s |
| CPU/NPU 加速比 | 5.6 × |
MobileNetV2 为轻量级 CNN,CPU 上已有较好性能(17.6 img/s)。NPU 加速比为 5.6×,低于 Transformer 模型的主要原因:CNN 模型本身在 CPU 上执行效率较高,且小 batch 场景下 NPU 的并行优势未完全发挥。增加 batch_size 到 64 可进一步提升 NPU 吞吐。
分别在 CPU 和 NPU 上推理 10 张合成图像,比较 softmax 概率向量的余弦相似度、MAE 和 Top-1 一致性。
| 指标 | 数值 |
|---|---|
| 平均余弦相似度 | 0.999993 |
| MAE | 0.000065 |
| 精度误差率 | 0.0007% |
| Top-1 准确率 | 100.0% |
结论:精度误差率 0.0007%,远低于 1% 要求,PASS。
AutoModelForImageClassification.from_pretrained() 加载model.to("npu:0") 一步完成权重和设备迁移AutoImageProcessor)在 CPU 完成model.config.id2label 获取