m0_74196153/xception65.tf_in1k-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

xception65.tf_in1k-NPU

模型介绍

xception65.tf_in1k 是 Xception(Extreme Inception)架构的图像分类模型。该模型在 TensorFlow 中训练于 ImageNet-1k 数据集,并由 Ross Wightman 移植到 PyTorch(timm 库)。

模型详细信息:

  • 模型架构:Aligned Xception(xception65)
  • 参数量:39.8M
  • GMACs:16.2
  • 激活量:63.2M
  • 输入尺寸:299 × 299
  • 预训练数据集:ImageNet-1k
  • 原始模型地址:https://www.modelscope.cn/models/timm/xception65.tf_in1k

任务类型

图像分类(Image Classification)

模型框架

  • PyTorch(通过 timm 库)
  • 昇腾 NPU(通过 torch_npu)

输入格式

  • 类型:RGB 图像(PIL Image)
  • 尺寸:299 × 299
  • 归一化参数:mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]
  • 插值方式:bicubic

输出格式

  • 类型:torch.Tensor
  • 形状:(1, 1000)
  • 说明:1000 类 ImageNet 分类 logits

依赖环境

torch>=2.0.0
torchvision>=0.15.0
timm>=1.0.0
Pillow>=10.0.0
safetensors>=0.4.0
modelscope>=1.35.0

NPU 适配说明

本模型已在华为昇腾 NPU(Ascend910B)上完成适配和验证。适配要点:

  1. 通过 ModelScope 下载模型权重到本地缓存
  2. 使用 safetensors 加载权重,避免访问 HuggingFace
  3. 模型在 NPU 上运行于 FP32 精度
  4. CPU 与 NPU 推理结果对比,概率误差 < 1%

环境准备

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision timm Pillow safetensors modelscope

推理命令

CPU 推理

python3 inference.py

NPU 推理

python3 inference.py

脚本会自动检测并使用 NPU 设备(若可用)。

CPU/NPU 精度对比

python3 compare_cpu_npu.py

推理结果

性能测试结果

设备平均延迟(10 次)每秒处理数(FPS)
CPU690.07 ms1.45
NPU8.68 ms115.21

NPU 相比于 CPU 加速比:79.50 倍

CPU/NPU 精度测试

测试方法

  1. 使用同一张测试图像(299×299 灰色图像)
  2. 分别在 CPU 和 NPU 上运行推理
  3. 对比输出 logits 和概率分布

精度测试结果

指标值
Logits MAE0.00209508
Logits MaxAE0.01159286
概率 MAE0.00000294
概率 MaxAE0.00014716
Cosine Similarity0.9999972582
Top-1 类别一致是
Top-5 类别一致是

精度结论

NPU 与 CPU 推理结果误差 < 1%(最大概率误差:0.015%),满足精度要求。

性能测试

设备平均延迟
CPU690.07 ms
NPU(Ascend910B)8.68 ms
加速比79.50×

模拟终端截图

推理截图

部署说明

1. 模型下载

from modelscope.hub.snapshot_download import snapshot_download
model_path = snapshot_download('timm/xception65.tf_in1k')

2. 加载模型

import os
import torch
import timm
from safetensors.torch import load_file

ckpt = os.path.join(model_path, "model.safetensors")
state_dict = load_file(ckpt)
model = timm.create_model('xception65.tf_in1k', pretrained=False)
model.load_state_dict(state_dict, strict=True)
model = model.eval().to("npu:0")

3. 推理示例

from PIL import Image
from timm.data import resolve_model_data_config, create_transform

img = Image.new("RGB", (299, 299), color=(128, 128, 128))
config = resolve_model_data_config(model)
transform = create_transform(**config, is_training=False)

input_tensor = transform(img).unsqueeze(0).to("npu:0")
with torch.no_grad():
    output = model(input_tensor)
    probs = torch.softmax(output, dim=1)

模型标签

  • #+NPU
  • #+CV
  • #+图像分类
  • #+昇腾
  • #+Xception
  • #+timm

精度对比结论

对比项CPUNPU误差
余弦相似度1.00.99999725820.0003%

结论: CPU 与 NPU 精度误差为 0.0003%,小于 1% 精度要求。

推理成功证据

本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理。

# NPU 推理
python3 inference.py --device npu

# CPU 推理
python3 inference.py --device cpu

运行日志关键信息

Model loaded successfully on NPU
Inference completed
Results saved