郭阳, 许贝贝, 陈桂鹏, 丁建, 严志雁, 梁华, 吴昌华*
(1.江西省农业科学院农业经济与信息研究所,江西省农业信息化工程技术研究中心,南昌 330200;2.中国农业科学院农业信息研究所,北京 10086)
水稻是中国主要粮食作物之一,2020年种植面积超过3 000万hm2,产量超过21 000万t[1]。生物灾害影响水稻高产稳产,每年因害虫爆发造成我国水稻产业损失超过10%[2]。全国农业技术推广服务中心预计2021年水稻虫害将呈偏重发生态势,发生面积9 520万 hm2,将对经济造成巨大损失[3]。高效识别水稻虫害是做好预测的关键,对有效防控水稻虫害意义重大。传统的方法是通过人工识别方法调查、监测水稻虫害,这种方式劳动强度大、效率低,难以满足生产上防控的需要。
快速准确地识别水稻虫害对防控意义重大。但复杂真实环境下快速检测水稻虫害存在诸多挑战:叶片对害虫遮挡、多害虫之间也会存在遮挡、水稻颜色和害虫类似难以识别。随着机器视觉技术发展,国内外学者对虫害识别算法做了很多研究,利用信息化手段完善水稻虫害识别预测,对虫害防控有重要实践价值[4]。早期学者采用机器学习和经典神经网络等方法开始农业虫害识别,主要思路为:建立基于虫害数据库,提取颜色、纹理和形状三大图像特征,采用典型的机器学习方法支持向量机和K近邻分类方法、典型的神经网络方法BP神经网络进行特征分类,从而实现虫害识别。周正[5]采用BP神经网络算法结合纹理、颜色、形状3种特征识别番茄早疫病、晚疫病和叶霉病等病虫害,识别速度优于最近邻域法。王树文等[6]提出一种基于图像处理技术的黄瓜叶片病害识别,利用二次分割以及形态学滤波得到病虫害区域,提取22个特征参数,采用BP神经网络算法对黄瓜病虫害识别。胡越浪[7]采用神经网络BP算法对水稻纹枯病图像检测,通过调整不同参数训练出最优识别效果。传统的机器学习方法适合小数据样本训练,但需要人工提取特征,费时耗力,且病虫害识别精度取决于特征参数提取,通过少量几种典型特征实现虫害识别效果不佳。
近年来,基于卷积神经网络(convolution neural network,CNN)的深度学习模型在目标检测任务中取得良好的效果。卷积神经网络模型方法可以分为两类:一类是基于区域建议的算法,先生成候选区域,再实现候选区域目标分类,列如R-CNN[8]、Fast R-CNN[9]、Faster R-CNN[10]等模型都属于该类检测方法,也称为二阶段检测算法。二是基于回归算法,直接完成候选区生成和目标识别,代表有SSD[11]和YOLO(you only look once)[12]等,也称为一阶段检测算法。这些深度学习模型已经被证明优于传统机器学习的方法,部分学者尝试将卷积神经网络应用于水稻虫害图片识别[13-17]。陈国特[18]对飞虱虫的识别做了针对性研究,构建了基于CNN的四层检测识别算法,测试了超过2万多幅样本图像。梁万杰等[19]提出一种卷积神经网络的方法识别水稻二化螟虫,基于Torch框架加快CNN的训练速度。虽然CNN识别率高,但CNN的参数量多,导致训练CNN需要大量的样本,训练时间太长。R-CNN算法将输入图像划分为多个不同种类的候选区,利用CNN提取特征向量,通过SVM实现特征向量分类,提高了目标检测效率。苏鸿等[20]采用R-CNN模型识别广西柑橘病虫害,识别效果高于传统机器学习算法(SVM),R-CNN通过Selective Search算法筛选出2 000个左右的候选区域,解决了CNN无法基于卷积特征实现滑动窗口,但R-CNN候选区域多且尺寸不一致,导致训练速度慢。为解决候选区域多且尺寸不一致导致的训练速度慢问题,许多研究者提出了改进方法以加快检测速度。Girshick[9]通过R-CNN结合SPP-Net,提出Fast R-CNN算法,减少检测过程时间,提升检测速度,解决了寻找候选区域的问题,并且通过神经网络直接获取候选区域。魏杨等[21]使用Fast R-CNN模型对农业害虫进行识别,结合区域提取网络,对农业害虫进行训练和测试,但是识别精度和速度都有待提高。姜敏等[22]采用深度学习方法对水稻病虫害进行识别,对比SSD模型,Faster-RCNN模型识别精度更高。李衡霞等[23]改进一种深度学习油菜虫害识别方法,利用VGG-16网络模型提取图像特征,RPN算法搜索到候选区域提取虫害目标的候选框,完成害虫目标定位和识别。R-CNN系列算法生成候选区域和回归分类两个阶段,称为二阶段检测算法,虽然算法改进提高了检测的速度和精度,但无法满足现实时、实场景的需求。
基于回归的算法首先需要根据特征提取生成感兴趣区域,然后对每个区域进行分类,直接实现区域生成和预测目标分类,是一个端到端的过程。SSD与YOLO算法最大的区别是SSD采用卷积核直接进行检测。SSD使用多个卷积层的输出预测,实现各个卷积层回归和分类。俞佩仕[24]改进一种SSD算法,采用ResNet50替换VGG16网络完成水稻纹枯病病斑识别。李善军等[25]提出一种改进SSD对柑橘进行检测,以ResNet18作为特征提取网络比原SSD模型精度更高,速度更快。佘颢等[26]采用FPN模型替换SSD网络模型,改进算法提高了对小目标的识别效率,比Faster R-CNN算法、SSD算法识别效果好,且训练耗时也最少。SSD在识别速度和精度上取得了不错的效果,但是对于田间复杂情况如遮挡目标、背景类似等情况下识别效果并不理想。
YOLO系列属于一阶段检测算法,YOLO由Redmon等[12]提出,直接实现区域生成和预测目标分类,预测时特征图以网格的方式进行划分,使检测速度大大提高;针对YOLOv1算法定位不够精确、检测精度低等缺点,他们又提出YOLOv2算法[27],采用Darknet-19模型,利用高分辨率训练分类网络,提高目标识别精度,然而每个单元格只负责预测一个目标,对于小目标、遮挡目标识别效果不好。YOLOv3算法[28]采用Darknet-53网络,引入多尺度融合,提高检测精度高,满足复杂环境下小目标、遮挡目标、背景类似等情况下识别。王文周[29]提出一种改进YOLOv3水稻虫害识别方法,通过增加检测尺寸数量,优化边框选择来提高对小目标水稻病虫害提取速度和准确率,改进的算法在水田复杂环境下提高了识别效果。武星等[30]提出一种轻量化的YOLOv3苹果检测方法,采用随机梯度下降和自适应矩估计优化YOLOv3模型,提高了苹果检测速度和准确率。刘芳等[31]提出一种改进的YOLO模型实现番茄图像检测,采用darknet-20主干网络,融合多尺度检测模型,提高番茄图像的检测精度,同时加快了检测时间。吕石磊等[32]提出一种YOLO-LITE轻量级神经网络模型对柑橘进行识别,采用MobileNet-v2主干网络,对柑橘识别加快柑橘识别速度。刘君等[33]提出一种YOLO的番茄病虫害识别算法,对8种番茄病虫害图片进行识别,识别精度高,检测速度快。
随着农情检测对实时性与精确性要求的提出,R-CNN系列、SSD检测模型难以满足要求,YOLOv3满足复杂环境下小目标、遮挡目标、背景类似等情况下识别,广泛应用于农业各个领域。为此,本文采用YOLOv3模型直接预测水稻虫害位置及类别,提高目标检测速度;引入Darknet-53网络和多尺度融合,对小目标、遮挡目标检测效果好,实现水稻虫害实时精准识别。
从1.8万张水稻虫害图片(由安徽省农业科学院农业经济与信息研究所提供)选取虫害红袖蜡蝉(DiostrombupolitusUhler)、稻绿蝽(Nezaraviridula)、稻螟蛉(NarangaaenescensMoore)、点蜂缘蝽(Riptortuspedestris)、大螟(Sesamiainferens)5种共2 500张图片,按照VOC2007格式创建数据集,图片格式统一命名,对所有图片格式化为512像素×512像素。使用LabelImg软件标注目标位置和类别,生成XML类型的标注文件。按照1∶4的比例随机选取500个样本作为测试集,剩下2 000张图片按照9∶1比例划分为训练集和验证集。训练集完成模型参数训练,在验证集上来确定网络结构以及模型参数,测试集检验最终选择最优的模型的性能,并对实验结果进行对比。
YOLOv3网络结构如图1所示,特征提取由Darknet-53网络和多尺度融合来完成。Darknet-53网络有53个卷积层,采用ResNet的残差结构(residual)[34],使得模型容易优化且网络结构更深。YOLOv3卷积层负责输出检测结果,包含目标的中心坐标、边界框宽高、置信度、类别。输入一张虫害图片,经过卷积层多层运算后输出52×52、26×26、13×13尺度(尺度1、尺度2、尺度3)的特征图片。为了包含更多的特征信息,26×26特征图通过2倍上采样,与主干网络8倍下采样得到的52×52特征图进行融合,13×13特征图通过2倍上采样,与主干网络16倍下采样得到的26×26特征图进行融合,实现深层特征和浅层特征尺度融合,提升小目标检测精度。针对上述过程中生成的3个尺度特征图,通过YOLO卷积层生成含有水稻虫害预测框中心坐标、边界框宽高4个位置信息,1个置信度和5个类别的特征图,从而得到水稻虫害的预测框和虫害类别。采用3个尺度检测,在不同分辨率进行预测,能够更好地提取出小目标、遮挡目标、相似背景等水稻虫害特征,从而提高了检测精度。
图1 YOLOv3网络结构
损失函数用于描述虫害图像预测框与真实框的误差,定义为边界框中心坐标损失Lossxy、边界框宽高损失Losswh、有无目标IOU损失Lossconf和类别损失Losscls,计算公式如下。
Loss=Lossxy+Losswh+Lossconf+Losscls
(1)
中心坐标损失Lossxy表示边框的中心点坐标(x,y),使用均方误差损失函数预测。
(2)
宽高损失Losswh表示对边界框的宽w和高h损失,使用均方误差损失函数预测。
(3)
置信度损失Lossconf表示使用交叉熵损失函数对水稻虫害对象的边框的置信度进行预测。
(4)
类别损失Losscls表示使用交叉熵损失函数对水稻虫害对象的类别进行预测。
(5)
公式(1)表示单个尺度上的损失函数,本文采用的YOVOv3模型是在3个尺度上实现虫害预测,最终的损失函数值为3个尺度计算的损失值之和,如公式(6)所示。
Loss=Loss13×13+Loss26×26+Loss52×52
(6)
式中,Loss13×13、Loss26×26、Loss52×52分别表示输出13×13尺度、26×26尺度、52×52尺度计算到的损失值。
本研究硬件环境配置为Intel至强Xeon4114处理器,NVIDIA GeForce GTX 1080Ti显卡的GPU图像工作站,软件环境为Window10系统,搭建深度学习tensorflow1.8框架及keras2.24框架,安装了并行计算框架Cuda 10.0、cuDNNv7.4。
处理完训练数据后,将训练数据输入到YOLO模型进行微调。训练采用随机梯度下降法[35],设置批大小(batch_size)为8,初始学习率(lr)设置为 0.001,学习率调度器为阶层性下降,每次减少学习率的因子(factor)值为0.5,设置训练100个大循环(epoch),每隔1代保存一次模型权重文件,每代迭代225次,一共迭代12.6万次,训练时长2 h 24 min,卷积神经网络训练过程如图2所示。
图2 卷积神经网络训练过程
本文使用机器视觉中常用的评价指标准确率(precision,P)、召回率(recall,R)、平均准确率(average precision,AP)、五类水稻虫害平均准确率的均值(mean average precision,mAP)来评估训练出来Faster-RCNN、SSD、YOLOv3模型检测精度。
(7)
(8)
式中,TP表示成功检测到的水稻虫害图片数量,FP表示检测错误的虫害图片数量,FN表示没有检测到的虫害图片数量。
F1系数是基于准确率和召回率调和平均定义的,综合考虑准确率和召回率。
(9)
以准确率为纵坐标,召回率为横坐标,绘制出准确率-召回率曲线(RP曲线),AP是对该曲线积分所得,表示RP曲线面积,用来衡量在某类水稻虫害性能的优劣,AP值越高,模型性能越好。mAP表示5类虫害AP的平均值,用来衡量多目标模型在5类水稻虫害上综合性能。
(10)
(11)
式中,N为虫害类别的数量,k为阈值,AP(k)为检测到第k类虫害的AP值。模型检测一幅图片中虫害所耗费的平均时间作为速度评估指标,单位为ms。
2.1.1迭代次数分析 训练完成后,从log文件中读取每次迭代对应的损失值,并绘制损失值迭代次数曲线,结果如图3所示。由图3可以看出,损失值在前20 000次迭代过程中迅速减小直到稳定,后面迭代过程中损失值在小范围内震荡。
图3 损失与迭代次数曲线
2.1.2评价指标分析 根据日志文件绘制训练过程中评价指标的训练代数变化曲线,如图4所示。在0~45代训练过程中,F1系数、召回率、准确率、mAP值震荡比较大,但总体趋势一直增长;由于第二阶段学习率等参数设置不同,各项指标在50次时变小,但在51~76代训练过程中总体趋势是平稳增长,且在一定范围内震荡。红袖蜡蝉、稻绿蝽、稻螟蛉、点蜂缘蝽、大螟的F1最大值分别是97%、90%、83%、95%、95%,对应第61代、第68代、第76代、第70代、第63代。mAP最大值为92.06%,对应第73代。选择F1和mAP对训练结果进行评价,最终选择第76代作为最终的训练网络权重文件,具有较高的F1值、mAP值,以及较高的召回率和准确率。
图4 各项指标训练变化曲线
用训练模型对测试集中的500张图片进行测试,结果如表1所示。与Faster R-CNN、SSD算法相比,YOLOv3模型中都表现出理想的检测效果,对水稻5类虫害F1系数、召回率、精准率均大于83%、79.37%和87.20%。首先,五类害虫准确率YOLOv3模型均高于其他两种算法,准确率均值为93.87%,高于Faster R-CNN的75.74%和SSD的90.52%,且对红袖蜡蝉类准确率最高达到99.54%,这是由于借鉴ResNet的残差结构(residual),采用多尺度特征实现5类水稻虫害进行检测,提高水稻虫害分类的精度。其次,在召回率方面,虽然平均召回率低于Faster R-CNN模型2.18个百分点,但在比较难识别的稻绿蝽、稻螟蛉等水稻虫害,YOLOv3分别高于SSD算法14.88%、22.8%,保持79%以上的召回率。第三,在F1系数方面,YOLOv3算法均值分别高于Faster R-CNN模型和SSD模型9个百分点、6个百分点,这是由于F1系数受到水稻虫害训练数量影响,在相同训练集下,训练图片包含水稻虫害数量越多,F1系数也越大。YOLOv3算法针对不同大小物体,输出不同大小的3类特征图,对多目标检测效果好,提高了检测F1系数。
表1 不同算法对水稻虫害识别结果
由表2可知,Faster R-CNN处理速度达到1.10幅·s-1,SSD达到12.77幅·s-1,本文算法达到13.26幅·s-1。所以针对数据规模不多的情况,Faster R-CNN能完全胜任目标的实时检测,而本文算法不仅检测精度高于前两种算法,检测速度也是最快,能大规模实时检测水稻虫害数据。
表2 各算法对各类虫害的检测速度
从500张水稻虫害测试数据集选择5类具有代表性的图片,分别为小目标、多目标、背景类似目标、遮挡目标、幼虫图像,如图5~9所示,分别采用Faster R-CNN、SSD、YOLOv3算法进行测试。从图5可以看出,对于小目标图像,3种算法检测精确度分别为99%、99%、100%,其中YOLOv3算法精度最高,能够准确检测出红袖蜡蝉,并且边界矩形框位置非常准确。对于包含不同大小的多目标图片(图6),3种算法对小尺寸稻绿蝽的识别精确度分别为91%、84%、94%,YOLOv3仍具有较高的准确率。从图7可以看出,因为稻螟蛉与水稻叶片颜色相似,稻螟蛉容易被漏检,3种算法对该类虫害检测精确度分别为98%、73%、100%,YOLOv3算法仍然准确检测出稻螟蛉。图8中,Faster R-CNN算法虽然测出遮挡的点蜂缘蝽目标,但检测精确度最低仅为86%,也存在错检。SSD算法虽然成功检测出遮挡的点蜂缘蝽,但是精确度为90%,低于本文采用的YOLOv3算法8个百分点。图9所示,识别大螟幼虫时,Faster R-CNN算法检测精确度最高,但存在错检,如误将水稻茎秆识别成稻螟蛉。而YOLOv3算法成功检测精确度为98%,检测精度能满足虫害检测需要同时未发生错检。
图5 红袖蜡蝉小目标检测结果
图6 稻绿蝽多目标检测结果
图8 点蜂缘蝽遮挡检测结果
图9 大螟幼虫检测结果
综上,基于YOLOv3的水稻虫害检测模型对5类水稻虫害测试图片表现出较高的精确率,反映了该模型具有较强的泛化能力,同时,对于叶片遮挡目标和相似背景等情况,识别准确率大于98%,表明YOLOv3算法有较好的鲁棒性。再者,对于Faster R-CNN检测速度慢,本文采用的YOLOv3算法平均每幅图片平均耗时75.41 mm,能够完成水稻虫害实时检测。
本文提出了一种基于YOLOv3的水稻虫害图像识别方法,选取红袖蜡蝉、稻绿蝽、稻螟蛉、点蜂缘蝽、大螟图片建立数据库,并基于卷积神经网络模型对5种水稻虫害进行分析。采用Faster-RCNN、SSD和YOLOv3算法进行对比试验,结果表明,在训练过程中,通过采用梯度下降法优化损失函数值,提升预测框置信度以及虫害类别识别精度。根据各项指随训练次数变化曲线,结合F1系数、召回率、准确率、mAP值,选择76次迭代综合性能最优,作为最终的权重文件来预测水稻虫害数据。通过优化训练结果,提高水稻虫害识别精度,有助于提高叶片遮挡目标和相似背景等情况识别效果。
在Faster-RCNN、SSD和YOLOv3算法对比研究中,YOLOv3算法的平均准确率最高,对红袖蜡蝉、稻绿蝽、稻螟蛉、点蜂缘蝽、大螟5种水稻虫害的AP分别为97.40%、88.76%、85.74%、92.96%、94.78%, mAP为91.93%。与Faster-RCNN算法相比,YOLOv3算法mAP高1.43个百分点,单张图像检测耗时减少833.68 ms;与SSD算法相比,YOLOv3算法mAP高5.56个百分点,单张图像检测耗时减少2.90 ms。结果表明,该模型兼顾了识别精度与速度,综合性能最优。
在选择五类比较具有代表性的水稻虫害图片试验中,对于叶片遮挡目标和相似背景等情况,YOLOv3算法能够正确识别,未出现漏检和错检,识别准确率大于98%。而Faster R-CNN算法虽然能够检测出遮挡的点蜂缘蝽目标,但是存在错检。SSD虽然检测出稻螟蛉,但由于稻螟蛉与水稻叶片颜色相似,识别效果低于YOLOv3算法27个百分点。将YOLOv3算法引入田间复杂情况下的水稻虫害识别是可行的,具有较高的平均准确率以及较快的检测速度,能够准确识别水稻虫害,这对于水稻虫害防治和田间喷药等方面具有重要意义。本文仍需要从多尺度预测和增加特征提取网络方面改进算法,进一步提高模型预测精度,满足自然条件下环境要求苛刻,如阴天或者晚上等光照强度弱等恶劣天气情况。同时,精简模型网络,减少模型网络权重、计算量,满足检测精度的提高识别速度,为后期部署到嵌入式设备中奠定基础。