weixin_72661020/wide_resnet50_2
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

wide_resnet50_2

1. 简介

本文档记录 timm/wide_resnet50_2.racm_in1k(Wide ResNet-50-2 图像分类模型)在昇腾 NPU(Ascend910)环境的快速部署与验证结果。

Wide ResNet-50-2 图像分类模型,基于 timm 框架,1000 类 ImageNet 分类。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/timm/wide_resnet50_2.racm_in1k
  • 权重下载地址(HuggingFace):https://huggingface.co/timm/wide_resnet50_2.racm_in1k

参考文档:

  • https://huggingface.co/docs/timm/en/index

2. 验证环境

组件版本
torch2.5.1
torch_npu2.5.1
timm>=1.0.0
CANN8.5.RC1
  • NPU:Ascend910(单卡)
  • 输入尺寸:224x224
  • 类别数:1000
  • 推理框架:PyTorch + timm

3. 快速部署

3.1 环境准备

pip install torch torchvision timm pillow

3.2 推理代码

import torch
import timm
from safetensors import safe_open
from PIL import Image
from torchvision import transforms

device = torch.device("npu:0" if torch.npu.is_available() else "cpu")

model = timm.create_model("wide_resnet50_2", pretrained=False, num_classes=1000)
state_dict = {}
with safe_open("model.safetensors", framework="pt", device="cpu") as f:
    for k in f.keys():
        state_dict[k] = f.get_tensor(k)
model.load_state_dict(state_dict, strict=False)
model = model.to(device).eval()

transform = transforms.Compose([
    transforms.Resize((224, 224)), transforms.ToTensor(),
    transforms.Normalize(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225]),
])
img = Image.new("RGB", (224, 224), (128, 128, 128))
input_tensor = transform(img).unsqueeze(0).to(device)

with torch.no_grad():
    output = model(input_tensor)
pred = output.argmax(-1).item()
print(f"Predicted class: {pred}")

4. Smoke 验证

python3 inference.py

5. 性能参考

测试条件:FP32 / batch=1 / warmup=5 / timed=50 runs,Ascend910 单卡。

指标数值
平均推理时间5.71ms
测试次数50

6. 精度评测

NPU 与 CPU 输出对比,使用 4 张纯色测试图,比较 logits 一致性。

指标数值
Top-1 一致性4/4
Top-5 一致性4/4
最大 logits 相对误差0.19%
平均 KL 散度0.000001
结论PASS