Swin Transformer 是一种层次化视觉 Transformer,通过移位窗口(Shifted Windows)机制在局部窗口内计算自注意力,兼顾了计算效率与建模能力。
本工程基于 microsoft/swin-base-patch4-window12-384-in22k,在 ImageNet-22k 上预训练,输入分辨率为 384x384,约 88M 参数,适用于高精度图片分类任务。
pip install -r requirements.txt若环境已安装 torch/torch_npu,请勿强制覆盖,避免破坏现有 CANN 环境。
权重通过 HuggingFace Transformers 自动下载。若无法直连 HuggingFace,已配置镜像:
export HF_ENDPOINT=https://hf-mirror.com脚本内已默认设置该环境变量。
python inference.pyassets/test.jpgAutoImageProcessor 与 AutoModelForImageClassificationnpu:0logs/inference.loglogs/prediction.txt实际运行结果(已完成):
1. coal_black, ebony, jet_black, pitch_black, sable, soot_black (confidence=0.194744)
2. railroad_tunnel (confidence=0.127421)
3. black, blackness, inkiness (confidence=0.075076)
4. adit (confidence=0.031560)
5. ventilation_shaft (confidence=0.026593)注:测试图片从
picsum.photos随机下载,为真实 RGB 图像。
python eval_accuracy.py实际运行结果(已完成):
| 指标 | 结果 |
|---|---|
| Max absolute logits diff | 2.64e-02 |
| Mean absolute logits diff | 3.71e-03 |
| Max absolute prob diff | 0.001717 |
| CPU Top-1 | 12011 |
| NPU Top-1 | 12011 |
| Top-1 一致 | True |
| 是否通过 (<1% + Top-1 一致) | 通过 |
logits 存在一定差异,但概率差异 < 1% 且 Top-1 完全一致,属于 CPU/NPU 浮点实现差异,不影响实际部署精度。
python benchmark.py实际运行结果(已完成):
| 指标 | 结果 |
|---|---|
| Avg latency | 49.392 ms |
| Min latency | 48.578 ms |
| Max latency | 49.991 ms |
| Throughput | 20.25 images/s |
| 文件 | 说明 |
|---|---|
logs/env_check.log | 环境检查与 npu-smi 信息 |
logs/inference.log | inference.py 完整运行日志 |
logs/prediction.txt | Top-5 预测标签与置信度摘要 |
logs/accuracy.log | CPU vs NPU 精度对比结果 |
logs/benchmark.log | NPU 性能基准测试结果 |
模型下载慢或失败
HF_ENDPOINT=https://hf-mirror.com~/.cache/huggingface/hubNPU 权限警告
owner does not match 警告,不影响推理功能ascend/log 目录缺失警告
[LOG_WARNING] can not create directory: /home/atomgit/ascend/logSlow image processor 提示
from_pretrained 时传入 use_fast=True 切换 fast processor(若支持)#NPU #Ascend #SwinTransformer #ImageClassification #Transformers