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

ResNet-34 昇腾 NPU 推理模型

模型介绍

模型名称: microsoft/resnet-34
架构: ResNetForImageClassification
参数量: 21.8M
预训练数据集: ImageNet-1k
输入尺寸: 224 x 224
类别数: 1000

ResNet(Residual Network)由 Microsoft Research 提出,是计算机视觉领域最具影响力的深度学习架构之一。ResNet-34 包含 34 个卷积层,相比 ResNet-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-34 ./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.065%
最大相对误差 (MaxRelErr)0.095%
平均概率余弦相似度 (AvgCosineSim)1.000000
总体状态PASS

逐样本精度详情

样本Top-1 匹配CPU Top-1NPU Top-1最大相对误差余弦相似度
0PASS8858850.044%1.000000
1PASS8858850.059%1.000000
2PASS1111110.068%1.000000
3PASS8858850.059%1.000000
4PASS8858850.056%1.000000
5PASS8858850.061%1.000000
6PASS8858850.047%1.000000
7PASS8858850.076%1.000000
8PASS8858850.049%1.000000
9PASS8858850.060%1.000000
10PASS8858850.053%1.000000
11PASS8858850.051%1.000000
12PASS8858850.065%1.000000
13PASS8858850.053%1.000000
14PASS1111110.077%1.000000
15PASS8858850.061%1.000000
16PASS8858850.064%1.000000
17PASS8858850.047%1.000000
18PASS8858850.065%1.000000
19PASS1111110.049%1.000000
20PASS8858850.058%1.000000
21PASS1111110.073%1.000000
22PASS8858850.053%1.000000
23PASS8858850.062%1.000000
24PASS8858850.074%1.000000
25PASS8858850.060%1.000000
26PASS8858850.064%1.000000
27PASS1111110.052%1.000000
28PASS8858850.073%1.000000
29PASS8858850.065%1.000000
30PASS1111110.054%1.000000
31PASS8858850.081%1.000000
32PASS8858850.071%1.000000
33PASS1111110.087%1.000000
34PASS8858850.057%1.000000
35PASS8858850.065%1.000000
36PASS8858850.095%1.000000
37PASS1111110.077%1.000000
38PASS8858850.054%1.000000
39PASS8858850.069%1.000000
40PASS1111110.089%1.000000
41PASS8858850.085%1.000000
42PASS8858850.076%1.000000
43PASS1111110.069%1.000000
44PASS8858850.077%1.000000
45PASS1111110.070%1.000000
46PASS8858850.067%1.000000
47PASS8858850.071%1.000000
48PASS1111110.082%1.000000
49PASS8858850.059%1.000000

说明: Top-1 类别 ID 包含 111(对应于 "nematode" 线虫类)和 885(对应于 "teddy" 泰迪熊类),由随机输入的自然分布决定。所有样本的最大相对误差最大仅为 0.095%(显著低于 1% 阈值),且余弦相似度均非常接近 1.0,证明 NPU 推理结果与 CPU 基准具有极高的数值一致性,精度无损。

性能基准测试结果

使用 batch size = 1、输入尺寸 224x224 的随机图片,在 Ascend 910B4 NPU 上进行 100 次推理迭代(含 10 轮 warmup)的性能测试。

性能汇总

指标结果
测试设备Ascend 910B4 NPU
Batch Size1
推理次数100
平均延迟8.28 ms
最小延迟8.08 ms
最大延迟8.99 ms
P50 延迟8.27 ms
P90 延迟8.38 ms
吞吐量120.73 img/s

延迟分布

延迟分布(单位:ms):
  8.08 █                                        (最小)
  8.10 █
  8.13 ███
  8.14 █
  8.15 ████
  8.17 █
  8.19 █
  8.20 █
  8.21 █████
  8.22 ███
  8.23 █████
  8.24 ██████
  8.25 ██████
  8.26 ███████
  8.27 ████████                              (P50)
  8.28 ██████                                (平均)
  8.29 █████
  8.30 █████
  8.31 ██
  8.32 █
  8.33 █
  8.34 ███
  8.35 █████
  8.36 ███
  8.37 █
  8.38 ███                                   (P90)
  8.39 █
  8.40 █
  8.43 █
  8.44 █
  8.45 █
  8.48 █
  8.57 █
  8.99 █                                       (最大)

延迟统计摘要

统计量数值 (ms)
平均值8.28
标准差~0.11
最小值8.08
P258.22
P50 (中位数)8.27
P758.35
P908.38
P958.44
P998.57
最大值8.99

项目结构

├── 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 #ResNet34 #昇腾 #华为 #模型推理 #边缘计算

精度结论

基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0%,小于 1% 的精度要求。

推理成功证据

本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:

# NPU 推理
python3 inference.py --device npu

# CPU 推理
python3 inference.py --device cpu

推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。