王圆圆 林建 王姗
摘要:针对现有的卷积神经网络模型过于依赖设备的计算和存储能力、水稻病虫害形状大小不一、遮挡造成的病害特征显著性弱、漏检率高等问题,采用轻量化、易部署的YOLOv4-tiny模型检测和识别水稻病虫害。首先收集831张4种不同的水稻病害叶片图像样本,为了使模型具有更好的泛化能力,对已有数据进行数据增强,将样本数量扩增到了5 320张。然后构建YOLOv4-tiny轻量化模型,与经典的YOLOv4算法模型相比,其主干特征提取网络CSPDarkNet53模块替换为CSPDarkNet53_tiny,使用CPSnet进行通道的分割,实现了网络模型的压缩并提高了训练速度;添加了FPN结构,对有效特征层进行特征融合;依据模型评价指标,通过试验将YOLOv4-tiny轻量化网络与经典的YOLOv4网络、Faster-RCNN网络、YOLOv4-MobileNet系列轻量化网络、YOLOv4-GhostNet轻量化网络和SSD轻量化网络进行对比。结果表明,YOLOv4-tiny的平均准确率可以达到81.79%,检测速度可以达到90.03帧/s,模型权重大小为22.4 MB,能够比较精准地识别水稻胡麻斑病、白叶枯病、稻瘟病和窄条斑病,保证在轻量化计算成本的基础上获得较好的检测精度,可以为水稻病虫害识别方法提供参考。
关键词:轻量化模型;YOLOv4-tiny;水稻病虫害;目标检测;精准农业
中图分类号:TP391.41文献标志码:A
文章编号:1002-1302(2023)16-0147-07
收稿日期:2022-11-19
基金项目:国家重点研发计划(编号:2016YFD0300508)。
作者简介:王圆圆(1999—),女,山东枣庄人,硕士研究生,主要研究方向数字图像处理与病虫害目标检测。E-mail:1729734824@qq.com。
通信作者:林 建,博士,副教授,硕士生导师,主要研究方向逆向设计、数字图像处理。E-mail:1827740@qq.com。
水稻在我国的种植历史悠久,约占全国耕地总面积的25%,不仅是我国的三大主粮之一,而且产量一直处于世界领先地位,种植面积位居世界第二,是中国农业生产中不可替代的重要农作物。但在水稻的生长周期内,伴随着水稻病虫害的频发,给我国水稻产业造成了严重的经济损失。长期以来,传统农作物的识别主要依靠人工鉴别的方式,一般主要依靠当地植保部门的农业专家识别,但人工鉴别存在的问题是工作量大容易误诊、识别效率低下,对水稻病虫害的鉴别种类有限等[1]。现阶段,普遍采用的水稻病虫害防治方法主要是播种前对种子包衣消毒处理,提高幼苗对病害细菌的抵抗力,喷洒病虫害药剂或使用诱光灯诱捕害虫,但这些防治方法无疑都在一定程度伤害了水稻幼苗的正常生长,化学剂的过度使用还会对个人的身体健康和环境保护造成负面影响,除此之外,在农作物市场上,消费者也越来越倾向于选择有机生产的农产品,这些发展预计将会导致化学剂在农作物中的使用越来越少,强调了早期准确识别水稻等农作物病害的重要性。因此,嘗试将计算机技术应用到水稻病虫害识别中,不仅有助于为水稻病虫害的防控提供理论依据和技术支持,而且对提高水稻产量、促进农作物市场的健康发展和经济发展具有重要的现实意义。
根据对图像病害特征提取方式的不同,目前基于图像的农作物病虫害检测方法大致可以分为两类:基于传统机器学习的方法和基于深度学习的方法。传统的机器学习方法识别水稻病虫害的主要思路是:首先基于采集的数据集对不同的水稻病虫害特征进行提取,常用的提取方法是GIST、SIFT和SURF等,之后采取以K近邻分类方法、支持向量机方法以及决策树等为代表的传统机器学习方法对特征分类[2]。范春全等采用椭圆型度量矩阵提升SVM分类器识别水稻虫害能力[3]。王映龙等应用图像处理技术对水稻虫害进行识别[4]。姚青等提出将水稻多特征提取与机器学习相结合,实现对水稻纹枯病的识别[5]。但基于传统机器学习的病害识别方法主要依赖于准确提取的特征参数,对输入的图片进行分类,而且一般仅能提取几种典型的特征来表达几种病害的所有信息,处于复杂背景下图像特征提取还需要多种算法相结合。只能提取少量的典型特征带来的结果就是提取的特征相似度高,而现实中水稻病害的种类和形状是多种多样的,导致识别效果不够理想。
但随着深度学习技术不断被应用到农作物病虫害识别的领域中来,房若民等使用Mobile Net模型检测10个物种,包括27个类型的农业病虫害[6]。燕斌等利用Inception-V3网络和Image Net数据集实现8种病虫害的识别[7]。蒋丰千等将卷积神经网络及轮廓分割等预处理方法结合起来,以生姜的病虫害图像数据集为研究对象,对白星病、根结线虫病、炭疽病和姜瘟病进行分类研究,正确率高达96%[8]。蒲秀夫等提出使用二值化卷积神经网络模型进行农业病虫害的识别,为后续的植物病虫害研究提供了理论依据[9]。杨颖等提出了基于方向梯度直方图和局部二值化模式的水稻病虫害识别方法,在小样本训练以及效率高等方面均具有明显的优势[10]。基于深度学习的识别方法通常需要大量的数据作为模型的训练基础以获取较高的识别精度,而现实中水稻的病虫害数据集构建还不够完善,无法提供足够大的训练样本。为了弥补样本不够的缺陷,往往采取提高深度学习深度的策略,这样导致的负面影响是模型复杂度变高,参数量和体积变大,这就限制了在移动设备中的应用。对于现实投入防治的设备而言,计算力和存储力都非常有限,过大的模型和冗余的参数会造成存储资源的浪费,因此,使用轻量化的水稻病害检测方法至关重要。
1 图像数据集和预处理
1.1 试验数据
本试验采用PASCAL VOC数据集对模型进行预训练,很多优秀的计算机视觉模型都是基于PASCAL VOC数据集推出的,尤其是一些目标检测模型。本试验中的样本数据集来源主要是Kaggle网站采集,构建水稻病害数据集831张,包括4类水稻病害数据,分别为稻瘟病、水稻窄条斑病、水稻白叶枯病和水稻胡麻斑病。其中稻瘟病224张,水稻窄条斑病213张,水稻白叶枯病140张,水稻胡麻斑病254张。水稻病虫害样例如图1所示。
1.2 数据增强
为防止训练数据量过少发生过拟合现象,本研究采用旋转、放大缩小、水平翻转、垂直翻转、添加随机噪声和提升亮度等数据增强的方式对数据集进行扩增,最终水稻病虫害数据集包含5 320张图像,水稻病虫害区域数12 855个,按照8∶1∶1的比例划分为训练集(4 256张)、验证集(532张)和测试集(532张),其中训练集水稻病虫害数据集分布如表1所示。扩增后的数据集为PASCAL VOC格式,使用LabelImg工具人工标注每张图片照片中病虫害目标所在的区域数据,生成.xml格式的标签文件,记录所有目标检测框的位置、大小以及类别信息,经命名后存入标签文件夹。
2 研究方法
2.1 经典的YOLOv4算法
首先,YOLOv4算法是一种经典的单阶段目标检测算法,网络模型由输入端Input、急转网络Backbone、颈部网络Neck和头部网络Head共4个部分构成,网络结构如图2所示。
Input模块通过Mosaic利用4张图片拼接实现数据增强,丰富检测物体的背景,Label Smoothing平滑对分类准确度做出惩罚,避免因模型分类太准确出现过拟合,Backbone模块主要是采用CSPDarkNet53特征提取网络,使用了残差网络Residual,主干部分是1次1×1卷积和1次3×3的卷积,残差边部分不做任何处理,直接将主干的输入与输出结合。采用CSPNet网络结构,将原来的残差块的堆叠拆分为左右2个部分:主干部分继续进行原来残差块的堆叠;另一部分则像一个残差边,在经过少量处理后连接到最后[11]。采用低成本的Mish激活函数,该函数具备光滑、非单调、上无界、有下界的特性,与其他常用函数如ReLU和Swish相比,泛化性能更好。
Neck模块采用的是空间金字塔池化(SPP)结构+路径聚合网络(PAN)结构:SPP网络结构通过不同池化核大小的最大池化进行特征提取,提高网络的感受野,网络中使用了3个不同尺度的池化(5×5、9×9、13×13),这样会得到更加丰富的特征[12],其结构如图3所示。作为Neck的特征融合模块,一个重要特征就是对特征的反复提取,FPN是自顶向下,将高层的强语义特征传递下来,对整个金字塔进行增强,但是只增强了语义信息而没有定位信息[13]。PAN就是针对这一点做了补充,用一个自底向上的金字塔将低层的强定位特征传递上去。
Head模块中的Bounding box的损失函数为CIoU_Loss,它在DIoU_Loss的基础上将长宽比考虑进去,一个优异的回归定位损失要考虑到重叠面积、中心点距离和长宽比,DIoU_Loss只考虑到了前2点,CIoU_Loss函数的改进使得目标框回归后变得更加稳定,不会出现发散的问题。
2.2 YOLOv4-tiny网络算法
YOLOv4-tiny网络模型是YOLOv4的轻量化简洁版,在追求精度和速度之间达到了一个平衡,与经典的YOLOv4算法有以下几个不同之处:(1)主干特征提取网络的替换。YOLOv4-tiny网络模型采用的是CSPDarkNet53_tiny替换CSPDarkNet53模块作为主干特征提取网络[14]。相比于YOLOv4中的CBL和ResBlock组成的主干特征提取网络,该网络主要由CBL和CPSBlock结构组成。CPSBlock首先将特征映射为2个部分,相当于对原来的残差块进行了一个拆分,拆分为两部分,除主干部分继续进行原来的残差块的堆叠外,另一部分则像一个残差边一样,经过少量处理直接连接到最后[15],让梯度流在2种不同的网络路径上进行传播,最后重新组合在一起,增加梯度信息的相关差异性,大大较少了卷积神经网络的计算量,弥补了YOLOv4中的ResBlock模块计算量大的缺点。(2)激活函数的改变。使用LeakyReLU激活函数取代CBL中的Mish激活函数,有利于减少模型的参数量,提高卷积神经网络的计算速度。(3)颈部网络使用特征金字塔(FCN)结构。在特征融合部分,没有采用YOLOv4中的空间金字塔池化(SPP)和路径聚合网络结构(PAN),而是使用特征金字塔结构对第1步获得的2个26×26和13×13的有效特征层进行特征融合,FPN会将最后一个有效特征层卷积后进行上采样,然后与上一个有效特征层进行堆叠并卷积[16]。(4)YOLOv4-tiny的预测模块和YOLOv4类似,先使用k-means聚类算法生成锚框,調整输入图像的大小,使所有图像具有相同的尺寸,然后将图像分为大小为S×S的网格,每个网格使用B个边界框检测目标,之后图像会生成S×S×B的边界框覆盖整个图像[17]。图4是13×13尺度的检测示意图,网格中的任意一个格子(如标注的红色框格子)都对应了3个大小形状不同的黄色框。
两者都使用CIOU代替IOU计算边界框定位损失,根据图像的中心点落在了哪个网络中来预测网络中的边界框,边界框的置信度高于置信阈值,则边界框保持不变,否则边界框将被删除,解决了真实框和预测框非重叠情形下梯度消失的问题,使得边界框回归变得更加稳定[18],YOLOv4-tiny 的网络结构如图5所示。
2.3 试验平台
试验硬件设置为Inter CoreTMi7-6850K,主存是3.60 GHz,模型在具有12 G显存的NVIDIA GeForce GTX TITAN X上进行训练,试验采用的操作系统是Windows10操作系统。软件环境为CUDA 11.6,采用的是pytorch 1.12.1深度学习框架。
2.4 模型训练
模型在训练过程中,首先将训练集图像的分辨率全部转换为416像素×416像素。由于在实际生活中,水稻病虫害区域可能会被其他健康叶片遮挡,影响目标识别的准精确率,所以本研究采用Mosaic数据增强方法,从训练集中随机选取4张图像进行随机裁剪并拼接为1张图像,生成的图像与4张训练集图像的分辨率一致,而在随机裁剪的过程中,训练集图像目标框的一部分可能会被裁剪掉,从而模拟病虫害目标区域被物体遮挡的效果[19],丰富样本背景的复杂性,提高识别的准确率[20]。采用余弦退火策略降低学习率,目标类别数目为6,初始学习率为0.001,平滑标签设置为0,权重衰减速率设置为0.000 5,动量设置为0.9,优化器使用随机梯度下降法(SGD),使用预训练权重和冻结训练的策略,将训练过程分为冻结阶段和解冻阶段,总共设置了300次迭代。其中冻结训练迭代次数为50次,批量为32;解冻训练迭代次数为250次,批量为16。
2.5 评价指标
本试验使用精确度(Precision)、召回率(Recall)、平均精度(AP)、F1分数和每秒传输帧数(FPS)来评价模型对水稻的病虫害的识别效果。FPS为模型识别一幅图像所需要的时间,作为模型识别速度的评判指标,其余各个评价指标的计算过程如公式(1)~(5)所示,其中,若一个实例是正类,并且被预测为正类,即为真正类(TP);若一个实例是正类,并且被预测为负类,即为假负类(FN);若一个实例是负类,并且被预测为正类,即为假正类(FP);若一个实例是负类,并且被预测为负类,即为真负类(TN)[21],p(rc) 表示在召回率rc的情况下的p值。Nc表示数据集中总图片的数目,N表示数据集中待检测目标的总类别数。
平均精度均值为
3 试验结果
3.1 YOLOv4-tiny模型训练结果
采用预训练权重对YOLOv4-tiny模型进行训练,对水稻白叶枯病、稻瘟病、水稻窄条纹病、褐水稻胡麻斑病4种病害的识别测试样例如图6所示,训练集和验证集的损失值变化如图7所示。由图6可知,损失值变化分别为训练集损失值、验证集损失值,前30次迭代损失值急剧降低,直到50次迭代之后迭代损失值的变化才趋于稳定,在小范围内振荡。
3.2 不同轻量化模型对水稻病虫害检测性能比较
YOLOv4-MobileNet系列轻量化模型、YOLOv4-Tiny轻量化模型、YOLOv4-Ghostnet轻量化模型和YOLOv4模型分别迭代300轮,不同的模型在训练集和验证集上得到的准确率和损失变化曲线如图8所示。从训练集和验证集的准确率变化可以看出,迭代200轮后YOLOv4-Ghostnet的识别准确率最高,其次就是YOLOv4-Tiny,准确率最低的是YOLOv4-MobileNetV2。从网络训练的收敛速度来看,YOLOv4-Tiny的验证集初始损失值最低,平均损失值最低,在迭代100轮后几乎已经完全收敛,而其余网络则是在完成迭代200多轮之后才完全收敛,YOLOv4-MobileNetV3的平均损失值最高,在训练集和验证集上,YOLOv4-MobileNet系列轻量化模型的损失值波动最大,YOLOv4-Tiny模型波动相比较而言轻微。综上可以得出,YOLOv4-Tiny轻量化模型比YOLOv4-MobileNet系列轻量化模型、YOLOv4-Ghostnet轻量化模型、经典YOLOv4模型在训练集和验证集上的识别率更高,完全迭代的次数更少,具有更强的鲁棒性。
由表2可知,YOLOv4-Tiny轻量化模型的F1值略高于其余各个YOLOv4的轻量化模型(窄条斑病除外),YOLOv4-Tiny对4类病虫害检测目标的F1平均值最高,为0.78,表明其综合准确率和召回率最好。
3.3 不同模型对水稻病虫害检测效果
试验测试了各种不同的网络模型在识别水稻病虫害图像上的平均准确率和模型权重大小以及每秒钟传输的帧数,如表3所示。可以发现,YOLOv4-Tiny的模型权重大小在仅为YOLOv4-Ghostnet一半的情况下,mAP值仅减少了1.17百分点,并且每秒钟的传输帧数增加了60.39,与YOLOv4-MobileNet系列和SSD-MobileNetV2相比,YOLOv4-Tiny的准确率均有明顯提升,但权重大小是远远小于其余网络的,这表明YOLOv4-Tiny网络模型在保证了一定准确率的前提下,较好地满足了轻量化的需求。识别准确率最低的是Faster-RCNN-Restnet50,仅为71%,SSD-VGG16的识别率最高,SSD网络是Faster-RCNN和YOLO系列的结合版,其对尺度变化较大的物体图像的泛化能力更好,采用多尺度特征图进行检测,可以根据图像被检测区域的大小在特征图上每一点处选取不同长宽比的选框,这一特点适合水稻病虫害区域形状大小多变的特点,提高识别的准确率。但是SSD-MobileNetV2识别速度和准确率都比YOLOv4-Tiny要低,综合考虑,YOLOv4-Tiny在水稻病虫害图像的识别中有更好的性能优势。
4 结论
本研究以水稻病虫害为研究对象,针对实际应用中的水稻病虫害识别设备计算力和存储力有限以及水稻病虫害需要快速、实时被识别的需求,建立了包括水稻白叶枯病、水稻窄条纹病、胡麻斑病以及稻瘟病等5种病害叶部图像数据集,使用易于部署的轻量级YOLOv4-Tiny网络对模型进行微调,结合迁移学习和卷积神经网络的训练技巧,将YOLOv4-Tiny与经典的YOLOv4、Faster-RCNN、SSD 、YOLOv4-MobileNet系列、SSD-MobileNetV2以及YOLOv4-Ghostnet进行了对比试验,结果表明,与其余模型相比,YOLOv4-Tiny具有最佳的整体检测性能,对水稻病虫害检测的平均精度和F1平均值分别为81.79%和0.78,与YOLOv4-Ghostnet、YOLOv4-MobileNet系列相比都略高,权重大小仅为22.4 MB,YOLOv4的权重是YOLOv4-Tiny的10.89倍,虽然YOLOv4-Ghostnet的识别准确率比YOLOv4-Tiny要高1.17百分点,但其权重是YOLOv4-Tiny的近2倍,每秒传输帧数也不及YOLOv4-Tiny。综上所述,基于YOLOv4-Tiny模型的水稻病虫害识别,具有权重小、准确率高以及识别速度快的特点,便于部署在機器上进行实时检测,轻量便捷,各项性能具有较高的水平和鲁棒性,可以为水稻病虫害识别在移动端的良好应用提供参考。
参考文献:
[1]王忠培,张 萌,董 伟,等. 基于迁移学习的多模型水稻病害识别方法研究[J]. 安徽农业科学,2021,49(20):236-242.
[2]鲍文霞,邱 翔,胡根生,等. 基于椭圆型度量学习空间变换的水稻虫害识别[J]. 华南理工大学学报(自然科学版),2020,48(10):136-144.
[3]范春全,何彬彬. 基于迁移学习的水稻病虫害识别[J]. 中国农业信息,2020,32(2):36-44.
[4]王映龙,戴香粮. 图像处理技术在水稻虫害系统中的应用[J]. 微计算机信息,2007,23(26):274-275,256.
[5]姚 青,张 超,王 正,等. 分布式移动农业病虫害图像采集与诊断系统设计与试验[J]. 农业工程学报,2017,33(增刊1):184-191.
[6]房若民,沈凯文,李浩伟. MobileNet算法的嵌入式农业病虫害识别系统[J]. 单片机与嵌入式系统应用,2020,20(5):61-63.
[7]燕 斌,周 鹏,严 利. 基于迁移学习的小样本农作物病害识别[J]. 现代农业科技,2019(6):87-89.
[8]蒋丰千,李 旸,余大为,等. 基于Caffe的生姜病害识别系统研究与设计[J]. 中国农机化学报,2019,40(1):126-131.
[9]蒲秀夫,宁 芊,雷印杰,等. 基于二值化卷积神经网络的农业病虫害识别[J]. 中国农机化学报,2020,41(2):177-182.
[10]杨 颖,文小玲,章秀华. 基于方向梯度直方图和局部二值模式混合特征的水稻病虫害识别方法研究[J]. 河南农业大学学报,2021,55(6):1089-1096.
[11]胡嘉沛,李 震,黄河清,等. 采用改进YOLOv4-Tiny模型的柑橘木虱识别[J]. 农业工程学报,2021,37(17):197-203.
[12]权龙哲,夏福霖,姜 伟,等. 基于YOLO v4卷积神经网络的农田苗草识别研究[J]. 东北农业大学学报,2021,52(7):89-98.
[13]王立舒,秦铭霞,雷洁雅,等. 基于改进YOLOv4-Tiny的蓝莓成熟度识别方法[J]. 农业工程学报,2021,37(18):170-178.
[14]东 辉,陈鑫凯,孙 浩,等. 基于改进YOLOv4和图像处理的蔬菜田杂草检测[J]. 图学学报,2022,43(4):559-569.
[15]钟志峰,夏一帆,周冬平,等. 基于改进YOLOv4的轻量化目标检测算法[J]. 计算机应用,2022,42(7):2201-2209.
[16]赵家琪,高 贵,黄晓峰,等. 一种改进的YOLOv4-tiny车辆目标检测方法[J]. 电子产品世界,2021,28(9):39-43.
[17]严开忠,马国梁,许立松,等. 基于改进YOLOv3的机载平台目标检测算法[J]. 电光与控制,2021,28(5):70-74.
[18]杨蜀秦,刘杨启航,王 振,等. 基于融合坐标信息的改进YOLO V4模型识别奶牛面部[J]. 农业工程学报,2021,37(15):129-135.
[19]Xiao Z T,Yin K,Geng L,et al. Pest identification via hyperspectral image and deep learning[J]. Signal,Image and Video Processing,2022,16(4):873-880.
[20]Liu Y W,Zhang X,Gao Y X,et al. Improved CNN method for crop pest identification based on transfer learning[J]. Computational Intelligence and Neuroscience,2022,2022:9709648.
[21]王明吉,陈秋梦,任福深,等. 基于yolov4的垃圾检测系统[J]. 工业仪表与自动化装置,2021(5):20-23,72.