本模型是 Swin Transformer 在 ImageNet 数据集上的预训练模型,由 timm 库提供。
Swin Transformer 是一种层级式 Vision Transformer (ViT) 架构,通过移位窗口(Shifted Window)注意力机制,在计算复杂度与模型表达能力之间取得平衡。该模型适用于图像分类任务。
[1, 1000]| 组件 | 版本 |
|---|---|
| Python | 3.11+ |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| timm | 1.0.27 |
| Pillow | 12.2.0+ |
本模型基于 Ascend 910 NPU 完成适配。适配过程中,仅需将模型加载到 NPU 设备上即可运行,无需修改模型架构。
关键要点:
torch.npu 作为后端,模型通过 .to('npu:0') 迁移到 NPUtorch.npu.synchronize() 确保正确计时# 安装依赖
pip install torch torchvision timm Pillow requests numpy
# 设置 huggingface 镜像(可选)
export HF_ENDPOINT=https://hf-mirror.compython3 inference.pypython3 inference.py --device cpu| 设备 | 推理耗时 (ms) | Top-1 类别 | Top-1 概率 |
|---|---|---|---|
| CPU | 480.5 | class_646 | 11.05% |
| NPU | 17.6 | class_646 | 11.14% |
NPU 推理速度是 CPU 的 27.4 倍。
| 排名 | 类别 | 概率 |
|---|---|---|
| 1 | class_646 | 11.14% |
| 2 | class_769 | 9.40% |
| 3 | class_611 | 7.57% |
| 4 | class_723 | 5.20% |
| 5 | class_920 | 4.74% |
python3 compare_cpu_npu.py| 指标 | 数值 |
|---|---|
| L2 相对误差 | 0.3396% |
| Cosine Similarity | 0.99999461 |
| Top-1 一致性 | 是 |
| Top-5 重叠 | 5/5 |
| 最大概率差异 | 0.000949 |
| 最大绝对误差 | 0.01861405 |
| RMSE | 0.00378748 |
结论:NPU 与 CPU 推理结果误差 < 1%,精度对齐通过。
| 指标 | CPU | NPU | 加速比 |
|---|---|---|---|
| 推理耗时 (ms) | 480.5 | 17.6 | 27.4x |

#+NPU #+CV #+图像分类 #+昇腾 #+SwinTransformer #+timm