MobileNetV3-Large是MobileNetV3系列的标准大型模型变体,采用1.0倍宽度乘数,在该系列中提供最佳的分类精度。适用于对精度要求较高的场景。模型在ImageNet-1K数据集上训练,输入尺寸为224x224。
原始模型:timm/tf_mobilenetv3_large_100.in1k
| 组件 | 版本 |
|---|---|
| NPU | Ascend910 |
| CANN | 25.5.2 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0 |
| timm | 1.0.27 |
| Python | 3.11.14 |
| 操作系统 | Linux (aarch64) |
pip install torch torchvision timm Pillow numpy modelscope safetensors
export MODELSCOPE_CACHE=/tmp/modelscope# CPU inference
python3 inference.py --model_name tf_mobilenetv3_large_100.in1k --device cpu --output_dir ./tf_mobilenetv3_large_100.in1k
# NPU inference
python3 inference.py --model_name tf_mobilenetv3_large_100.in1k --device npu --output_dir ./tf_mobilenetv3_large_100.in1k| 指标 | CPU | NPU (Ascend910) |
|---|---|---|
| 输入尺寸 | 224x224 | 224x224 |
| 平均推理时间 | 28.72 ms | 5.76 ms |
| Top-1 类别 | class 549 | class 549 |
| Top-1 概率 | 5.3541% | 5.2919% |
NPU 加速比:5.0x(对比 CPU)。
| 指标 | 数值 |
|---|---|
| 最大 logits 差异 | 0.03052139 |
| 平均 logits 差异 | 0.00427881 |
| 余弦相似度 | 0.999983 |
| 最大概率差异 | 0.062194% |
| 平均概率差异 | 0.000608% |
| 相对 L2 误差 | 0.584360% |
| Top-1 匹配 | 是 |
| Top-5 重叠 | 5/5 |
Top-5 预测结果:
| 排名 | CPU 类别 | CPU 概率 | NPU 类别 | NPU 概率 |
|---|---|---|---|---|
| 1 | class 549 | 5.3541% | class 549 | 5.2919% |
| 2 | class 409 | 1.9407% | class 409 | 1.9352% |
| 3 | class 446 | 1.6589% | class 446 | 1.6405% |
| 4 | class 772 | 1.2364% | class 772 | 1.2441% |
| 5 | class 892 | 1.2053% | class 892 | 1.1960% |
NPU 与 CPU 误差 < 1%。所有指标均表明 NPU 结果与 CPU 匹配:

import torch
import timm
from PIL import Image
from timm.data import create_transform, resolve_data_config
model = timm.create_model('tf_mobilenetv3_large_100.in1k', pretrained=True)
model.eval()
if torch.npu.is_available():
model = model.npu()
transform = create_transform(**resolve_data_config(model.pretrained_cfg, model=model))
img = Image.open('image.jpg').convert('RGB')
input_tensor = transform(img).unsqueeze(0)
if torch.npu.is_available():
input_tensor = input_tensor.npu()
with torch.no_grad():
logits = model(input_tensor)
probs = torch.nn.functional.softmax(logits, dim=-1)
top5 = torch.topk(probs, k=5)
for i in range(5):
print(f"class {top5.indices[0][i].item()}: {top5.values[0][i].item()*100:.2f}%")