g
gcw_C8PI9e90/resnet-18-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

ResNet-18 昇腾 NPU 推理模型

模型介绍

模型名称: 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 处理器

软件环境

软件版本
CANN8.5.1
Python3.11.14
PyTorch2.9.0
torch_npu2.9.0.post1
transformers-
Pillow-
NumPy-

快速开始

1. 下载模型

# 从 HuggingFace 下载模型权重和配置
git lfs install
git clone https://huggingface.co/microsoft/resnet-18 ./model

2. 安装依赖

pip install torch torch_npu transformers pillow requests numpy

3. 运行推理

使用预置的推理脚本,支持从图片文件或 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 10

4. 运行精度验证

python accuracy_eval.py ./model accuracy_report.json

5. 运行性能基准测试

python 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-1NPU Top-1最大相对误差余弦相似度
0PASS1071070.142%1.000000
1PASS1071070.164%1.000000
2PASS1071070.213%1.000000
3PASS1071070.160%1.000000
4PASS1071070.156%1.000000
5PASS1071070.169%1.000000
6PASS1071070.181%1.000000
7PASS1071070.164%1.000000
8PASS1071070.188%1.000000
9PASS1071070.233%1.000000
10PASS1071070.210%1.000000
11PASS1071070.151%1.000000
12PASS1071070.180%1.000000
13PASS1071070.309%1.000000
14PASS1071070.199%1.000000
15PASS1071070.165%1.000000
16PASS1071070.179%1.000000
17PASS1071070.167%1.000000
18PASS1071070.176%1.000000
19PASS1071070.242%1.000000
20PASS1071070.167%1.000000
21PASS1071070.163%1.000000
22PASS1071070.202%1.000000
23PASS1071070.167%1.000000
24PASS1071070.216%1.000000
25PASS1071070.276%1.000000
26PASS1071070.199%1.000000
27PASS1071070.162%1.000000
28PASS1071070.164%1.000000
29PASS1071070.190%1.000000
30PASS1071070.229%1.000000
31PASS1071070.166%1.000000
32PASS1071070.184%1.000000
33PASS1071070.147%1.000000
34PASS1071070.197%1.000000
35PASS1071070.223%1.000000
36PASS1071070.182%1.000000
37PASS1071070.200%1.000000
38PASS1071070.203%1.000000
39PASS1071070.205%1.000000
40PASS1071070.199%1.000000
41PASS1071070.197%1.000000
42PASS1071070.226%1.000000
43PASS1071070.291%1.000000
44PASS1071070.207%1.000000
45PASS1071070.196%1.000000
46PASS1071070.129%1.000000
47PASS1071070.176%1.000000
48PASS1071070.155%1.000000
49PASS1071070.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 Size1
推理次数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
P254.64
P50 (中位数)4.67
P754.71
P904.73
P954.74
P994.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   # 算子融合结果报告

注意事项

  1. 模型加载: 推理前需确保网络连通以下载 HuggingFace 预训练权重,或预先下载至本地 ./model 目录。
  2. NPU 环境: 确保已正确安装 CANN 工具包及 torch_npu,通过 torch.npu.is_available() 验证 NPU 可用性。
  3. 精度验证: 测试使用合成图片(随机像素),主要验证 NPU 与 CPU 推理结果的数值一致性。实际部署时建议使用真实 ImageNet 验证集评估模型准确率。
  4. 性能数据: 延迟数据包含模型前向推理时间,不含数据预处理和后处理时间。实际端到端部署延迟会略高于此数值。
  5. 批处理: 当前测试使用 batch size = 1。如需提升吞吐量,可尝试增大 batch size。

标签

#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 上推理成功。