#+NPU #+昇腾 #+Ascend910 #+CV #+图像分类 #+BEiT #+Transformer
本仓库包含了 cv_beitv2-large_image-classification_patch16_224_pt1k_ft22k_in1k 在华为昇腾 Ascend910 NPU 上的适配版本,支持 CPU 和 NPU 两种推理方式,并提供了完整的精度验证流程。
该模型来自 ModelScope,主要用于 图像分类 任务。
原始模型地址: cv_beitv2-large_image-classification_patch16_224_pt1k_ft22k_in1k
图像分类
PyTorch
图像(Image)
分类标签和置信度分数
| 依赖 | 版本 |
|---|---|
| Python | >= 3.8 |
| PyTorch | >= 2.0.0 |
| torch_npu | >= 2.0.0 |
| ModelScope | >= 1.0.0 |
| mmcv | 1.7.2 |
| mmcls | >= 0.20.0 |
| NumPy | >= 1.20.0 |
| Pillow | >= 9.0.0 |
本适配基于华为 Ascend910 NPU(CANN 8.5.1,显存 64GB)完成。适配内容包括:
# 安装基础依赖
pip install torch torch_npu modelscope mmcv mmcls Pillow numpy
# 设置环境变量
export MODELSCOPE_CACHE=/path/to/cacheCPU 推理:
python3 inference.pyCPU vs NPU 精度对比:
python3 compare_cpu_npu.pyfrom modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
pipe = pipeline(Tasks.IMAGE_CLASSIFICATION, model='iic/cv_beitv2-large_image-classification_patch16_224_pt1k_ft22k_in1k', device='cpu')
result = pipe('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/bird.JPEG')
print(result)import torch
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
pipe = pipeline(Tasks.IMAGE_CLASSIFICATION, model='iic/cv_beitv2-large_image-classification_patch16_224_pt1k_ft22k_in1k', device='cpu')
pipe.model.cls_model = pipe.model.cls_model.to('npu:0')
# Monkey-patch forward for NPU
orig_forward = pipe.model.forward
def npu_forward(inputs):
for k, v in inputs.items():
if isinstance(v, torch.Tensor):
inputs[k] = v.to('npu:0')
return orig_forward(inputs)
pipe.model.forward = npu_forward
result = pipe('test.jpg')
print(result)关键比较指标:
| 指标 | 值 |
|---|---|
| 最大绝对误差 | 0.0001755356788635254 |
| 相对误差 | 0.018916708359029144% |
| 余弦相似度 | 0.9999999403953552 |
| Top-1 标签匹配 | True |
| Top-5 一致率 | 100.0% |
| CPU 推理耗时 | 3655.822277069092 ms |
| NPU 推理耗时 | 150.2978801727295 ms |
| NPU 加速比 | 24.323844573640336x |
NPU 与 CPU 推理结果误差 < 1%(实际相对误差: 0.0189%),满足精度要求。NPU 推理结果与 CPU 推理结果在 Top-1 和 Top-5 级别上完全一致,余弦相似度接近 1.0,说明 NPU 上的推理精度与 CPU 基本一致。
| 平台 | 推理耗时 (ms) | 加速比 |
|---|---|---|
| CPU | 3655.822277069092 | 1.00x |
| NPU (Ascend910) | 150.2978801727295 | 24.323844573640336x |
以下截图展示了推理的实际运行结果。



#+NPU #+昇腾 #+Ascend910 #+CV #+图像分类 #+BEiT #+Transformer