本项目将 timm/resnetv2_101x3_bit.goog_in21k_ft_in1k 图片分类模型适配到华为昇腾 NPU(Ascend910B)上运行。
该模型为 BiT (Big Transfer) 系列中的 ResNetV2-101x3,使用 GroupNorm 替代 BatchNorm,在 ImageNet-21k 上预训练并在 ImageNet-1k 上微调,输出 1000 类 logits。
timm.create_model(pretrained=False) + 本地权重加载python inference.py运行结果:
[1, 3, 448, 448][1, 1000]python eval_accuracy.py对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.003749 |
| mean_abs_error | 0.000666 |
| relative_error | 0.0532% |
| cosine_similarity | 1.000000 |
| threshold | 1.0% |
| 结果 | PASS |
python benchmark.pyNPU 性能统计(10 次迭代,batch=1):
| 指标 | 数值 |
|---|---|
| Average | 32.07 ms |
| Min | 32.01 ms |
| Max | 32.16 ms |
| P50 | 32.05 ms |
| P90 | 32.16 ms |
| P95 | 32.16 ms |
| Throughput | 31.19 images/sec |
本工程未在完整 ImageNet-1k 验证集上运行,仅提供 CPU-NPU smoke 一致性验证。
如需完整精度评测,请使用 timm 提供的 validate.py 并在 ImageNet-1k 验证集上运行。
见 screenshots/self_verification.png。
logs/env_check.log — 环境检查logs/inference.log — 推理结果logs/accuracy.log — CPU-NPU 精度一致性logs/benchmark.log — 性能基准测试snapshot_download 获取。timm.create_model(..., pretrained=True),必须通过本地路径加载权重。timm.data.resolve_model_data_config 获取正确的 transform 配置。.gitignore 已排除所有权重文件(.bin、.safetensors、.pth、.pt、.ckpt、.onnx)。#NPU