刘凯旋,黄操军,李亚鹏,佟尚谕
(黑龙江八一农垦大学信息与电气学院,大庆 163319)
水稻是我国最重要的粮食作物之一,其产量对着粮食安全和社会的稳定有着重要的影响[1]。虫害会在水稻的生长中会产生不同程度的危害,若能及早的控制害虫规模,就能减少农药的喷施,避免水稻大量减产。只有准确鉴定害虫,才能为害虫防治提供重要的依据。已经有越来越多的学者将深度学习运用到害虫图像的自动化识别中[2-3]。现有的害虫检测可以分成两类,一类是采用常用的计算机视觉特征,再用浅层神经网络做分类。相应的工作有:陈向东等[4]提取颜色、亮度、纹理和深度特征,经过加权融合特征和显著性增强得到相应的分割结果。张永玲等[5]通过特征融合构建完备字典,用支持向量机对9类水稻害虫分类。陈娟等[6]通过富边缘检测算法提取园林害虫图像,改进的残差网络来识别38类园林害虫。杨国国等[7]通过计算茶园害虫的颜色显著值,构造显著性图来对害虫定位,然后用AlexNet网络来识别23种常见类型的茶园害虫。但是这些害虫检测算法由于特征是手工设计的,不但过程复杂,而且会受到在自然环境中害虫姿态角度的影响。另一类是使用深度学习的方法确定识别目标所在候选区域和目标类别。相应的工作有:姚青等[8]通过组归一化和优化FPN结构对RetinaNet进行改进,识别水稻背景稻飞虱和二化螟的水稻危害状。张诗雨等[9]使用聚类算法改进Faster R-CNN[10]的区域提案网络,识别六种常见的粮食害虫。邓壮来等[11]和苗海委等[12]通过改变SSD算法中的VGG16的层数和重新定义损失函数来优化SSD模型,来检测粮仓害虫;张博等[13]通过改变YOLOv3的层数和卷积核宽度以及使用空间金字塔池化特征融合来优化YOLOv3,对20类害虫进行检测和识别;魏杨等[14]提出了一种区域提案网络,提出害虫候选区域,由Fast R-CNN来识别10类农业害虫;李衡霞等[15]使用Faster R-CNN识别5种油菜害虫;林相泽等[16]出一种以预训练模型ResNet50为骨干的Mask R-CNN[17]检测稻飞虱图像的方法。但以上多目标检测算法还是存在丢失小目标,发生错漏的问题。针对小目标的准确率低,漏检的情况,通过使用特征金字塔FPN[18]和感兴趣区域校准ROI Align[17]优化级联R-CNN[19]的小目标特征,使用软非极大值抑制Soft-NMS[20]减少重叠目标的漏检,从而建立一种基于深度学习模型的水稻害虫图像检测算法,为水稻生产中害虫检测研究提供技术支持。
级联R-CNN网络结构如图1所示,其过程上是Faster R-CNN将得到的特征和回归框进行送入检测分支再次得到新的边框,然后再将新边框和特征送入检测分支得最终边框和类别。通过两次对回归框的微调,让回归框可以适应更高的IOU阈值,从而提升回归框的准确性。详细过程为:通过conv结构提取水稻害虫图片特征M,经过头部网络H0候选区域生成网络RPN,得到害虫初步候选框位置B0和类别C0;然后将得到初步候选框的位置B0映射到特征M上,应用感兴趣区域池化(ROI pooling)将特征M转化成固定大小的水稻害虫特征向量M1,送入头部网络生成新的害虫候选框位置B1和类别C1;同理,最后得到水稻害虫在图片中的准确位置B3和类别C3。
图1 级联R-CNN结构Fig.1 The structure of cascade R-CNN
如图1所示。其中I是水稻害虫图像,conv是ResNet50的结构,H0为RPN,H1、H2、H3由全连接层组成,为头部网络,B0、B1、B2、B3为先验框预测、C为类别预测、pool为ROI池化。虚线框内为Faster RCNN结构。
Faster R-CNN为二阶目标检测器,它通过RPN遍历特征得到预测先验框,映射在特征上,然后ROI池化会对这些映射在框里的特征提取新特征并规范大小,送入全连接层或全卷积层,判断目标类别,生成坐标偏移,微调候选框,NMS会根据阈值筛选出最大得分的边框,然后通过损失函数计算损失,再反向优化网络参数。二阶目标检测器的优点在于检测精度高,缺点在于检测速度慢。由于搜索先验框需要遍历图像,所以识别损耗的时间都在消耗在了RPN的搜索过程中。
优化过程主要有三步:在级联R-CNN中使用FPN结构;对先验框预测的NMS算法用Soft-NMS算法进行替换;对pool结构代表的ROI池化,替换为ROI校准算法。通过减少小目标特征损失的方式来提升原来的模型对小目标的识别精度。
1.3.1 FPN结构
通过相邻的高层改变长宽,低层特征改变深度再相加,相加得到粗略特征,再消去混叠效应得到新的特征。该特征具备高层特征语义信息,同时也具备低层特征中害虫位置的详细特征。最后一层特征和第一层特征不做处理。图像上不同大小的害虫特征会对应不同的提取位置,大的识别目标会靠后,小的识别目标会靠前。
1.3.2 Soft-NMS算法
NMS的缺点是当两个目标边框发生重叠时,得分高的候选框会把另一个目标的边框剔除,就导致算法检测不到另一个目标的位置。水稻害虫往往密集的聚集在水稻周围,当重叠时算法会漏检重叠的害虫。为了避免这种情况,使用Soft-NMS可以通过配合调节阈值避免漏检害虫。Soft-NMS对NMS的改进在于,当最高置信边框和待处理边框大于IOU阈值时,重叠度越大,会使待处理边框的置信值下降的越快,而非直接删除。
Soft-NMS改进有两种形式。其中高斯加权的形式得分连续,而线性加权的得分会因为分段而不连续。线性加权的形式为:
在算法中用到Soft-NMS算法的是高斯加权的形式。在训练过程中,RPN中的NMS的IOU阈值设为0.7,在测试时使用Soft-NMS替换NMS,IOU阈值设为0.5。
1.3.3 感兴趣区域校准(ROI Align)
稻田害虫图像中害虫目标数量多并且偏小,为了能够提高识别小目标害虫的识别精度,用ROI Align替换Faster R-cnn中的ROI pooling结构。原图上的感兴趣区域在经过骨干网络后,由于池化作用,尺寸会缩减,若区域边界框四个锚点的数值不是整数,需要取整。取整后的边界框若再映射到原图,和原来的区域相比会发生偏移。如果提议边框映射到特征图上的长宽不等,当需要划分成大小相同的区域,区域内像素数就不为整数,需要取整,就会导致实际区域不均匀,在进行池化操作时会再次丢失小目标的信息。这两次取整都会影响小目标检测的准确度。而ROI校准通过生成浮点数的像素值代替整数值像素,能够解决取整操作导致的小目标细节特征丢失的问题。
选取了5种常见的水稻害虫作为测试对象。为方便展示害虫形象,选取测试集部分水稻害虫图像的局部如图3所示。从左到右依次为稻蝗、稻飞虱、黑尾叶蝉、蝼蛄和黏虫。原始图像通过Google、Naver和百度等搜索引擎和学校试验水稻田内手机拍摄2种方式获得。拍摄时间为2018年8月到10月,每月月初第一周内实地拍摄,拍摄设备为荣耀20,每张图片分辨率为2 340*1 080。原始图像中的水稻害虫包含了各种姿态、光照、角度,经过人工筛选去掉了重复和错误的图像。试验数据集总共有2 855张图片,稻蝗670张,稻飞虱226张,黑尾叶蝉919张,蝼蛄823张,黏虫217张。其中水稻田实地拍摄图像250幅,各类水稻害虫图像均为50幅。为了均衡化样本,稻蝗、黑尾叶蝉、蝼蛄选取300张,稻飞虱226张,黏虫217张,维持1∶1.5的比例关系,共计1 343张。每张水稻害虫图像上至少有1只害虫。随机选择900张图片作为训练集,243张作为验证集,200作为测试集。
图3 识别害虫图像的局部样例Fig.3 Local examples of pest identification image
利用labelImg在图像上框定水稻害虫位置并标注类别,得到相应的xml格式文件。再使用算法将所有xml格式文件汇总,然后转成csv格式文件,并随机分出3/5数量图片作为训练集,输出保存训练列表和测试列表的json文件。按照COCO2017数据集格式把数据集和json文件摆放在相应位置。通常,训练集图像数量越多,害虫姿态,所处环境越多样,越有助于提升模型的准确性和泛化能力,防止过拟合。为此,通过将图像随机旋转角度、从图像中随机裁剪一定大小的区域、对图像进行水平或垂直翻转等操作来丰富数据多样性,扩充至原来2倍。
代码是在ubuntu18.04系统上使用python语言在mmdetection框架下编写的。电脑配置NVIDIA GeForce RTX2080 Super 8G显卡。使用反向传播和随机梯度下降方法更新网络权重,最小化网络损失。按候选区域生成网络RPN批处理大小256、基础学习率0.001、学习衰减量0.1、动量0.9、迭代次数32 000、步长11 200权值衰减0.000 5、每次迭代图片数量16来初始化模型参数。对级联R-CNN使用交替训练。未提出的参数默认和级联R-CNN设置相同。
目标检测一般使用IoU确定正负样本集,如果与某个感兴趣区域和真实边框的IoU>阈值u,就可以认为是该区域是这个类别下对应的一个正样本。假设gy是真实目标g所对应的类标签,那么感兴趣
区域x的类标签y是阈值u的函数:
采用mAP作为衡量指标,mAP数值越高,表示该算法在数据集上对害虫定位和预测类别的准确度越高。精确率Pr、准确率AP和平均准确率mAP的公式如下所示:
式中TP表示正确识别的害虫,FP表示将背景识别为害虫,FN表示将害虫识别为背景,TN表示正确识别背景,C为害虫类别,Q是害虫类别总数。精确率Pr表示的是预测为害虫的样本中正确识别的害虫的比例。准确率AP是识别正确的害虫和背景占总样本的比例。AP(i)为某一类害虫预测正确的比例,mAP为所有类别预测精确率的平均值。
训练模型会因为任务不同模型卷积层内的卷积核也会向着不同的方向改变,导致无法共享网络权重,所以采用RPN和级联R-CNN联合训练方式进行训练。
第1步,训练RPN。使用框架提供的预训练模型初始化RPN中的FPN结构的ResNet50的权重,然后使用水稻害虫数据集对RPN进行微调。训练完成后得到模型RPN1和重新生成各图片上害虫候选区域B0。
第2步,训练模型级联R-CNN。同样使用框架中提供的预训练模型初始化级联R-CNN的特征提取网络FPN结构的ResNet50,使用水稻害虫训练图像和害虫候选区域B0训练级联R-CNN参数,训练完成后得到模型R-CNN1。
第3步,再次训练RPN。用模型R-CNN1的参数初始化模型RPN1中的FPN结构的ResNet50,得到新的模型RPN2。设置FPN中参数的学习率为零,不更新参数,仅更新RPN2模型中RPN的参数。重新生成新的各个图片对应的害虫候选区域B0’。此时,两个网络共享所有公共卷积层。
第4步,再次训练R-CNN1。仍然固定FPN结构的ResNet50,使用水稻害虫训练图像和害虫候选区域B0’训练R-CNN1的头部网络。训练完成后得到模型R-CNN2。最后将RPN2加入R-CNN2后得到水稻害虫检测模型级联R-CNN。先加入形成级联RCNN的结构,固定RPN2再训练一样,但考虑到训练图像数量大,训练级联R-CNN会重复提取候选区域,所以先处理再训练从是为了减少训练时间。
其中,每次训练RPN进行30 000迭代,级联RCNN进行35 000次。测试过程只需调用级联R-CNN模型即可对害虫位置进行标定,同时对害虫进行分类。
参考Soft-NMS中敏感性分析实验[20],用提出的算法在害虫数据集上调节NMS阈值Nt和Soft-NMS阈值σ,测量算法AP的数值。从图4得到使用NMS的算法的AP稳定在0.3到0.6之间,超出这个范围性能会明显下降。使用Soft-NMS的算法AP数值在阈值0.1到0.7之间比使用NMS的算法AP值高,在阈值0.4到0.7的范围内保持在0.9以上,趋于稳定。为了可以和其他的模型算法作比较,使用阈值0.5。
图4 Faster R-CNN对超参数σ(Soft-NMS)和Nt(NMS)的敏感性Fig.4 Faster R-CNN sensitivity to hyper parameters σ(Soft-NMS)and Nt(NMS)
结果如表1所示。将级联R-CNN和Faster RCNN、Mask R-CNN在5种水稻害虫数据集上就平均检测时间和AP进行了对比。3个R-CNN网络使用骨干网络ResNet50+FPN每次12epoches交替训练得到的,而SSD使用了VGG16的骨干网络在训练了120epoaches得到的。因为R-CNN训练过程中使用了预训练模型,就使得训练周期缩短,仅需要较少的周期微调即可。
表1 害虫检测方法结果对比Table 1 Comparison of pest detection methods
先比较三个R-CNN。从表1中看出,相同条件下级联R-CNN的AP最高,而Faster R-CNN则是三者中测试是最快的。Mask R-CNN和级联R-CNN都是对Faster R-CNN的改进,两者通过增加了检测的时间换取了准确度。当对检测时间要求不大时,可以优先选择使用级联R-CNN。级联R-CNN在Faster R-CNN的基础上又级联了两个候选区域预测的支路,AP提升了5.63,说明级联对于进一步修正回归框的作用是十分明显的。RPN提出的候选区域大部分包含背景。逐级提高候选区域的IoU值,既可以去掉无用的背景区域,又可以通过逐级修正候选区域,而不会因为单一的高IoU而拟合数据。再比较级联R-CNN和SSD可以明确发现,SSD在检测上优势十分明显,但缺点是准确率很低。
蝗虫、稻飞虱、黑尾叶蝉、蝼蛄和黏虫和识别的平均准确率分别为94.51%、91.83%、92.72%、96.75%、和94.93%,平均准确率均值94.15%。因为蝼蛄和其余4类形态结构上有较大差异,所以AP是最高的。由图5可以看出,使用ROI池化的模型对会漏掉颜色昏暗比较模糊的目标,但使用ROI校准的模型,可以检测到之前对漏掉的模糊的小目标。有极少的稻飞虱由于过小,模糊不清而不能被检测到。从图片上可以看到,改模型对光线较昏暗情况下的目标也能检测到。由图6可以看出加入Soft-NMS算法后能够分辨重叠的害虫,避免了漏检。对于图中蝗虫接近的情况,使用NMS会丢失背部的蝗虫,而使用Soft-NMS做检测时,则能将背部的害虫标注出来。
图5 稻飞虱图像检测结果Fig.5 Image detection results of rice planthopper
图6 左右两图分别为用Soft-NMS替换NMS之前和之后Fig.6 The left and right figures are before and after replacing the NMSwith Soft-NMS
以级联R-CNN为骨架网络,从左到右依次累加优化方法模型表现如表2所示。从上可以看出FPN和ROI Align对模型优化的效果比较明显,分别使mAP提升了1.74%和2.32%,而Soft-NMS对模型的提升为0.62%。
表2 逐步叠加优化方法模型AP的变化情况Table 2 The change of APin the stepwise superposition optimization method
通过对级联R-CNN进行优化,使其可以适应复杂背景下的小目标的水稻害虫识别。通过使用特征金字塔FPN、软非极大值抑制Soft-NMS和感性兴趣区域校准ROI Align来优化级联R-CNN,总体提升了4.68个百分点,平均识别准确率达到了94.15%。对比了SSD、Mask R-CNN、Faster R-CNN在相同的条件下水稻害虫的识别准确率,该算法较SSD、Mask R-CNN、Faster R-CNN分别高出了18.42,2.42,5.63个百分点。能够提高害虫小目标图像的检测能力和重叠目标识别能力。