tiny_vit_5m_224.dist_in22k 是基于 TinyViT(Tiny Vision Transformer)架构的图像分类模型,参数量约 5M,输入尺寸为 224x224。
TinyViT 是一种轻量级视觉 Transformer 架构,通过深度可分离卷积和注意力机制的混合设计,在保持较高精度的同时大幅降低了模型参数量和计算量,适合边缘设备和移动端部署。
该模型变体 在 ImageNet-22K 上使用蒸馏训练。
图像分类(Image Classification)
[1, 3, 224, 224][1, 21841](21841类)| 依赖 | 版本 |
|---|---|
| Python | >= 3.10 |
| PyTorch | >= 2.0.0 |
| torchvision | >= 0.15.0 |
| timm | >= 1.0.0 |
| modelscope | >= 1.35.0 |
| Pillow | >= 10.0.0 |
| numpy | >= 1.24.0 |
| safetensors | >= 0.4.0 |
该模型基于 PyTorch + timm 框架,在昇腾 NPU 上可直接使用 torch_npu 进行推理。适配过程主要包括:
model.to("npu:0"))# 安装依赖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision timm modelscope Pillow numpy safetensors
# 配置 git 用户信息(如需提交模型仓库)
git config --global user.name "m0_74196153"
git config --global user.email "iamnotphage@163.com"# inference.py
import torch
import timm
from timm.data import create_transform, resolve_data_config
from PIL import Image
from modelscope.hub.snapshot_download import snapshot_download
import numpy as np
# 下载模型
model_path = snapshot_download('timm/tiny_vit_5m_224.dist_in22k')
# 加载模型
model = timm.create_model('tiny_vit_5m_224', pretrained=False, num_classes=21841)
sd = torch.load(f'{model_path}/pytorch_model.bin', map_location='cpu', weights_only=True)
model.load_state_dict(sd, strict=True)
# NPU 推理
device = torch.device('npu:0')
model = model.to(device)
model.eval()
# 创建测试图像
img = Image.new('RGB', (224, 224), color=(128, 128, 128))
# 数据预处理
data_cfg = resolve_data_config(model.pretrained_cfg, model=model)
transform = create_transform(**data_cfg)
input_tensor = transform(img).unsqueeze(0).to(device)
# 推理
with torch.no_grad():
logits = model(input_tensor)
probs = torch.softmax(logits, dim=-1)
# 获取 Top-5 结果
top5_indices = logits[0].argsort(descending=True)[:5]
for i, idx in enumerate(top5_indices):
print(f"Top{i+1}: class {idx}, prob={probs[0][idx]:.4%}")| 设备 | 平均推理耗时 | Top-1 类别 | Top-1 概率 | Top-5 类别 |
|---|---|---|---|---|
| CPU | 97.59 ms | 12008 | 1.8201% | 12008, 12003, 12065, 12061, 21713 |
CPU Top-5 概率:
| 设备 | 平均推理耗时 | Top-1 类别 | Top-1 概率 | Top-5 类别 |
|---|---|---|---|---|
| NPU | 8.02 ms | 12008 | 1.8332% | 12008, 12003, 12065, 12061, 21713 |
NPU Top-5 概率:
| 指标 | 数值 |
|---|---|
| Max absolute logits difference | 0.02145123 |
| Mean absolute logits difference | 0.00232387 |
| Cosine similarity | 0.9999897448 |
| Max probability difference | 0.00013053 |
| Mean probability difference | 0.00000013 |
| Relative L2 error | 0.446364% |
| Top-1 match | ✓ |
| Top-5 overlap | 5/5 |
NPU 与 CPU 推理结果误差 < 1%,精度对齐通过。
| 设备 | 平均推理耗时 | 加速比 |
|---|---|---|
| CPU | 97.59 ms | 1.0x(基线) |
| NPU | 8.02 ms | 12.2x |
NPU 推理速度约为 CPU 的 12 倍。
该模型适用于图像分类任务。推理流程:

#+NPU#+CV#+图像分类#+昇腾#+Vision-Transformer#+TinyViT#+timm#+轻量级模型