基于改进YOLOv7的肥城桃病虫害识别方法
2024-09-22刘鹏周鑫孙博陈维康王志军
摘要:为解决肥城桃病虫害特征小以及不同病斑表征相似导致的难以精准识别的问题,以山东省肥城市肥城桃种植基地为样本采集点,构建包含细菌穿孔病、褐斑穿孔病、潜隐黄化病、桃小食心虫、红颈天牛、流胶病6种桃病虫害的数据集:针对样本分布特点,引入Mixup、Cutout、高斯模糊等多种方法进行数据增强,以提升模型对小病斑特征的检测:以YOLOv7模型作为骨干网络,加入Ghost模块进行瘦身以降低模型冗余特征,构建基于CBAM注意力机制和加权双向特征金字塔网络(BiFPN)的多尺度神经网络模型,增强小病斑的多尺度融合,从而提高模型的泛化能力。经实验验证,改进后的模型对上述6种病虫害的识别精度均值(mAP)达到93. 2%。表明改进后的模型能够实现对病虫害的有效识别,可为肥城桃病虫害的早期预警和防治提供一定的技术支撑。
关键词:肥城桃;病虫害识别;YOLOv7模型:深度学习;卷积神经网络
中图分类号:S126:S436.621 文献标识号:A 文章编号:1001-4942(2024) 08-0150-08
肥城桃是山东省的特色农产品之一,因产于山东省肥城市而得名,具有悠久的种植历史。肥城桃生长过程中易受多种病虫侵害,严重影响产量和品质,及时、准确识别病虫害种类是其精准、有效防治的关键。目前,肥城桃病虫害的识别仍主要依赖种植户的经验,无法满足大面积桃园病虫害快速、精准识别和诊治的需求。因此,探究高效的肥城桃病虫害识别方法对于解决该问题具有重要意义。
深度学习是对成像传感器感知到的植物图像进行处理、分析和学习,并从中获取目标信息的重要技术手段。基于深度学习的目标检测算法主要分为两大类,一类是以R-CNN为代表的二阶段算法,另一类是以YOLO、SSD为代表的一阶段算法。第一类速度较慢,无法满足病害识别检测的实时性要求:第二类虽然可以满足实时性的要求,但检测精度较低。目前,通过构建深度学习模型来识别农作物病虫害,已取得到了一些研究成果。如:王云露等针对目标图像复杂特征的提取或复杂背景下小目标的识别,使用特征金字塔网络FPN和Cascade R-CNN中的级联机制对Faster R-CNN算法进行改进,实现了在自然场景下对苹果5种病害的无损识别,准确率达98.3%。李鑫然等通过深层特征融合和精确感兴趣区域池化对Faster R_CNN模型进行改进,实现对自然环境条件下苹果叶部病害的有效检测,平均准确率达到82.42%。鲍文霞等通过在颈部网络中加入卷积模块对VGG16网络模型进行改进,实现对苹果叶部微小病斑的识别率达到94.7%。张志远等采用离线数据增强和在线数据增强相结合的策略,同时对YOLOv5模型的骨干网络进行改动优化,实现在自然环境下对樱桃果实的识别,识别率可达98%。商枫楠等为实现自然环境下火龙果的精准识别采摘,以YOLOX-Nano模型为基准,在主干特征提取网络中加入卷积注意力模块,检测速度和精度都得到了一定的提高,识别准确率达到98%。樊湘鹏等通过对VGG16网络模型的全连接层和分类层进行改进,实现在自然环境条件下对葡萄叶部病害检测的精度达到95. 67%。王国伟等选用Adam算法、Dropout策略和ReLU激励函数,对LeNet模型进行改进,提高了对玉米病害的检测精度,准确率达到96%。赵立新等通过迁移学习和改进Alex模型来提高对棉叶病虫害识别的准确率,准确率达到了97.16%。
虽然深度学习技术已在多种作物病害识别方面取得了一定的进展,但由于受空气温湿度、土壤等环境因素的影响,病虫害在不同植物、不同时期的发生特征存在差异,前人建立的模型无法直接应用于肥城桃病虫害的检测识别。为此,本研究建立包含细菌穿孔病、褐斑穿孔病、潜隐黄化病、桃小食心虫、流胶病、红颈天牛6种肥城桃病虫害的数据集,以YOLOv7模型作为骨干网络,加入Ghost模块进行瘦身,再引入CBAM注意力模块和加权双向特征金字塔(BiFPN)来提高对小尺度病虫害特征的识别效率和精度,从而实现对自然环境条件下肥城桃病虫害的实时检测。
1 材料与方法
1.1 数据采集与数据集建立
1.1.1 数据采集
试验数据采集于肥城市康顿农业有限公司种植基地。为保证数据的普适性,选择肥城桃生长状况良好的500 m2左右露天种植地块进行数据采集。为更好地研究病虫害不同阶段的表现特征,于2021年6月至9月,每7天采集一次,并固定在8、12、17时三个时间段采集不同光照条件下的病虫害图像数据。采用iPhonell的后置摄像头进行近距离(约40 cm)拍摄获取图像,图像分辨率为4 032×3 024像素。对采集到的图像数据进行清洗,去除失焦、抖动、曝光等导致的成像质量差的数据,初步得到包括6种病虫害的数据集,其中,单一简单背景的细菌穿孔病、褐斑穿孔病、潜隐黄化病图像分别有327、234、202张,复杂背景的桃小食心虫(包括幼虫)、流胶病、红颈天牛(包括幼虫)图像分别有249、128、66张,共计1 206张。各种病虫害示例见图1。
1.1.2 数据集构建
首先,对收集到的数据进行预处理,将每张图像分辨率调整为512×512像素。其次,为避免训练过程中因虫害数据集过小而引起过拟合现象,影响模型识别效果,采用离线数据增强的方法扩充数据集。所使用的离线数据增强方式如下:①水平翻转。以模拟实际拍摄过程中不同角度的采样。②旋转。通过旋转,增加角度的变化。③裁剪。从图像中随机裁剪出不同区域的子图像,以改变图像的视角和尺度。④色彩变化。通过改变色彩饱和度、亮度、对比度等丰富图像。⑤噪声添加。向图像中添加随机噪声,如高斯噪声或椒盐噪声,以模拟真实世界中的图像噪声。经过数据增强处理的各种病害图像效果如图2所示。通过上述5种数据离线增强处理将一张原始图像扩充为6张,扩充前后训练集图像数量的变化如表1所示。最后,对扩充后的图像进行筛选,去除冗余图像和低质量图像,最终建立了包含5 408张图像的肥城桃病虫害数据集。将数据集按照8:1:1的比例随机分成训练集、验证集、测试集。使用交叉验证方法进行模型的训练和测试,重复进行10次,最终结果取10次结果的平均值。
1.2 基于改进YOLOv7算法的病虫害检测模型构建
本研究使用YOLOv7作为肥城桃病虫害识别的基本模型算法。YOLOv7采用多尺度特征融合和特征金字塔的设计,这使其在处理不同大小的目标时都具有较强的性能。YOLOv7主要包括四个部分:输入层(Input)、骨干网络(Backbone)、颈部(Neck)和预测层(Prediction)。YOLOv7网络模型的具体结构如图3A所示。其中缩写CBS、MP-C3、C7_1、SPPCSPC、C7_2部分的结构如图3B所示。为使YOLOv7能够适用于肥城桃病虫害预测,本研究对YOLOv7的Backbone和Neck结构进行优化,以增强其特征表达能力,提高检测性能。
1.2.1 使用轻量化的幻影卷积层(GhostConv)替代传统的卷积层,降低模型复杂度
YOLOv7初始模型为能很好地学习输入数据并得到良好的泛化性能,加大了对计算过程中冗余资源的存储,从而增大了模型本身的复杂程度。为此,针对标准卷积生成的特征图中存在高度相似的冗余特征问题,本研究在Backbone和Neck部分引入Ghost-Net网络中的GhostConv卷积模块代替原有普通卷积,将标准卷积替换成线性变换,利用“简单”特征代替冗余特征,同时将简单线性运算和标准卷积运算相结合,以降低特征提取过程中的冗余计算量,进而降低模型复杂度。
如图4所示,GhostNet轻量级网络模型可以在保持原有卷积输出特征图的尺寸以及通道大小的前提下,降低网络的计算量和参数量。首先,GhostNet使用普通卷积(1×1×M)、批量归一化和激活函数对输入图像进行通道压缩,从而生成固有的特征映射。接着,将这些特征映射应用一系列简单的线性操作Φk,以获得更多特征图并增加特征的多样性。此处,廉价操作Φk由深度卷积(Depthwise Convolution,即每个卷积核负责一个通道,每个通道仅被一个卷积核卷积)、批量归一化和激活函数组合而成。最后,通过concat操作将这些新增的特征图与第一步中通过普通卷积、批量归一化和激活函数生成的特征图进行拼接,最终获得的特征图即为输出。
1.2.2 在Backbone中加入CBAM注意力机制,加强对复杂背景下小目标特征的学习能力
在对病虫害进行目标检测过程中,存在大量易在深层网络中丢失特征信息的小病灶和小目标,从而导致漏检和错检现象。为此,本研究在Backbone中引入轻量级通用模块——CBAM(Convolutional Block At-tention Module)注意力模块。如图5所示,CBAM通过结合通道注意力模块和空间注意力模块,一方面利用空间注意力机制使神经网络专注于特征图像中起决定作用的分类区域,另一方面利用通道注意力机制处理特征图通道的分配关系,从而使神经网络沿着这两个维度进行自适应特征优化,以加强模型对小目标信息的学习。
在通道注意力模块上分别经过最大池化和平均池化将尺寸为CxHxW的特征图变成C×1×1的,经过多层感知机(Multi-layer Perceptron,MLP)转换,压缩通道数,再通过加和操作合并结果,并进行Sigmoid归一化,使得提取到的高层特征更全面、更丰富。空间注意力模块首先对输入的通道注意力特征图在通道维度上分别进行全局平均池化和全局最大池化,得到两个二维特征图:然后,将这两个特征图沿通道维度连接,形成一个新的特征图,再通过一个7×7的卷积操作和Sigmoid激活函数生成空间注意力特征图;最后,将原始特征图与该空间注意力特征图逐元素相乘,得到增强的特征图,通过选择重要的空间位置来提高模型的性能。
1.2.3 在Neck中引入加权双向特征金字塔网络(BiFPN),更多保留小目标的特征信息
随着卷积的深入,为更好地保留小目标特征信息,本研究又进一步在Neck中引入加权双向特征金字塔网络(BiFPN)。从图6中可以看出,特征金字塔网络(FPN)采用简单的自上而下的特征融合方式,在R-CNN、RetinaNet和YOLOv3中较常见,具有较好的检测效果:PAN结构在FPN基础上增加了自下而上的特征融合分支,用低层特征融合高层特征,以增强高层特征的定位信息,常在YOLOv4和YOLOv5模型中使用:BiFPN与PAN结构相比,虽然二者在特征融合方式上都是将信息流基于临近特征,但BiFPN通过引入双向跨尺度连接,允许特征在不同层次之间进行多次交互,从而更有效地融合多尺度信息,有利于解决检测过程中可能存在的小病斑重叠问题。同时,采用了简单而高效的加权特征融合方法,使网络能够自适应地调整不同特征图的重要性,从而提高检测精度和模型的灵活性。
1.3 模型性能评价指标
目标检测算法的评价标准主要包括精确率(Precision,P)、召回率(Recall,R)、平均精度(Av-erage Precision,AP)和平均精度均值(mean Aver-age Precision,mAP)。其中,P是衡量模型预测为正例的样本中有多少是真正的正例,表示模型在预测为正例的样本中的准确性:R是衡量模型正确检测到的正例占所有真实正例的比例,表示模型对正例的覆盖能力:AP是对精确率一召回率曲线进行积分所得,用于反映模型的预测效果,值越大模型预测效果越好,反之则越差:mAP是所有类别的平均精度的平均值,用于综合评估模型的性能。各指标计算公式如下:
其中:TP是被正确分类的正样本数量:FP是被错误分为正类的负样本数量:FN是被错误分为负样本的正样本数量。
1.4 实验环境及模型训练参数
实验环境配置如下:操作系统为Windowsll:GPU为GTX3060;深度学习框架为PyTorch1.1;使用的编程语言为Python3.8:GPU加速库为CU-DA10.0、CUDNN7.6.0。
模型使用预训练的参数进行初始化,使用SGD(随机下降梯度)对改进后的识别模型进行优化,初始学习率lr= 0.001,权重衰减因子设置为0.000 5,SGD的动量设置为0.9。使用官方建议的预训练权重进行1 500轮次(Epoch)训练,数据集批处理大小(BatchSize)设置为32。
2 结果与分析
2.1 消融实验结果分析
为验证改进方法的效果,利用同一病虫害数据集进行消融实验,对比分析初始模型Yolov7、单独加入CBAM注意力机制后的YOLOv7_CBAM、单独引入BiFPN的YOLOv7_BiFPN、单独加入Ghost模块的YOLOv7_Ghost及本研究改进模型YOLOv7_Ghost_CBAM_BiFPN的检测性能,结果如表2所示。与初始YOLOv7网络相比,①在YOLOv7网络结构中融人CBAM模块后,模型的mAP提升了3.2个百分点,但模型参数量增大了6.3 Mb,检测速度略有下降:②在YOLOv7网络中引入加权双向特征金字塔BiFPN后,模型的mAP提高了4.5个百分点,模型参数量和检测速度与YOLOv7_CBAM相近;③在YOLOv7中加入Ghost模块进行轻量化后,模型的mAP降低了2.2个百分点,仅84.5%,但模型参数量最小,检测速度最快;④本研究改进后的模型YOLOv7_Ghost_CBAM_BiFPN识别准确率最高,mAP达到93.2%,分别较前四种模型提升了6.5、3.3、2.0、8.7个百分点,且模型参数量较小,比原模型YOLOv7高2.4 Mb,检测速度仅次于YOLOv7_Ghost模型。表明本研究改进后的YOLOv7模型,在降低模型参数量、提升检测速度的同时,明显提升了识别准确率,因而可以很好地满足实际应用场景中对肥城桃病虫害识别检测的需求。
2.2 本研究改进YOLOv7模型的性能对比分析
为了验证本研究改进YOLOv7模型的性能,在相同数据集下,将其与近年来应用较为广泛的深度学习模型,如FasterR - CNN、YOLOv5s、YOLOv7等,进行对比实验,结果如表3所示。可以看出,YOLOv5s、FasterR-CNN、YOLOv7、YOLOv7_CBAM_BiFPN四种识别模型在6种肥城桃病虫害数据集上的mAP分别为81.1%、82. 3%、86.7%、93.7%。本研究改进后的模型YOLOv7_Ghost_CBAM_BiFPN识别精度为93.2%,远高于YOLOv5s、FasterR-CNN和YOLOv7,仅比YOLOv7_CBAM_BiFPN略有下降,但其参数量较小,检测较快。考虑到实际生产场景中复杂的环境因素,在能够保持较高识别精度的情况下,降低模型体积,提升模型检测速度,可以更好地满足实际复杂生产场景中对病虫害识别的准确性和实时性需求。
2.3 改进YOLOv7模型对肥城桃病虫害的检测效果
通过对深度学习模型的预测结果和真实标签构建混淆矩阵,可以更加全面地评估模型在不同类别上的表现,为模型的改进提供有力依据。本研究共涉及6类病虫标签,包括细菌穿孔病、褐斑穿孔病、潜隐黄化病、桃小食心虫、流胶病、红颈天牛,使用10%测试集进行模型性能评估,所得混淆矩阵如图7所示,其中,对角线表示某一类别被模型正确预测为该类别的概率。混淆矩阵用来表示对样本数据的预测结果与真实情况的关系,可以反映模型的分类性能,当模型所呈现出来的混淆矩阵接近一个对角矩阵时,表示该模型具有优异的识别分类能力。本实验标签的真实值和预测值的关系基本符合对角线矩阵的特点,其中细菌穿孔病与褐斑穿孔病无论是发病部位还是性状特征都有一定的相似之处,导致识别过程中两种病害略有混淆,检测准确率较其他类别较低,分别为91 .7%与92.0%。潜隐黄化病的主要表现性状大多分布在整个叶片,且早期病害特征并不十分明显,故检测准确率较其他三类低;桃小食心虫、流胶病与红颈天牛由于性状特征明显,预测分类效果较好,其中红颈天牛的识别准确率最高,达97 .0%,表明本研究建立的模型对6类病虫害的识别分类效果较好。
3 结论
为更好地解决肥城桃病虫害的小目标识别检测问题,本研究首先利用离线数据增强方式扩充肥城桃病虫害数据集,以确保有足够的数据以保证预测模型的鲁棒性与训练精度。然后从三个方面对传统YOLOv7网络模型进行改进:①用Ghost卷积替换普通卷积,以降低生成冗余特征的计算量,进而减少模型的计算时间和参数量,从而达到模型轻量化的目的:②在YOLOv7的骨干网络增添轻量化程度高和通用性强的CBAM注意力机制,提升对桃树病虫害小目标的识别效果,同时可避免卷积乘法带来的大量计算,以降低模块复杂度、减小计算量;③在颈部网络结构中引入BiF-PN,利用其双向跨尺度和加权特征融合的方式,解决多种小目标相互重叠遮挡的问题。实验结果表明,与初始YOLOv7网络模型相比,本研究提出的YOLOv7_Ghost_CBAM_BiFPN优化模型的平均识别精度均值达到93. 2%,参数量仅77.2 Mb.略大于基础模型YOLOv7,检测速度为0.164 s/张,性能明显提升,能够很好地识别检测实际生产场景中肥城桃的6种病虫害。
基金项目:山东省重大科技创新工程项目“现代果园智慧种植装备与大数据平台研发及示范应用”(2019JZZY010706)