RDK X5部署YOLO算法教程(面向小白) --RDK X5 第一期地瓜创客孵化营总结

一.项目介绍

1.项目论述

项目名称为“火眼金睛”智能消防机器人,利用双目摄像头同时结合双目测距算法以及目标识别算法对火源(用蜡烛火苗代替)进行识别并测定出机器人距离火源的距离,操纵水炮进行灭火。

2.硬件介绍

1)底盘

采用履带式底盘(自制),由两个MG540直流电机进行驱动,并带有悬架,具有良好的通过性能。-

2)下位机

下位机采用STM32F407作为主控,用于与上位机通信,同时控制底盘运行与水炮的运动

3)上位机

上位机采用地瓜机器人 RDKX5

4)其他硬件

双目摄像头-

-
水泵 12V大功率电池 储水箱等

3.项目进展以及现状

目前项目已完成底盘设计制作 硬件电路设计制作 目标识别与双目测距算法融合,以及RDK X5部署,将视觉识别效果与底盘控制结合部分还未完成,由于实验室老师安排项目比较多,该项目将会暂时搁置一段时间,去开发其他项目。-
效果展示:-

二.如何在RDK X5上部署yolov5算法(面向小白)

本人是一个新手小白,我会会我在部署过程中的参考资料放在下面以及说明需要注意的事项,帮助各位了解部署流程,快速上手,刚接触入门不必搞懂其中的原理。根据流程能够一步步走下来,会使用就行。-
本人能力有限,同时避免重复造轮子,我将参考他人的教程就进行讲解,结合他人的教程以及我的注释,会避免很多的坑。

1. 安装WSL2系统

安装WSL2最好的教程就是参考Microsoft官方教程-
官方网站:#### https://learn.microsoft.com/zh-cn/windows/wsl/install-
安装是需要注意自己的C盘剩余的存大小

2. 安装UBUNTU

安装完WSL2后在Microsoft store 找到ubuntu22.04并进行安装,(OE工具链要求Ubuntu20.04),但Ubuntu22.04也可以运行OE工具链,安装22.04版本即可,对新手小白来说,22.04版本也可以用来学习ROS2,目前主流的ROS2教学主要是基于UBUNTU22.04系统 例如鱼香ROS 古月句ROS2入门21讲 猛狮训练营赵虚左老师的ROS2可成等等。-
建议在VSCODE上使用WSL2:https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-vscode-
安装完Ubuntu22.04之后不要急着开始,转换Ubuntu文件位置(节省C盘空间)。-
教程链接:##### https://blog.csdn.net/imok1234567/article/details/136820228-
!!!注意看到Ubuntu22.04位置迁移完即可后面的不用再跟着做下去-
接下来根据烨神的文章安装英伟达显卡驱动安装以及Anaconda安装

!!!-

-
!!!

闭坑指南:按照上面操作还是 conda: command not found时,在重新打开一个终端输入命令就会有反应。-
!!!yolov5源码不要着急下面会讲,有不同的版本可供选择

3. 获取YOLOV5源码

源码获取:参考RDK ModleZOO: https://github.com/D-Robotics/rdk_model_zoo/blob/main/demos/detect/YOLOv5/README_cn.md#%E5%AF%BC%E5%87%BA%E4%B8%BAonnx-1-
可以根据自己需要选择相应的版本,我使用的是YOLOv5 tag v7.0

注意:切换命令为 git checkout v7.0**-

获取完源码后,继续跟着烨神的文章配置虚拟环境

4. 配置虚拟环境

继续参考烨神文章:https://developer.d-robotics.cc/forumDetail/185446371330059463

5. 标定照片

!注意这里提供一个更好的数据标定工具 labelimg

安装命令 pip install labelimg

工具使用:1.激活虚拟环境,在终端中输入labelimg

2.打开图片放置文件,设置标定结果放置文件
         3. 将标定结果设置为YOLO格式。(点击第2个框知道出现YOLO)

-
-
在图片上右键单击出现菜单后点击 Creat 之后就按住鼠标左键可以进行框选图片 框选完成后输入框选物体名称-
-
具体使用方法请参考视频:【【手把手带你实战YOLOv5-入门篇】YOLOv5 数据集构建】https://www.bilibili.com/video/BV18g4y1t7r2?vd_source=9376e8afe200ff5f1f94ef1b84fe111b

6. 训练数据集

标定完图片之后接着参考烨神的教程,从3.标注信息修正开始看起,也可以继续参考视频中的教程,视频中的教程省去了标注信息修正的过程,同时是自己设置的验证集。-
!!!注意在训练自己的数据集时,文件的路径和名称一定要正确,否则会报错。

7. 转换onnx文件

转换ONNX训练参考 RDK Modle ZOO 文字说明: https://github.com/D-Robotics/rdk_model_zoo/blob/main/demos/detect/YOLOv5/README_cn.md#yolov5-tag-v70

需要注意的是 yolo .py的修改:

其余的修改参考RDK Modle ZOO 文字说明即可

接下来的步骤都可以参考还要参考OE算法工具链:https://developer.d-robotics.cc/api/v1/fileData/x5_doc-v126cn/oe_mapper/source/env_install/env_deploy.html,同时我也写几点注意事项

