基于YOLOv7的苹果叶片病理检测改进方法
2024-05-20邹红艳朱瑞林
吕 鹏, 邹红艳, 朱瑞林
(南京林业大学机械电子工程学院,江苏 南京 210037)
苹果是全世界种植的主要水果之一,苹果的产量直接影响到当地果农的收入和生活水平,但是由于苹果叶片经常会受到病虫害侵袭,导致很多产地的苹果的质量和数量都大大降低,同时大规模使用农药也会对土壤造成污染,所以如果可以把深度学习和苹果叶片的病理虫害联系起来,精确识别苹果叶片虫害的位置可以进行有效的农业喷洒,这对苹果产业的增产有着重要意义,同时对保护环境、保护土壤也有着重要意义[1]。
随着神经网络和深度学习的发展,很多研究者开始搭建不同的模型、运用不同的算法来检测苹果叶片的病虫害。江鹏等[2]使用SSD算法检测对福斑病,叶病、铁病三种常见的苹果叶片病理虫害进行检测,最后结果表明检测性能可以达到79.63%mAP, 李鑫然等[3]以eepLabV3+模型为基础构建了苹果叶片分割模型,以Faster R-CNN模型为基础构建苹果叶片病害检测模型。对五种苹果叶片病虫害进行检测,最后结果表明检测性能可以达到84.45% mAP。
本文是在基于YOLOv7的基础上添加卷积注意力机制模块和轻量模型,从而优化YOLOv7的性能,建立一个兼顾性能和速度的苹果叶片病理检测模型Pest-Net,选取5种苹果叶片病害构建叶片检测数据集,并在静态背景和野生环境下采集图片,以提高识别的多样性,提出了一种新的苹果叶片病害识别模型Pest-Net,YOLOv7相较于前代YOLOv5在网络结构,数据增强以及激活函数方面都有很大的改进,但是缺乏空间上对苹果叶片缺陷的关注,本文采用CBAM注意力机制,兼顾空间和通道,多方位提高苹果叶片的缺陷检测精度[4]。但与此同时会增加冗余的参数,需要更多的计算资源,因而结合MobileNet轻量模型,减少计算量,提高检测速度[5]。实验结果表明:与其他四种常见的目标检测模型相比,Pest-Net有着更高的性能和检测速度。
1 数据集的制作
在实验中,我们从百度PaddlePaddle的图片库中选取尺寸适中、图像清晰的苹果叶片图片,然后使用软件进行标注,生成实验所需的数据集。我们通过采用一些传统的图像处理方法,如滤波、平移和旋转来扩展数据集。在这项工作中,我们主要检测和识别苹果叶片的五种常见病害,因此数据集包含以下五种苹果叶片病害图像:交替斑病、褐斑病、灰斑病、花叶病和锈病,苹果叶片病害图像如图1所示。
图1 数据集样本
在这项工作中,我们的数据集包含12 500张图像。我们为每种疾病选择了2 000张图片作为训练集,500张图片作为测试集。然后我们给不同的疾病打上标签。标签编号0~4分别代表斑疹病、褐斑病、灰斑病、花叶病和锈病。数据集的详细信息如表1所示。
表1 数据集数量
2 基于YOLOv7的苹果病害检测
YOLOv7的结构分为输入端、Backbone端、Neck端和输出端四部分。在输入端以及输出端YOLOv7相较于YOLOv5并没有太大的改进,输入端采用的是Mosic数据增强的方法,通过随机缩放等操作拼接图片来丰富数据集[6];输出端采用的是CIoU_Loss损失函数来对苹果叶片病害训练的性能进行度量。
本文中使用的Pest-Net网络模型是基于YOLOv7模型进行改进,针对空间和通道维度对苹果叶片病害进行检测,在提高检测精度的同时,减少模型参数,提高效率[7]。具体改进方法是将YOLOv7的Backbone网络部分替换为CBAM注意力机制和Mobilenetv3网络的结合体即MobileCBL,Pest-Net网络模型结构图如图2所示。
图2 Pest-Net网络模型
2.1 CBAM注意力机制
注意力机制模块因为其可以聚焦于局部信息而被广泛地应用在深度学习等研究中,它的添加可以有效地帮助我们找到图像中有用的信息,摒弃无用的信息[8]。而CBAM注意力机制就是其中的典型代表,它可以在一张特征图上根据通道和空间两个维度去找到有用的信息,最后才会将有用的信息和输入特征图进行乘法运算得到自适应特征优化,这比单方面运用通道注意力机制或者单方面运用空间注意力机制的结果更加准确[9]。
通道注意力模块是将特征图进行最大池化层和平均池化层处理后通过全连接层连接,接着经过一个多层感知机,再使用激活函数激活,最后产生通道注意力机制特征图[10]。通道注意力模块如图3所示。
图3 通道注意力模块
空间注意力模块是将通道注意力模块处理后的特征图分别使用最大池化和平均池化的处理,然后进行连接操作,接着使用卷积降维为一个通道,再通过sigmoid激活函数生成空间注意力特征图[11]。空间注意力模块如图4所示。
图4 空间注意力模块
2.2 Mobile轻量模型
Mobilenetv3也叫轻量级卷积神经网络,主要是通过分离卷积从而减少神经网络运行参数的数量,同时它也可以减小模型的的大小,这样运行时便可以充分地节省空间,加快运行速度[12]。而且在如此快速的轻量化模型里面运行时却不会降低其性能,因此本文采用此模型来加快运行速度,减少运行时间从而弥补本文使用CBAM注意力机制时产生的代价,其CBAM注意力机制的缺点便是增加了模型的参数,增加了训练时间,因此结合Mobilenetv3兼顾精度和速度。MobileCBL的网络结构由四个主要部分组成:输入层、CBL层、卷积层和全局平均池化层。Mobilenetv3结构图如图5所示。
图5 Mobilenetv3结构图
该网络由一个卷积层和一系列CBL层组成,其中CBL层是由一个CBAM层和一个前向传播的多层感知机组成,相当于原MobileNetv3的深度可分离卷积层,被修改后包含CBAM注意力机制[13]。网络的最后一层是分类层。使用MobileCBL来替代YOLOv7的主干网络,能够提升苹果叶片病害检测精度的同时,还能够简化模型提高训练速度,并且MobileCBL还引入了自适应训练方法,根据数据集的特点自动调整超参数,能够进一步提高模型性能[14]。
2.3 SIOU损失函数
Pest-Net网络采用的是SIOU损失函数,每当训练数据集时都会出现真实值与预测值不相符合的情况,引用损失函数计算出这其中的差异,然后进行反向传播从而降低预测值的误差,这样结果的准确性就可以大大提高。本文所研究的是苹果叶片病理的检测,损失函数需要考虑到虫叶病害区域的真实框和预测框不匹配的方向问题,所以引用SIOU损失函数,根据真实框和预测框的向量角度,可以较为准确地预测到真实框的区域,从而使得检测的精度大大提高。SIOU的损失公式如下。
(1)
(2)
(3)
(4)
其中:IOU为损失函数,Λ为考虑角度,Δ为考虑角度损失下的距离损失,Ω为形状损失,B为真是边界框的面积,BGT为预测边界框的面积。SIOU预测框与真实框关系如图6所示。
图6 SIOU预测框与真实框关系的示意图
3 实验结果与分析
3.1 实验结果
Pest-Net训练了10 000张训练图片和2 500张测试图片。输入图片的大小为 640×640,批量大小设置为 4,训练轮数设置为 100,初始学习率设置为 0.01,模型每 10 轮更新一次。我们使用 Adam 优化算法并将权重衰减系数设置为 0.000 5。100回合后,损失达到稳定和最小值。图7显示了训练损失的变化。从图中我们可以看到损失函数最终趋于零,这证明了Pest-Net模型训练结果准确。接下来,我们可以评估模型的各种性能指标。
图7 损失函数曲线图
图8是Pest-Net模型训练100轮过程的精确率,召回率以及mAP值。可以看到,值分别为94.5%、95.8%、97.1%,各个指标结果都比较优秀。接着使用检测模型进行检测,单张苹果叶片的检测时间为0.34 s,检测速度也比较快。
图8 性能指标曲线图
3.2 检测方法的比较与分析
本文将Pest-Net和四种先进的检测算法进行比较,以此来评估Pest-Net模型的性能是否得到了改善。我们可以从表格显示的这些模型中得出,YOLO系列中的算法模型在苹果叶病检测中具有一定的优势。YOLOv5和YOLOv7的mAP@0.5非常相似,这主要是因为YOLOv7基本上是沿用了YOLOv5的骨架,只是在一些方面进行改进,并且精度没有太大提高。此外,SSD和Faster R-CNN模型的mAP@0.5曲线上升得更曲折,这可能是因为它们被用作两阶段目标检测算法[15]。他们在特征图中选择了太多的候选区域,并且相邻的窗口具有大量的重复信息和许多无效区域。因此,训练的准确性上升得很低,而且精度不高。Pest-Net增加了CBAM注意力机制,兼顾空间和通道,可以多方位提高苹果叶片的缺陷检测精度。
这些模型的性能指标以及检测模型单张苹果叶片病害检测速度见表2。我们可以看到,与最初的YOLOv7模型相比,Pest-Net模型的准确率为94.5%,提高了2.0%;召回率为95.8%,增长4.4%;以及mAP@0.5为97.1%,提高了3.9%。与YOLOv5版本相比,精度提高了7.8%,检测速度变为0.34 s,其他评价指标也有了很大的飞跃。与其他目标检测算法相比,Pest-Net模型也具有出色的性能指标。
表2 性能对比表
使用检测模型对苹果叶片进行检测并得到最终的检测结果,部分检测图片如图9所示。
图9 检测结果图
4 结论
为了检测各种苹果叶病害,我们从百度的图像库中选择了大小适中的清晰苹果叶图片,并使用Make Sense软件标签制作了实验所需的数据集。之后,本文提出了用Pest-Net来检测苹果叶的病害。我们在YOLOv7模型结构中引入了卷积注意力机制模块(CBAM)和轻量模型(MobileNet),以提高模型训练效果。通过实验可知Pest-Net在mAP值(97.1%)和精确度(94.5%)上均取得了更高的准确率。作为一种小目标疾病检测模型,Pest-Net还可以用于其他农产品的疾病识别,如橙子、梨和其他水果。