模型名称: microsoft/resnet-18
架构: ResNetForImageClassification
参数量: 11.7M
预训练数据集: ImageNet-1k
输入尺寸: 224 x 224
类别数: 1000
ResNet(Residual Network)是由 Microsoft Research 提出的经典深度卷积神经网络架构。ResNet-18 是该系列中最轻量级的模型,包含 18 个卷积层,通过引入残差连接(Residual Connection)有效解决了深层网络中的梯度消失问题。该模型在 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-18 ./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.191% |
| 最大相对误差 (MaxRelErr) | 0.309% |
| 平均概率余弦相似度 (AvgCosineSim) | 1.000000 |
| 总体状态 | PASS |
| 样本 | Top-1 匹配 | CPU Top-1 | NPU Top-1 | 最大相对误差 | 余弦相似度 |
|---|---|---|---|---|---|
| 0 | PASS | 107 | 107 | 0.142% | 1.000000 |
| 1 | PASS | 107 | 107 | 0.164% | 1.000000 |
| 2 | PASS | 107 | 107 | 0.213% | 1.000000 |
| 3 | PASS | 107 | 107 | 0.160% | 1.000000 |
| 4 | PASS | 107 | 107 | 0.156% | 1.000000 |
| 5 | PASS | 107 | 107 | 0.169% | 1.000000 |
| 6 | PASS | 107 | 107 | 0.181% | 1.000000 |
| 7 | PASS | 107 | 107 | 0.164% | 1.000000 |
| 8 | PASS | 107 | 107 | 0.188% | 1.000000 |
| 9 | PASS | 107 | 107 | 0.233% | 1.000000 |
| 10 | PASS | 107 | 107 | 0.210% | 1.000000 |
| 11 | PASS | 107 | 107 | 0.151% | 1.000000 |
| 12 | PASS | 107 | 107 | 0.180% | 1.000000 |
| 13 | PASS | 107 | 107 | 0.309% | 1.000000 |
| 14 | PASS | 107 | 107 | 0.199% | 1.000000 |
| 15 | PASS | 107 | 107 | 0.165% | 1.000000 |
| 16 | PASS | 107 | 107 | 0.179% | 1.000000 |
| 17 | PASS | 107 | 107 | 0.167% | 1.000000 |
| 18 | PASS | 107 | 107 | 0.176% | 1.000000 |
| 19 | PASS | 107 | 107 | 0.242% | 1.000000 |
| 20 | PASS | 107 | 107 | 0.167% | 1.000000 |
| 21 | PASS | 107 | 107 | 0.163% | 1.000000 |
| 22 | PASS | 107 | 107 | 0.202% | 1.000000 |
| 23 | PASS | 107 | 107 | 0.167% | 1.000000 |
| 24 | PASS | 107 | 107 | 0.216% | 1.000000 |
| 25 | PASS | 107 | 107 | 0.276% | 1.000000 |
| 26 | PASS | 107 | 107 | 0.199% | 1.000000 |
| 27 | PASS | 107 | 107 | 0.162% | 1.000000 |
| 28 | PASS | 107 | 107 | 0.164% | 1.000000 |
| 29 | PASS | 107 | 107 | 0.190% | 1.000000 |
| 30 | PASS | 107 | 107 | 0.229% | 1.000000 |
| 31 | PASS | 107 | 107 | 0.166% | 1.000000 |
| 32 | PASS | 107 | 107 | 0.184% | 1.000000 |
| 33 | PASS | 107 | 107 | 0.147% | 1.000000 |
| 34 | PASS | 107 | 107 | 0.197% | 1.000000 |
| 35 | PASS | 107 | 107 | 0.223% | 1.000000 |
| 36 | PASS | 107 | 107 | 0.182% | 1.000000 |
| 37 | PASS | 107 | 107 | 0.200% | 1.000000 |
| 38 | PASS | 107 | 107 | 0.203% | 1.000000 |
| 39 | PASS | 107 | 107 | 0.205% | 1.000000 |
| 40 | PASS | 107 | 107 | 0.199% | 1.000000 |
| 41 | PASS | 107 | 107 | 0.197% | 1.000000 |
| 42 | PASS | 107 | 107 | 0.226% | 1.000000 |
| 43 | PASS | 107 | 107 | 0.291% | 1.000000 |
| 44 | PASS | 107 | 107 | 0.207% | 1.000000 |
| 45 | PASS | 107 | 107 | 0.196% | 1.000000 |
| 46 | PASS | 107 | 107 | 0.129% | 1.000000 |
| 47 | PASS | 107 | 107 | 0.176% | 1.000000 |
| 48 | PASS | 107 | 107 | 0.155% | 1.000000 |
| 49 | PASS | 107 | 107 | 0.185% | 1.000000 |
说明: Top-1 类别 ID 为 107,对应 ImageNet-1k 中的 "jellyfish"(水母)类别。所有样本的最大相对误差均显著低于 1% 的阈值,且余弦相似度接近 1.0,证明 NPU 推理结果与 CPU 基准完全对齐,精度无损。
使用 batch size = 1、输入尺寸 224x224 的随机图片,在 Ascend 910B4 NPU 上进行 100 次推理迭代(含 10 轮 warmup)的性能测试。
| 指标 | 结果 |
|---|---|
| 测试设备 | Ascend 910B4 NPU |
| Batch Size | 1 |
| 推理次数 | 100 |
| 平均延迟 | 4.67 ms |
| 最小延迟 | 4.59 ms |
| 最大延迟 | 4.86 ms |
| P50 延迟 | 4.67 ms |
| P90 延迟 | 4.73 ms |
| 吞吐量 | 213.92 img/s |
延迟分布(单位:ms):
4.59 ██ (最小)
4.61 ███████
4.62 █████
4.63 ███████████
4.64 ████████
4.65 █████████
4.66 █████
4.67 ████████████ (P50 / 平均)
4.68 ████
4.69 ██████████
4.70 ████
4.71 ████████
4.72 ███████
4.73 ██████ (P90)
4.74 ████
4.75 █
4.76 █
4.77 █
4.86 █ (最大)| 统计量 | 数值 (ms) |
|---|---|
| 平均值 | 4.67 |
| 标准差 | ~0.05 |
| 最小值 | 4.59 |
| P25 | 4.64 |
| P50 (中位数) | 4.67 |
| P75 | 4.71 |
| P90 | 4.73 |
| P95 | 4.74 |
| P99 | 4.77 |
| 最大值 | 4.86 |
├── 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 #ResNet18 #昇腾 #华为 #模型推理 #边缘计算
基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0%,小于 1% 的精度要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。