APP下载

基于改进SPP-x的YOLOv5神经网络水稻叶片病害识别检测*

2023-10-09杨波何金平张立娜

中国农机化学报 2023年9期
关键词:损失卷积病害

杨波,何金平,张立娜

(1. 长春财经学院信息工程学院,长春市,130122; 2. 吉林农业大学信息技术学院,长春市,130118)

0 引言

水稻是禾本科一年生水生草本植物,原产于中国,是亚洲热带种植最广泛的重要谷物。全球一半以上的人口以稻米为主要食物来源,近年来消费者对优质稻米的需求正在不断增长。但是水稻在种植过程中极易发生病害,水稻病害是水稻降低产量的主要因素之一[1-3],水稻每年因病害所造成的经济损失巨大[4],因此快速识别发现水稻病害类型并提供后续的解决治疗方案极其重要。

目前基于深度学习且应用比较广泛的目标检测算法[5-15]分为两类:(1)双步目标检测算法two-stage:如Fast R-CNN[5]、Faster-RCNN[6-8]、Mask R-CNN[9-10]等这些模型都是将目标检测分为两个阶段,首先使用区域候选网络(RPN)提取候选目标区域信息,再利用高质量的分类器进行分类检测,最后使用检测网络完成对候选区域类别和位置的预测与识别,此类算法虽在检测精度上有优势,但是计算机消耗资源大,不利于在嵌入式等设备上进行实时检测。(2)单步目标检测算法one-stage:如R-FCN[11]、SSD[12]、YOLO[13]、YOLOv3[14-15]、YOLOv4[16]等此类算法将提取候选区域和进行分类两个任务融合到一个网络中,不使用RPN和预定的边界框来进行寻找目标物体,通过卷积核直接计算卷积网络中特征的类别分数和位置偏差,此类算法在计算效率上有优势,具备更快的检测速度。

目前国内在植物分类识别领域的研究已经取得一定的进展,吕石磊等[17]提出一种基于改进YOLOv3-LITE轻量级神经网络的柑橘识别方法,使用MobileNet-v2作为该模型的骨干网络并使用混合训练与迁移学习结合的预训练方式来提高模型的泛化能力。曹跃腾等[18]提出一种基于改进ResNet模型的轻量化植物叶片病虫害识别算法Simplify-ResNet,使用5×5卷积和残差块的瓶颈结构以及模型剪枝来处理训练后的模型,识别准确率为92.45%。鲍文霞等[19]提出一种基于轻量型残差网络LW-ResNet的自然场景水稻害虫识别方法,LW-ResNet网络在特征提取模块减少了残差块的数量,在注意力子模块中采用深度可分离卷积,减少了浮点运算量,实现了模型的轻量化。孙俊等[20]提出一种空洞卷积与全局池化相结合的多尺度特征融合卷积神经网络识别模型,通过对卷积层的输入数据进行批归一化处理,加速了网络收敛,进一步缩减特征图数目,并采用全局池化的方法减少特征数,上述研究为本文的水稻病害叶片的识别提供了参考。

本文以单步目标检测算法的深度卷积神经网络YOLOv5为基础,对YOLOv5的结构进行改进。将水稻病害数据集中的病害叶片作为训练和检测的目标,探究改进后的YOLOv5模型在实际场景下对不同病害类别叶片的识别率与准确率;将改进后的YOLOv5网络结构与ResNet-34网络模型进行对比试验。

1 数据采集与处理

本文采用佳能EOS1500d单镜头反光照相机,针对同一个品种水稻进行数据采集,并对采集的样本进行人工筛选,所采集图像均为自然正常生长状态下的水稻叶片图像。为了满足水稻病害数据的普遍性和多样性,选取了水稻常见的三种病害:白叶枯病(Bacterial leaf blight)、褐斑病(Brown spot)、稻瘟病(Rice blast)和健康(Healthy)叶片4种对象来构建数据集。原始图像共476张,图像分辨率为300像素×300像素、300像素×500像素。

