王美华 吴振鑫 周祖光
(1.华南农业大学数学与信息学院, 广州 510642; 2.暨南大学信息科学技术学院, 广州 510632)
农作物病虫害是一种严重的自然灾害,需要对其进行及时预测和监控,以保证农作物的产量[1]。病虫害的发生与种植制度、作物布局和气候趋势等因素息息相关,而普通农户的小规模种植使病虫害预测难度较大[2-3]。
传统的机器学习方法一般经过病斑提取、边缘特征提取后进行分类[4]。魏超等[5]将农作物病斑分割分为背景移除和病斑分割两个阶段,并由此进一步提出了一种病斑袋模型,以提取出更高层抽象的特征。然而,这种传统机器学习方法对图像的预处理步骤较为复杂,并且只能应用于个别植物的少量病虫害检测,可迁移性差。随着深度学习技术的发展,病虫害图像数据日益充足,成功解决了传统机器学习需要显式提取病虫害特征和可迁移性差的问题。利用深度学习技术泛化性强的特点,能够同时对种类繁多的病虫害进行识别检测,大大提高了防治效果。国内外已有许多研究利用卷积神经网络对农作物病虫害进行识别[6-8]。通常来说,数据质量的优劣往往决定了模型质量的优劣,一个大而全的数据集(例如ImageNet)往往能够训练出效果较好的模型。然而,在病虫害识别领域常常面临数据量不足的问题,迁移学习技术[9]能够利用已经标注好的数据提升模型精度,从而解决数据量不足的问题。许多研究表明,采用迁移学习并对卷积神经网络模型的所有层进行精调,能够最大程度提升原模型的基础识别率[10-12]。
在利用深度学习和迁移学习进行图像识别时,一般会在神经网络中通过添加注意力模块来提高识别准确率。然而,传统的混合注意力模块在细粒度多分类识别任务中表现不稳定,因此较难应用于此类任务中。
本文针对苹果、番茄、辣椒等10种植物的细粒度识别进行研究。首先,在卷积神经网络中采用全网络层微调的迁移学习方法,以保证病虫害识别模型准确率;针对传统注意力模块在细粒度多分类的识别任务中表现不稳定的问题,在迁移学习的基础上提出一种对卷积注意力模块(Convolutional block attention module,CBAM)[13]进行改进的混合注意力模块(Improved CBAM,I_CBAM),以期在不同的卷积神经网络中具有良好的可移植性和泛化性。
本文所用数据集为上海新客科技和创新工场联合制作的农作物病虫害图像。数据集包含草莓、樱桃和苹果等10种作物的10种健康状态和27种病虫害,其中24种病虫害又分为“一般”和“严重”状态(例如:“苹果黑星病一般”和“苹果黑星病严重”),共计61类。本文所用数据集农作物病虫害图像共36 258幅,数据集部分图像如图1所示,其具体标签如表1所示。将数据集图像划分为训练集与测试集。其中,训练集包含31 718幅图像,测试集包含4 540幅图像。
本文数据集大部分图像尺寸300像素×400像素。为了满足卷积神经网络输入图像尺寸要求,将图像尺寸统一缩放为224像素×224像素,然后在此基本上进行数据增强操作。
在通常条件下,用于训练的数据越多,模型的精度就越高,其鲁棒性和泛化性也越强。数据增强是深度学习中常用的数据扩充方法。本文在模型训练时使用双线性插值法、最近邻插值法、双三次插值法和面积插值法对图像进行缩放操作,又将图像随机进行水平和垂直翻转,从而将训练数据集扩充至507 488幅,最后将图像进行归一化以提高模型学习速度。模型测试时,为了保证测试结果的稳定,测试图像仅进行双线性插值法缩放和归一化操作。
卷积神经网络(Convolutional neural network,CNN)是深度学习在图像领域应用范围最广的一种神经网络结构。本文以CNN为基础,搭建病虫害识别模型。首先,从病虫害数据集中批量选取训练图像,随后经过CNN提取图像特征。再经过全连接层(类似于多层感知机[14])与Softmax层,产生预测分类。最后计算损失值,利用反向传播调整网络参数。本文利用卷积神经网络进行病虫害分类模型的训练流程如图2所示。
近年来,我国经济一直呈现出一种增长的趋势,但在发展过程中仍旧面临着多种难题。外部环境在不断地更新变化,出现了经济新常态的环境特征,银行业却没有随之得以更新与调整,使得银行业的发展遭遇到瓶颈。基于此,银行业需要顺应时代的变化,通过改革创新等措施来提升自身的服务质量,实现供给侧改革,加强服务实体经济的能力。
由文献[5]可知,“病害程度”分类的错误主要集中在“病害程度”的判断上。因此,对卷积神经网络模型添加注意力,以提升对“病虫害程度”此类细粒度任务的识别效果,从而提高模型的整体识别准确率。
2.2.1卷积神经网络中的注意力机制
卷积神经网络中的注意力机制分为软注意力和强注意力两种。其中强注意力不可微,常常用于增强学习,不属于本文讨论的范畴。软注意力可微分,即可以通过训练中的反向传播进行自主更新[15]。本文所关注和使用的是软注意力,软注意力又可以分为空间域、通道域和混合域。其中,空间域和通道域是软注意力所关注的方面。
空间注意力(Spatial attention)[16]可使神经网络更加关注图像中对分类起决定作用的像素区域,而忽略无关区域。通道注意力(Channel attention)[17]是一种考虑特征图通道之间关系的注意力机制。混合域则是将上述两种不同注意力组合起来。CBAM就是将卷积模块中的空间注意力和通道注意力进行混合,实现从通道到空间的顺序注意力结构,能够嵌入到卷积操作之后,容易移植。
2.2.2改进CBAM
CBAM[13]模块是先输入特征图F,经过通道注意力加权结果为F1。再经过空间注意力加权得到输出特征图F2,这是一种“串行(cascade)连接”的结构,其过程公式为
(1)
式中MC(F)——F经过通道注意力的输出权值
MS(F1)——F1经过空间注意力的输出权值
⊗——特征图加权乘法运算符号
实际上,无论是先启用通道注意力后启用空间注意力(channel→spatial,即CBAM),还是先启用空间注意力后启用通道注意力(spatial→channel,即reverse CBAM,简称R_CBAM),排在后面的权值都是由排在前面的特征图产生。而在这个过程中,认为排在前面的注意力把原始输入特征图“修饰”了。即排在后面的注意力机制所学习到的是被“修饰”过的特征图,在一定程度上影响排在后面的注意力模块所学习到的特征。尤其在细粒度分类任务中,这种由于“串行连接”而产生的干扰,会使注意力模块的效果变得不稳定,对于准确率的提升也难以保证。
因此,为了解决这个问题,本文对CBAM的串行注意力模块进行改进,将原来的“串行(cascade)连接”改为“并行(parallel)连接”,使两种注意力模块都直接学习原始的输入特征图,从而无需关注空间注意力和通道注意力顺序,由此得到改进CBAM(I_CBAM)。I_CBAM先由输入特征图F分别经过通道注意力和空间注意力得到相应权值,最后将权值直接与原始输入特征图F加权得到输出特征图F2,其过程公式为
F2=MC(F)⊗MS(F)⊗F
(2)
式中MS(F)——F经过空间注意力的输出权值
I_CBAM的整体结构如图3所示。
实验使用软件为Python 3.5和深度学习框架Keras 2.3.1,以Tensorflow-gpu 2.0.0为后端,操作系统为Ubuntu 18.04.3 LTS。CPU为Intel Xeon E5-2678 v3@2.50 GHz,GPU为NVIDIA RTX 2080Ti,显存11 GB。
首先使用混合注意力模块CBAM中的channel attention(压缩比为2)、spatial attention、CBAM、R_CBAM和本文提出的I_CBAM,在农作物病虫害数据集上利用不同的卷积神经网络模型进行预测准确率对比,以证明I_CABM的有效性和泛化性。 在模型训练环节,随机选取一个批次的图像进行训练,批尺寸为32。
本文采用Top-1准确率、Top-5准确率、作物品种(10类)准确率(预测的品种是否正确)、病害种类(27类)准确率(预测的品种和病虫害种类是否正确)、病害程度(健康/一般/严重)(3类)准确率(预测的品种、病虫害种类和相对应的严重程度是否正确)、平均一幅图像前向传播时间、模型规模和参数数量作为模型的评判标准。
由文献[5]可知,分类错误主要集中在对于“病害程度”的判断上,因此提升对“病害程度”的识别效果是提升模型识别准确率的关键。本文主要以Top-1准确率和病害程度准确率作为判断模型效果的标准。
首先在表现稳定的InRes-v2[18]迁移学习模型(在包含1 000个类别的120万幅图像的ImageNet数据集中预训练)中加入各注意力模块进行对比实验。由于InRes-v2包含Inception[19]结构和Resnet残差连接结构[20],因此参考HU等[17]的嵌入方式,将注意力模块放在Inception结构的拼接操作之后,最后与残差相加。其在Inception-Resnet结构的具体嵌入方式如图4所示。实验选用Adam优化器,初始学习率为0.000 1,训练50次。最终Top-1准确率如图5所示,详细指标如表2所示。
从表2可以看出,无论是以作物品种还是病虫害种类为划分,各模型的Top-5准确率均超过了99%,并且数值相当接近。而Top-1分类的错误主要受到“病害程度”判断的影响,因此添加注意力模块的首要目的,就是提升对“病害程度”的识别准确率。另外,从模型规模和参数数量的角度进行分析,由于CBAM中的channel attention存在两个全连接层,因此参数数量增长明显,模型规模翻倍。而spatial attention由于只需要保存一个7×7的卷积核,因此模型规模和参数数量都较小。
表2 InRes-v2嵌入各注意力模块实验结果Tab.2 Results of attention module experiments in InRes-v2
CBAM注意力的Top-1准确率并不理想,排序靠后的空间注意力学习到的是排序在前的通道注意力“修饰”过的特征图,因此效果并不好。R_CBAM的Top-1准确率略高一些,考虑到排序在前的空间注意力没有全连接层,因此对于原始输入特征图的“修饰”程度并不大,因此准确率有少许提升。但均未超过直接使用channel attention或spatial attention的模型,验证了串行连接注意力会导致学习效果不好的结论。而本文提出的并行混合注意力模块I_CBAM表现较优,其Top-1准确率和病害程度准确率达到了86.98%和89.15%,比CBAM提升了0.57、0.81个百分点。
虽然在大型自动化场景下使用基于InRes-v2嵌入I_CBAM模型效果出色,但是在日常使用的移动端应用中,却难以部署InRes-v2这样较大体量的模型。因此在轻量级移动端神经网络MobileNet-v2[21]中嵌入I_CBAM模块,进行对比实验,以验证I_CBAM在小型网络上的效果。
MobileNet-v2是一个轻量级的模型,然而在实验中使用ImageNet预训练模型时,若在MobileNet-v2的每个inverted_res_block中都加入attention block,则会导致预训练模型中的初始参数在训练时被严重破坏,且模型的规模也变为原来的数倍,失去了MobileNet_v2在移动端的意义。因此,在MobileNet_v2的最后一个卷积后嵌入注意力模块同时删去此卷积后的批归一化层(BN)层进行对比实验,以减少参数的扰动,保证训练时的鲁棒性。对比实验选用Adam优化器,初始学习率为0.000 01,训练40次。实验最终的Top-1准确率如图6所示,其它部分指标如表3所示。
从表3可以看到,MobileNet-v2模型的参数数量仅为2.34×106,比InRes-v2模型的5.443×107缩减了5.209×107,并且准确率仅比InRes-v2低0.59个百分点,是移动端病虫害识别的理想模型。在MobileNet-v2中添加各类注意力模块后准确率有提升。其中,无论是Top-1准确率还是病害严重程度的识别准确率,添加了I_CBAM的模型均为最高,对于准确率的提升十分稳定,分别比MobileNet-v2模型提高了0.62、0.76个百分点,再次证明了I_CBAM的有效性和鲁棒性。
表3 MobileNet-v2嵌入各注意力模块实验结果Tab.3 Results of attention module experiments in MobileNet-v2
激活热力图[22](Grad-CAM)能够对模型的分类结果提供很好的可视化依据。因此,为进一步分析识别准确率差异的原因,本文提取了部分测试图像在MobileNet-v2各注意力模块对比实验中的激活热力图,如图7所示。其中,P表示经过Softmax函数分类后模型对于类别yi的判断概率。可以观察到,添加I_CBAM的模型比起其它模型能够更准确地定位和选中叶片的病虫害区域,对于正确分类的判断效果也更好。
从InRes-v2和MobileNet-v2的对比实验中可以观察到,注意力模块I_CBAM的参数主要来源于其中的Channel attention部分。例如InRes-v2模型参数数量为5.443×107,而添加Channel attention(压缩比为2)后则达到了1.224 6×108,说明Channel attention 是参数数量增长的主要来源。在添加了Channel attention的注意力模块(Channel attention/CBAM/R_CBAM/I_CBAM)中,本文在实验中设置Channel attention全连接层的压缩比为2,以突出学习效果。为了进一步缩减添加注意力模块后的参数数量和模型规模,使模型更加轻量,在MobileNet-v2上对I_CBAM的Channel attention的压缩比(2、4、8、16、32、64)进行了调参实验,在尽可能地缩减模型规模的情况下保证识别准确率,其实验结果如表4所示。
从表4中可以看到,当压缩比为32时,模型的准确率与压缩比为2时并没有明显的变化,且模型规模已缩减至28.3 MB,使得模型规模和准确率之间达到了较好的平衡。因此,使用32作为I_CBAM中Channel attention全连接层的压缩比是一个极佳的选择。此外,对比添加了I_CBAM的InRes-v2模型,调整压缩比为32,不仅模型规模大大缩减,且前向传播(预测)时间从13.4 ms减少至7.19 ms,大大提高了预测的响应速度。
表4 MobileNet-v2嵌入I_CBAM使用不同压缩比的 实验结果Tab.4 Results of using different reduction ratios for MobileNet-v2 embedded I_CBAM
除此之外,为了进一步验证I_CBAM的泛化性和鲁棒性,本文还在LeNet[23]、AlexNet[24]和改进AlexNet[25]3类卷积神经网络上,采用模型随机初始化参数的训练模式,在每个卷积层后嵌入注意力模块,再次进行了各注意力模块的对比实验。其中,LeNet对比实验选用SGD优化器(初始学习率为0.01,衰减率为0.94);AlexNet对比实验选用Adam优化器(初始学习率为0.000 1);改进AlexNet对比实验选用Adam优化器(初始学习率为0.000 5);训练次数均为40,最终Top-1准确率和病害程度准确率如表5、6所示。
表5 3种模型的Top-1准确率对比Tab.5 Top-1 accuracy comparison of three models %
表6 3种模型的病害程度准确率对比Tab.6 Disease severity accuracy comparison of three models %
从表5可以看出,CBAM和R_CBAM在不同模型中的表现并不一致。例如在改进AlexNet上添加CBAM与R_CBAM的模型准确率高于不添加注意力模块的改进AlexNet,但在AlexNet添加注意力模块后却均低于不添加注意力模块的AlexNet,而在LeNet上则呈现一高一低的情况。I_CBAM的模型表现则较稳定,在3种浅层卷积神经网络上均取得了最高的准确率,在LeNet、AlexNet、改进AlexNet上添加I_CBAM后分别比不添加时的Top-1准确率分别提高了1.74、0.53、0.55个百分点,病害程度准确率分别提高了0.78、0.51、0.41个百分点。通过对3种浅层卷积神经网络的再次对比,证明了I_CBAM具有泛化性和鲁棒性。
为了便于用户更好地使用,采用小程序搭建了用户图形界面。如图8a所示,图中选用的模型为添加了I_CBAM(压缩比为32)的MobileNet-v2模型。通过拍摄或相册上传一幅图像,然后选择模型提交到小程序进行识别。小程序将相关信息发送给Python的Django框架搭建的系统后台,系统后台根据相关信息调用模型进行识别,并将识别的结果返回给小程序。小程序收到系统后台的识别结果后,展示系统后台的识别信息。
识别结果如图8b所示,对于健康玉米图像识别,准确率达到了99.99%。小程序将预测前5项概率的结果返回给用户。如图8c、8d所示,对于番茄斑枯病严重和马铃薯早疫病严重的识别准确率分别达到了99.65%和99.86%,而对于番茄斑枯病一般和马铃薯早疫病一般的预测概率则仅有0.32%和0.07%,在病害程度的判断上非常精确。结果表明添加了I_CBAM的模型在细粒度分类任务上具有较好的应用效果。
(1)针对细粒度多分类病虫害识别准确率低的问题,对串行连接混合注意力模块CBAM进行改进,提出了一种并行连接的I_CBAM注意力模块,解决了串行连接两种注意力产生干扰的问题。
(2)为了验证I_CBAM模块的有效性和鲁棒性,设计并对比了channel attention、spatial attention、CBAM、R_CBAM和I_CBAM在5种不同卷积神经网络中的识别效果。结果表明,添加了I_CBAM的InRes-v2、MobileNet-v2、LeNet、AlexNet、改进AlexNet模型的Top-1(61类)识别准确率分别为86.98%、86.50%、80.97%、84.47%和84.96%,比未添加注意力模块的原模型分别高0.51、0.62、1.74、0.53、0.55个百分点。说明I_CBAM在病虫害细粒度分类上具有较优的识别效果,且在不同卷积神经网络模型之间拥有良好的泛化性。
(3)对添加了I_CBAM的MobileNet-v2模型进行不同压缩比的调参比对实验,进一步缩减模型规模至28.3 MB,且预测一幅图像的平均用时仅为7.19 ms。将该模型部署到移动端小程序上,具有良好的可视化应用效果。