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

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

YOLOv5-Lite是YOLO(You Only Look Once)目标检测系列的一个轻量级版本,专为资源有限的设备如树莓派4B设计。YOLO是一种实时对象检测算法,以其快速和高精度而闻名。YOLOv5-Lite是在YOLOv5的基础上进行了优化,减少了计算复杂性,使得在低功耗、低性能硬件上运行成为可能。 树莓派4B是一款受欢迎的单板计算机,拥有强大的处理能力,可运行完整的Linux操作系统,适合进行各种边缘计算任务。将YOLOv5-Lite移植树莓派4B上,可以实现本地的目标检测,无需依赖云服务,提高了数据安全性并降低了延迟。 这个资源包包含的内容可能包括以下部分: 1. **模型权重文件**:YOLOv5-Lite的预训练模型权重,这是模型的核心部分,用于识别图像中的物体。 2. **模型配置文件**:描述了网络架构和超参数,包括每层的类型、输出尺寸等。 3. **推理代码**:用Python编写的代码,用于加载模型并处理输入图像或视频,执行目标检测任务。 4. **树莓派4B系统镜像**:可能是一个预装了YOLOv5-Lite运行环境的Raspberry Pi OS镜像,方便用户快速部署。 5. **依赖库和安装指南**:列出所有必要的软件包和库,例如OpenCV、CUDA(如果支持)、Cython等,以及如何在树莓派上安装它们。 6. **样例数据**:一些示例图像或视频,用于演示模型的运行效果。 7. **教程文档**:详细说明如何在树莓派上设置环境、编译代码、运行目标检测以及如何处理结果。 在部署YOLOv5-Lite时,你需要按照以下步骤操作: 1. **系统准备**:将提供的树莓派4B镜像写入SD卡,并将其插入树莓派中。启动系统并确保网络连接正常。 2. **环境搭建**:根据提供的安装指南安装必要的依赖库,包括Python、TensorFlow或PyTorch(YOLOv5-Lite可能基于其中之一)以及OpenCV等。 3. **模型部署**:将模型权重文件和配置文件复制到正确的位置,然后使用提供的Python脚本进行模型加载。 4. **测试与优化**:使用样例数据测试模型,观察检测结果。可能需要调整模型的阈值来平衡检测速度和准确性。 5. **实时应用**:将模型集成到你的应用程序中,可以处理来自摄像头的实时视频流,实现目标检测功能。 这个资源包对初学者和开发者都非常有价值,它不仅提供了现成的解决方案,还有助于了解如何在低功耗硬件上实现深度学习应用。通过实践,你可以学习到如何优化模型以适应资源有限的设备,这对于边缘计算和物联网(IoT)项目特别重要。
评论 78
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的咋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值