项目中所用到的算法模型和数据集等信息如下:
算法模型:
? ? yolov5
? ? yolov5主要包含以下几种创新:
? ? ? ? 1. 添加注意力机制(SE
、CBAM
、CA
等)
? ? ? ? 2. 修改可变形卷积(DySnake
-主干c3
替换、DySnake-所有c3替换)
数据集:
? ? 网上下载的数据集,详细介绍见数据集介绍部分。
以上是本套代码的整体算法架构和对目标检测模型的修改说明,这些模型修改可以为您的 毕设、作业等提供创新点和增强模型性能的功能 。
如果要是需要更换其他的检测模型,请私信。
注:本项目提供所用到的所有资源,包含 环境安装包、训练代码、测试代码、数据集、视频文件、 界面UI文件
等。
在本文中,我们将详细介绍如何利用深度学习中的YOLOv5算法来实现对蔬菜和水果的检测,并结合PyQt5设计了一个简约而强大的系统UI界面。通过该界面,您可以轻松选择自己的视频文件或图片文件进行检测,并且还能够根据需要替换训练好的yolov5模型,以适应不同的数据检测需求。
我们的系统界面不仅外观优美,而且具备出色的检测精度和强大的功能。它支持多目标实时检测,并允许您自由选择感兴趣的检测目标。
本博文提供了完整的Python程序代码和使用教程,非常适合新入门者参考学习。您可以通过文末的下载链接获取完整的代码资源文件。以下是本博文的目录大致内容:
功能:
1. 支持单张图片识别
2. 支持遍历文件夹识别
3. 支持识别视频文件
4. 支持结果导出(xls、csv两种格式)
5. 支持切换检测到的目标
基于深度学习的果蔬识别系统
本项目提供所有需要的环境安装包(python、pycharm、cuda、torch
等),可以直接按照视频讲解进行安装。具体的安装流程见此视频:视频链接
环境安装视频是以车牌项目为例进行讲解的,但是可以适用于任何项目。
视频快进到 3:18 - 21:17
,这段时间讲解的是环境安装,可直接快进到此处观看。
环境安装包可通过百度网盘下载:
链接:https://pan.baidu.com/s/17SZHeVZrpXsi513D-6KmQw?pwd=a0gi
提取码:a0gi
–来自百度网盘超级会员V6的分享
上面这个方法,是比较便捷的安装方式(省去了安装细节),按照我的视频步骤和提供的安装包安装即可,如果要是想要多学一点东西,可以按照下面的安装方式走一遍,会更加熟悉。
环境安装方法2:
追求快速安装环境的,只看上面即可!!!
下面列出了5个步骤,是完全从0开始安装(可以理解为是一台新电脑,没有任何环境),如果某些步骤已经安装过的可以跳过。下面的安装步骤带有详细的视频讲解和参考博客,一步一步来即可。另外视频中讲解的安装方法是通用的,可用于任何项目
。
按照上面的步骤安装完环境后,就可以直接运行程序,看到效果了。
数据集总共包含以下类别,且已经分好 train、val、test
文件夹,也提供转好的yolo
格式的标注文件,可以直接使用。
白菜
白萝卜
胡萝卜
番茄
大蒜
花生
黄瓜
茄子
辣椒
花菜
西蓝花
土豆
菠萝
火龙果
黑葡萄
梨子
柑橘
龙眼
草莓
芒果
苹果
绿葡萄
西瓜
樱桃
香蕉
柚子
数据样式如下:
YOLOV5有YOLOv5n,YOLOv5s,YOLOv5m,YOLOV5l、YOLO5x五个版本。这个模型的结构基本一样,不同的是deth_multiole模型深度和width_multiole模型宽度这两个参数。就和我们买衣服的尺码大小排序一样,YOLOV5n网络是YOLOV5系列中深度最小,特征图的宽度最小的网络。其他的三种都是在此基础上不断加深,不断加宽。不过最常用的一般都是yolov5s模型。
??本系统采用了基于深度学习的目标检测算法YOLOv5,该算法是YOLO系列算法的较新版本,相比于YOLOv3和YOLOv4,YOLOv5在检测精度和速度上都有很大的提升。YOLOv5算法的核心思想是将目标检测问题转化为一个回归问题。此外,YOLOv5还引入了一种称为SPP(Spatial Pyramid Pooling)的特征提取方法,这种方法可以在不增加计算量的情况下,有效地提取多尺度特征,提高检测性能。
??在YOLOv5中,首先将输入图像通过骨干网络进行特征提取,得到一系列特征图。然后,通过对这些特征图进行处理,将其转化为一组检测框和相应的类别概率分数,即每个检测框所属的物体类别以及该物体的置信度。YOLOv5中的特征提取网络使用CSPNet(Cross Stage Partial Network)结构,它将输入特征图分为两部分,一部分通过一系列卷积层进行处理,另一部分直接进行下采样,最后将这两部分特征图进行融合。这种设计使得网络具有更强的非线性表达能力,可以更好地处理目标检测任务中的复杂背景和多样化物体。
??在YOLOv5中,每个检测框由其左上角坐标(x,y)、宽度(w)、高度(h)和置信度(confidence)组成。同时,每个检测框还会预测C个类别的概率得分,即分类得分(ci),每个类别的得分之和等于1。因此,每个检测框最终被表示为一个(C+5)维的向量。在训练阶段,YOLOv5使用交叉熵损失函数来优化模型。损失函数由定位损失、置信度损失和分类损失三部分组成,其中定位损失和置信度损失采用了Focal Loss和IoU Loss等优化方法,能够有效地缓解正负样本不平衡和目标尺寸变化等问题。
??YOLOv5网络结构是由Input、Backbone、Neck、Prediction组成。Yolov5的Input部分是网络的输入端,采用Mosaic数据增强方式,对输入数据随机裁剪,然后进行拼接。Backbone是Yolov5提取特征的网络部分,特征提取能力直接影响整个网络性能。YOLOv5的Backbone相比于之前Yolov4提出了新的Focus结构。Focus结构是将图片进行切片操作,将W(宽)、H(高)信息转移到了通道空间中,使得在没有丢失任何信息的情况下,进行了2倍下采样操作。
此代码的训练步骤极其简单,不需要修改代码,直接通过cmd
就可以命令运行,命令都已写好,直接复制即可,命令如下图:
下面这条命令是 训练 添加 CBAM 注意力机制的命令,复制下来,直接就可以运行,看到训练效果(**需要将coco_NEU-DET.yaml修改为自己的数据集的yaml文件 **)。
python ./train.py --epochs 500 --cfg models/yolov5s-CBAM-2.yaml --hyp data/hyps/hyp.scratch-low.yaml --data data/coco_NEU-DET.yaml --weight weights/yolov5s.pt --workers 4 --batch 16
执行完上述命令后,即可完成训练,训练过程如下:
下面是对命令中各个参数的详细解释说明:
python
: 这是Python解释器的命令行执行器,用于执行后续的Python脚本。
./train.py
: 这是要执行的Python脚本文件的路径和名称,它是用于训练目标检测模型的脚本。
--epochs 500
: 这是训练的总轮数(epochs),指定为500,表示训练将运行500个轮次。
--cfg models/yolov5s-CBAM-2.yaml
: 这是YOLOv5模型的配置文件的路径和名称,它指定了模型的结构和参数设置。
--hyp data/hyps/hyp.scratch-low.yaml
: 这是超参数文件的路径和名称,它包含了训练过程中的各种超参数设置,如学习率、权重衰减等。
--data data/coco_NEU-DET.yaml
: 这是数据集的配置文件的路径和名称,它指定了训练数据集的相关信息,如类别标签、图像路径等。
--weight weights/yolov5s.pt
: 这是预训练权重文件的路径和名称,用于加载已经训练好的模型权重以便继续训练或进行迁移学习。
--workers 4
: 这是用于数据加载的工作进程数,指定为4,表示使用4个工作进程来加速数据加载。
--batch 16
: 这是每个批次的样本数,指定为16,表示每个训练批次将包含16个样本。
通过运行上面这个命令,您将使用YOLOv5模型对目标检测任务进行训练,训练500个轮次,使用指定的配置文件、超参数文件、数据集配置文件和预训练权重。同时,使用4个工作进程来加速数据加载,并且每个训练批次包含16个样本。
评估步骤同训练步骤一样,执行1行语句即可,注意--weights
需要变为自己想要测试的模型路径,VOC_fruit.yaml替换为自己的数据集的yaml文件。(因中文显示乱码的原因,此处将其转为了英文显示)
python ./val.py --data data/VOC_fruit.yaml --weights ../weights/YOLOv5s/weights/best.pt
评估结果如下:
我们每次训练后,会在 run/train 文件夹下出现一系列的文件,如下图所示:
? ?该代码采用Pycharm
+Python3.8
开发,经过测试能成功运行,运行界面的主程序为main.py
,提供用到的所有程序。为确保程序顺利运行,请按照requirements.txt
配置Python依赖包的版本。Python版本:3.8,为避免出现运行报错,请勿使用其他版本,详见requirements.txt
文件;
? ? 若您想获得博文中涉及的实现完整全部程序文件(包括训练代码、测试代码、训练数据、测试数据、视频,py、 UI文件等
,如下图),这里已打包上传至博主的面包多
平台,可通过下方项目讲解链接中的视频简介部分下载
,完整文件截图如下:
项目讲解链接:B站