基于改进YOLOv5s的农田辣椒病害图像识别是我的一个课题作业,制作与2023年上半年,可能有点过时,凑活着看,互相讨论。因为是课堂作业,作业要求低所以做得很随意,缺点也很多,如果有想法,自己也可以参考改进,本文所有的改进点都是为了改进而改进。很多东西是看网络上制作的,如果有侵权,请联系删除。
1 引言
1.1 研究背景及意义
中国是全球最大的辣椒生产国,消费国和全球辣椒出口最多的国家之一,在国际辣椒产业中占据主导地位。但是在辣椒生产过程中病害每年给我国的辣椒产业造成重大经济损失,如何才能把损失减少到最少,答案就是在辣椒出现病害初期采取果断防护措施。然而辣椒病害种类多,出现面积广,传统的辣椒病害识是靠人工检查以及专家现场鉴定作物的病症,才能给出相应的防护措施,这种方法不仅效率低下,而且还需要耗费大量的人力无力和财力,已经无法满足当下的辣椒病害识别。
随着科学技术的发展,计算机的图像识别与处理技术不断得到创新发展,病害智能识别技术已经进入到了农户的生活中,应用计算机的图像识别技术来作为识别农业病害已经成为可能。特别是在当下手机与互联网的快速发展与普及,农户们可以把农业病害的图片发到相应的识别软件上进行分析,反馈病害识别结果,或者采用摄像头监控的方式,每天不定时采集农业图片,由软件进行分析,反馈给农户,帮助农户更好的采取正确的措施,使农业病害带来的经济损失降到最少。
1.2 国内外研究现状
随着人工智能的快速增长以及在农业领域的使用,在辣椒实行大规模种植种植模式背景下,对辣椒生长状态的检测采用机器识别农业病害以及成为为未来辣椒种植的发展趋势。而大面积种植带来的一个问题是在种植过程中容易造成成片的农业病害,对农作物的生长和产量产生极大的负面影响,造成巨大的经济损失。
近年来,为了准确、快速地识别病虫害,国内外研究者们在计算机视觉不断进步的背景下,借助于图像识别技术开展了大量研究,让基于于深度学习的目标检测技术在农业领域的应用日益广泛。孙俊等针对小麦慧在田间复杂环境下计算数准确度较低的问题,提出了基于区域的卷积神经网络目标计算模型。张秀花等提出了一个基于回归的卷积神经网络目标检测算法,提高了番茄苗分选移栽分级检测精度。韩晓彤等针对水稻病害建立了基于病纹数的水稻纹病分级模型。FARJON等提出了一种基于Faster-RCNN网络进行苹果检测识别,并于线性回归方法进行花卉密度计算。LIU等针对复杂环境下黄瓜病虫害的检测提出了Efficientnet-YOLOv3方法。张伏等针对密集圣女果识别提出了改进YOLOv4神经网络。
在针对基于回归的目标检测算法研究中,XIA等提出了一种基于tensflow平台的Inccption-v3模型,利用迁移学习技术在ImageNet中的病害数据集搭建了花卉病害识别模型,准确率达到了93%。SUN等针对桃花等病虫害提出了一种基于DeepLab-ResNet语义分割网络检测方法,在保持较高检测精度的同时,具有较高的检测速度,可以实现实时检测,很好的满足了智能设备在农业中的高效作业要求。
1.3 研究目的、内容和方法
本文为课程作业,为了实现辣椒智慧农业种植,减少人工检测和提高辣椒生长状态和病害的检测效率,提出了基于改进YOLOv5s的检测模型。由于在田间场景复杂的环境下,辣椒生长状态以及病害程度变化多端,特征难以提取。YOLO算法的出现实现了卷积神经网络端对端的目标检测。注意力机制在网络中的运用可以有效的忽略背景噪音等的干扰,进而提高目标检测精度。其中注意力机制(Convolutional Block Attention Module,CBAM)能够有效增强网络对目标精度的精准定位,基于此本文提出了融合CBAM注意力机制的农田辣椒病害检测网络,以达到准确检测辣椒病害类型和生长状态。此外,本文还修改了网络主干为(More Features from Cheap Operations,GhostNet)以达到减少参数提高检查速度的效果。修改损失函数为EIOU,EIOU是在 CIOU 的惩罚项基础上将预测框和真实框的纵横比的影响因子拆开,分别计算预测框和真实框的长和宽,来解决CIOU存在的预测框和gt框的长宽比是相同的,那么长宽比的惩罚项恒为0的问题。
2 材料与方法
2.1 数据采集及预处理
本文使用的数据来自百度辣椒病虫害图像识别挑战赛(挑战赛地址:
),从数据集中挑选0:用药不当 ,1:细菌性病害,2:根腐病,3:脐腐病四种常见的辣椒病害作为实验数据,针对不同的病害类型,仔细筛选了针对不同天气(晴天和阴天),不同时间段下的辣椒病害图像,同时考虑到辣椒病害遮挡情况,筛选了无遮挡、病害部位相互遮挡、和枝叶遮挡四种情况下的辣椒病害图像,确保所构建的实验群样本数据库的全面性。筛选了4080张辣椒病害图像如图1所示。
图1 辣椒病害数据部分截图
为了使网络泛化能力更强,保证样本数量和网络的泛化性在一定程度上存在正比关系,直接影响网络的训练结果,采用多种数据增强方法。数据增强是一种重要的机器学习方法,它基于已有的训练样本数据来生成更多的训练数据。其目的是使扩增的训练数据尽可能接近真实分布的数据,从而提高检测精度。数据增强是一种在数据约束环境下提高机器学习模型性能和准确性的低成本和有效的方法。对于图像数据,数据增强通过创建现有数据的副本并对其进行小的修改来增加数据的多样性,如旋转、缩放、裁剪、翻转等操作。这种方法有助于提高模型的泛化能力,减少过拟合的风险。
因此在本文中,使用了包含了改变亮度、裁剪、平移、旋转、镜像、cutout等数据增强方法。首先,对图像进行不同程度的亮化改变,使得辣椒在不同环境中不受光线的影响;然后,对图像进行随机裁剪,进行不同程度的对比,保证数据的多样性;其次,还进行随机的平移、翻转等。使得每张图片增强5次,使数据量达到了20400张,保证数据的可靠性。最后使用labelImg标注工具手动标注了20400张辣椒病害图像按照9:1的分配比例划分作为训练集和验证集。
图2 数据增强后的训练数据集 部分图像
注意:一般做实验数据和标签是分开存储的,本文在做此实验时因为为了省时间就把数据和标签放在一起 。正确做法如下图:
图 3 数据划分
images 里面存放着训练、验证和测试的数据集,如图4所示。
图 4 训练、验证和测试的数据集
labels里面存放着训练、验证和测试的数据集标签,如图5所示。
图5 训练、验证和测试的数据集标签
2.2 针对辣椒病害检测特点的YOLOV5S模型改进
YOLOv5是一种目标检测算法,与之前的YOLO版本相比,YOLOv5采用了多种优化手段来提高准确性和运行速度。具体来说,YOLOv5的目标检测网络有,
网格概念:YOLOv5与历代YOLO算法相似,使用了网格的概念,将图像划分为多个网格,每个网格负责预测一个或多个物体。简单来说每个网格都可以产生预测框。(2)自适应anchor计算:在YOLO算法中,针对不同的数据集,都会有初始设定长宽的锚框。通过k-means聚类得到先验框。(3)自适应图片缩放:针对不同的目标检测算法而言,通常需要执行图片缩放操作,即将原始的输入图片缩放到一个固定的尺寸,再将其送入检测网络中。(4)Backbone结构:在Backbone中使用了focus结构和CSP结构。其中CSP结构如网络结构图所示。(5)Neck结构:在Neck仍然采用FPN(特征金字塔网络),后面卷积层经过上采样与前面的层concate,从而提升网络的多尺度检测能力。(6)预测部分:在Prediction Yolov5中采用其中的GIOU_Loss做Bounding box的损失函数。在YOLOv5系列中YOLOv5s的参数量少,方便部署在智能设备上,可为田间辣椒病害识别机器人和检测设备提供支持,因此本文选择在YOLOv5s的基础上改进以更好的解决农田辣椒病害识别检测问题。
2.3 改进YOLOv5s的总体结构
改进YOLOX的总体结构YOLOX目标检测网络一般可简化成主干网络、颈部特征加强络和预测头3个部分。YOLOX的结构如图5所示。针对辣椒病害的特征,本文在在YOLOv5-s中加入坐标注意力机制(CBAM)、损失函数(EIOU)以及改进主干网络(GhostNet)3个改进策略。
图6.YOLOv5s的结构图
2.3.1 添加注意力机制CABM优化主干特征提取网络
辣椒病害图像容易受到辣椒叶片和背景等的干扰,并且在目标检测过程中卷积神经网络将整张图划分为单元格进行检测,网络需要对图像的每一部分进行处理,操作存在数据量大、计算效率低等问题,从而造成错检、少检等问题。注意力机制可以使网络模型聚焦在感兴趣的局部信息中,使网络更加的关注辣椒病害部位,从而提高小目标检测准确率。在主干网络中引入注意力机制,使网络能够自适应地注意目标,提高检测准精度。
本文提出的融合坐标注意力机制的辣椒病害检测网络为了动态增强特征(辣椒病害部位)提取并且减少背景噪声(辣椒叶片、节根、土壤)的干扰,在主干特征提取网络中嵌入坐标注意力机制模块(CBAM),如图7所示。
图7 添加CBAM注意力机制
CBAM之所以被叫做混合注意力机制,是因为相较于其他通道注意力机制,他在保留原有通道注意力机制的基础上加入了空间注意力机制,从通道和空间两个方面对网络进行优化,使得优化后的网络可以从通道和空间两个角度获取更为有效的特征,进一步提高模型同时在通道和空间两个角度的特征提取效果而且CBAM可以无缝地集成到任何CNN架构中,开销不会很大,实现与基本CNN网络一起进行端到端的训练,CBAM的代码如图8所示。假设我们有一个中间特征F(H×W×C)作为卷积层的输出。根据层的深度,每个这样的特征层都会捕获有用的信息,例如简单的边缘、形状等,以获取更复杂的输入语义表示。我们希望网络更多地关注(即关注)这些特征图的重要部分。
图8 CBAM的代码部分
2.3.2 改进主干网络(GhostNet)
我们将YOLOv5s中位于Head和Backbone之间的结构称为“Neck”,其目标是在将Backbone提取的信息反馈到Head之前尽可能多地聚合这些信息。该结构通过防止小目标信息丢失,在传递小目标信息方面发挥了重要作用。它通过再次提高特征图的分辨率来做到这一点,这样来自Backbone的不同层的特征就可以被聚合,以提升整体的检测性能。
GhostNet是一种轻量级的深度卷积神经网络,旨在在保持高性能的同时降低模型大小和计算复杂度。其主要思想是通过引入Ghost Module来生成更多的特征图,从而减少模型的参数数量和计算量。Ghost Module的工作原理是,首先采用普通的1x1卷积对输入图片进行通道数的压缩,然后再进行深度可分离卷积(逐层卷积)得到更多的特征图。这些特征图通过简单的线性运算进行组合,生成更多的相似特征图,这些相似特征图被认为是彼此的“Ghost”。Ghost Module结构图如图9所示。
图9 Ghost Module结构图
当前,一些检测算法计算量庞大,这对计算能力和功耗有限的设备或者物联网场景的部署提出了巨大的挑战。研究轻量级且高效的目标检测模型对实际至关重要。为了实现田间辣椒病害检测功能的设备的部署和把模型部署到设备的视觉系统上,实现为了的轻量化十分重要。
目前,有2种主要的轻量级网络构造方法:一、压缩整体网络参数,通过减少卷积层的网络参数达到小而薄的目的。但是这种做法会导致计算精度下降。二、通过设计一种轻量级的网络结构,通过深度可分离卷积去去平衡精度,在降低参数量的同时保证计算精度不变或者改变轻微。把YOLOv5s的主干网络修改为GhostNet,就是设计一种轻量级的网络结构来达到降低参数和保证计算精度的方法,如图10所示。GhostNet通过引入Ghost Module,能够在维持同等数量的特征映射的同时,大幅度减少计算量和参数数量。这使得在资源有限的设备上,GhostNet表现出了显著的性能优势。尽管Ghost模块的计算开销较小,但其性能并未因此受到影响。在多项基准测试中,GhostNet的性能不仅超越了同等计算量的其他模型,甚至还超越了某些计算量更大的模型。这表明,通过合理的设计,可以在减少计算开销的同时,维持或提高模型的性能。
图10 GhostNet主干网络代码
2.3.3 修改损失函数为EIOU
EIOU损失函数是一种用于计算语音识别模型误差的损失函数,是在 CIOU 的惩罚项基础上将预测框和真实框的纵横比的影响因子拆开,分别计算预测框和真实框的长和宽,旨在解决交叉熵损失函数在语音识别中的一些问题。EIou损失函数的核心思想是将交叉熵损失函数中的softmax函数替换为一种更加适合语音信号的函数。具体来说,EIOU损失函数使用了一种称为“EIOU”函数的激活函数,它是一种基于欧几里得距离和交集的函数。通过使用EIOU函数,EIOU损失函数可以更好地处理同音字、语速变化等问题,从而提高模型的准确性。
EIOU包括三个部分:IOU损失、距离损失、高宽损失(重叠面积、中心点举例、高宽比)。高宽损失直接最小化了预测目标边界框和真实边界框的高度和宽度的差异,使其有更快的收敛速度和更好的定位结果。
图11 EIOU损失函数公式
3 实验环境(基于PyCharm平台搭建基于YOLOv5s的辣椒病害检测模型)
3.1 实验环境
本文基于PyCharm平台搭建基于YOLOv5s的辣椒病害检测模型,并且对YOLOv5s进行改造。PyCharm是由JetBrains公司开发的一款Python集成开发环境(IDE)。它为Python开发者提供了一套完整的工具,包括代码编辑器、调试器、测试工具、版本控制系统集成等等。提供了自动补全、语法高亮、代码折叠、代码片段等功能,内置了强大的调试器,可以对代码进行单步调试,查看变量值、函数调用栈等,方便快速定位问题。且PyCharm支持多种插件,可以扩展其功能,如支持Django、Flask、Pyramid等Web框架的插件。实验和训练所用操作系统为Windows11,编程语言为Pythion3.10.而且还做了基于YOLOv5s的辣椒病害图像识别,为改进后的YOLOv5s模型与原YOLOv5s模型进行比较。
3.2 评价指标
本文采用5个指标用于评价辣椒病害图像识别模型,分别为精确率(precision)、召回率(recall,R)、均值平均精度(mean aveerage precision,mAP)、模型大小和检测速度,并采用损失函数(EIOU)用于精确度的评价。
3.3 模型训练
3.3.1 训练结果
原YOLOv5s模型辣椒病害图像识别模型与改进后的YOLOv5s的辣椒病害图像识别模型分别总共训练了100轮次,训练初期模型P值、R值、mAP.5增长较快,此时模型学习效率较高、损失函数快速收敛,两个模型训练结果如图12、图13所示。
图12 原YOLOv5s模型辣椒病害图像识别结果
图13 改进后的YOLOv5s模型训练结果
3.3.2 对比模型结果与分析
对比原YOLOv5s模型与改进后的YOLOv5s模型,采用mAP@0.5(如图14)mAP@0.5:0.95(如图15)进行比较。
图14 原YOLOv5s模型mAP@0.5与改进后YOLOv5s模型mAP@0.5比较图
图15 原YOLOv5s模型mAP@0.5:0.95与改进后YOLOv5s模型mAP@0.5:0.95比较图
从上述两张对比图不难看出两个模型的准确率度达到了90%以上,说明具有较好的鲁棒性。但是总体而言改进后的基于YOLOv5s的辣椒图像检测模型更稳定,震荡较小,效果比原YOLOv5s模型辣椒病害图像识别模型更好。
4 结论与展望
在基于YOLOv5s的辣椒病害检测模型实验中,我通过使用YOLOv5s算法模型来对农田辣椒病害进行检测。主要的步骤包括:数据准备、模型搭建、模型训练和结果评估。
在实验中,首先需要准备数据集,包括图像文件和对应的标签。然后使用PyCharm来读取数据文件,并将每一帧图像进行处理,如裁剪、平移等。接着,我们可以将处理过的图像序列送入网络学习模型中进行训练。在训练过程中,我们可以使用数据增强技术来增加训练样本的多样性,提高模型的泛化能力。最后,我们可以通过计算模型在测试集上的准确率、精确率、召回率等指标来评估模型的性能。
展望未来,辣椒病害图像检测是一个具有很高应用价值的研究方向。在实验中,我们可以进一步改进模型的性能,例如使用更加复杂的网络结构,优化模型的超参数等。此外,我们可以尝试使用更大规模的数据集进行训练,可以提高模型的泛化能力和鲁棒性。另外,我们还可以将改进后的YOLOv5s的农田辣椒病害图像识别模型应用到更多的实际场景中,例如番茄检测、辣椒病虫害检测与自动分析等领域。总之,基于YOLOv5s的农田辣椒病害图像识别还有很多有待探索和改进的地方,其前景十分广阔。