mobilenetv4_conv_aa_large.e230_r384_in12k 是 MobileNetV4 系列的 Conv 变体,基于 timm (PyTorch Image Models) 框架的图像分类模型,在 ImageNet-12k 预训练。
该模型为标准的 PyTorch 图像分类模型,通过 timm 库加载预训练权重,可在昇腾 Ascend910 NPU 上直接运行。 适配过程的关键步骤:
pip install torch torch_npu timm Pillow numpy safetensors modelscope如果下载速度慢,可使用清华镜像源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torch_npu timm Pillow numpy safetensors modelscopepython -c "from modelscope.hub.snapshot_download import snapshot_download; snapshot_download('timm/mobilenetv4_conv_aa_large.e230_r384_in12k')"python inference.pypython compare_cpu_npu.pyimport torch
import torch_npu
from timm import create_model
from safetensors.torch import load_file
from PIL import Image
from timm.data import create_transform, resolve_data_config
model = create_model('mobilenetv4_conv_aa_large', pretrained=False, num_classes=11821)
model.eval()
state_dict = load_file('model.safetensors')
model.load_state_dict(state_dict, strict=False)
model = model.to('npu:0')
img = Image.open('test.jpg').convert('RGB')
config = resolve_data_config({{}}, model=create_model('mobilenetv4_conv_aa_large', pretrained=False, num_classes=11821))
transform = create_transform(
input_size=384, is_training=False,
mean=config.get('mean', (0.485, 0.456, 0.406)),
std=config.get('std', (0.229, 0.224, 0.225)),
interpolation=config.get('interpolation', 'bicubic'))
input_tensor = transform(img).unsqueeze(0).to('npu:0')
with torch.no_grad():
output = model(input_tensor)
probs = torch.nn.functional.softmax(output[0].cpu(), dim=0)
print(f'Top-1 class: {probs.argmax().item()}')| 指标 | 值 |
|---|---|
| Top-1 类别 | 11756 |
| Top-5 类别 | [11756, 954, 551, 552, 544] |
| 推理耗时 | 0.437s |
| 指标 | 值 |
|---|---|
| Top-1 类别 | 11756 |
| Top-5 类别 | [11756, 954, 551, 552, 544] |
| 推理耗时 | 0.013s |

| 指标 | 值 |
|---|---|
| Logits 最大绝对误差 | 0.00955772 |
| Logits 平均绝对误差 | 0.00403877 |
| 概率最大绝对误差 | 3.639e-05 |
| 概率平均绝对误差 | 8e-08 |
| 相对误差 | 0.0292% |
| Cosine 相似度 | 1.0 |
| 指标 | CPU | NPU | 匹配 |
|---|---|---|---|
| Top-1 | 11756 | 11756 | ✓ |
| Top-5 重叠 | 5/5 | 5/5 | ✓ |
| 指标 | CPU | NPU | 加速比 |
|---|---|---|---|
| 推理耗时 | 0.437s | 0.013s | 34.97x |
NPU 与 CPU 推理结果误差为 0.0292%,符合精度误差小于 1% 的要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
#+NPU #+CV #+图像分类 #+昇腾 #+PyTorch #+timm #+Ascend910