融合空间注意力机制和DenseNet的玉米病害分类方法

2022-10-24 04:48曹藤宝陈孝玉龙彭熙舜林建吾
无线电工程 2022年10期
关键词:准确率病害叶片

曹藤宝,张 欣*,陈孝玉龙,彭熙舜,林建吾

(1.贵州大学 大数据与信息工程学院,贵州 贵阳 550025;2.贵州大学 农学院,贵州 贵阳 550025)

0 引言

随着人工智能及深度学习技术的不断发展,越来越多的研究领域开始和人工智能产生交集,人工智能逐渐替代传统方法[1]成为主流。近十几年来,我国政府持续聚焦三农问题,智慧农业概念被频繁提到,科技强农政策也被大力实施[2]。

玉米是我国重要的粮食作物之一,营养价值高,也是农民重要的收入来源,目前,玉米的市场价格已经超过了2 600元/吨。因此,加强玉米病害的防治就显得尤为重要。目前常见的玉米病害有十余种,如大斑病、小斑病、锈病、玉米纹枯病和玉米弯孢霉菌叶斑病等,这些病害会降低玉米的产量并影响农民收入。所以,及时地分辨出病害种类,对症下药就显得尤为重要。深度学习的发展和卷积神经网络的提出为该问题的解决创造了良好的研究基础。

如今,将深度学习应用于农业生产领域的研究也越来越多。王东方等[3]提出基于迁移学习和残差网络的农作物病害分类,使用改进的SE-ResNeXt-101网络对苹果、辣椒和番茄等作物进行病害分类,准确率达到了98%。任守纲等[4]提出反卷积引导的番茄叶部病害识别及病斑分割模型,使用VGG网络实现植物叶部病害种类识别与病斑分割,病害分类准确率达了99.19%。魏丽冉等[5]提出基于核函数支持向量机的植物叶部病害多分类检测方法,对叶片的链格孢病、炭疽病、细菌性枯萎病和尾孢菌叶斑病4种病害和健康叶片进行分类,准确率达89.5%。

以上研究不能兼顾准确率和模型大小,并且对玉米叶片病害分类没有针对性。玉米叶片相较于葡萄、苹果等叶片更加宽大,病害之间相似度更高,分布更加分散和复杂,分类难度更大,对分类网络的要求也更高。本文提出的融合空间注意力机制和DenseNet的玉米病害分类方法在适当增加原模型参数大小的情况下,准确率达到了98.96%,实现了对玉米健康叶片和其他3种病害叶片的高精确度分类。

1 模型设计

1.1 DenseNet网络

DenseNet网络由Huang等[6]在2017年提出,该网络具有参数量少、特征和损失传递能力强、梯度消失问题轻等优点。DenseNet网络的核心特征提取层由4层Dense Block和3层Transition Layer结构组成,根据包含的卷积层、池化层数量的不同分为DenseNet-121,DenseNet-169,DenseNet-201和DenseNet-264。本文选用的是DenseNet-121模型,该模型层数最少,参数量也相对最少。

DenseNet网络的设计灵感来自于ResNet网络[7],其本质上与ResNet网络有所不同。ResNet采用实线残差和虚线残差的方式将每一组卷积结构的输入和输出进行相加,再输入下一层网络,其部分残差结构示意如图1所示。

图1 2层残差结构示意Fig.1 Two-layer residual structure diagram

这种结构接收到来自输入层的特征与梯度信息,但由于是相加而不是拼接,使得网络中的信息流遭到了一定程度的破坏。而DenseNet是将前面所有层的输出在深度方向上进行拼接,然后再作为下一层的输入,每一层都可以直接获取来自损失函数和原始输入信号的梯度,形成了一种隐含的深度监督,从而优化了信息流的传播,使得网络性能更好。DenseNet网络和ResNet网络的输入和输出关系表达式如下:

xL=HL(xL-1)+xL-1,

(1)

xL=HL([x0,x1,…,xL-1])。

(2)