由于水稻病害随着时间的变化,在真实自然环境下其病害叶片的纹理、颜色等特征会呈现出季节性、随机性的特点,因此难以搜集齐完整的病害叶片样本。同时,为了扩大样本数量以提高模型训练的精度并防止卷积神经网络过拟合线性,本文采用HSV颜色处理、改变色温、高斯模糊和椒盐噪声等基于几何变换的数据增强。将样本数据集按10∶2∶1比例划分为训练集、验证集和测试集。对白枯叶病样本数据增强后图像如图1所示。经过数据增强的数据集分布情况如表1所示。

(a) 原图

(b) HSV

(c) 不等比例缩放

(d) 等比例缩放

(e) 改变色温

(f) 高斯模糊

图1 数据增强处理Fig. 1 Data enhancement processing

表1 数据集分布情况Tab. 1 Data set distribution 张

2 基于YOLOv5模型的水稻叶片病害识别

2.1 YOLOv5模型构建

YOLOv3之前的YOLO模型采用K-means和遗传算法对自定义数据集进行分析,从而获得自定义数据集中目标对象的预设定锚框。而YOLOv5的预设定框是基于在训练水稻数据集时自动学习的,由于目标框架需要缩放自定义水稻病害叶数据集中原始图片的尺寸,并且数据集中原始图片尺寸小于原YOLO的标准输入尺寸640×640,因此在YOLOv5设置了自适应锚定框(Auto Learning Bounding Box Anchors)。YOLOv5使用了跨阶段局部网CSPDarknet53作为Backbone网络,在借鉴了残差网络的思路:在部分层之间设置捷径连接(Shortcut connection)的同时,还借鉴了DenseNet的思想:叠加(Concat)前面所有层的特征映射图,通过Dense block发送到后面的网络层,进行密集连接,从而将前层的特征映射图分离出来,实现特征重用,即减少模型参数数目、尺寸和FLOPS数值,还保证了推理速度和准确率,同时还有效缓解反向传播中的梯度消失、梯度爆炸等问题。

在YOLOv5中使用基于Mask R-CNN的FPN框架和路径聚合网络(PANET)作为Neck来聚合特征,将原FPN结构改进为一种新增强的自下向上路径的FPN结构,并用3×3卷积来处理前一阶段的特征映射。同时使用自适应特征池化(Adaptive feature pooling)恢复每个候选区域和所有特征层次之间被破坏的信息路径,聚合每个特征层次上的候选区域,从而增强底层特征的传播。

2.2 优化函数改进

2.2.1 随机梯度下降SGD

YOLOv5默认的优化器(Optimizer)是随机梯度下降SGD(Stochastic Gradient Descent ),其更新规则:每次更新时对单个样本使用梯度下降更新,一次只进行一个样本的更新。SGD算法一次只进行随机单个样本的迭代更新,使得SGD并不是每次迭代都向着整体最优化方向,准确率会降低。同时SGD还需预先设置一个合适的学习率lr,当预设的lr过小,会导致网络在深层训练时收敛速度过慢;预设的lr过大,会导致在训练过程中优化的幅度跳出函数的范围(最优点),因此选择一个自适应学习算法来解决上述问题。

2.2.2 自适应矩估计Adam

自适应矩估计Adam(Adaptive Moment Estimation)[21]作为SGD-M和RMSprop的结合体,融合了动量和自适应的优点,是一种计算每个参数的自适应学习率的优化方法。Adam利用梯度的一阶矩估计和二阶矩估计来动态的调整学习率,来进行修正偏差,其计算过程如下。

mt=β1mt-1+(1-β1)gt

(1)

vt=β2vt-1+(1-β2)gt2

(2)

式中:mt——一阶动量,梯度的第一矩,各个时刻梯度方向的指数移动平均值;

vt——二阶动量,梯度第二矩(无中心方差)的估计值,代表所有梯度值的平方和;

