weixin_72661020/mobilenetv3_small_100.lamb_in1k
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

mobilenetv3_small_100.lamb_in1k

1. 简介

本文档记录 timm/mobilenetv3_small_100.lamb_in1k 在昇腾 NPU(Ascend910)环境的快速部署与验证结果。

mobilenetv3_small_100 图像分类模型,基于 timm 框架,支持一键加载推理。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/timm/mobilenetv3_small_100.lamb_in1k
  • 权重下载地址(HuggingFace):https://huggingface.co/timm/mobilenetv3_small_100.lamb_in1k

参考文档:

  • https://huggingface.co/docs/timm/en/quickstart

2. 验证环境

组件版本
torch2.5.1
torch_npu2.5.1
timm>=1.0.0
CANN8.5.RC1
  • NPU:Ascend910(单卡)
  • 输入尺寸:224x224
  • 类别数:1000
  • 推理框架:PyTorch + timm

3. 快速部署

3.1 环境准备

pip install timm torch torchvision pillow

3.2 推理代码

import torch
from timm import create_model
from PIL import Image
from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize

device = torch.device('npu:0' if torch.npu.is_available() else 'cpu')

model = create_model('mobilenetv3_small_100', pretrained=True).to(device).eval()

transform = Compose([
    Resize(int(224 / 0.875)),
    CenterCrop(224),
    ToTensor(),
    Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

image = Image.new('RGB', (224, 224), (128, 128, 128))
input_tensor = transform(image).unsqueeze(0).to(device)

with torch.no_grad():
    outputs = model(input_tensor)
pred = outputs.argmax(-1).item()
print(f'Predicted class: {pred}')

4. Smoke 验证

python3 inference.py

验证结果:

  • 模型成功加载到 npu:0
  • 输出预测类别(整数索引)
  • 推理过程无报错

5. 性能参考

测试条件:FP32 / batch=1 / warmup=5 / timed=50 runs,Ascend910 单卡。

指标数值
平均推理时间4.45 ms
测试次数50

6. 精度评测

NPU 与 CPU 输出对比,使用 4 张纯色测试图(RGB 255/0、0/255/0、0/0/255、128/128/128),比较 logits 一致性。

指标数值
Top-1 一致性4/4 (100%)
Top-5 一致性3/4 (75%)
最大 logits 相对误差0.845 %
平均 KL 散度4e-05
结论PASS

7. 注意事项

  • timm 模型使用 create_model 加载,需指定正确的架构名称
  • 预处理需要与预训练配置一致(mean/std/crop_ratio)
  • NPU 推理结果与 CPU 在 Top-1 完全一致,最大 logits 相对误差 < 1%(判定阈值)