小模型在昇腾NPU上的推理部署:【AISBENCH】
2026/4/18 8:40:13 网站建设 项目流程

作者:昇腾实战派

小模型在NPU上的推理部署:【知识地图】

引言

在边缘计算和端侧AI应用蓬勃发展的今天,如何在资源有限的设备上实现高效、低延迟的模型推理,成为开发者面临的关键挑战。昇腾(Ascend)NPU 作为国产AI硬件的代表,以其高能效比备受关注。而AISBENCH正是华为为昇腾平台量身打造的轻量级推理工具链,特别适合小模型在边缘设备上的部署。

本文将带你从零开始,一步步完成 YOLOv5 模型在昇腾 NPU 上的完整部署流程,并提供可直接运行的代码示例。


什么是 AISBENCH?

AISBENCH是昇腾平台面向轻量级模型推出的端侧推理工具集,它集成了模型转换、图优化、量化压缩与运行时调度等核心功能。与通用的推理框架相比,AISBENCH 专门针对小模型的特点进行了深度优化:


环境准备与版本配套

重要提示

ais_bench 推理工具包含两个部分:aclruntime包ais_bench推理程序包。安装前请务必注意以下事项:

推荐安装方式

对于大多数开发者,建议直接使用昇腾官方镜像,可省去复杂的环境配置:

更多安装说明:建议访问 ais_bench 官方仓库 获取最新安装指南。


部署实战:YOLOv5 模型部署全流程

步骤1:模型准备与转换

  1. 获取原始模型

    # 克隆 YOLOv5 官方仓库gitclone https://github.com/ultralytics/yolov5.gitcdyolov5# 导出 ONNX 格式python export.py--weightsyolov5s.pt--includeonnx--imgsz640
  2. 转换为昇腾 OM 格式
    使用昇腾 ATC 工具将 ONNX 转为 OM:

    atc--model=yolov5s.onnx\--framework=5\--output=yolov5s\--input_shape="images:1,3,640,640"\--soc_version=Ascend310P3\--log=info

步骤2:AISBENCH Python API 推理实现

完整示例代码
importcv2importnumpyasnpimporttorchfromais_bench.infer.interfaceimportInferSessionfromultralytics.data.augmentimportLetterBoxclassYOLOv5NPUInference:def__init__(self,model_path,device_id=0):""" 初始化 NPU 推理会话 Args: model_path: OM 模型路径 device_id: NPU 设备ID """self.session=InferSession(device_id,model_path)defpreprocess(self,image_path,target_size=(640,640)):""" 图像预处理(保持 YOLOv5 原始预处理逻辑) """# 读取图像img=cv2.imread(image_path)ifimgisNone:raiseValueError(f"无法读取图像:{image_path}")original_img=img.copy()# 使用 LetterBox 进行预处理(保持长宽比)img=LetterBox(target_size,auto=False)(image=img)# 转换通道顺序 HWC -> CHWimg=img.transpose(2,0,1)img=np.ascontiguousarray(img)# 归一化并添加 batch 维度img=torch.from_numpy(img).float()/255.0img=img.unsqueeze(0)returnimg.numpy(),original_imgdefinference(self,image_path):""" 执行推理 """# 1. 预处理input_data,original_img=self.preprocess(image_path)# 2. NPU 推理outputs=self.session.infer([input_data])# 3. 后处理(示例,需根据实际模型输出调整)predictions=self.postprocess(outputs[0],original_img.shape)returnpredictions,original_imgdefpostprocess(self,output,img_shape):""" 后处理:将输出转换为检测结果 注:此处为简化示例,实际需根据 YOLOv5 输出格式完整实现 """# 获取原始图像尺寸original_h,original_w=img_shape[:2]# 示例:假设输出格式为 [batch, num_detections, 6]# 其中最后维度为 [x1, y1, x2, y2, confidence, class]detections=[]fordetinoutput[0]:ifdet[4]>0.25:# 置信度阈值# 将归一化坐标转换回原始图像尺寸x1=int(det[0]*original_w)y1=int(det[1]*original_h)x2=int(det[2]*original_w)y2=int(det[3]*original_h)detections.append({'bbox':[x1,y1,x2,y2],'confidence':float(det[4]),'class_id':int(det[5])})returndetections

更多学习资源

总结

本文详细介绍了使用AISBENCH在昇腾 NPU 上部署轻量化模型的完整流程,从环境配置到实际推理,提供了代码示例。主要步骤包括:

  1. 环境准备:选择合适的安装方式,推荐使用官方镜像
  2. 模型转换:使用 ATC 工具将 ONNX 转为 OM 格式
  3. 推理实现:利用 AISBENCH Python API 加载并执行模型
  4. 性能优化:通过基准测试和参数调优提升推理效率

随着昇腾边缘计算生态的不断完善,AISBENCH 将成为轻量化模型在国产 AI 硬件上部署的重要选择。无论是智能制造、自动驾驶,还是智能安防、物联网设备,这种高能效的部署方案都能为边缘 AI 应用提供坚实的技术支撑。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询