gt——当前参数的梯度。

当mt和vt被初始化为0向量时,mt和vt就会向0偏置,所以需要经过式(3)和式(4)来偏差校正第一和第二阶矩估计值来抵消这些偏差。

(3)

(4)

(5)

(6)

(7)

式中:θt——当前待优化的参数;

ε——平衡因子;

η——学习率。

超参数设定值:一阶动量衰减系数β1=0.9;二阶动量衰减系数β2=0.999;设置平衡因子ε=10-8来保持数值稳定。

2.3 基于YOLOv5模型的优化

SPP-x模块的改进策略:原YOLOv5中的SPP模块是将5×5、9×9、13×13三个不同尺寸的MaxPool层并行连接,并借鉴了残差网络中的捷径连接思想,然后做进一步融合,在一定程度上解决了目标多尺度问题。项目组将SPP模块三个不同尺寸大小的MaxPool层,改成三个尺寸相同的5×5MaxPool层连接,最后借鉴卷积映射思想,连接一个1×1卷积层,调整输出尺寸大小,改进前后模块如图2所示。替换SPP-x模块后完整YOLOv5网络结构图如图3所示。

(a) 原SPP模块结构

(b) SPP-x模块结构图图2 SPP和SPP-x模块结构图Fig. 2 SPP and SPP-x module structure diagram

图3 YOLOv5整体网络结构Fig. 3 YOLOv5 overall network structure

优化后的SPP-x模块中两个5×5MaxPool层与原来一个9×9MaxPool层计算输出结果相同,三个连接的5×5MaxPool层与原来一个13×13MaxPool层计算输出结果相同。为保证试验公平以及验证试验结果的准确性,在试验中将SPP-x模块最后的1×1卷积层删除,只对比了只含有MaxPool层改进前后的两个模块。试验数据如表2所示。

表2 模块参数设置与运算时间Tab. 2 Module parameter setting and calculation time

表2试验结果表明,原SPP模块的运算时间为0.483 6 s, SPP-x模块运算时间为0.226 4 s。SPP-x模块的平均运算时间减少了50%,计算速度比原模块更快。

3 ResNet-34模型

3.1 映射机理

传统优化深度卷积神经网络的思路几乎都是根据卷积计算公式原理来不断叠加网络层数,随着网络深度的增加,当深层次的网络开始收敛时,训练时产生的误差会使得:当平均精度mAP达到饱和后,会迅速下降,使得学习的方向偏离最优方向,并没有浅层的网络模型训练效果好。因此在不引入额外参数,也不引入计算复杂度的条件下,文献[22]提出了直接映射和卷积映射2种映射方法,在理论上使得模型在训练时学习到的结果不会比原结果差,并且会优先训练浅层的网络模型,再逐步训练深层的网络模型。(1) 直接映射:当输入尺寸和输出特征参数、尺寸相同时,可以直接进行相加映射。(2) 卷积映射:当输入输出不同时,为满足输出特征个数、尺寸与输入相同,加上一个1×1卷积来增加维度,以匹配尺寸,使得输入输出一致。

3.2 卷积核参数改进

为降低ResNet网络模型参数数目,对残差块进行优化,即将两个3×3串联的卷积层瓶颈结构替换成1×1、3×3、1×1串联的卷积层。在卷积核参数改进的基础上,结合直接映射和卷积映射构建出新的卷积模块,如图4所示。新结构中3×3卷积层首先通过第一层1×1卷积把256维channel降到64维,然后在下一层的1×1卷积做出还原,从而保证精度。对比两种卷积核整体参数数目可知:修改前为3×3×256×256+3×3×256×256=1 179 648;修改后为1×1×256×64+3×3×64×64+1×1×64×256=69 632,数量相差16.94倍。

(a) 修改前模块

(b) 修改后模块图4 卷积核Fig. 4 Convolution kernel module

基于卷积神经网络的基础架构以及卷积核的改进,通过2种映射方式交替更迭构建出了ResNet-34模型结构,改进后的模型网络结构图如5所示。

