mobilenetv3_large_100.miil_in21k 是一个基于 timm(PyTorch Image Models)的图像分类模型,在 ImageNet-21K 数据集上预训练(11221 类)。
该模型是 ImageNet-21K 预训练版本,输出 11221 类。适配时需指定 num_classes=11221 创建模型。 适配过程的关键步骤:
pip install torch torch_npu timm Pillow numpy safetensorswget "https://www.modelscope.cn/api/v1/models/timm/mobilenetv3_large_100.miil_in21k/repo?Revision=master&FilePath=model.safetensors" -O model.safetensorsCPU 推理:
python3 inference.py --device cpuNPU 推理:
python3 inference.py --device npupython3 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('mobilenetv3_large_100', pretrained=False, num_classes=11221)
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')
cfg = resolve_data_config({}, model=create_model('mobilenetv3_large_100', pretrained=False))
transform = create_transform(input_size=224, is_training=False,
mean=cfg.get('mean'), std=cfg.get('std'), interpolation='bilinear')
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)
top5 = torch.topk(probs, k=5)
for i in range(5):
print(f'Top {i+1}: class={top5.indices[i].item()}, prob={top5.values[i].item():.6f}')
CPU 推理耗时: 0.0454s NPU 推理耗时: 0.0060s 性能加速比: 7.51x
| 指标 | 值 |
|---|---|
| CPU Top-1 类别 | 3963 |
| NPU Top-1 类别 | 3963 |
| Top-1 匹配 | 是 |
| Top-5 重叠 | 5/5 |
| 余弦相似度 | 0.99999881 |
| 最大概率差异 | 0.0473% |
| Top-1 概率相对误差 | 0.176849% |
NPU与CPU推理结果误差为0.0473%,符合精度误差小于1%的要求
NPU 与 CPU 的 Top-1 预测类别完全相同,Top-5 类别完全重叠,余弦相似度接近 1.0, 表明 NPU 推理结果与 CPU 推理结果高度一致。
以下日志展示了 NPU 推理成功的关键信息:
[LOG_WARNING] can not create directory, directory: /home/atomgit/ascend/log, possible reason: No such file or directory.path string is NULLpath string is NULLLoading CPU and NPU results...
CPU inference time: 0.0454s
NPU inference time: 0.0063s
=== Top-5 Class Comparison ===
Top-5 overlap: 5/5
Top-1 class match: Yes (CPU:3963 vs NPU:3963)#+NPU #+CV #+图像分类 #+昇腾 #+Ascend910 #+timm #+PyTorch #+ImageNet21K