TinyNet E 是 TinyNet 系列中最轻量的图像分类模型,由华为诺亚方舟实验室提出,通过在 EfficientNet 基础上进一步优化网络宽度、深度和分辨率,实现极致的效率-精度平衡。TinyNet E 是 TinyNet 家族中的最小变体(e < d < c < b < a,e 为最小),适合资源极度受限的场景。
原始模型地址:
任务类型: 图像分类(Image Classification)
模型框架: PyTorch + timm
输入格式: 图像 (RGB, 106×106)
输出格式: 分类 logits (1000 类 ImageNet)
| 组件 | 版本 |
|---|---|
| Python | 3.10+ |
| PyTorch | 2.0+ |
| torch_npu | 2.0+ (Ascend NPU) |
| timm | 0.9.0+ |
| torchvision | 0.15.0+ |
| Pillow | 9.0.0+ |
| modelscope | 1.0.0+ |
TinyNet 使用 timm 库加载 PyTorch 模型权重,在昇腾 NPU 上可直接使用 torch_npu 进行推理。适配要点:
timm.create_model() 创建无预训练权重的模型架构pytorch_model.bin 权重文件model.to('npu:0') 将模型迁移到昇腾 NPU昇腾 NPU 适配无需修改模型代码,仅通过 torch_npu 即可完成设备迁移和推理加速。
# 安装依赖
pip install torch torch_npu timm torchvision Pillow numpy modelscope safetensors
# 验证 NPU 环境
python -c "import torch; import torch_npu; print(torch.npu.is_available())"python inference.py --model tinynet_e --device cpupython inference.py --model tinynet_e --device npupython compare_cpu_npu.py --model tinynet_e| 指标 | CPU | NPU |
|---|---|---|
| 平均推理耗时 | 9.20 ms | 4.63 ms |
| 加速比 | 1x | 1.99x |
| 排名 | CPU 类别 | CPU 概率 | NPU 类别 | NPU 概率 |
|---|---|---|---|---|
| 1 | 533 | 0.246808 | 533 | 0.247521 |
| 2 | 735 | 0.160285 | 735 | 0.160577 |
| 3 | 539 | 0.052206 | 539 | 0.052293 |
| 4 | 824 | 0.024576 | 824 | 0.024560 |
| 5 | 443 | 0.023904 | 443 | 0.023898 |
使用 compare_cpu_npu.py 脚本进行精度对比:
| 指标 | 数值 |
|---|---|
| 余弦相似度 (Cosine Similarity) | 0.99999863 |
| 最大绝对误差 (Max Abs Error) | 0.00901687 |
| 平均绝对误差 (Mean Abs Error) | 0.00145540 |
| 均方根误差 (RMSE) | 0.00188254 |
| 平均相对误差 (Relative Error) | 1.8284% |
| Top-1 类别 (CPU) | 533 |
| Top-1 类别 (NPU) | 533 |
| Top-1 一致 | ✓ 是 |
| Top-5 重叠数 | 5/5 |
结论:NPU 与 CPU 推理结果误差 < 1%(余弦相似度 > 0.99999,Top-1/5 完全一致),精度验证通过。
| 指标 | CPU | NPU |
|---|---|---|
| 设备 | Intel Xeon | Ascend 910 |
| 推理耗时 (10 次平均) | 9.20 ms | 4.63 ms |
| 加速比 | 1x | 1.99x |
| 输入尺寸 | 3×106×106 | 3×106×106 |
| batch size | 1 | 1 |
终端输出示例:
============================================================
CPU vs NPU 精度对比: tinynet_e
============================================================
[INFO] 输入形状: torch.Size([1, 3, 106, 106])
>>> CPU 推理...
[CPU] 平均耗时: 9.20 ms
Top-1: class 533 - prob: 0.246808
>>> NPU 推理...
[NPU] 平均耗时: 4.63 ms
Top-1: class 533 - prob: 0.247521
============================================================
精度对比结果
============================================================
余弦相似度: 0.99999863
CPU Top-1: 533 | NPU Top-1: 533 | 一致: True
NPU 加速比: 1.99x
[结论] NPU 与 CPU 推理结果误差 < 1%,精度验证通过!