模型名称: microsoft/resnet-50
架构: ResNetForImageClassification
参数量: 25.6M
预训练数据集: ImageNet-1k
输入尺寸: 224 x 224
类别数: 1000
ResNet-50 是 ResNet 系列中最具代表性的模型之一,由 Microsoft Research 提出。该模型包含 50 个卷积层,采用 Bottleneck 残差块设计,通过 1x1 卷积对通道数进行降维和升维,在控制计算量的同时大幅提升了网络容量和表达能力。ResNet 提出的残差学习框架从根本上解决了极深网络的退化问题,是计算机视觉领域里程碑式的工作。该模型在 ImageNet-1k 数据集上预训练,适用于 1000 类图像分类任务。本仓库基于昇腾 Ascend 910B4 NPU 完成模型推理部署与精度验证。
| 组件 | 规格 |
|---|---|
| NPU 加速卡 | Ascend 910B4 |
| 算力单元 | 昇腾 AI 处理器 |
| 软件 | 版本 |
|---|---|
| CANN | 8.5.1 |
| Python | 3.11.14 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| transformers | - |
| Pillow | - |
| NumPy | - |
# 从 HuggingFace 下载模型权重和配置
git lfs install
git clone https://huggingface.co/microsoft/resnet-50 ./modelpip install torch torch_npu transformers pillow requests numpy使用预置的推理脚本,支持从图片文件或 URL 进行推理:
# 使用本地图片
python inference.py --model_path ./model --image /path/to/image.jpg
# 使用网络图片 URL
python inference.py --model_path ./model --image https://example.com/image.jpg
# 显示 Top-10 预测结果
python inference.py --model_path ./model --image /path/to/image.jpg --top_k 10python accuracy_eval.py ./model accuracy_report.jsonpython perf_benchmark.py ./model 100 perf_report.json使用 50 张合成测试图片(224x224,随机像素),对比 NPU(Ascend 910B4)与 CPU(x86)的输出差异。
| 指标 | 结果 |
|---|---|
| 测试样本数 | 50 |
| Top-1 预测匹配率 | 100% (50/50) |
| 平均最大相对误差 (AvgMaxRelErr) | 0.107% |
| 最大相对误差 (MaxRelErr) | 0.231% |
| 平均概率余弦相似度 (AvgCosineSim) | 0.999999 |
| 总体状态 | PASS |
| 样本 | Top-1 匹配 | CPU Top-1 | NPU Top-1 | 最大相对误差 | 余弦相似度 |
|---|---|---|---|---|---|
| 0 | PASS | 21 | 21 | 0.122% | 0.999997 |
| 1 | PASS | 21 | 21 | 0.158% | 0.999999 |
| 2 | PASS | 107 | 107 | 0.153% | 0.999999 |
| 3 | PASS | 21 | 21 | 0.104% | 0.999999 |
| 4 | PASS | 21 | 21 | 0.139% | 0.999997 |
| 5 | PASS | 21 | 21 | 0.092% | 0.999999 |
| 6 | PASS | 21 | 21 | 0.082% | 0.999999 |
| 7 | PASS | 21 | 21 | 0.131% | 0.999999 |
| 8 | PASS | 21 | 21 | 0.091% | 0.999999 |
| 9 | PASS | 21 | 21 | 0.231% | 0.999998 |
| 10 | PASS | 21 | 21 | 0.101% | 0.999999 |
| 11 | PASS | 21 | 21 | 0.102% | 0.999998 |
| 12 | PASS | 21 | 21 | 0.118% | 0.999999 |
| 13 | PASS | 21 | 21 | 0.140% | 0.999998 |
| 14 | PASS | 21 | 21 | 0.114% | 0.999999 |
| 15 | PASS | 21 | 21 | 0.099% | 0.999999 |
| 16 | PASS | 21 | 21 | 0.133% | 0.999999 |
| 17 | PASS | 21 | 21 | 0.108% | 0.999999 |
| 18 | PASS | 21 | 21 | 0.084% | 0.999999 |
| 19 | PASS | 21 | 21 | 0.100% | 0.999999 |
| 20 | PASS | 21 | 21 | 0.089% | 0.999999 |
| 21 | PASS | 21 | 21 | 0.108% | 1.000000 |
| 22 | PASS | 21 | 21 | 0.071% | 0.999999 |
| 23 | PASS | 21 | 21 | 0.078% | 0.999999 |
| 24 | PASS | 21 | 21 | 0.079% | 1.000000 |
| 25 | PASS | 21 | 21 | 0.110% | 0.999999 |
| 26 | PASS | 21 | 21 | 0.082% | 0.999999 |
| 27 | PASS | 21 | 21 | 0.095% | 0.999999 |
| 28 | PASS | 21 | 21 | 0.076% | 0.999999 |
| 29 | PASS | 21 | 21 | 0.115% | 0.999998 |
| 30 | PASS | 21 | 21 | 0.130% | 0.999999 |
| 31 | PASS | 21 | 21 | 0.093% | 0.999999 |
| 32 | PASS | 21 | 21 | 0.091% | 1.000000 |
| 33 | PASS | 21 | 21 | 0.088% | 0.999999 |
| 34 | PASS | 21 | 21 | 0.088% | 1.000000 |
| 35 | PASS | 21 | 21 | 0.073% | 1.000000 |
| 36 | PASS | 21 | 21 | 0.112% | 0.999999 |
| 37 | PASS | 21 | 21 | 0.076% | 0.999999 |
| 38 | PASS | 21 | 21 | 0.080% | 1.000000 |
| 39 | PASS | 21 | 21 | 0.063% | 1.000000 |
| 40 | PASS | 21 | 21 | 0.068% | 1.000000 |
| 41 | PASS | 21 | 21 | 0.099% | 0.999999 |
| 42 | PASS | 21 | 21 | 0.117% | 0.999999 |
| 43 | PASS | 21 | 21 | 0.116% | 0.999998 |
| 44 | PASS | 21 | 21 | 0.181% | 0.999999 |
| 45 | PASS | 21 | 21 | 0.073% | 0.999999 |
| 46 | PASS | 21 | 21 | 0.140% | 0.999998 |
| 47 | PASS | 21 | 21 | 0.094% | 0.999999 |
| 48 | PASS | 21 | 21 | 0.118% | 0.999999 |
| 49 | PASS | 21 | 21 | 0.144% | 0.999999 |
说明: Top-1 类别 ID 为 21(对应于 "kite" 风筝类)和 107(对应于 "jellyfish" 水母类),由随机输入的自然分布决定。所有样本的最大相对误差最大仅为 0.231%(显著低于 1% 阈值),余弦相似度均非常接近 1.0,证明 NPU 推理结果与 CPU 基准具有高度数值一致性,精度无损。
使用 batch size = 1、输入尺寸 224x224 的随机图片,在 Ascend 910B4 NPU 上进行 100 次推理迭代(含 10 轮 warmup)的性能测试。
| 指标 | 结果 |
|---|---|
| 测试设备 | Ascend 910B4 NPU |
| Batch Size | 1 |
| 推理次数 | 100 |
| 平均延迟 | 12.88 ms |
| 最小延迟 | 11.66 ms |
| 最大延迟 | 20.73 ms |
| P50 延迟 | 12.38 ms |
| P90 延迟 | 13.95 ms |
| 吞吐量 | 77.62 img/s |
延迟分布(单位:ms):
11.66 ██ (最小)
11.68 █
11.71 █
11.74 █
11.75 █
11.76 █
11.79 ██
11.81 ████
11.85 ███
11.86 ██
11.89 █
11.90 ██
11.91 █
11.92 █
11.93 █
11.94 █
11.96 ███
11.99 ██
12.00 █
12.01 █
12.03 ██
12.05 █
12.06 █
12.08 █
12.12 █
12.18 █
12.20 ██
12.28 █
12.30 █
12.31 █
12.32 █
12.37 █
12.38 █ (P50)
12.39 █
12.42 █
12.49 █
12.55 █
12.60 █
13.34 █
13.35 █
13.38 █
13.40 █
13.42 █
13.43 █
13.45 █
13.46 █
13.50 █
13.52 █
13.53 █
13.55 ██
13.56 ██
13.59 █
13.60 █
13.64 ███
13.68 █
13.70 █
13.71 ██
13.73 █
13.75 █
13.79 █
13.80 █
13.84 █
13.88 █
13.90 █
13.93 █
13.95 █ (P90)
13.96 ██
13.98 █
14.06 █
14.22 █
14.35 █
14.41 █
17.98 █
20.73 █ (最大)| 统计量 | 数值 (ms) |
|---|---|
| 平均值 | 12.88 |
| 标准差 | ~1.24 |
| 最小值 | 11.66 |
| P25 | 11.86 |
| P50 (中位数) | 12.38 |
| P75 | 13.64 |
| P90 | 13.95 |
| P95 | 14.22 |
| P99 | 17.98 |
| 最大值 | 20.73 |
注: ResNet-50 由于模型参数量较大(25.6M),NPU 推理延迟略高于 ResNet-18 和 ResNet-34,但整体保持稳定。P50 延迟 12.38ms 表明大部分推理可在约 12ms 内完成。最大值 20.73ms 出现在少数波动场景,在实际部署中可通过多轮预热和负载均衡缓解。
├── readme.md # 本文件 - 模型说明文档
├── model/ # 模型权重目录(从 HuggingFace 下载)
├── inference.py # 推理脚本 - 支持单张图片推理
├── accuracy_eval.py # 精度验证脚本 - NPU vs CPU 对比
├── accuracy_report.json # 精度验证结果报告
├── perf_benchmark.py # 性能基准测试脚本
├── perf_report.json # 性能测试结果报告
└── fusion_result.json # 算子融合结果报告./model 目录。torch.npu.is_available() 验证 NPU 可用性。#NPU #Ascend #ResNet #ImageClassification #ResNet50 #昇腾 #华为 #模型推理 #边缘计算
基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0001%,小于 1% 的精度要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。