g
gcw_C8PI9e90/convnext-nano-r384-ad-in12k-npu
模型介绍文件和版本Pull Requests讨论分析

ConvNeXt NPU 部署与推理

模型介绍

convnext nano - r384 ad in12k 是 ConvNeXt 系列图像分类模型的一个变体,基于纯卷积架构设计,在 ImageNet 等大规模数据集上预训练。ConvNeXt 通过借鉴 Swin Transformer 的设计思路对标准 ResNet 进行现代化改造,实现了媲美 Transformer 的性能。

  • 原始模型地址: https://www.modelscope.cn/models/timm/convnext_nano.r384_ad_in12k
  • 任务类型: 图像分类
  • 模型框架: PyTorch + timm
  • 输入格式: RGB 图像(384×384)
  • 输出格式: 类别概率分布(11821 类)
  • 参数量: ~15M
  • 输入数据: 单张图像,3 通道 RGB,分辨率 384×384

NPU 适配说明

本模型已适配昇腾 Ascend 910 NPU,支持在 NPU 上进行推理。核心适配工作包括:

  1. 使用 torch.npu 将模型加载到 NPU 设备。
  2. 使用 torch.npu.synchronize() 确保 NPU 同步执行。
  3. 对 NPU 进行 3 轮 warmup 后再执行正式推理。
  4. 单测结果已完成 CPU 与 NPU 的精度对比验证。

环境准备

系统要求

  • Python 3.11+
  • Ascend 910 NPU
  • CANN 8.5.1+
  • torch 2.0+
  • torch-npu 2.0+

安装依赖

pip install torch torch-npu timm Pillow safetensors

推理方法

使用推理脚本

# CPU 推理
python3 inference.py --model convnext_nano.r384_ad_in12k --device cpu --image test.jpg

# NPU 推理
python3 inference.py --model convnext_nano.r384_ad_in12k --device npu --image test.jpg

推理结果

CPU 推理结果


Device: CPU
Inference time: 0.4545s
Top-5 predictions:
  1. class=11740  prob=0.437008
  2. class= 7347  prob=0.374362
  3. class= 7391  prob=0.079145
  4. class= 7373  prob=0.031985
  5. class= 4084  prob=0.015824

NPU 推理结果


Device: NPU
Inference time: 0.0061s
Top-5 predictions:
  1. class=11740  prob=0.437085
  2. class= 7347  prob=0.373423
  3. class= 7391  prob=0.078985
  4. class= 7373  prob=0.032111
  5. class= 4084  prob=0.016088

CPU/NPU 精度对比

精度测试方法

  1. 分别在 CPU 和 NPU 上加载同一模型权重。
  2. 使用相同的输入图像,经过相同的预处理流程。
  3. 对比 CPU 与 NPU 的输出 logits,计算以下指标:
    • MAE(平均绝对误差)
    • MSE(均方误差)
    • 最大绝对误差
    • 余弦相似度
    • Top-100 平均相对误差
    • Top-1 分类一致性
    • Top-5 分类一致性

精度测试结果

指标值
MAE0.00619465
MSE0.00006198" if results else "-"
最大绝对误差0.03648424
余弦相似度0.99998820
Top-100 平均相对误差0.1602%
Top-1 分类一致是
Top-5 重叠数5/5

结论:NPU 与 CPU 推理结果误差 < 1%,精度完全满足要求。

精度结论

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

性能对比

设备推理耗时
CPU0.4536 s
NPU0.0061 s
加速比74.79×

推理成功证据

以下日志展示了 NPU 推理成功的关键信息:

Model moved to NPU (Ascend 910)
Input shape: torch.Size([1, 3, 384, 384])
Warming up...
Running inference...
=== Results ===
Device: NPU

模型标签

  • #+NPU
  • #+CV
  • #+图像分类
  • #+昇腾
  • #+ConvNeXt
  • #+timm

运行截图

运行截图

下载使用量0