m0_74196153/tf_mixnet_s.in1k-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

tf_mixnet_s.in1k-NPU

1. 模型简介

tf_mixnet_s.in1k 是 MixNet(Mixed Depthwise Convolutional Kernels)系列中的轻量级变体,由 Google Research 提出。MixNet 通过混合不同大小的深度可分离卷积核(如 3x3、5x5、7x7)来优化卷积神经网络的精度和效率平衡。tf_mixnet_s 是 MixNet 的 Small 版本,在 ImageNet-1K 上预训练,适合资源受限场景下的图像分类任务。

原始模型地址:

  • ModelScope: https://www.modelscope.cn/models/timm/tf_mixnet_s.in1k
  • HuggingFace: https://huggingface.co/timm/tf_mixnet_s.in1k

2. 任务类型

图像分类(Image Classification)

3. 模型框架

  • PyTorch(通过 timm 库加载)
  • 模型架构:tf_mixnet_s(MixNet Small)
  • 预训练数据集:ImageNet-1K

4. 输入输出格式

项目说明
输入尺寸(1, 3, 224, 224) — 批量大小 1,RGB 3 通道,224×224 像素
输入格式经过归一化的 RGB 图像张量(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225])
输出尺寸(1, 1000) — 批量大小 1,1000 类 ImageNet 分类 logits
输出格式未归一化的分类分数(logits),通过 Softmax 可转换为概率

5. 依赖环境

组件版本
Python3.11.14
PyTorch2.9.0
torch_npu2.9.0.post1
timm≥0.9.0
Pillow≥9.0.0
safetensors≥0.3.0
昇腾 CANN8.5.1
NPUAscend910

6. NPU 适配说明

本模型为纯 PyTorch 图像分类模型,通过 timm 框架加载预训练权重,可直接在昇腾 NPU 上运行。适配要点:

  1. 使用 timm.create_model() 创建模型架构,从 ModelScope 下载的 safetensors 权重文件加载参数。
  2. 模型加载后通过 .to('npu:0') 将模型参数和输入张量迁移至 NPU。
  3. 推理时使用 torch.no_grad() 上下文关闭梯度计算。
  4. NPU 推理结果与 CPU 推理结果进行逐元素精度对比,确保误差在 1% 以内。

7. 环境准备

# 安装依赖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple timm torch torch_npu pillow safetensors

# 检查 NPU 环境
python3 -c "import torch; print(torch.npu.is_available())"

8. 推理命令

CPU 推理

python3 inference.py \
  --model tf_mixnet_s.in1k \
  --checkpoint-dir /path/to/model/dir \
  --device cpu

NPU 推理

python3 inference.py \
  --model tf_mixnet_s.in1k \
  --checkpoint-dir /path/to/model/dir \
  --device npu

CPU/NPU 精度对比

python3 compare_cpu_npu.py

9. 推理结果

9.1 CPU 推理结果

排名类别 ID概率
18520.040929
29710.036983
39110.036374
45740.023421
55390.020213

CPU 推理耗时:0.0461s

9.2 NPU 推理结果

排名类别 ID概率
18520.040928
29710.036981
39110.036372
45740.023420
55390.020212

NPU 推理耗时:0.0112s

9.3 性能对比

指标CPUNPU加速比
推理耗时0.0461s0.0112s4.12x

10. CPU/NPU 精度测试

10.1 测试方法

  1. 在 CPU 和设备上分别加载相同模型权重。
  2. 使用相同随机种子(seed=42)生成相同的虚拟输入张量(1×3×224×224)。
  3. 分别执行 CPU 和 NPU 推理,保存全量 logits。
  4. 计算 CPU 与 NPU 输出之间的逐元素差异。
  5. 对比 Top-1 和 Top-5 分类结果一致性。

10.2 精度测试结果

指标数值
最大绝对误差(Max Absolute Error)0.00749874
平均绝对误差(Mean Absolute Error)0.00156156
均方误差(MSE)0.00000393
MAE/Mean(|CPU|) 比率0.158%
余弦相似度(Cosine Similarity)0.99999881
Top-1 分类一致性一致
Top-5 分类一致性一致
最大概率差异0.00018097
平均概率差异0.00000219

10.3 结论

NPU 与 CPU 推理结果误差为 0.158%,远低于 1% 的阈值。Top-1 和 Top-5 分类结果完全一致,余弦相似度为 0.99999881,表明 NPU 推理精度完全符合要求。

11. 模拟终端输出截图

终端输出

12. 部署和推理方法

使用预下载的模型权重

import torch
import torch_npu
from timm import create_model
from safetensors.torch import load_file

# 加载模型
model = create_model('tf_mixnet_s.in1k', pretrained=False)
state_dict = load_file('path/to/model.safetensors')
model.load_state_dict(state_dict)
model = model.to('npu:0')
model.eval()

# 推理
with torch.no_grad():
    input_tensor = torch.randn(1, 3, 224, 224).to('npu:0')
    output = model(input_tensor)
    probs = torch.nn.functional.softmax(output[0], dim=0)
    top5 = probs.topk(5)
    print(top5)

通过 ModelScope 加载

from modelscope import snapshot_download
model_path = snapshot_download('timm/tf_mixnet_s.in1k')

13. 模型标签

  • #+NPU — 适配昇腾 NPU
  • #+CV — 计算机视觉
  • #+图像分类 — 图像分类任务
  • #+昇腾 — 华为昇腾平台
  • #+MixNet — MixNet 架构
  • #+timm — timm 模型库

本模型仓库由 model-agent 自动生成,用于昇腾 NPU 适配验证。