基于注意力机制与EfficientNet的轻量化水稻病害识别方法*
2022-10-27卫雅娜王志彬乔晓军赵春江
卫雅娜,王志彬,乔晓军,赵春江
(1. 西北农林科技大学信息工程学院,陕西杨凌,712100;2. 北京市农林科学院信息技术研究中心,北京市,100097)
0 引言
水稻是我国最重要的粮食作物之一。我国常年种植的水稻面积约占全世界水稻种植面积的20%,产量约占全世界水稻总产量的40%[1]。然而,水稻的产量和质量一直受到病害的影响,以稻瘟病为例,其年平均发生面积达3 800 khm2,一般减产10%~20%,严重时减产可达40%~50%,甚至绝收[2]。对水稻病害的及时防控是减灾保丰收的关键举措,而传统的水稻病害识别方法主要依赖专家根据可见特征进行评估,其结果主观性强、评估过程繁琐、耗时。因此,实现准确、快速地水稻病害识别具有重要意义。
近年来,随着信息技术的快速发展,利用机器学习、图像处理等技术对农作物病害图像进行识别已成为病害防治领域新的研究热点[3-11]。早期基于图像处理技术识别水稻病害的方法,存在人工提取的特征集可能不具有代表性、不完整或冗余等弊端。与其相比,深度学习网络具有自动学习特征的能力,并在作物病害图像分类方面取得了较好的应用效果。Jiang等[12]基于多任务学习的思想,针对三种水稻叶病和两种小麦叶病,提出了一种改进的VGG16模型,对比试验结果表明,该方法的效果优于单任务模型、ResNet50模型和DenseNet201模型。Waheed等[13]提出了一种改进的密集卷积神经网络(DenseNet),优化后的模型在玉米叶片病害数据集上的准确率比NasNet和VGG19分别提高了6.16%和1.7%。黄林生等[14]在残差网络ResNet18的基础上引入Inception模块,利用其多尺度卷积核结构对不同尺度的病害特征进行提取,改进后的多尺度注意力残差网络模型(Multi-Scale-SE-ResNet18)在8种农作物病害数据集上的平均识别准确率达到了95.62%。Mohanty等[15]采用GoogleNet和AlexNet两种卷积神经网络对植物病害进行分类,试验结果表明,在PlantVillage数据集中GoogleNet性能始终优于AlexNet,达到94.3%。郭小清等[16]提出了基于AlexNet的多感受野识别模型,并基于Android实现了使用此模型的番茄叶部病害图像识别系统,该模型对番茄叶部病害及每种病害中早晚期的平均识别准确率达到92.7%。Gao等[17]针对现有作物病害识别方法精度低的问题,提出了基于双分支的残差神经网络(DECA_ResNet),该模型在AI Challenger2018数据集上的病害识别准确率为86.35%。王东方等[18]提出了一种改进的深度残差网络SE-ResNeXt-101,该模型在重构的AI Challenger2018农作物病害数据集上较经典的卷积神经网络模型取得了较好的识别效果。
上述方法在对病害图像识别时,为了获得更高的识别精度,网络模型往往仅从深度、宽度或者基数中的一个方面进行调整,极易导致网络参数量的大幅增长,使得模型的运算复杂度提高。为此,本文以水稻白叶枯病、稻粒黑粉病、稻曲病、稻胡麻斑病4种常见病害及水稻的健康叶片为研究对象,提出了一种基于注意力机制与EfficientNet[19-20]的轻量化水稻病害识别方法,以期实现田间水稻病害的快速、准确识别。
1 材料与方法
1.1 数据采集
试验选取水稻4种常见病害:水稻白叶枯病、稻粒黑粉病、稻曲病、稻胡麻斑病和水稻的健康叶片图像进行识别。采集的数据通过两种途径获得:一是于2019年5月及2021年10月,在重庆市农业科学院、西南大学等水稻试验田,通过人工手持数码相机(NikonD810),拍摄宽度为3 680像素、高度为5 520像素的原始图像。为使数据符合实际应用场景,采用多角度、多时段的拍摄方法,对含有真实背景的水稻发病部位正面进行采集;二是从公共网站上收集水稻图像,例如:农业病虫害研究图库,http://www.icgroupcas.cn/website_bchtk、https://data.mendeley.com等。在植保专家的指导下,将不同类型的水稻图像统一缩放为224像素×224像素,并对其准确性和唯一性进行判别,构成样本集。采集的水稻图像样例如图1所示。
(a) 水稻白叶枯病 (b) 稻粒黑粉病 (c) 稻曲病 (d) 稻胡麻斑病 (e) 健康叶片
该样本集包括两部分:训练集和测试集,共2 857幅图像。从每类样本图像中随机选择80%构成训练集,其余20%构成测试集。其中,训练集包含2 285幅图像,测试集包括572幅图像。样本集具体构成如表1所示。
表1 水稻图像样本集Tab. 1 Rice image sample set
1.2 水稻病害识别模型
为减少水稻病害识别算法的网络参数量和计算量,本文选用轻量化、高精度的EfficientNet模型作为基准网络。为使模型维持高精度的同时更加轻量化,引入CBAM模块和Ghost模块对模型进行优化,提出了一种基于注意力机制与EfficientNet的轻量化水稻病害识别方法(CBAM-Ghost-EfficientNet,CG-EfficientNet)。
1.2.1 基础网络选取
EfficientNet[20]是Tan等在2019年利用神经架构搜索技术(Neural Architecture Search,NAS)提出的一种新型轻量化卷积神经网络。传统卷积神经网络一般通过单独调整输入图像分辨率、网络深度或卷积通道数中的一个维度来提高网络的精度。而EfficientNet采用复合缩放方法,对网络的宽度w、深度d以及输入图像分辨率r三个维度按照比例同时进行改变,使缩放后的网络在提高模型识别精度的同时,达到最佳参数。通过复合系数φ对EfficientNet中d、w、r进行统一缩放的关系为
(1)
式中:α、β、γ——常数,决定了如何将资源分别分配给网络深度、宽度和图像分辨率,是通过网格搜索获得的参数;
φ——复合系数,用来控制模型的扩增;
s.t.——限制条件。
复合缩放方法具体为:首先使用NAS方法和因子分层化搜索空间(Factorized Hierarchical Search Space),搜索产生一个高效的基准网络结构EfficientNet-B0;其次在式(1)的约束条件下,固定参数φ=1,通过网格搜索方法,确定α、β、γ的值;最后将α、β、γ固定为常数,搜索产生一组合适的缩放系数φ,逐渐放大基准网络EfficientNet-B0,获得EfficientNet-B1至EfficientNet-B7。
由于EfficientNet由B0~B7共8个模型组成,为了选出最优模型作为水稻病害图像分类的基础网络,本文在所构建的水稻病害图像训练样本上,进行了8组试验。试验结果如表2所示。从实际应用的角度,为了实现模型的轻量化,综合考虑模型对水稻病害的分类效果以及模型的参数量,本文选用EfficientNet-B0作为基础网络进行下一步的工作,采用的网络参数分别为φ=1,α=1.2,β=1.1,γ=1.15。
表2 EfficientNet-B0~EfficientNet-B7网络试验结果对比Tab. 2 Comparison of experimental results of EfficientNet-B0~EfficientNet-B7
1.2.2 CBAM模块
CBAM[21]是Woo等于2018年提出的一种轻量级卷积神经网络注意力模块,其较EfficientNet中的挤压—激励(Sequeeze-and-Excitation,SE)注意力机制增加了空间轴上的注意力机制。对于任意卷积神经网络生成的中间特征图,CBAM分别从通道和空间两个维度为特征图的各部分赋予不同的权重。在大量的信息特征中,将注意力集中在对当前任务更为重要的信息上,抑制不必要的特征。CBAM模块内部先通过通道注意力子模块,后经过空间注意力子模块,其结构如图2所示。
图2 CBAM中通道注意力与空间注意力结构
对输入的特征图F进行自适应特征学习,输出优化后的特征图F″。其中通道注意力主要关注输入数据每个通道中有意义的内容。通道注意力模块如图3所示。
图3 通道注意力模块
假设输入的特征图F的高度为H,宽度为W,特征通道数为C。该模块中输入的特征图F∈RC×H×W,R表示多维矩阵,在空间维度上对每个通道分别通过全局平均池化与全局最大池化进行压缩,得到一维的AvgPoolhw与MaxPoolhw向量,这两列向量分别经过两层共享的全连接网络,输出AvgPoolhw′与MaxPoolhw′,进一步将两向量以元素求和方式进行合并,最终使用sigmoid函数将合并之后的特征向量映射到[0,1],进而得到一维的通道注意力图Mc(F)。其计算过程为
Mc(F)=σ(MLP(AvgPool(F))+
MLP(MaxPool(F)))
(2)
式中:σ——sigmoid激活函数;
MLP——全连接隐藏层;
AvgPool——全局平均池化;
MaxPool——全局最大池化。
将通道注意力Mc与输入的特征图F按元素相乘,获得通道注意力调整后的中间特征图F′,计算过程为
F′=Mc(F)⊗F
(3)
式中: ⊗——逐点相乘;
F′——经由通道间注意力子模块输出的中间特征图。
空间注意力机制是对于通道注意力的补充,主要关注特征中哪些位置的信息对网络的预测是有意义的。空间注意力模块如图4所示。
图4 空间注意力模块
该模块在通道维度上对中间特征图F′使用全局平均池化和全局最大池化操作,分别得到单通道的池化特征图AvgPoolc和MaxPoolc,并使用Concat方法将它们拼接成具有两个通道的特征图。之后再经由一个7×7的卷积操作将其降维为单通道的特征图,最终使用Sigmoid函数生成最终的空间注意力特征图Ms(F′)。它的表达式为
Ms(F′)=σ(f7×7(AvgPool(F′),MaxPool(F′)))
(4)
式中:f7×7——边长为7的卷积核。
将空间注意力特征图Ms与F′按元素相乘,最终CBAM模块的输出为
F″=Ms(F′)⊗F′
(5)
F″即优化后的特征图,其高度、宽度和通道数均与输入特征图F相同,分别为H,W,C。经过通道注意力模块和空间注意力模块的调整,特征图中具有重要作用的特征信息和位置信息被增强。
1.2.3 Ghost模块
为了减少EfficientNet网络模型生成特征图时的计算量,本文在网络设计时结合了GhostNet中提出的轻量级Ghost模块来提高卷积运算效率。卷积层中存在大量的卷积核,并且卷积计算开销较大,会占用大量的硬件资源。而Ghost模块针对标准卷积生成的特征图中存在高度相似的冗余特征的现象,提出将标准卷积运算与线性运算相结合的方式减少特征提取过程中的计算量。Ghost模块卷积过程如图5所示。
图5 Ghost卷积
图5中,Y表示通过标准卷积生成的固有特征图,Y′表示通过线性运算生成的冗余特征图。该算法将输出m个特征图的标准卷积分成两步,首先通过标准卷积操作使用n(n=m/2)个卷积核生成部分原始特征图,然后对生成的原始特征图施加线性变换Φk,低成本生成另一部分原始特征图的“幻影”,最后通过Concat将两部分特征图叠加,输出具有m个通道的高维特征图。该方法大幅地减少了卷积层所需的计算资源与参数量,带来内存和计算量的收益。标准卷积运算可以表示为
Y=X*r+b
(6)
其中,X∈Rh×w×o,r∈Rk×k×m,Y∈Rh′×w′×m。
式中: *——卷积操作;
b——卷积运算中的偏置项;
h、w——输入特征图的高度、宽度;
o——输入特征图的通道数;
m——卷积核数量;
k——卷积核的尺寸;
h′、w′——输出特征图的高度、宽度。
标准卷积过程中,所需的卷积计算量为
S1=o×h′×w′×m×k×k
(7)
由于卷积核个数m通常数量较多,因此网络的计算量也较大。Ghost模块利用标准卷积生成原始的n个特征图,计算公式为
Y′=X*r′
(8)
其中,r′∈Rk×k×n,Y′∈Rh′×w′×n,n=m/2。
为了得到m个特征图,采用式(9)线性产生另外n个特征图
y′i,k=Φk(yi),(i=1,…,n)
(9)
式中:yi——Y中第i个原始特征图;
Φk——对第i个特征图进行第k个线性运算;
y′i,k——第i个原始特征图生成的第k个经过变换后的特征图。
经过Concat叠加,即可得到通道为m=2n的特征图。Ghost模块的卷积计算量为
w′×k×k
(10)
卷积块参数压缩比可以计算为
(11)
由式(11)可知,卷积块参数压缩比约为2。在通道上进行线性运算,其计算成本小于标准卷积。引入Ghost模块可以有效减少计算量,提升模型的运行速度。
1.2.4 CG-EfficientNet模型构建
EfficientNet-B0由16个MBConv[22]模块,1个卷积层和1个分类层构成。MBConv使用深度可分离卷积(DepthwiseConv)代替标准卷积、Swish[23]激活函数代替ReLU[24](Rectifier Linear Unit)激活函数。EfficientNet-B0中每个MBConv都包含SE模块,SE有效地解决了由于特征图中不同通道所占重要性相同而带来的损失问题。但是,由于该方法只考虑了通道间的信息编码,丢失了水稻病害识别过程中起重要作用的空间信息,使得模型对病害的识别性能受到一定的影响。
为进一步提升水稻病害图像识别模型的准确性,本文以EfficientNet-B0为基础网络,引入CBAM对MBConv模块进行改进,以加强对水稻病害识别过程中起重要作用的空间信息的学习;并使用Ghost层替代原有模型中首层的卷积层,进一步达到轻量化模型的目的。所提出的CG-EfficientNet网络结构示意图如图6所示。
图6 CG-EfficientNet模型的网络结构
Fig. 6 Network structure diagram of CG-EfficientNet
与EfficientNet-B0网络模型相比,CG-EfficientNet主要在以下两个方面进行了改进。
1) 轻量化卷积层。由于复杂的水稻病害识别算法需要耗费大量的算力和存储空间,本文借鉴GhostNet思想,将EfficientNet-B0首层的卷积层优化为Ghost层,以达到轻量化网络参数的目的。该模块以轻量的线性计算代替标准卷积过程生成冗余特征图的卷积计算,在没有改变输出特征图大小的情况下,使计算量与参数量远小于标准卷积,推理速度也更快。
2) 重构MBConv模块。将EfficientNet-B0中的主体模块MBConv内的SE注意力机制替换为CBAM模块,具体结构如图6所示。利用CBAM模块既可以捕获原SE模块关注的通道轴关键信息,又关注了空间轴上的位置信息,使网络在注意水稻病斑相关区域的同时也不丢失相关的位置信息。
由图6可知,CG-EfficientNet共有9个阶段,第一阶段是将224×224×3的原始图像通过3×3×32的Ghost卷积;接下来经过第二到第八阶段重复堆叠的MBConv,1层3×3×16的MBConv1、2层3×3×24的MBConv6、2层5×5×40的MBConv6、3层3×3×80的MBConv6、3层5×5×112的MBConv6、4层5×5×192的MBConv6、1层3×3×320的MBConv6;第九阶段是通过Softmax分类层,并根据实际情况将输出设置为5个类别。
1.3 Adam优化算法
在EfficientNet网络中,采用了一种传统的随机梯度下降法(Stochastic Gradient Descent,SGD)。但由于SGD中各权重都保持相同的学习速率,因此选择一个合适的学习率较为困难,且SGD算法容易在训练时收敛到局部最优,从而导致模型的病害识别准确率不理想。
为解决上述问题,加快模型的收敛速度,CG-EfficientNet网络模型选用Adam[25]优化算法。Adam[25]是一种自适应学习优化算法,它不仅结合了AdaGrad[26]善于处理稀疏梯度的优点还结合了RMSprop[27]善于处理非平稳目标的优点。Adam优化算法首先计算矩估计
(12)
式中:mt、nt——对梯度的一阶矩估计、二阶矩估计;
β1、β2——矩估计的指数衰减速率;
gt——梯度。
式(12)中各参数设置为β1=0.9,β2=0.999。然后进行偏差修正
(13)
分别是对mt,nt的校正,通过计算偏差,修正了第一和第二矩估计。最后对参数进行更新
(14)
式中:xt、xt+1——参数向量;
Δθt——计算第t次迭代的权重更新;
η——学习率;
∈——一个接近于0的小常数,用于防止分母为0。
式(14)中各参数设置为η=0.001,∈=10-8。
1.4 模型训练
1.4.1 试验配置
试验平台搭载Intel i7-11700K处理器,内存32 GB,GPU为NVIDIA GeForce RTX 3080 Ti。软件环境为Win10 64位操作系统,安装Python3.8、Tensorflow-GPU 2.4.1深度学习框架。
1.4.2 模型参数
CG-EfficientNet采用逐步学习的训练策略,以分类交叉熵作为损失函数,并使用Adam优化算法进行损失函数的优化。初始学习率η设置为10-3,当训练2个epoch而模型性能不提升时,学习率将以0.1倍的形式减少。综合参照Atila等[19]的试验以及EfficientNet网络的性能,将σ设置为200,每个批次(Batch Size)32个样本,Dropout比率设置为0.5。
1.4.3 训练过程
本文所提方法流程如图7所示。其中,σ是预设的超参数,表示训练轮次(epoch)的大小。具体步骤如下:(1)设置epoch=1,使用在Imagenet上的预训练权重对CG-EfficientNet网络进行初始化;(2)CG-EfficientNet网络对224×224×3的输入图像进行特征提取;(3)在输出层通过Softmax激活函数对输入图像进行分类预测;(4)根据交叉熵损失函数对输出结果准确性进行评判并计算损失值;(5)若epoch不大于σ,则通过Adam优化算法对网络权重进行动态修正;(6)用修正后的模型对数据重新进行学习;(7)重复2~6步,迭代地修正神经网络权重,直至epoch>σ;(8)得到有效的识别方法。
图7 本文所提方法流程图
2 结果与分析
2.1 CG-EfficientNet识别性能
CG-EfficientNet模型在水稻病害图像样本集上的准确率及损失值曲线如图8所示。
(a) 准确率变化曲线
由图8可知,当epoch为20时,本文所提方法的准确率和损失值均能快速地稳定。经过160次迭代,损失值接近收敛,准确率趋于稳定,表明了该模型的有效性和可学习性。试验证明,本文的改进设置是合理可行的,能够加快模型的收敛速度,提高模型的稳定性,从而达到较好的训练效果。
2.2 CG-EfficientNet的消融试验
为进一步验证本文所提方法的有效性,采用如下4种消融对比试验:(1)仅使用EfficientNet-B0;(2)在第1种的基础上采用Adam优化算法;(3)基于第2种,将MBConv模块中的SE替换为CBAM模块;(4)在第3种的基础上将第一层的卷积层优化为Ghost层,形成本文所提的轻量化网络模型CG-EfficientNet。上述4种消融试验方法在水稻病害图像样本测试集上的识别结果如表3所示。
表3 改进模型消融试验结果Tab. 3 Improved model ablation test results
从方法1和方法2可知,Adam能够在不增加模型参数量的前提下,使模型的精度提高0.18%。通过对方法2和方法3的试验结果对比可知,轻量级注意力模块CBAM在降低了2.82 M模型参数量的同时,使模型的准确率提高了1.04%。CBAM较SE具有更强的注意力学习能力,验证了方法3的有效性。进一步比较方法3与方法4的试验结果,可知对卷积层的优化可以有效地减少模型参数的数量。
由表3可知,本文提出的改进模型在水稻病害数据集上的识别准确率达95.63%,参数量仅为4.392 M。方法1和方法4的试验结果表明,较改进前的EfficientNet-B0,改进后的模型在测试集上的准确率提高了1.75%,参数量为改进前的60%。从结果可以看出,增加空间轴的注意力机制能有效地提高网络的识别准确率;将线性与标准卷积相结合的Ghost思想与轻量级CBAM注意力模块相结合,可以有效地降低模型参数量,使得网络结构更加轻量。
2.3 与经典深度卷积神经网络模型性能对比
将本文所提方法与VGG16[28]、Inception-V3[29]、ResNet101[30]和DenseNet201[31]等经典深度卷积神经网络进行性能对比。试验过程中使用了相同的数据集和相同的开源深度学习框架Tensorflow-GPU 2.4.1。对照卷积神经网络均使用Adam优化器,其超参数设置为:β1=0.9,β2=0.999,∈=10-8。5个模型在验证集上的识别准确率变化曲线如图9所示。
图9 不同网络模型识别准确率变化曲线
通过图9可知,5种算法的识别准确率均随着迭代次数的增加递增。其中,曲线的初始增长速度较快;随着迭代次数的增加,曲线变化趋于平稳,直至收敛。在前25轮训练中,ResNet101的识别准确率增长最快,在验证集上的识别准确率率先达到90%以上;当迭代轮次在80轮左右时,DenseNet201的识别准确率最先趋于平稳,并基本稳定于94.4%。训练过程中,本文所提方法在前25轮的学习中低于ResNet101的识别准确率,并在DenseNet201趋于平稳的情况下仍处于震荡向上的阶段,最终在170轮左右,识别准确率趋于稳定,达到了95.98%的最优精度。各模型在测试集上的识别结果如表4所示。
表4 不同卷积神经网络试验结果对比Tab. 4 Comparison of experimental results of different convolutional neural networks
由表4可知,Inception-V3平均每轮的迭代时间最短,为14 s,在测试集上的识别准确率为90.91%;本文所提方法在水稻病害识别中具有最佳的识别准确率,为95.63%,平均每轮的迭代时间为31 s。与其他经典分类网络相比,所提方法在测试集上比VGG16、Inception-V3、ResNet101和DenseNet201对比模型的识别准确率分别提高了8.39%、4.72%、3.67%和1.05%。对比试验的结果显示,将通道注意力与空间注意力机制相结合的注意力模块和有效的训练策略Adam能较好地提高模型的分类性能。
本文所提方法的参数量仅为4.4 M,远小于其他经典模型。相比于分类网络模型VGG16、Inception-V3、ResNet101和DenseNet201,其参数量仅为上述模型的9.05%、18.37%、9.81%和21.64%。其中,VGG16、ResNet101和DenseNet201算法,均采用了增加网络深度的方法提高分类精度;Inception-V3则是通过拓宽网络宽度,达到更好的分类效果。而CG-EfficientNet网络则融合了Ghost模块和EfficientNet的优点,在减少卷积运算开销的同时,利用网格搜索方法对网络的深度、宽度和分辨率的混合维度进行了优化。与其他经典的卷积神经网络相比,本文所提的算法在保证了准确率的同时,降低了网络的参数量。
3 结论
本文提出了一种基于注意力机制与EfficientNet的轻量化水稻病害识别方法,并在水稻白叶枯病、稻粒黑粉病、稻曲病、稻胡麻斑病和水稻健康叶片5类水稻图像上进行了识别试验。
1) CG-EfficientNet网络首先采用CBAM注意力机制,从通道轴和空间轴两个维度关注水稻病害图像上的关键信息,增强网络的特征提取能力,提高识别准确率;然后通过Ghost模块减小网络卷积运算的开销,降低模型的规模。
2) 本文所提方法在水稻常见病害数据集上的识别准确率为95.63%,比EfficientNet-B0提高了1.75%;参数量为4.4 M,仅为EfficientNet-B0的60%。
3) 在水稻病害识别时,本文所提方法的识别准确率分别比经典深度卷积神经网络VGG16、Inception-V3、ResNet101和DenseNet201提高了8.39%、4.72%、3.67%和1.05%;参数量减少了90.95%、81.63%、90.19%、78.36%。本文所提方法不仅具有更高的识别准确率,而且网络结构更轻量。