g
gyccc/timm-resnet18.a1_in1k-NPU
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

timm/resnet18.a1_in1k on Ascend NPU

1. 简介

本项目将 timm/resnet18.a1_in1k 图片分类模型适配为可在单卡昇腾 NPU(Ascend910B)上运行的工程。

  • 模型来源:ModelScope timm/resnet18.a1_in1k
  • 模型结构:ResNet-18
  • 分类数:1000(ImageNet-1k)
  • 输入尺寸:3 x 224 x 224
  • 适配方式:timm.create_model(pretrained=False) + ModelScope 本地权重加载
  • 预处理:timm.data.resolve_model_data_config + timm.data.create_transform

注意:该模型无官方 id2label 文件,推理结果使用 class_0 ~ class_999 作为通用标签,已在 logs/prediction.txt 和本 README 中说明。

2. 验证环境

项目版本/型号
NPUAscend910B4
CANN8.5.1
PyTorch2.9.0+cpu
torch_npu可用
timm最新
权重来源ModelScope 本地缓存

详细环境信息见 logs/env_check.log。

3. 推理运行

pip install -r requirements.txt
python inference.py

推理脚本会自动从 ModelScope 本地缓存加载权重,在 npu:0 上执行前向推理,并将 Top-5 结果写入 logs/inference.log。

model: timm/resnet18.a1_in1k
weights: /opt/atomgit/.cache/modelscope/hub/models/timm/resnet18___a1_in1k/model.safetensors
device: npu:0
input_shape: [1, 3, 224, 224]
output_shape: [1, 1000]
missing_keys: 0
unexpected_keys: 0

Top-5:
  1. class_291 (idx=291, prob=0.999887)
  2. class_288 (idx=288, prob=0.000028)
  3. class_290 (idx=290, prob=0.000013)
  4. class_289 (idx=289, prob=0.000009)
  5. class_292 (idx=292, prob=0.000007)

4. 精度验证

python eval_accuracy.py

对单张测试图片进行 CPU 与 NPU 一致性验证:

指标数值
max_abs_error0.007377
mean_abs_error0.002003
relative_error0.0182%
cosine_similarity1.000000
threshold1.0%
结果PASS
  • CPU Top-1 与 NPU Top-1 类别一致
  • CPU Top-5 与 NPU Top-5 类别一致

5. 性能参考

python benchmark.py

在 Ascend910B4 单卡、batch_size=1、预热 2 次、正式 10 次条件下的参考数据:

指标数值
平均延迟6.42 ms
最小延迟4.68 ms
最大延迟9.93 ms
P506.34 ms
P909.93 ms
P959.93 ms
吞吐量155.80 images/sec

注:以上数据为当前环境单次运行参考值,实际性能受驱动版本、CPU 负载、NPU 温度等因素影响。

6. 精度评测

当前工程仅提供 CPU/NPU smoke consistency 验证,未在完整 ImageNet-1k 验证集上跑官方 Top-1/Top-5 精度。如需完整精度评测,请自行准备 ImageNet 验证集并扩展 eval_accuracy.py。

7. 自验证截图

自验证关键信息汇总见 screenshots/self_verification.txt,可视化汇总见 screenshots/self_verification.png。

8. 日志文件

文件内容
logs/env_check.logNPU 环境信息
logs/inference.logNPU 推理 Top-5 结果
logs/prediction.txt预测结果纯文本(含无 id2label 说明)
logs/accuracy.logCPU vs NPU 一致性对比
logs/benchmark.log性能基准测试数据
logs/paths.txtModelScope 本地路径记录

9. 注意事项

  1. 权重加载:严禁使用 timm.create_model(..., pretrained=True),所有脚本均通过 model_utils.load_model() 从 ModelScope 本地缓存加载权重。
  2. 无 id2label:该模型未提供 id2label.json 或 labels.txt,输出标签统一为 class_0 ~ class_999。
  3. 不提交权重:.gitignore 已排除 *.bin、*.safetensors、*.pth、*.pt、*.ckpt、*.onnx 等权重文件。
  4. 编译产物清理:fusion_result.json 与 kernel_meta/ 已删除并加入 .gitignore。
  5. 单卡推理:本工程仅验证单卡 npu:0 推理,未涉及分布式或多卡并行。

10. 标签

#NPU #Ascend #timm #ResNet #image-classification