图5 改进后的ResNet-34网络模型结构Fig. 5 Improved ResNet-34 network model

4 试验与结果分析

4.1 不同优化器性能对比

本文分别在YOLOv5中设置两种优化器SGD和Adam,并随机选取水稻病害叶片数据集中754幅图像,在相同的网络层数下训练400轮epochs=400。SGD初始学习率lr0=0.01;Adam的lr0=0.001。为控制模型一致,保持训练数据batch size一致,并且关闭shuffle,其余超参数循环学习率lrf=0.2,学习率动量momentum=0.937等均设置相同,模型其余部分已经尽量保持一致。

YOLOv5的最终损失函数Lall=λ1Lobj+λ2Lcla+λ3Lloc,主要由目标损失Lobj、分类损失Lcla和定位损失Lloc三部分损失加权求和组成,其中Lobj和Lcla均采用BCEWithLogits loss计算,Lobj计算所有样本的目标损失,Lcla只计算正样本的分类损失,其计算公式如式(8)所示。

Lobj=Lcla

(8)

xi、yi——将训练样本分割成网格后的坐标位置。

其中定位损失Lloc采用CIoU loss计算,只计算正样本的定位损失,计算公式如式(9)所示。

Lloc=CIoU_loss

(9)

(10)

(11)

式中:λ1、λ2、λ3——多任务损失函数权重;

B、w、h——中心点、宽、高;

c——预测框pre和真实框gt最小闭包区域对角线距离;

v——预测框和真实框长宽比例差值的归一化;

α——平衡因子,长由于宽造成的损失和IoU部分造成的损失之间的比值。

为了验证两种优化器的性能,项目组在pytorch中的对同一网络YOLOv5进行试验,并比较了两种模型的交叉熵损失函数和精准率,随着训练层数epoch收敛变化的情况,如图6所示。

(a) 训练集定位损失值

(b) 训练集分类损失值

(c) 训练集目标损失值

(d) 精准率图6 优化器的性能对比图Fig. 6 Performance comparison diagram of the optimizer

试验用相同数量的超参数来调参SGD和Adam模型,在本文的水稻病害叶训练集上,Adam模型的定位损失Lloc和分类损失Lcla在第3轮就开始分别就收敛于0.07和0.02,虽然SGD模型对应的loss值收敛于0.05和0.01均比Adam模型低,但却是从第10轮左右开始收敛;在训练前期SGD模型Lloc、Lcla一直单调减,出现了较大坡度的下降趋势,未出现收敛趋势,而Adam模型的定位和分类loss值呈现上下波动,开始出现收敛趋势。虽然SGD在train集上的loss最终收敛值均分别比Adam低1.5%、0.8%,但是Adam的收敛速度明显优于SGD。并且从图6(c)可看出Adam模型目标损失值Lobj整体呈现收敛趋势,SGD依旧出现了先下降后收敛的现象,同时由图6(d)可看出Adam模型的精准率最终收敛于97%,而SGD模型的精准率收敛于95%,Adam比SGD模型高2%,所以当需要训练较小的自定义水稻病害叶片数据集,Adam是更合适的选择。

4.2 神经网络模型对比

模型的Precision和Recall数据结果如图7所示。

(b) 召回率图7 精准率和召回率Fig. 7 Precision and Recall

试验将水稻叶片病害数据集中4种不同类别共4 401幅图像一起进行训练。通过对比改进后的YOLOv5和ResNet-34神经网络模型,来探究找出最合适进行水稻叶片病害识别的模型,并应用到实践当中。为科学地评估两个的模型的性能,引入精准率Precision、召回率Recall作为衡量改进后的YOLOv5和ResNet-34模型性能的主要指标,初始学习率lr0=0.01,anchor=4,采用Adam优化器(weight_decay=5×10-5)。经过400次迭代,当YOLOv5的3个损失函数取值小幅波满足了阈值条件(IoU≥0.5),意味着网络模型已经稳定,然后输出稳定的YOLOv5网络模型结构。

