瑞芯微RV1126B开发板(EASY-EAI-PI2) yolov8训练部署教程 Yolov8简介YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的基于YOLOV5进行更新的 下一个重大更新版本目前支持图像分类、物体检测和实例分割任务鉴于Yolov5的良好表现Yolov8在还没有开源时就收到了用户的广泛关注。其主要结构如下图所示本教程针对目标检测算法yolov8的训练和部署到EASY-EAI-PI2(RV1126B)进行说明而数据标注方法可以参考我们往期的文章。. 资料下载进行后续操作前必须先下载完整资料包资料名称链接训练代码githubhttps://github.com/airockchip/ultralytics_yolov8算法教程完整源码包百度网盘提取码: 1234. Yolov8目标检测算法训练通过git工具在PC端克隆远程仓库注此处可能会因网络原因造成卡顿请耐心等待修改过算子后的yolov8仓库: https://github.com/airockchip/ultralytics_yolov8同时也可以打开目录《1.AI模型训练》解压训练代码ultralytics_yolov8-main.zip解压后可得到下图文件. rknn-toolkit模型转换.1 rknn-toolkit模型转换环境搭建onnx模型需要转换为rknn模型才能在EASY-EAI-PI2运行所以需要先搭建rknn-toolkit模型转换工具的环境。当然tensorflow、tensroflow lite、caffe、darknet等也是通过类似的方法进行模型转换只是本教程onnx为例。.1.1 概述模型转换环境搭建流程如下所示下载模型转换工具为了保证模型转换工具顺利运行请在官网产品简介下载网盘里“06.AI算法开发/01.rknn-toolkit2模型转换工具/rknn-toolkit2-v2.3.2/rknn-toolkit2/docker/docker_image/rknn-toolkit2-v2.3.2-cp38-docker.tar.gz”。链接: 百度网盘 提取码: 1234把工具移到ubuntu20.04把下载完成的docker镜像移到我司的虚拟机ubuntu20.04的rknn-toolkit2目录,如下图所示运行模型转换工具环境在该目录打开终端执行以下指令加载模型转换工具docker镜像:docker load --input rknn-toolkit2-v2.3.2-cp38-docker.tar.gz执行以下指令进入镜像bash环境:docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/developer/rknn-toolkit2/model_convert_test:/test rknn-toolkit2:2.3.2-cp38 /bin/bash现象如下图所示:输入“python”加载python相关库尝试加载rknn库如下图环境测试成功:至此模型转换工具环境搭建完成。. 在模型转换为RKNNEASY-EAI-PI2支持.rknn后缀的模型的评估及运行对于常见的tensorflow、tensroflow lite、caffe、darknet、onnx和Pytorch模型都可以通过我们提供的 toolkit 工具将其转换至 rknn 模型而对于其他框架训练出来的模型也可以先将其转至 onnx 模型再转换为 rknn 模型。 模型转换操作流程入下图所示模型转换Demo下载打开目录《2.AI模型转换》把yolov8_model_convert.tar.bz2和quant_dataset.zip解压到虚拟机如下图所示:进入模型转换工具docker环境执行以下指令把工作区域映射进docker镜像其中/home/developer/rknn-toolkit2/model_convert为工作区域/test为映射到docker镜像/dev/bus/usb:/dev/bus/usb为映射usb到docker镜像docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/developer/rknn-toolkit2/model_convert:/test rknn-toolkit2:2.3.2-cp38 /bin/bash执行成功如下图所示:模型转换操作说明.1 模型转换Demo目录结构模型转换测试Demo由yolov8_model_convert和quant_dataset组成。Yolov8_model_convert存放软件脚本quant_dataset存放量化模型所需的数据。如下图所示:Yolov8_model_convert文件夹存放以下内容如下图所示生成量化图片列表在docker环境切换到模型转换工作目录:cd /test/yolov8_model_convert如下图所示:执行gen_list.py生成量化图片列表:python gen_list.py命令行现象如下图所示:生成“量化图片列表”如下文件夹所示:onnx模型转换为rknn模型rknn_convert.py脚本默认进行int8量化操作脚本代码清单如下所示import sys from rknn.api import RKNN ONNX_MODEL yolov8m.onnx DATASET ./pic_path.txt RKNN_MODEL ./yolov8m_PI2.rknn QUANTIZE_ON True if __name__ __main__: # Create RKNN object rknn RKNN(verboseFalse) # Pre-process config print(-- Config model) rknn.config(mean_values[[0, 0, 0]], std_values[ [255, 255, 255]], target_platformrv1126b) print(done) # Load model print(-- Loading model) ret rknn.load_onnx(modelONNX_MODEL) if ret ! 0: print(Load model failed!) exit(ret) print(done) # Build model print(-- Building model) ret rknn.build(do_quantizationQUANTIZE_ON, datasetDATASET) if ret ! 0: print(Build model failed!) exit(ret) print(done) # Export rknn model print(-- Export rknn model) ret rknn.export_rknn(RKNN_MODEL) if ret ! 0: print(Export rknn model failed!) exit(ret) print(done) # Release rknn.release()把onnx模型yolov8m.onnx放到yolov8_model_convert目录(后续用户使用自己的模型的时候替换掉对应的onnx即可)并执行rknn_convert.py脚本进行模型转换python rknn_convert.py生成模型如下图所示此模型可以在rknn环境和EASY EAI PI2环境运行. 模型部署示例.1 模型部署示例介绍本小节展示yolov8模型的在EASY-EAI-PI2的部署过程该模型仅经过简单训练供示例使用不保证模型精度。.2 准备工作.2.1 硬件准备需准备EASY-EAI-PI2开发板Type-C数据线、网线。可以基于MobaXterm的ssh远程桌面登录调试。首先使用网线把EASY-EAI-PI2的千兆以太网接口与连着路由LAN口的交换机或者路由器的LAN口连接如下图所示。以及串口连接。开发环境准备如果您初次阅读此文档请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》并按照其相关的操作进行编译环境的部署。在PC端Ubuntu系统中执行run脚本进入EASY-EAI编译环境具体如下所示。cd ~/develop_environment ./run.sh 2204源码下载以及例程编译打开目录《3.AI算法部署》找到yolov8 C Demo示例文件。把程序包移至ubuntu环境后执行以下指令解压tar -xvf yolov8_detect_C_demo.tar.bz2下载解压后如下图所示:在EASY-EAI 编译环境下进入到对应的例程目录执行编译操作具体命令如下所示cd /opt/data/rknn_toolkit2/model_convert_PI2/yolov8/yolov8_detect_C_demo ./build.sh同时把可执行程序目录yolov8_detect_demo_release/复制到开发板/userdata目录上cp yolov8_detect_demo_release/ /mnt/userdata/ -rf在开发板执行yolov8目标检测算法通过串口调试或ssh调试进入板卡后台定位到例程部署的位置如下所示cd /userdata/yolov8_detect_demo_release/运行例程命令如下所示chmod 777 yolov8_detect_demo sudo ./yolov8_detect_demo yolov8m_rk3562.rknn test.jpg执行结果如下图所示,算法执行时间为88.407ms在EASY-EAI编译环境可以取回测试图片:cp /mnt/userdata/yolov8_detect_demo_release/result.jpg .测试结果如下图所示:至此yolov8目标检测例程已成功在板卡运行。