作者昇腾实战派小模型在NPU上的推理部署【知识地图】引言在边缘计算和端侧AI应用蓬勃发展的今天如何在资源有限的设备上实现高效、低延迟的模型推理成为开发者面临的关键挑战。昇腾AscendNPU 作为国产AI硬件的代表以其高能效比备受关注。而AISBENCH正是华为为昇腾平台量身打造的轻量级推理工具链特别适合小模型在边缘设备上的部署。本文将带你从零开始一步步完成 YOLOv5 模型在昇腾 NPU 上的完整部署流程并提供可直接运行的代码示例。什么是 AISBENCHAISBENCH是昇腾平台面向轻量级模型推出的端侧推理工具集它集成了模型转换、图优化、量化压缩与运行时调度等核心功能。与通用的推理框架相比AISBENCH 专门针对小模型的特点进行了深度优化极轻量内存占用与二进制体积极小适合嵌入式场景低延迟优化数据流与算子调度推理速度更快易用性提供一键式编译工具简化部署流程高能效支持功耗与性能的平衡调节延长设备续航环境准备与版本配套重要提示ais_bench 推理工具包含两个部分aclruntime包和ais_bench推理程序包。安装前请务必注意以下事项确保网络畅通CentOS 平台默认的 gcc 4.8 可能无法安装建议升级 gcc 版本推荐安装方式对于大多数开发者建议直接使用昇腾官方镜像可省去复杂的环境配置更多安装说明建议访问 ais_bench 官方仓库 获取最新安装指南。部署实战YOLOv5 模型部署全流程步骤1模型准备与转换获取原始模型# 克隆 YOLOv5 官方仓库gitclone https://github.com/ultralytics/yolov5.gitcdyolov5# 导出 ONNX 格式python export.py--weightsyolov5s.pt--includeonnx--imgsz640转换为昇腾 OM 格式使用昇腾 ATC 工具将 ONNX 转为 OMatc--modelyolov5s.onnx\--framework5\--outputyolov5s\--input_shapeimages:1,3,640,640\--soc_versionAscend310P3\--loginfo步骤2AISBENCH Python API 推理实现完整示例代码importcv2importnumpyasnpimporttorchfromais_bench.infer.interfaceimportInferSessionfromultralytics.data.augmentimportLetterBoxclassYOLOv5NPUInference:def__init__(self,model_path,device_id0): 初始化 NPU 推理会话 Args: model_path: OM 模型路径 device_id: NPU 设备ID self.sessionInferSession(device_id,model_path)defpreprocess(self,image_path,target_size(640,640)): 图像预处理保持 YOLOv5 原始预处理逻辑 # 读取图像imgcv2.imread(image_path)ifimgisNone:raiseValueError(f无法读取图像:{image_path})original_imgimg.copy()# 使用 LetterBox 进行预处理保持长宽比imgLetterBox(target_size,autoFalse)(imageimg)# 转换通道顺序 HWC - CHWimgimg.transpose(2,0,1)imgnp.ascontiguousarray(img)# 归一化并添加 batch 维度imgtorch.from_numpy(img).float()/255.0imgimg.unsqueeze(0)returnimg.numpy(),original_imgdefinference(self,image_path): 执行推理 # 1. 预处理input_data,original_imgself.preprocess(image_path)# 2. NPU 推理outputsself.session.infer([input_data])# 3. 后处理示例需根据实际模型输出调整predictionsself.postprocess(outputs[0],original_img.shape)returnpredictions,original_imgdefpostprocess(self,output,img_shape): 后处理将输出转换为检测结果 注此处为简化示例实际需根据 YOLOv5 输出格式完整实现 # 获取原始图像尺寸original_h,original_wimg_shape[:2]# 示例假设输出格式为 [batch, num_detections, 6]# 其中最后维度为 [x1, y1, x2, y2, confidence, class]detections[]fordetinoutput[0]:ifdet[4]0.25:# 置信度阈值# 将归一化坐标转换回原始图像尺寸x1int(det[0]*original_w)y1int(det[1]*original_h)x2int(det[2]*original_w)y2int(det[3]*original_h)detections.append({bbox:[x1,y1,x2,y2],confidence:float(det[4]),class_id:int(det[5])})returndetections更多学习资源AISBENCH 官方文档昇腾 ModelZoo昇腾 ATC 工具总结本文详细介绍了使用AISBENCH在昇腾 NPU 上部署轻量化模型的完整流程从环境配置到实际推理提供了代码示例。主要步骤包括环境准备选择合适的安装方式推荐使用官方镜像模型转换使用 ATC 工具将 ONNX 转为 OM 格式推理实现利用 AISBENCH Python API 加载并执行模型性能优化通过基准测试和参数调优提升推理效率随着昇腾边缘计算生态的不断完善AISBENCH 将成为轻量化模型在国产 AI 硬件上部署的重要选择。无论是智能制造、自动驾驶还是智能安防、物联网设备这种高能效的部署方案都能为边缘 AI 应用提供坚实的技术支撑。