对比精准度发现,YOLOv5在epoch=200开始收敛,收敛于95.6%左右,ResNet-34在epoch=240时开始收敛,收敛于89.8%附近,YOLOv5比ResNet-34模型高5.8%;对比召回率发现,YOLOv5和ResNet-34分别在200,280开始收敛,YOLOv5最终收敛于97.4%附近,而ResNet-34收敛于89.1%左右,YOLOv5整体比ResNet-34模型高8.3%,这表明改进后的YOLOv5在性能上得到了一定程度的改善。

4.3 YOLOv5模型识别检测测试

传统目标检测结果Precision和Recall值呈现正相关分布,并且希望两者值越高越好,但在特殊情况下会出现二者呈现负相关的极端情况(Precision值极高,Recall值极低或相反),致使无法判定神经网络的性能。

为了更加科学的评价改进后的YOLOv5模型,本文引进通过在水稻病害叶数据集计算得出的IoU设为0.5时的平均精度mAP_0.5和IoU∈[0.5, 0.95],步长stride=0.05的mAP_0.5:0.95作为另外两种衡量改进后的YOLOv5性能指标,其结果如图8所示。

图8 mAP值图Fig. 8 mAP of data

mAP_0.5和mAP_0.5:0.95分别收敛于0.983、0.822,二者相差0.161。主要原因为mAP_0.5在水稻数据集中的4个类别在计算平均精准度时,将Precision-Recall曲线的横轴坐标平均分成10等份(精度低)和100等份(精度高),即使是在精度提高了10倍的情况下,mAP_0.5:0.95值依旧处于中上阶段,这表明本文的水稻数据集中不良数据很少且改进后的YOLOv5对水稻数据集训练效果良好。

本文将训练好的YOLOv5模型对测试集中4个样本,标签名称设置为白叶枯病blight、褐斑病spot、稻瘟病blast和健康healthy,共437幅图像样本进行识别,每张识别结果图给出类别置信度,单张图片识别速度为0.34 s,部分样本识别效果如图9所示。

(a) 稻瘟病

(b) 褐斑病

(c) 白叶枯病

(d) 健康状态图9 识别效果图Fig. 9 Recognition effect graphics

5 结论

1) 本文提出一种基于改进的YOLOv5模型,对自然环境下的水稻病害叶片进行识别检测,首先通过将水稻原始图像进行数据增强操作,扩增数据集。然后对YOLOv5模型中的SPP模块进行改进,并与原模块进行对比试验。同时替换YOLOv5中的优化函数为Adam,试验分别比较Adam和SGD的YOLOv5在训练集上损失函数的收敛情况。最后将改进后的YOLOv5与ResNet-34模型进行对比试验。

2) 通过试验发现,改进后的SPP-x运算时间仅为原SPP模块的50%。同时,通过比较SGD和Adam优化器在训练集上3种损失函数 在训练前期的收敛速度和Precision值,表明Adam的收敛速度更快,且Adam的精准率最终收敛值97%,比SGD优化器高2%。将改进后的YOLOv5模型和ResNet-34在相同数据集里训练迭代400轮比较发现,基于SPP-x的YOLOv5模型的精准率高5.8%,召回率高8.3%。同时,YOLOv5自身的mAP_0.5和mAP_0.5:0.95两项指标分别达到了0.983、0.822,表明样本数据集不良数据较少,且模型训练效果较好。通过对训练后的YOLOv5模型进行实际应用发现,检测效果比较理想,能够达到辅助水稻病害识别诊断的目的。

猜你喜欢

损失卷积病害
早春养羊需防六大病害
小麦常见三种病害咋防治
基于3D-Winograd的快速卷积算法设计及FPGA实现
葡萄病害周年防治历
胖胖损失了多少元
果树休眠期咋防病害
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法
一般自由碰撞的最大动能损失