华为云社区分享:昇腾 CANN YOLOV8 和 YOLOV9 适配
本文分享自华为云社区《昇腾 CANN YOLOV8 和 YOLOV9 适配》,作者:jackwangcumt。
1 概述
华为昇腾 CANN YOLOV8 推理示例 C++样例,是基于Ascend CANN Samples官方示例中的sampleYOLOV7进行的YOLOV8适配。YOLOV7模型输出的数据大小为[1,25200,85],而YOLOV8模型输出的数据大小为[1,84,8400],因此需要对sampleYOLOV7中的后处理部分进行修改,以适配YOLOV8/YOLOV9模型。为满足项目研发需求,公司购置了一台Atlas 500 Pro智能边缘服务器,安装的操作系统为Ubuntu 20.04 LTS Server,按照官方说明文档安装了Ascend-cann-toolkit_7.0.RC1_linux-aarch64.run等软件。具体安装步骤可参考另一篇博文【Atlas 500 Pro 智能边缘服务器推理环境搭建】。
2 YOLOV8模型准备
在进行YOLOV8模型适配工作之前,首先需要获取YOLOV8的模型文件。以官方的YOLOV8n.pt模型为例,在Windows操作系统上可以安装YOLOV8环境,并执行如下python脚本(pth2onnx.py)将.pt模型转换成.onnx模型。具体的YOLOV8环境搭建步骤可参考https://github.com/ultralytics/ultralytics。转换成功后,将生成yolov8n.onnx模型。从输出信息中得知,yolov8n.pt原始模型的输出尺寸为(1, 3, 640, 640),格式为BCHW,输出尺寸为(1, 84, 8400)。安装netron后,可执行命令打开yolov8n.onnx模型进行Web网络结构查看。
转化后的yolov8n.onnx模型输入的节点名称为images,输入张量的大小为[1,3,640,640]。将yolov8n.onnx模型上传到Atlas 500 Pro服务器上,执行命令进行模型转换。
3 适配代码
根据官网sampleYOLOV7示例适配的YOLOV8示例,代码已经开源,地址为https://gitee.com/cumt/ascend-yolov8-sample。核心代码sampleYOLOV8.cpp中的后处理方法GetResult为...
4 编译运行
下载开源代码,上传服务器并解压,然后执行命令进行代码编译。
执行成功后,控制台打印如下信息:
5 总结
YOLO各系列的适配过程大部分都是处理输入格式和输出格式的变换。参考YOLOV7,可以进行YOLOV8模型的适配。目前YOLOV9和YOLOV8模型输出格式一致,因此,只需要进行yolov9xx.om模型的生成工作即可。yolov9-c-converted.pt模型转换如下:在Windows操作系统上可以安装YOLOV9环境,并执行如下python脚本将.pt模型转化成.onnx模型...
点击关注,第一时间了解华为云新鲜技术~