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模板匹配的方式去识别,不涉及深度学习速度应该会快很多。当然这是后话,人工智能还有很多地方我都没有学习,甚至都没有听过,现在还只是一个小白,继续加油吧!


相关文章
|
1月前
|
存储 监控 算法
动物目标检测——基于YOLOv5和树莓派4B平台
【10月更文挑战第1天】本文将详细介绍如何在性能更强的计算机上训练YOLOv5模型,并将训练好的模型部署到树莓派4B上,通过树莓派的摄像头进行实时动物目标检测。
|
TensorFlow 算法框架/工具 计算机视觉
YOLOv3物体/目标检测之实战篇(Windows系统、Python3、TensorFlow2版本)
 基于YOLO进行物体检测、对象识别,在搭建好开发环境后,先和大家进行实践应用中,体验YOLOv3物体/目标检测效果和魅力;同时逐步了解YOLOv3的不足和优化思路。
215 0
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8】实战三:基于LabVIEW TensorRT部署YOLOv8
【YOLOv8】实战三:基于LabVIEW TensorRT部署YOLOv8
597 0
【YOLOv8】实战三:基于LabVIEW TensorRT部署YOLOv8
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8】实战二:YOLOv8 OpenVINO2022版 windows部署实战
【YOLOv8】实战二:YOLOv8 OpenVINO2022版 windows部署实战
1197 0
【YOLOv8】实战二:YOLOv8 OpenVINO2022版 windows部署实战
|
机器学习/深度学习 编解码 人工智能
LabVIEW中使用unet快速实现图像分割
LabVIEW中使用unet快速实现图像分割
195 0
LabVIEW中使用unet快速实现图像分割
|
机器学习/深度学习 并行计算 Ubuntu
【Jetson Xavier NX 开发板深度学习环境配置流程】
【Jetson Xavier NX 开发板深度学习环境配置流程】
923 0
【Jetson Xavier NX 开发板深度学习环境配置流程】
|
缓存 计算机视觉
|
机器学习/深度学习 并行计算 计算机视觉
|
人工智能 并行计算 计算机视觉
|
机器学习/深度学习 人工智能 算法
LabVIEW快速实现OpenCV DNN(YunNet)的人脸检测(含源码)
LabVIEW快速实现OpenCV DNN(YunNet)的人脸检测
591 0
LabVIEW快速实现OpenCV DNN(YunNet)的人脸检测(含源码)
下一篇
无影云桌面