式(1)表示的是ResNet残差结构的输入和输出关系,其中,xL为L层的输出,xL-1为上一层的输出,HL为一个非线性变换。式(2)表示的是DenseNet网络层之间的输入和输出关系,其中, [x0,x1,…,xL-1]表示L-1层的输出与之前的所有层的输出进行拼接操作。从式(1)和式(2)的区别不难看出二者的本质区别,拼接是做通道的合并,而相加是值的相加,并不改变通道的数量。

DenseNet-121和SA-DenseNet-121网络结构参数如表1所示。由表1可以看出,DenseNet-121网络中含有4个Dense Block结构。图2显示了网络每个Dense Block内外的卷积层输入输出连接方式。这种连接方式在极大程度上保留了网络原始的输入特征和梯度信息,减轻了深层次网络极易出现的梯度消失现象。由于网络被划分为4个Dense Block,每一次的特征图拼接操作只发生在其内,Dense Block之间不会进行拼接操作,可以控制每个Dense Block内特征图的大小保持一致,缓解了拼接操作必须要求特征图大小一致的麻烦。此外,由于拼接操作会不断增加特征图的深度,在每个Dense Block的3×3卷积结构前都会添加一个1×1的卷积对输入特征图进行降维。随后的Transition Layer层又会使用一个1×1的卷积对特征图进行进一步的降维操作,由前面所有层的输入维度拼接带来的参数量过大问题得到了有效的解决。

表1 DenseNet-121和SA-DenseNet-121网络结构参数Tab.1 DenseNet-121 and SA-DenseNet-121 network structure parameters

图2 DenseNet-121网络节点连接示意Fig.2 Schematic diagram of DenseNet-121 network node connection

1.2 空间注意力机制的引入

注意力机制最早被应用于机器翻译领域,经过不断发展,现在已经被广泛地应用于计算机视觉领域[8-9]。目前,常见的注意力机制大致分为3种:关注空间域的空间注意力机制(Spatial Attention,SA)、关注通道域的通道注意力机制(Channel Attention)和它们的混合模型[10]。注意力机制主要是根据原有的特征图设计一个权重分布,再将这个权重分布施加到原有的特征图上,不同特征将拥有不同的权值,权值大的特征更加容易被注意到。

常用的注意力机制模块有SE,CBAM,SA等。SE仅关注通道的权重分配,SA仅考虑空间位置的权重分配,CBAM同时关注通道和空间的权重分配[11]。本文中,玉米叶片病害特征分布在叶片正面的不同位置,病害间的区分需要分类网络准确关注病害特征的空间位置,在特征图中体现为同一通道不同位置像素的重要性。CBAM虽然关注了空间信息,但是冗余的卷积池化操作导致了一些有用信息的丢失。因此,针对玉米叶片病害分类,添加SA模块效果最好。本文使用的SA结构如图3所示。

图3 SA算法结构Fig.3 Algorithm structure of spatial attention mechanism

首先,将输入特征图A的各特征层对应位置特征值相加再取平均值得到一个新的特征图B,同时将该输入特征图A的各特征层对应位置的特征值相加再取最大值得到一个新的特征图C。然后,将特征图B与特征图C在深度方向上进行拼接,将拼接好的特征图通过一个卷积核为7×7大小的卷积层得到一个深度大小为1的特征图,将该特征图通过Sigmoid激活函数,将得到的权值大小映射到[0,1]。最后,将得到的权值特征图与特征图A相乘,此时的输出特征图已经得到了“空间注意力”[12]。对于玉米叶片图像,有病害的位置与周围健康的部位特征差异比较明显,将SA加入网络后,可以使网络更加关注到玉米叶片病害的空间特征,从而提高分类准确率。

1.3 替换ReLU激活函数

由于神经网络的特性,特征传递过程中如果都是线性计算,不论网络深度有多深,该神经网络也不具备复杂度,不能拟合复杂多样的非线性信息。所以,要为神经网络引入激活函数。激活函数是非线性函数,一般放置在一个卷积操作之后,使得神经网络单个神经元的输入和输出呈非线性关系。

常用的激活函数大致有3种:Sigmoid函数、Tanh函数和ReLU函数。这些激活函数都有一个缺点:在神经网络反向传播时,它们的偏导数具有零值,会导致梯度在更新过程中容易产生梯度消失问题[13]。PReLU激活函数是ReLU激活函数的变体,是由He等[14]在2016年首次提出。同样的变体还有Leaky ReLU激活函数。PReLU激活函数的函数图像如图4所示,其函数表达式如下:

