张 博,张苗辉,2※,陈运忠
(1.河南省大数据分析与处理重点实验室,开封475004;2.河南大学地理学博士后科研流动站,开封475004)
农业是一个国家经济发展的基础,粮食生产更是关系到国计民生。粮食生产受到诸多条件的影响,其中,病虫害是影响作物产量的重要原因之一。农业病虫害造成的作物减产覆盖了水稻、玉米和小麦等数十种农作物。因此,作物害虫的识别是科学防治病虫害的重要依据[1-4]。传统的作物害虫分类方法是专家通过观察害虫的外部特征,结合已知的害虫图鉴对害虫的种类进行判别,并对当季的各类害虫数量进行统计分析。该方法依赖于专家的经验水平和主观意识,识别效率较低。
近年来,借助于计算机视觉技术与模式识别的发展,农作物害虫的分类识别方法也得到了广泛的研究。传统的害虫识别技术大多基于颜色、纹理、形状等特征,通过稀疏表示的方法,学习获得害虫的过完备字典,从而对害虫进行分类[5-14]。这一类方法在本质上使用人工预先设计好的特征进行识别,在一定程度上实现了智能化,但在实际使用中容易受到害虫形态、背景干扰等限制。伴随深度学习与神经网络的发展,对害虫的识别研究转向以卷积特征为核心的深度学习框架,并在准确率和鲁棒性上获得了显著的提升[15-18]。上述图像分类的方法对样本的输入有严格的要求,依赖于人工对每个害虫样本进行选取和分离,分类精度受背景干扰较大。为了进一步对害虫进行自动的精准定位和准确分类,基于目标检测的害虫分类算法成为最优的解决方案。以Fast R-CNN(fast regions with CNN)和SSD(single shot multiBox detector)在害虫分类技术中的应用为例,根据卷积层提取到的特征向量,分别通过窗口分类和窗口回归,得到每个候选区域中害虫的类别以及原始坐标。此类方法有效地提升了害虫种类判别的准确率,并且能够对害虫目标进行定位[19-23]。由于害虫目标的体型差异较大,种类繁多,浅层的卷积神经网络提取到的有效特征信息较少,对多尺度输入的害虫样本泛化能力较差。
随着神经网络的发展,基于深度卷积神经网络的分类识别技术展示出了超越人类视觉水平的表现[24-31]。但对于作物害虫的分类识别问题,传统的作物害虫分类算法[7-8,15]通常基于害虫的颜色、形态和纹理等表观特征,通过浅层神经网络或者支持向量机(support vector machine,SVM)等分类器进行分类。这些算法除受害虫姿态多样性的因素影响外,还受到尺度多样性的影响,如体型较小的害虫样本在图片中所占像素较少,使得传统的卷积结构难以提取样本的底层特征。本文基于ResNet的残差网络思想,使用更深层的基础网络,通过上采样与卷积操作相结合的方法,在YOLOv3(you only look once version 3)[32]网络中加入反卷积结构,用于检测出体型较小的害虫目标并分类;进一步将空间金字塔池化[33]与改进后的YOLOv3相结合,使网络模型能够适应多尺度的样本输入,从而减小害虫体型差异较大对分类精度造成的影响。
为了保证该算法在实际环境中识别害虫的准确率,本文图像数据的采集依托河南省鹤壁市佳多集团在全国各地设置的JDXC-1 型智能虫情测报仪。这些测报仪设置在田间或者林地,诱捕到的昆虫都是当地易发生病虫害的昆虫,可以根据捕捉到的害虫数量来预测接下来的一段时间内发生哪种病虫害的可能性最大,以便尽早做好预防措施。顶部的摄像头每间隔10 min采集1张害虫图像,通过4G 网络信号传输至后台服务器,能够更真实的反应虫情动态。
由于不同种类的害虫分布具有季节性,本次害虫样本的图像采集工作自2015 年5 月11 日起至2016 年9 月30 日,分时段进行,主要集中在河南、山东和湖北等地。本次共采集到害虫样本图片976 张,每张图片的分辨率为2 592×1 944,害虫共124 类,如图1 所示。专家借助害虫图鉴和LabelImg 数据集标注脚本,共计标注害虫样本25 425个。害虫数量分布如表1所示,表中的第1列为每个种类的害虫所标注的样本数量范围,第3 列为样本量在该范围内的害虫种类编号,第2列为满足第1列样本数量的所有种类害虫的标注样本总数。其中,害虫种类编号为害虫图鉴中每一类害虫固定的编号值,如样本采集过程中1号、4号、9号等部分种类害虫并未出现。
图1 害虫样本示例Fig.1 Examples of pest samples
为了有效地提取到图像的细粒度特征,本文对YOLOv3 作进一步改进。原始的YOLOv3 由106 层网络层组成,共使用步长为2大小为3×3的卷积核进行5次下采样操作,输出3 种不同尺度的特征向量,每种尺度预测3个回归框的位置信息,如图2a 所示。由于害虫目标在原始图像中所占比例较小,多次下采样会引起训练过程中卷积层提取到的小目标特征信息丢失,导致体型较小的害虫无法识别。因此,将网络输入尺度设定为608×608,下采样次数减少为4 次,同时,使用上采样与卷积结合的方法,达到反卷积的效果。将网络首个全连接层的输出尺度提升至38×38,并与下采样之前的网络输出相结合,尽可能提取出原始图片中体型较小的害虫特征,以提高小目标害虫检测的准确率,如图2b 所示。本文使用双线性插值方法进行图像的上采样计算:
表1 害虫样本数量分布Table 1 Quantity distribution of pests
式(1)~(3)中,P 为上采样图像中x,y 坐标的像素值,按采样比例对应至原图中P'的坐标为(i+u,j+v),其中i,j 为整数部分,u,v 为小数部分。P1和P2分别是对应y 方向和x方向的插值,f(x0,y0)和f(x1,y1)为P'左上像素点和右下像素点的像素值。通过卷积与上采样结合的方法,实现了反卷积的操作,提升了YOLOv3 输出特征的尺度,图2b为改进后的YOLOv3网络结构。
如图2c 所示,DBL 结构由卷积层、批标准化(batch normalization,BN)和非线性激活函数(leaky relu)组成,构成YOLOv3网络结构的基本组件。传统的卷积神经网络在信息传递时会存在一定的信息丢失和损耗,造成梯度消失或者梯度爆炸等问题,随着网络的加深,出现训练过程中准确率下降,甚至无法训练的现象。本文使用Resblock 残差结构,如图2d 所示,能够在避免上述问题的情况下大幅度的加深网络层数,使神经网络提取到更深层次的目标信息,提升目标定位和分类的准确率。在图2a 和 图2b 中,Res2 表 示 由2 个Resblock 结 构 叠 加 组成。本文对于回归框的预测采用logistic回归方法:
式中cx,cy是坐标偏移量,pw,ph是预设的候选框边长。最终得到的边框坐标值是bx,y,w,h,网络的学习目标是tx,y,w,h。在3 种不同尺度生成的9 个先验框中确定出目标存在可能性得分最高的候选框,从而对该候选框中的目标进行分类。该方法确定了待检测图像中先验框的数量,检测速度快、背景误检率低、对于非自然图像物体的检测和分类的准确率远远高于传统R-CNN(regions with CNN)等系列的目标检测方法[32]。
图2 YOLOv3 spp与YOLOv3网络结构对比Fig.2 Comparison of YOLOv3-SPP and YOLOv3 network structure
空间金字塔池化(spatial pyramid pooling,SPP)是一种将局部特征映射到不同维度空间并将其融合的池化方法,可以产生固定大小的特征向量并且使卷积神经网络结构适应不同比例、多尺寸的图像输入,并且可以有效地提取到害虫的多尺度特征信息。空间金字塔池化的原理如图3a所示。
在YOLOv3 的首个全连接输出之前加入SPP 结构,该结构的输入尺度为38×38×512,如图3b 所示,将3 次最大池化的结果相融合,得到38×38×512 的固定输出用于首个全连接层的输入。该方法将3 种不同尺度的特征进行融合,使卷积核感受的视野范围更大。在SPP 的结构中,从上一个卷积层传递的特征保留了原始输入中的害虫特征,这部分害虫特征大多为体型适中的害虫类别,通过下采样,将体型较大的害虫进行特征重提取,通过反卷积提取到体型更小的害虫特征,将3 种特征相互融合,用于消除因害虫体型差异较大而导致有效特征信息不一致的影响,有助于提升体型差异明显的害虫分类准确率。
图3 SPP原理及网络结构示意图Fig.3 SPP principle and network structure
为了进一步提取到害虫图像的细粒度特征,本文对YOLOv3 进行改进,提升了YOLOv3 网络的特征输出尺度,使用Resnet残差网络结构和反卷积操作,使多尺度卷积特征相融合;为了减小害虫体型差异较大对分类精度造成的影响,将空间金字塔池化与改进后的YOLOv3 相融合,使网络模型能够适应多尺度的样本输入,设计一种基于端到端的害虫种类识别网络YOLOv3-SPP,用于害虫定位与害虫种类识别。
从表1中害虫样本数量分布可以看出,样本数在50以下的害虫种类共有86类,呈现出长尾效应。这是由于害虫样本的采集工作集中在5月至9月,且分布在多个地域,导致各类害虫数量不均衡,出现长尾效应。为了保证训练样本的相对均衡,本次试验从样本数量不低于50的害虫种类中随机选取20类,试验数据集分布如表2所示,20类害虫总共包含10 462个标注样本,分布在害虫样本的976张图片中。试验随机选取196张图像为验证集,其余780张为训练集,训练集与验证集均包含选取的20类害虫。其中,验证集只用于模型精度的测试,不参与模型的训练。
本文所有的试验都是在GeForce GTX Titan X 12GB GPU,Ubuntu16.04 操作平台上实现的,为了充分利用硬件资源,以GPU 版本的Darknet 深度学习架构为实现框架。评价参数采用每一类的平均精度值(average precision,AP)和总的平均精度均值(mean average precision,mAP),mAP的计算如式(8)~(10)所示。
式(8)~(10)中Pr为准确率,TP 为真实的害虫正样本数量,FP为虚假的正样本数量,C为害虫类别,NC为包含类别C的所有样本数量,AP( )i 表示第i 类害虫的平均精度值,Q为所有害虫类别数。mAP 的值越高,表示该方法在数据集上预测害虫的位置和类别越准确。
表2 20类害虫数据集分布Table 2 Sample distribution of 20 species of pests
为了验证SPP 结构对提高害虫检测准确率的有效性,试验分别采用YOLOv3 和加入SPP 结构的YOLOv3-SPP 网络,对20 类害虫进行50 200 次的迭代训练。模型初始化参数使用基础网络DarkNet-53 的预训练模型,设定初始学习率为0.001,采用随迭代次数改变的学习率下降策略,当迭代次数到达40 000 次时,损失值基本稳定。为了避免学习率过大,网络模型在最优值附近震荡,因此设定steps 为40 000 和45 000,当迭代次数达到40 000 次和45 000 次时,学习率下降10 倍,使得网络模型能够逐渐逼近最优值,确保训练能更进一步的收敛。由于GPU的显存大小和计算能力不同,本次试验设定batch 为64,subdivisions 为16,其中batch 表示每批训练的图片数目是64张,分为16个批次,依次送入GPU进行训练。
表3 为YOLOv3 与YOLOv3-SPP 训练模型的部分网络特征重构图。由图2a 可知,YOLOv3 的3 个输出结果是通过3 次降采样与2 次上采样的特征相融合所得到。从表3 中对比YOLOv3 与YOLOv3-SPP 的特征重构结果可以看出,YOLOv3所输出的特征尺寸较小,特征信息不明显,难以对小目标害虫进行准确的检测与分类。而改进后的YOLOv3-SPP提升了网络模型的输入尺寸,减少了下采样次数,在特征重构的结果中保留了大量害虫样本的原始信息,能够提高害虫目标的检测与分类的准确率。
表3 YOLOv3与YOLOv3-SPP的部分网络特征重构Table 3 Parts of network feature with YOLOv3 and YOLOv3-SPP
为了验证本文害虫识别方法的有效性,在20 类害虫数据集上,分别利用不同的目标检测方法对害虫样本进行训练并测试识别精度,数据集及识别结果如表4所示。
从表4可以看出,20类害虫按样本数量的大小降序排列。结合HOG(histogram of oriented gridients)特征与SVM的传统识别方法,识别率仅为68.46%,明显低于其余神经网络的识别方法,且识别速度较慢。由此可以看出,基于神经网络的目标检测算法在害虫识别中更具有优势。
在同一数据集下,YOLOv3 和YOLOv3-SPP 获得较高的平均识别率,分别为85.27%和88.07%,改进后的YOLOv3-SPP 较YOLOv3 的识别率提升2.8 个百分点;Faster R-CNN作为2阶段(two stage)的目标检测算法,虽然在各别害虫种类上获得了较好的测试精度,但平均识别率较低,为78.43%。这是由于Faster R-CNN 的网络结构不能有效地提取害虫的多尺度信息,对于体型较小的害虫目标识别率较差。由此可以看出,融合了空间金字塔池化的深度卷积神经网络YOLOv3-SPP在保证26帧/s识别速度的同时,具有更好的害虫识别能力,较HOG+SVM 的传统识别算法高出19.61 个百分点,较Faster RCNN高出9.64个百分点。
图4为YOLOv3与YOLOv3-SPP的识别结果,由图可以看出,YOLOv3-SPP 比YOLOv3 检测到的害虫目标更多,即漏检率更低,在YOLOv3-SPP 的检测结果中,除数据集未标注的昆虫外,其余害虫全部被识别。对2种方法的识别结果细节区域进行对比,如图4c 和4d 所示。YOLOv3对于体型较大和体型较小的害虫目标漏检较多,对应图4d中的65号和46号害虫,而YOLOv3-SPP能够识别出图中所有的害虫目标,且分类精度较高。由此可见,本文提出的YOLOv3-SPP害虫识别算法对于害虫体型差异较大,特别是害虫体型较小的情况下识别效果明显优于YOLOv3。
表4 20类害虫的测试精度Table 4 Test accuracy of 20 species pest
图4 不同方法的害虫种类识别结果Fig.4 Identification results of pest species by different methods
本文提出了一种基于空间金字塔池化与深度卷积神经网络的作物害虫识别算法,试验表明该算法能够有效地检测小目标害虫,适用于多尺度的害虫定位以及种类识别,平均识别准确率达到88.07%,检测速度为26帧/s。
1)为了解决因害虫尺度多样性导致其识别精度相对较低的问题,本文使用残差网络结构和反卷积对YOLOv3 网络进行改进,同时将空间金字塔与改进后的YOLOv3相结合,设计了深度卷积神经网络模型YOLOv3-SPP,与YOLOv3相比在识别准确率上提升了2.8个百分点。
2)对比了HOG+SVM、Faster R-CNN、YOLOv3 在相同的试验环境下害虫识别的准确率,本文算法较HOG+SVM 的传统识别算法高出19.61 个百分点,较Faster RCNN高出9.64个百分点。
3)基于神经网络的识别算法依赖于数据集的规模及标注的准确性,同时较多的网络参数需要大量的计算能力,在将来的研究中应尽可能减少网络参数和训练模型对数据量的依赖。