#NPU #Ascend #MobileViT #ImageClassification
MobileViT 是 Apple 提出的轻量级视觉 Transformer,专为移动设备设计。它将标准卷积与 Vision Transformer 的优势相结合,在保持较低参数量和计算量的同时,达到与大型 CNN 和 ViT 模型相当的精度。
图片识别 / image-classification
| 项目 | 内容 |
|---|---|
| 模型名称 | apple/mobilevit-small |
| 模型链接 | https://ai.gitcode.com/hf_mirrors/apple/mobilevit-small |
| 运行框架 | Transformers + torch_npu |
| 硬件 | 单卡 Ascend NPU |
| 输入尺寸 | 3 x 256 x 256(processor 自动处理) |
| 输出类别 | 1000(ImageNet-1k) |
| 包 | 版本 |
|---|---|
| Python | 3.11.14 |
| torch | 2.9.0+cpu |
| torchvision | 0.24.0 |
| torch_npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| Pillow | 12.2.0 |
| requests | 2.33.1 |
| numpy | 1.26.4 |
pip install -r requirements.txt当前环境已预装
torch和torch_npu,requirements.txt中未强制覆盖安装,避免破坏现有环境。
模型权重通过 Transformers from_pretrained 自动下载,默认镜像端点为:
HF_ENDPOINT=https://hf-mirror.com若您的环境可直接访问 Hugging Face,可移除或修改该环境变量。
python inference.py脚本会自动:
AutoImageProcessor 和 AutoModelForImageClassification;npu:0;assets/test.jpg 执行推理;logs/inference.log 和 logs/prediction.txt。注意:
assets/test.jpg为占位图(PIL 生成的纯色 RGB 图片)。因当前环境无法直连外部网络下载真实测试图片,故使用占位图完成推理流程验证。若需真实图片分类效果,请替换为真实图像后重新运行。
| Rank | Label | Confidence |
|---|---|---|
| 1 | kite | 15.86% |
| 2 | black stork, Ciconia nigra | 6.99% |
| 3 | bald eagle, American eagle, Haliaeetus leucocephalus | 2.84% |
| 4 | parachute, chute | 1.93% |
| 5 | bee eater | 1.71% |
inference.pyMODEL_NAME = "apple/mobilevit-small"IMAGE_PATH = "assets/test.jpg"DEVICE = "npu:0"logs/inference.log。python eval_accuracy.pyassets/test.jpg;AutoImageProcessor);max_abs_diff、mean_abs_diff、prob_max_diff、Top-1 一致性;prob_max_diff < 1% 且 Top-1 一致即为通过。| 指标 | 数值 |
|---|---|
| max_abs_diff (logits) | 1.66e-02 |
| mean_abs_diff (logits) | 4.72e-03 |
| prob_max_diff | 0.0951% |
| CPU Top-1 | class 21 |
| NPU Top-1 | class 21 |
| Top-1 一致 | True |
| 结论 | PASS |
logits 存在微小差异,但概率差异 < 1% 且 Top-1 完全一致,属于 CPU/NPU 浮点实现差异,不影响实际部署精度。
python benchmark.pynpu:0;torch.npu.synchronize() 确保计时准确;images/s。| 指标 | 数值 |
|---|---|
| 预热次数 | 5 |
| 正式迭代 | 20 |
| 平均延迟 | 16.401 ms |
| 最小延迟 | 16.013 ms |
| 最大延迟 | 18.266 ms |
| 吞吐量 | 60.97 images/s |
| 文件 | 说明 |
|---|---|
logs/env_check.log | 环境检查:NPU 信息、Python 版本、依赖版本 |
logs/inference.log | inference.py 完整运行日志 |
logs/prediction.txt | 预测标签和置信度(Top-5) |
logs/accuracy.log | eval_accuracy.py 精度对比日志 |
logs/benchmark.log | benchmark.py 性能测试日志 |
A: 脚本已内置 HF_ENDPOINT=https://hf-mirror.com。若仍失败,请检查网络连通性,或手动下载模型到本地后修改 MODEL_NAME 为本地路径。
A: 脚本会明确报错 NPU is NOT available. Aborting inference.,请检查:
npu-smi info 是否正常;torch_npu 是否正确安装;A: 当前使用的是占位图(纯色 RGB),并非真实物体图像,因此模型输出置信度偏低且分布较散。替换为真实图片后即可获得正常分类结果。
A: 若遇到概率差异 > 1%,请检查:
AutoImageProcessor 配置;eval() 模式;apple-mobilevit-small-NPU/
├── README.md
├── requirements.txt
├── inference.py
├── eval_accuracy.py
├── benchmark.py
├── assets/
│ └── test.jpg # 占位测试图(可替换为真实图片)
├── logs/
│ ├── env_check.log
│ ├── inference.log
│ ├── prediction.txt
│ ├── accuracy.log
│ └── benchmark.log
├── scripts/ # 可放置辅助脚本
└── screenshots/ # 可放置截图| 检查项 | 状态 |
|---|---|
| 工程目录创建 | 已完成 |
| 环境检查 | 已完成 |
| requirements.txt | 已完成 |
| 测试图片准备 | 已完成(占位图) |
| inference.py | 已完成 |
| eval_accuracy.py | 已完成 |
| benchmark.py | 已完成 |
| NPU 推理运行 | 已完成 |
| 精度验证 | 已完成(PASS) |
| 性能测试 | 已完成 |
| README.md | 已完成 |
本工程为昇腾模型适配比赛提交项目,基于单卡 Ascend910B4 完成验证。