图4 PReLU激活函数图像Fig.4 PReLU activation function image

(3)

当系数ai的大小随输入数据自适应变化时,函数图像表示PReLU激活函数;当系数ai为一个常数时,函数图像则表示Leaky ReLU激活函数;当系数ai=0时,函数图像就是ReLU激活函数。

PReLU激活函数中的系数ai使用反向传播进行训练,并与其他层同时被优化,每层的所有通道共享同一个系数ai。系数ai的更新可以用链式法则导出:

(4)

(5)

系数ai的更新采用动量法:

(6)

式中,μ为动量;α为学习率。在ai的更新过程中不使用正则化,因为正则化会使ai在更新过程中趋向于零,这样PReLU激活函数就和ReLU激活函数的作用一样了。

本文将DenseNet网络的所有ReLU激活函数替换为PReLU激活函数,初始ai值设置为0.25,当输入为负数时,梯度更新也不会为零,避免了神经网络在反向传播过程中的梯度消失问题。由于PReLU激活函数是与整个模型训练相适应,自动更新负半轴曲线斜率,在提升模型精度上更加优于ReLU激活函数。

2 实验准备工作

2.1 实验环境

本文实验平台搭建的电脑参数如下:处理器为Intel(R) Xeon(R) W-2235 CPU @ 3.80 GHz;RAM为32.0 GB;操作系统为Windows 10专业版64位;显卡为NVIDIA GeForce GTX 2080Ti;模型训练环境的搭建过程是先在PyCharm上安装Anaconda,然后在Anaconda上创建PyTorch虚拟环境,最后安装好相应的python语言库。

2.2 数据预处理

本文数据集取自Plant Village公开数据集,Plant Village共包含54 306张农作物叶片病害图片,有38个分类。本文用于训练模型和测试的是玉米叶片病害数据集,共有4个类别:尾孢叶斑病、锈病、北方叶枯病和健康。总共3 852张图片,其中尾孢叶斑病图片513张、锈病图片1 192张、北方叶枯病图片985张和健康图片1 162张。

为平衡数据集各类别数量,同时防止数据集过小带来的过拟合问题,采用数据增强的方法对本文数据集进行扩充,扩充手段主要有亮度增强、翻转、裁剪、旋转和对比度增强等方法[15]。增强效果图如图5所示。

(a) 原图

为避免数据集信息发生泄漏,先对原数据集按4∶1的比例划分为训练集和测试集后再单独对训练集进行扩充,扩充后的数据集共有10 629张图片,其中尾孢叶斑病图片2 496张、锈病图片2 901张、北方叶枯病图片2 400张及健康图片2 832张。

2.3 评价指标

本文评价模型性能使用到的评价指标有准确率(Accuracy)、精确率(Precision)和召回率(Recall)[16-17],表达式如下:

(7)

(8)

(9)

式中,TP为正确地将样本判断为正样本的个数;FP为错误地将样本判断为正样本的个数;TN为正确地将样本判断为负样本的个数;FN为错误地将样本判断为负样本的个数。准确率是指模型分类正确的概率;精确率是指模型预测为正样本的图片数中,预测正确的概率;召回率是指正样本中预测正确的概率。

3 实验结果与对比

为验证本文改进的SA-DenseNet模型的性能,共设置了3组对比实验:改进模型使用增强数据集进行训练的效果与使用原数据集进行训练的效果之间的对比、改进模型与原模型之间的性能对比以及改进模型与其他3个经典网络模型之间的性能对比。模型训练设置100个epoch,bitchsize= 32,使用Adam优化器,该优化器可以根据训练参数自适应更新学习率[18-19],本文学习率的大小设置为Lr= 0.000 1。

3.1 数据增强实验效果对比

为验证本文数据增强方法对模型训练效果的提升,分别将原始的数据集和扩充后的数据集送入SA-DenseNet进行训练。模型训练准确率和训练损失曲线对比如图6和图7所示。

图6 数据增强前后准确率曲线Fig.6 Accuracy curve before and after data enhancement

图7 数据增强前后损失值曲线Fig.7 Loss curve before and after data enhancement

