本文档记录 microsoft/swin-tiny-patch4-window7-224 Swin Transformer 图像分类模型在昇腾 NPU(Ascend 910B3)上的迁移适配、精度评测与性能验证结果。
Swin Transformer 通过层级化窗口注意力机制在图像分类任务上取得了优秀性能。该模型在 ImageNet-1k 上预训练,支持 1000 类分类。输入为 224×224 图像,通过 AutoImageProcessor 预处理。Swin 的窗口划分和移位操作在 NPU 上需要适配算子支持。
相关获取地址:
microsoft/swin-tiny-patch4-window7-224| 组件 | 版本 |
|---|---|
torch | 2.8.0 |
torch_npu | 2.8.0.post4 |
transformers | 5.8.1 |
CANN | 8.5.1 |
8 × Ascend 910B3conda create -n swin-tiny-patch4-window7-224 python=3.11 -y
conda activate swin-tiny-patch4-window7-224
pip install torch==2.8.0 torch_npu==2.8.0.post4 \
-i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers torchvision pillow numpy \
-i https://pypi.tuna.tsinghua.edu.cn/simplemodelscope download --model microsoft/swin-tiny-patch4-window7-224 \
--local_dir ./swin-tiny-patch4-window7-224python inference.py --image photo.jpg --device npu
python inference.py --image_dir ./photos/ --device npufrom inference import AgeClassifier
clf = AgeClassifier(model_path="./swin-tiny-patch4-window7-224", device="npu")
results = clf.predict(["photo.jpg"])python inference.py --image photo.jpg --device npu预期输出:Top-5 分类标签及置信度,无错误。
测试条件:10 张合成 224×224 图像(固定种子),batch_size=8。
| 指标 | 数值 |
|---|---|
| NPU 吞吐量 | 107.0 img/s |
Swin 模型包含窗口划分/移位操作,算子复杂度高于 ViT,NPU 加速效果不如 ViT 显著但仍有显著提升。
分别在 CPU 和 NPU 上推理 10 张合成图像,比较 softmax 概率向量的余弦相似度和 Top-1 一致性。
| 指标 | 数值 |
|---|---|
| 平均余弦相似度 | 1.000000 |
| 精度误差率 | 0.0000% |
| Top-1 准确率 | 100.0% |
结论:精度误差率 0.0000%,NPU 与 CPU 输出完全一致,评测通过。
AutoModelForImageClassification.from_pretrained() 加载model.to("npu:0") 迁移,AutoImageProcessor 在 CPU 端预处理torch.roll 和 torch.meshgrid,需确认 NPU 算子支持model.config.id2label 获取完整映射