8. 安装docker desktop

安装docker desktop参考:https://docs.docker.com/get-started/get-docker/-
重要的一点是在docker desktop中更改文件保存目录(没做这个导致我C盘爆满)

安装完dockerdesktop之后还要进行一些设置:https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers-

如果利用WSL2进行开发在下面这个步骤中第三部不需要做:(sudo service docker restart)-

9. 拉取并挂载镜像

参考链接:https://developer.d-robotics.cc/forumDetail/251934919646096384

在获取镜像时 建议先下载,然后在挂载到本地,建议使用CPU版本,比较简单(我使用的是1.2.6CPU版本)。

Ubuntu20.04 CPU Docker镜像(仅提供运行环境,请配合OE开发包使用):

wget -c ftp://x5ftp@vrftp.horizon.ai/OpenExplorer/v1.2.8_release/docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz --ftp-password=x5ftp@123$%

Ubuntu20.04 GPU Docker镜像(仅提供运行环境,请配合OE开发包使用):

wget -c ftp://x5ftp@vrftp.horizon.ai/OpenExplorer/v1.2.8_release/docker_openexplorer_ubuntu_20_x5_gpu_v1.2.8.tar.gz --ftp-password=x5ftp@123$%

Ubuntu20.04 CPU Docker镜像(仅提供运行环境,请配合OE开发包使用):

wget -c ftp://x5ftp@vrftp.horizon.ai/OpenExplorer/v1.2.6_release/docker_openexplorer_ubuntu_20_x5_cpu_v1.2.6.tar.gz --ftp-password=x5ftp@123$%

Ubuntu20.04 GPU Docker镜像(仅提供运行环境,请配合OE开发包使用):

wget -c ftp://x5ftp@vrftp.horizon.ai/OpenExplorer/v1.2.6_release/docker_openexplorer_ubuntu_20_x5_gpu_v1.2.6.tar.gz --ftp-password=x5ftp@123$%####

-
图片窃截取自:https://developer.d-robotics.cc/api/v1/fileData/x5_doc-v126cn/oe_mapper/source/env_install/env_deploy.html

在docker desktop 启动imge不用执行第一行操作-
先输入 docker images命令查看有没有挂载的镜像,如果没有在执行第一行命令。-

-

手动启动docker镜像时建议改成一行在输入(交给AI改格式例如文心一言),多行输入容易出错。

**我的命令:**docker run -it --rm -v /home/li/OE1.2.6:/open_explorer -v /home/li/1.2.6data:/data/horizon_x5/data openexplorer/ai_toolchain_ubuntu_20_x5_cpu:v1.2.6-py10-
注意改成你自己的目录 以及版本。-
执行完docker run -it --rm…命令后,进入data文件夹,同时吧之前导出的ONNX文件放在你挂载的data文件里(windows界面操作)-

# 10.模型量化

先检查检测你的模型:hb_mapper checker --model-type onnx --march bayes-e --model 模型名字.onnx

然后在同级目录下新建一个.yaml文件,. 对应的yaml文件在./ptq_yamls目录下.-

-
然后运行hb_mapper makertbin --model-type onnx --config 你的yaml文件的名字.yaml-
就会生成一个.bin 文件,.bin文件就是我们要用到的文件

在hb_mapper makertbin --model-type onnx --config 你的yaml文件的名字.yaml 这个命令中可能会出现错误:-

-
这是因为 转换代码有问题 :需要进行校准数据:在之前训练自己的数据集中提到过,参考烨神的文章:https://developer.d-robotics.cc/forumDetail/185446371330059463

三.参加孵化营总结感悟以及项目预告

1.总结感悟:

在地瓜创客孵化营中见到了 学到了很多,最重要的收货是学会了部署YOLO模型。在地瓜创客孵化营认识到了好多开发者,有搞算法的 有搞硬件的 又搞嵌入式的…,孵化营给我的感觉就像是一个大家庭,大家互相帮助,共同进步(主要是大家帮助我这个小白)。经过地瓜机器人内推,通过面试,我成功获得了深圳科创学院冬季科创营观摩营的名额,在这里要感谢地瓜机器人,感激孵化营的导师,感谢孵化营的每位小伙伴。

2.项目预告:

盘驱式球形轮胎底盘系统(使用RDK X5作为主控哦)

参考文档-
1.https://github.com/D-Robotics/rdk_model_zoo/blob/main/demos/detect/YOLOv5/README_cn.md#%E5%AF%BC%E5%87%BA%E4%B8%BAonnx-1-
2.https://developer.d-robotics.cc/api/v1/fileData/x5_doc-v126cn/oe_mapper/source/faststart/quickstart.html#id3-
3.https://developer.d-robotics.cc/forumDetail/256524798723995031-
4.https://developer.d-robotics.cc/forumDetail/185446371330059463-
5.https://blog.csdn.net/imok1234567/article/details/136820228

jiaozhun.py-
jiaozhun_shouji.py

这个错误怎么解决的,我看贴的链接里面并没有这部分内容

如有错误欢迎各位批评指正

需要对标注信息进行修正 参考烨神的文章:https://developer.d-robotics.cc/forumDetail/185446371330059463

你好,请问你这个问题解决了吗

正常的onnx的输出格式是怎么样的