由图6和图7可以看出,经过扩充后的数据集能够使网络收敛得更快,训练准确率更高,同时训练损失也下降得更快,曲线也更加平滑,说明网络的鲁棒性也变得更好。数据扩充前后实验效果对比如表2所示。

表2 数据扩充前后实验效果对比Tab.2 Comparison of experimental results before and after data expansion

由表2可以看出,数据集扩充后,训练集准确率和测试集准确率分别提升了0.43%和0.52%,说明网络的泛化能力得到了进一步增强。综上所述,本文采用的数据增强方法能够在数据集处理层面增加网络的泛化性和鲁棒性,对玉米叶片病害分类准确率提升起到了积极作用。

3.2 改进模型与原模型实验效果对比

为验证本文模型改进方法对玉米叶片病害分类准确率提升的有效性,使用扩充后的数据集分别对SA-DenseNet和DenseNet进行训练。训练集准确率曲线和训练损失值曲线如图8和图9所示。

由图8可以看出,改进后网络模型的训练准确率在最初几个epoch的收敛速度就优于原网络,结合图9损失值曲线可以看出,网络大致在训练到60个epoch时基本得到了收敛。在100个epoch的训练过程中,改进模型的训练准确率基本都高于原网络,损失值下降的速度也比原网络要快。测试集的准确率和损失值如表3所示。由表3可以看出,改进后的网络模型将玉米分类测试集准确率提高了0.46%,就玉米叶片病害分类难度大的问题而言,加入SA后网络模型对玉米叶片病害特征的空间位置更加关注,同时引入激活函数PReLU进一步防止了梯度消失现象的产生,使网络的分类准确率得到了进一步的提高。

图8 改进网络与原始网络准确率曲线Fig.8 Accuracy curve of the improved network and the original network

图9 改进网络与原始网络损失值曲线Fig.9 Loss curve of the improved network and the original network

表3 网络模型改进前后测试集准确率和损失值Tab.3 Test set accuracy and loss values before and after network model improvement

3.3 改进模型与其他分类模型实验效果对比

为验证本文使用的分类网络模型的优势,在实验过程中,使用增强后的数据集对AlexNet,ResNet50和ResNeXt三个经典的分类网络模型进行训练,设置同样的训练超参数和训练次数,在同一实验环境下与本文改进网络模型进行对比实验。训练集准确率和损失值曲线如图10和图11所示。

由图10和图11可以看出,改进网络模型的训练集准确率明显高于其他3种网络,收敛速度更快,损失值下降速度也更快。各模型实验结果对比如表4所示。

图10 各模型训练集准确率曲线Fig.10 Accuracy curve of each model training set

图11 各模型训练集损失曲线Fig.11 Loss curve of each model training set

表4 各模型实验结果对比Tab.4 Comparison of experimental results of each model

由表4可以看出,在同等实验条件下,SA-DenseNet的测试集准确率、精确率和召回率均达到最高,测试集损失值为0.030 9,模型大小为67.7 MB,仅大于AlexNet网络模型,但是AlexNet网络模型的测试集分类准确率仅为97.83%,比SA-DenseNet低了1.13%。SA-DenseNet在兼顾网络模型大小和分类准确率的情况下,实验结果达到了最优。

4 结束语

本文改进的SA-DenseNet网络模型在原有的DenseNet网络模型上融合了SA,提高了网络对特征空间位置的关注度,并且使用了PReLU激活函数替换了原始的ReLU激活函数,进一步解决了深度神经网络梯度消失的问题。针对Plant Village中分类难度相对较大的玉米叶片病害数据集进行对比实验,实验结果显示,SA-DenseNet在模型泛化能力和鲁棒性上都优于其他网络模型,并且在模型大小为67.7 MB的基础上,测试集准确率达到了最高的98.96%,验证了本文模型改进方法对玉米叶片病害分类的有效性。

猜你喜欢
准确率病害叶片
早春养羊需防六大病害
基于改进Mask R-CNN模型的植物叶片分割方法
小麦常见三种病害咋防治
春季番茄常见病害防治技术
利用“人工叶片”从无到有生成燃料
葡萄病害周年防治历
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察