林相泽 朱赛华 张俊媛 刘德营
(南京农业大学工学院, 南京 210031)
水稻是我国最重要的粮食作物之一,其种植范围广、面积大,水稻生产在我国农业生产与粮食安全中具有主导地位[1]。稻田虫害防治效果差,极易出现“穿顶”、“倒塘”、甚至颗粒无收的情况[2]。水稻在各个生长期都会受到不同程度的害虫危害,给水稻生产带来极大影响。目前,对我国水稻造成危害的害虫主要包括稻飞虱、螟虫和稻纵卷叶螟等,其中稻飞虱对水稻的危害最为严重[3]。因此,获取稻飞虱虫口密度,提前制定相关应对措施,对保障水稻稳产、高产、优产至关重要。现阶段,对稻飞虱这类迁飞性害虫的虫情测报和计数多以诱虫灯和毒气瓶诱杀,再由人工统计实现[4]。传统的虫情测报方法采集信息难度大、虫情分析滞后,对水稻病虫害的防治效果甚微。
为了实现稻飞虱虫情测报的自动化,稻飞虱图像识别成为近几年的研究热点。邹修国等[5]提出了一种基于灰度共生矩阵提取纹理特征并采用BP神经网络对稻飞虱图像进行分类的方法。AZREE等[6]探讨了卷积神经网络结构VGG16在根据欧几里德距离图构建的灰度图像中将稻飞虱成功分类的有效性。YU等[7]基于贝叶斯准则,建立了Fisher线性判别函数,根据稻飞虱虫体图像的二维傅里叶频谱窗口数据对害虫进行识别。刘德营等[8]提出一种基于卷积神经网络的稻飞虱图像识别方法,通过自动学习获取网络模型参数,对测试集稻飞虱进行识别。尽管上述研究取得了一定成果,但是此类稻飞虱图像识别方法需要对图像进行预处理,耗费大量人力物力,难以实现真正的自动化,且识别精度有待进一步加强。
为了进一步提高稻飞虱图像分类的自动化,本文提出一种以Mask R-CNN[9]为基础,在ResNet50[9]网络上进行迁移学习的稻飞虱图像检测方法。
为了能够自动获取稻田昆虫图像,结合稻飞虱趋光性的生物特点,采用团队自主研发的野外昆虫图像采集装置[8,10],该采集装置的结构图如图1所示。该装置主要由XYZ三向调节装置、高清工业相机、采集工作台以及支架底座等部分构成。在图像采集实验开始前,通过高压汞灯将稻飞虱及其他稻田昆虫吸引至采集工作台上,并以台达DVP32EH00T3型PLC为核心控制单元,在设定好图像采集开始和结束时间后,PLC控制伺服电机使高清工业相机在X、Z向往返运动,相机每移动5 cm后滞留5 s以获取昆虫图像,确保设备能够在无人看守的情况下获取水稻昆虫高清图像。采集到的图像尺寸为782像素×576像素,JPEG格式,并通过USB数据传输线存储至主机硬盘。
图1 野外昆虫图像采集装置结构图Fig.1 Structure diagram of image acquisition device1.高清工业相机 2.Z向调节装置 3.X向调节装置 4.采集工作台 5.Y向调节装置 6.底座
稻飞虱爆发期通常在每年的6—9月[11],为获取不同时空下完整清晰的稻飞虱昆虫图像,将图像采集实验分为3个阶段进行。第1阶段为2015年8—10月,第2阶段为2016年6—10月,拍摄地点为南京农业大学江浦农场(32°01′N, 118°37′ E);第3阶段为2017年8—9月,拍摄地点为白马国家农业科技园(31°37′ N, 119°10′ E)。拍摄实验在晴朗天气或阴天的18:00—22:30进行,实验期间温度为20~30℃,相对湿度为6%~8%,实验现场如图2所示。最后,将3个阶段采集到的1 500幅稻田昆虫图像作为实验数据集,为突出研究重点,将3种类别的稻飞虱(白背飞虱、褐飞虱以及灰飞虱)归为一类,其余水稻昆虫归为一类,部分数据集样本如图3所示。
图2 野外实验现场图Fig.2 Experiment site in field
图3 数据集样本Fig.3 Data set samples
在使用Mask R-CNN训练数据前,需要手动标记昆虫轮廓并制作json标签文件。当前主要的图像标签制作软件有VIA、labelme、RectLabel、LabelBox以及COCO UI等。由于VIA操作简单、支持离线运行而且能直接生成json文件,因此采用VIA作为数据集标签制作工具。主要针对稻飞虱图像进行识别分类,因此在标签制作时只考虑将昆虫图像分为稻飞虱与非稻飞虱两类,即将稻飞虱图像标记为Sogatella_furcifera_(Horvath),将非稻飞虱图像标记为Others。考虑到昆虫触角过于细小,在标注时难度较大,并且对分类结论不会造成本质影响,因此在标签制作时只标记昆虫躯干。为完全拟合昆虫轮廓,采用多边形标注法进行标注,图3中昆虫标记后的效果如图4所示。
图4 数据集标签制作Fig.4 Data set labeling
为减少制作数据集标签的步骤并提高图像分类的精度,本文采用迁移学习和Mask R-CNN相结合的方法对采集的昆虫图像进行处理和分类。
迁移学习是一种运用已有知识对不同但相关的领域进行求解的机器学习方法。迁移学习放宽了传统机器学习中的两个基本假设[12]:①用于学习的训练样本和新的测试样本应满足独立且同分布的条件。②必须有足够多的训练样本才能得到一个好的模型。迁移学习包含源域(Source domain)和目标域(Target domain)[13-14],定义为
(1)
式中D(s)——源域D(t)——目标域
x——域的特征空间
P(x)——特征空间对应的边缘概率分布
Mask R-CNN是在Faster R-CNN[15]上扩展的一种图像识别算法,因此了解Faster R-CNN有助于对Mask R-CNN的理解。
2.2.1Faster R-CNN
Faster R-CNN是针对区域卷积神经网络(R-CNN[16])在每个候选区域(RoI)存在大量重复运算而提出的图像识别算法。该算法将候选区域网络(RPN)提取的特征转移到最后一层的卷积特征图上进行,并在之后加了一个针对性的RoIPool层[15],并采用多任务函数对分类和边界回归联合训练,相比于R-CNN算法提高了目标检测的精度和效率。
RPN的核心是锚(anchor)[15],而一个建议区域可以包含多个锚和多个正标签,因此,建议区域与期望区域重叠部分(IoU)的大小直接影响分类效果,IoU的选取由Faster R-CNN的损失函数L(pi,ti)获得[15],即
(2)
式中i——锚的索引
Ncls、Nreg——分类层数和回归层数
pi——目标锚的预测概率
ti——预测边界框的4个参数化坐标参数
Lcls——目标与背景两个类的对数损失函数
Lreg——目标与背景的回归损失函数
λ——权重
2.2.2RoIAlign
RoIPool是从每个RoI提取特征图的标准操作,RoIPool首先将浮点数表示的RoI量化到与特征图匹配的粒度,然后将量化后的RoI分块,最后采用最大池化汇总每个块覆盖的区域的特征值。因此,当进行RoIPool中的量化操作时,极易使RoI与提取的特征错位,从而对预测像素级精度的Mask有很大的负面影响。为了消除对RoIPool的粗糙量化,并将提取的特征与输入图像精准对齐,RoIAlign[9]被引入Mask R-CNN。即对于每个RoI分块选取其中的4个常规位置,使用双线性插值来计算每个位置的精确值,并采用最大池化将结果汇总。
2.2.3损失函数
与Faster R-CNN相比,Mask R-CNN增加了Mask分支,因此每个RoI的损失函数[9]为
L=Lcls+Lreg+Lmask
(3)
式中Lmask——平均二进制交叉熵损失函数
对于每个RoI,Mask分支有Km2维的输出,其对K个大小为m2的Mask进行编码,每一个Mask有K个类别,并在每个像素上运用sigmod进行分类。
Mask R-CNN图像识别算法是基于Faster R-CNN架构的新的卷积网络,该方法能够在有效识别目标的同时完成高质量的语义分割。
许多机器学习算法需要的训练数据都十分庞大,并且制作数据集标签的步骤繁杂[17],因此,本文通过结合迁移学习和Mask R-CNN图像识别算法对稻飞虱图像进行识别分类。采用迁移学习在已训练好的Microsoft COCO 数据集的基础上进行样本训练,将采集到的1 500幅昆虫图像随机选取1 200幅图像作为训练集,剩余300幅图像作为测试集。主要参数设置为:学习率0.01,学习衰减率0.000 1,动量值0.9。在参数设置完毕后,首先训练head layers,共训练20轮,每轮800次;然后训练all layers,共训练30轮,每轮800次。本算法在显存为4 GB的NVIDIA Quadro K4200显卡上执行,为匹配显卡的显存容量,将Mask R-CNN的基础框架(Backbone)设置为ResNet50,并且每次训练一幅图像。
为了说明本文所提方法的优越性,在相同样本条件下,首先,将本文所提方法与Faster R-CNN在对稻飞虱、非稻飞虱以及存在干扰图像情况下的识别精确度进行对比;然后,再将本文所提方法与传统图像分类方法(SVM[18]、BP神经网络[19])进行对比。
为增强实验结果的准确性,Faster R-CNN采用的训练集与测试集和本文所用方法的训练集与测试集一致,并且初始参数与训练次数和本文所提方法保持相同。Faster R-CNN与Mask R-CNN对水稻害虫图像识别分类的结果如图5、6所示。
图5 Faster R-CNN实验结果Fig.5 Experimental results of Faster R-CNN
图6 Mask R-CNN实验结果Fig.6 Experimental results of Mask R-CNN
图5a和图6a中3只昆虫均为稻飞虱,图5b和图6b中3只昆虫均为非稻飞虱,图5c和图6c中昆虫为非稻飞虱,并将图5a、5b和图6a、6b中3只昆虫从上至下编号为Ⅰ、Ⅱ、Ⅲ。
当识别稻飞虱图像时,图5a中昆虫Ⅰ的识别精度为0.784,昆虫Ⅱ的识别精度为0.945,昆虫Ⅲ未能被识别;图6a中昆虫Ⅰ的识别精度为0.976,昆虫Ⅱ的识别精度为0.932,昆虫Ⅲ的识别精度为0.944。因此,采用Faster R-CNN方法识别稻飞虱图像时,能够识别完整的稻飞虱图像,但是对于不完整的稻飞虱图像,该方法无法识别并会将其作为背景输出,且平均识别精度只有0.865,识别精度不高;本文方法能够有效识别完整和不完整的稻飞虱图像,并且平均识别精度达到0.951,明显优于Faster R-CNN。
当识别非稻飞虱图像时,图5b中昆虫Ⅰ的识别精度为0.909,昆虫Ⅱ的识别精度为0.841,昆虫Ⅲ的识别精度为0.896;图6b中昆虫Ⅰ的识别精度为0.906,昆虫Ⅱ的识别精度为0.961,昆虫Ⅲ的识别精度为0.866。因此,当识别完整非稻飞虱昆虫图像时,Faster R-CNN与本文采用的方法均表现较好,能够完成实例检测任务,对比平均识别精度,本文采用的方法优于Faster R-CNN,且平均识别精度达到0.911。
当识别存在干扰的昆虫图像时,图5c中昆虫被错误识别,图6c中昆虫的识别精度为0.906。因此,当识别存在干扰的昆虫图像时,Faster R-CNN的识别效果较差,不能准确识别昆虫类型;当采用本文方法识别时,能够有效判断图中昆虫类别,并且识别精度达到0.906,明显优于Faster R-CNN。
传统图像分类方法主要过程如下:首先对采集到的水稻昆虫图像采用大津法进行自适应二值分割[20]获得水稻昆虫的单一图像,如图7所示;然后通过膨胀、腐蚀等形态学滤波提取水稻昆虫背部图像,如图8所示;之后通过水稻昆虫背部图像提取昆虫的颜色、纹理以及形状等信息作为水稻昆虫的特征值;最后将特征值输入SVM和BP神经网络获取分类精度。
图7 水稻昆虫单一图像Fig.7 Single images of rice insect
图8 水稻昆虫背部图像Fig.8 Back images of rice insect
为进一步描述水稻昆虫的特征信息,综合采用文献[19,21]中提取的水稻昆虫特征参数,包括7组Hu不变矩[19]以及13组傅里叶描述子[21]。水稻昆虫的部分特征参数(包括2组稻飞虱特征参数,2组非稻飞虱特征参数)如表1所示。
表1 水稻昆虫特征参数Tab.1 Feature parameters of rice insect
采用上述提取的特征参数输入SVM和BP神经网络后获得识别精度,上述实验结果与Faster R-CNN以及Mask R-CNN的实验结果进行比较,如表2所示。
表2 实验结果比较Tab.2 Comparison of experiment results
由表2可知,采用传统图像分类方法对水稻昆虫图像进行分类的精确度比较低,均在0.8以下;Mask R-CNN的分类精度最优,达到0.923。此外,相比于传统图像分类方法,Mask R-CNN无需对图像进行预处理,而且能够实时查看采集到的原始图像中水稻昆虫的类别,明显优于传统图像分类方法。由于Mask R-CNN是在Faster R-CNN的基础上添加了Mask层,因此Mask R-CNN的检测速率略小于Faster R-CNN,但是依旧能达到5幅/s;采用传统图像分类方法进行图像识别时,在不考虑图像预处理的前提下,SVM的检测速率为0.5幅/s,BP神经网络的检测速率为0.1幅/s,因此与传统图像分类方法相比,Mask R-CNN的检测速率远大于传统图像分类方法。
在采集图像时,除了互相独立的昆虫个体图像外,还存在部分黏连或重合的昆虫图像,如图9所示。由于黏连和重合的昆虫图像不能被分割为单一的昆虫图像,因此传统图像分类方法无法分类识别黏连和重合的昆虫图像。
图9 黏连和重合的昆虫图像Fig.9 Adhesive and overlapping insect images
图9a是黏连的昆虫图像,图中4只昆虫均为非稻飞虱,且从左至右依次编号为Ⅰ、Ⅱ、Ⅲ、Ⅳ,从图9a中可以看出Ⅰ号昆虫与Ⅱ号昆虫黏连;图9b是重合的昆虫图像,图中4只昆虫均为非稻飞虱,且上方两只昆虫从左至右编号Ⅰ、Ⅱ,下方两只昆虫从左至右编号为Ⅲ、Ⅳ,从图9b中可以看出Ⅰ、Ⅱ号与Ⅲ号昆虫重合。Mask R-CNN对图9的识别结果如图10所示。
图10 黏连和重合图像的识别结果Fig.10 Identification results of adhesive and overlapping insect images
图10a中昆虫Ⅰ未能被识别,昆虫Ⅱ的识别精度为0.845,昆虫Ⅲ的识别精度为0.953,昆虫Ⅳ的识别精度为0.992;图10b中昆虫Ⅰ的识别精度为0.763,昆虫Ⅱ未能被识别,昆虫Ⅲ的识别精度为0.975,昆虫Ⅳ的识别精度为0.996。因此,当虫体黏连时,Mask R-CNN将Ⅰ号昆虫的黏连部分作为Ⅱ号昆虫的躯干,导致Ⅱ号昆虫的识别精度较低,此时昆虫的识别精度为0.845,并且由于失去部分躯干加上黏连的干扰,导致Ⅰ号昆虫无法识别。当虫体重合时,Mask R-CNN将Ⅱ号与Ⅲ号昆虫的重合部分作为Ⅰ号昆虫的躯干,与黏连的情况相比重合部分远大于黏连部分,导致重合昆虫图像的识别精度低于黏连的图像,此时昆虫识别精度为0.763;Ⅱ号昆虫由于失去大部分躯干并且加上重合的干扰,导致无法识别;Ⅲ号昆虫由于仅失去较少的头部部分,因此依旧能够被Mask R-CNN识别。由此可见,黏连和重合的昆虫图像对于Mask R-CNN的识别干扰较大。
(1)考虑稻飞虱的生物特性,自主研发了野外昆虫图像采集装置,在无人看守的情况下自动采集稻田昆虫图像,为后续图像识别实验构建了昆虫图像数据集。
(2)采用VIA制作了稻田昆虫图像数据标签,并将昆虫图像标记为稻飞虱和非稻飞虱,采用迁移学习方法初始化网络权重,最后在ResNet50网络上完成了数据集的训练。
(3)分别对稻飞虱、非稻飞虱、存在干扰图像以及存在黏连和重合的稻田昆虫图像进行识别实验,并与Faster R-CNN算法和传统图像分类算法(SVM、BP神经网络)进行了对比。对比结果表明,本文方法能够快速有效识别稻飞虱与非稻飞虱,平均识别精度达到0.923,能够为稻飞虱的防治预警提供信息支持。