小言_互联网的博客

Yolov5移植树莓派实现目标检测

424人阅读  评论(0)

Hallo,大家好啊!之前写了几篇Yolov5相关项目的博客,然后学习了树莓派之后,更新了几篇树莓派的博客,我的最终目的是将Yolov5移植到树莓派,通过树莓派上面的摄像头实现目标检测。你想啊,在工厂里面,你不可能用笔记本电脑作为上位机给下位机传达指令,所以树莓派作为一个小型pc,有着独天独厚的优势。接下来,以项目为驱动,介绍一下整个流程,包括Yolov5数据集获取模型的训练识别效果树莓派环境的搭建移植树莓派模型在树莓派上的检测效果

目录

一、任务描述 

二、数据集获取

三、Yolov5模型训练

四、模型训练结果

五、检测效果

六、树莓派环境搭建

七、Yolov5移植树莓派

八、树莓派检测效果

总结


一、任务描述 

通过机器视觉的方式实现对工件的识别,以树莓派作为上位机,根据不同的识别效果对下位机发出不同指令,控制整个机器的运转,流程如下:

二、数据集获取

这是老师发的零件,所以网上肯定没有直接能用的模型,不像口罩检测等有现成的数据集,所以我们需要自己去获取数据集。由于我们的零件只有两个,如果我们想获取大量图片话,我们可以通过旋转的方式,我设置每张图片每旋转10度生成一张新的照片,这样没拍一张照片就可以生成36张照片,扩大了数据集的来源。之后用labelImg对图片进行标注,这样我们就获取了大量的数据集和对应的标签txt文件,我按照test:train:val = 1:8:2的比例分配图片。这样我们的数据集就准备好了。

三、Yolov5模型训练

由于yolov5创作者将模型代码开源,所有我们可以拿来直接用,只需要修改train和val的路径,需改成自己的,以及类别的数量,我这里分为两类,所以是2,标签名称就是对应的颜色,blue和red。我选用的是yolov5s这个模型,模型更加轻便,检测速度更快,同样设置类别数量为2.准备好之后,我们就开始训练了,由于我是直接拿cpu来训练的,训练时产在5.7个小时左右,如果用GPU的话速度可以提高不少。

四、模型训练结果

 从图中我们可以看到,无论是准确率还是召回率都接近了100%,平均mAp达到0.995,说明模型的识别效果很好,对于我们的工件识别的任务能够很好的完成。

五、检测效果

从视频中我们可以看到,红色和蓝色的工件被识别出来,红色的打上red的标签,蓝色的打上blue的标签,数字代表精度,基本上在0.8以上,是一个比较理想的结果。对视频进行逐帧检测,每一帧的识别效果都很好。这是模型在笔记本上运行的结果,到此我们的Yolov5模块就算告一段落,接下来的问题就是怎么让它在树莓派上完美运行起来

六、树莓派环境搭建

这是我第一次接触树莓派,又是第一次接触Linux,所有遇到了很多问题,有时候一个问题都要一整天的时间才能够解决。我将这个学习过程,以及遇到的各种疑难杂症都记录下来,发在了csdn上面,希望可以给你们带来帮助。链接如下:Yolov5移植树莓派4B问题总结  Raspberry Pi 4B树莓派学习笔记

我选用的环境是树莓派的64位操作系统,这样的好处是opencv的下载很方便,经过长时间的摸索,我发现Pytorch很难在32位操作系统上安装,即使安装成功也没办法运行。所以我选择的是树莓派64位操作系统,安装了openv和pytorch。

七、Yolov5移植树莓派

环境准备好之后就要进行Yolov5的移植,首先通过vncviewer与树莓派连接,这样我们通过电脑就能控制树莓派,这里出问题的可以看我上面两篇博客。

通过顶端的文件传输将训练好的pt模块传到树莓派上,用linux cd命令进入到yolo所在文件夹中,输入运行指令,python3 运行detect文件,权重文件就用我们刚刚传入的best.pt文件source为0就是调用我们树莓派上安装的CSI摄像头。之后按回车就可以运行了。

八、树莓派检测效果

 我们来看一下检测效果:左边是检测的环境,树莓派搭载csi摄像头获取图像,下面这张图片就是检测时的一张图片,可以看到,红色的零件被识别出来打上了red的标签,蓝色的零件也被识别出来打上蓝色的标签,我们可以利用这两个标签给下位机发出不同的指令,完成指定的任务。

总结

项目主要是Yolov5进行目标检测,之后用树莓派作为上位机,将模型移植树莓派进行识别,控制下位机的运转。过程中遇到数不尽的问题,有硬件上的,有软件上的,常常一个问题就是一天,这个过程是痛苦的,但好在结果是满意的。在检测的时候还发现Yolov5模型的识别速度确实有点慢,笔记本电脑都有点带不动,树莓派上更是卡顿,2-3秒才能检测一张图片。后面优化方向有两个,一个是优化模型,采用yolo-lite模型,一个是优化方法采用opencv模板匹配的方式去识别,不涉及深度学习速度应该会快很多。当然这是后话,人工智能还有很多地方我都没有学习,甚至都没有听过,现在还只是一个小白,继续加油吧!


转载:https://blog.csdn.net/weixin_63866037/article/details/128427628
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场