服务器配置如下:
CPU/NPU:鲲鹏 CPU(ARM64)+A300I pro推理卡 系统:Kylin V10 SP1【下载链接】【安装链接】 驱动与固件版本版本: Ascend-hdk-310p-npu-driver_23.0.1_linux-aarch64.run【下载链接】 Ascend-hdk-310p-npu-firmware_7.1.0.4.220.run【下载链接】 MCU版本:Ascend-hdk-310p-mcu_23.2.3【下载链接】 CANN开发套件:版本7.0.1【Toolkit下载链接】【Kernels下载链接】
测试om模型环境如下:
Python:版本3.8.11 测试YOLO系列:v5/6/7/8/9/10/11
专栏其他文章: Atlas800昇腾服务器(型号:3000)—驱动与固件安装(一) Atlas800昇腾服务器(型号:3000)—CANN安装(二) Atlas800昇腾服务器(型号:3000)—YOLO全系列om模型转换测试(三) Atlas800昇腾服务器(型号:3000)—AIPP加速前处理(四) Atlas800昇腾服务器(型号:3000)—YOLO全系列NPU推理【检测】(五) Atlas800昇腾服务器(型号:3000)—YOLO全系列NPU推理【实例分割】(六) Atlas800昇腾服务器(型号:3000)—YOLO全系列NPU推理【关键点】(七) Atlas800昇腾服务器(型号:3000)—YOLO全系列NPU推理【跟踪】(八)
1 环境安装
1.1 miniconda安装
链接:https://docs.anaconda.com/miniconda/index.html
安装后,创建一个名yolo的环境【Python==3.8.11】:
# 注意:创建普通用户并进入用户再运行如下
# 选择一个一个可下载的文件目录,使用wget命令下载(回车)
wget https://repo.anaconda.com/miniconda/Miniconda3–latest–Linux–aarch64.sh
# 安装中:
# 1.一路enter(回车)下去,直到问yes,输入yes。
# 2.我使用默认路径/gdu/miniconda/ ,不更改的继续回车就好。
# 3.然后最后一个问是否写入路径,提示为No,建议输入yes(如果输入No了,需要自己去配置下地址)
bash Miniconda3–latest–Linux–aarch64.sh
# 此时完成安装后没有在root用户前显示conda环境,输入
source ~/.bashrc
# 创建python=3.8.11基础环境
conda create –n yolo python=3.8.11
换源参考:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
1.2 安装ATC所需依赖库
注意:安装为ATC转换的必须依赖环境,下面操作在CANN中有在root上装,这里是新用户新环境,需再安装配置一次!! 第一次(直接装均成功):
conda activate yolo
pip install attrs cython decorator sympy cffi pyyaml pathlib2 psutil protobuf requests absl–py –i https://pypi.tuna.tsinghua.edu.cn/simple
第二次(利用pip进行scipy安装,1.8.0也可以,会顺带把numpy一起安装,版本为1.22.4):
pip install scipy==1.7.0 –i https://pypi.tuna.tsinghua.edu.cn/simple
注意:安装完需source ~/bashrc才能生效!
# 1.进入运行环境yolo【普通用户】
conda activate yolo
# 2.激活atc【atc –help测试是否可行】
source ~/bashrc
2 om模型转换测试
2.1 静态onnx转换测试
注意:以下测试模型均为静态onnx! YOLOv5测试:【检测/分割om均生成成功】
# 转换示例
atc ––framework=5 ––model=yolov5s.onnx ––input_format=NCHW ––input_shape="images:1,3,640,640" ––output_type=FP32 ––output=yolov5s ––soc_version=Ascend310P3
YOLOv6测试:【检测/分割om均生成成功】
# 转换示例
atc ––framework=5 ––model=yolov6s.onnx ––input_format=NCHW ––input_shape="images:1,3,640,640" ––output_type=FP32 ––output=yolov6s ––soc_version=Ascend310P3
YOLOv7测试:【检测om均生成成功】
# 转换示例
atc ––framework=5 ––model=yolov7.onnx ––input_format=NCHW ––input_shape="images:1,3,640,640" ––output_type=FP32 ––output=yolov7 ––soc_version=Ascend310P3
YOLOv8测试:【检测/分割/关键点om均生成成功】
# 转换示例
atc ––framework=5 ––model=yolov8s.onnx ––input_format=NCHW ––input_shape="images:1,3,640,640" ––output_type=FP32 ––output=yolov8s ––soc_version=Ascend310P3
YOLOv9测试:【检测om均生成成功】
# 转换示例
atc ––framework=5 ––model=yolov9s.onnx ––input_format=NCHW ––input_shape="images:1,3,640,640" ––output_type=FP32 ––output=yolov9s ––soc_version=Ascend310P3
YOLOv10测试:【检测om生成成功,但出现算子告警】
# 转换示例
atc ––framework=5 ––model=yolov10s.onnx ––input_format=NCHW ––input_shape="images:1,3,640,640" ––output_type=FP32 ––output=yolov10s ––soc_version=Ascend310P3
YOLOv11测试:【检测/分割/关键点om均生成成功】
atc ––framework=5 ––model=yolo11s.onnx ––input_format=NCHW ––input_shape="images:1,3,640,640" ––output_type=FP32 ––output=yolo11s ––soc_version=Ascend310P3
成功显示如下:
YOLOv8s静态640*640耗时测试结果:
2.2 动态宽高onnx转换测试
(1)YOLOV8导出宽高动态ONNX 路径:ultralytics-main/ultralytics/engine/exporter.py (2)生成宽高动态Om
atc ––framework=5 ––model=A_onnx/yolov8s_wh.onnx ––output=A_om/yolov8s_wh ––input_format=NCHW ––input_shape="images:1,3,-1,-1" ––dynamic_image_size "640,640;960,960;1024,1024;1280,1280;1536,1536;2048,2048" ––soc_version=Ascend310P3
YOLOv8s动态宽高640*640耗时测试结果:【存在om尺度检查机制,推理速度更慢】
评论前必须登录!
注册