李云红 张蕾涛 谢蓉蓉 朱景坤 刘杏瑞
摘要:针对番茄叶片病害识别方法存在丢失特征信息、易产生过拟合现象和各类样本数据不均匀的问题,提出了基于混合注意力机制的DenseNet的番病叶片病害识别模型AT-DenseNet。该网络模型以DenseNet121为基础,首先,在DenseNet中融入混合注意力机制模块,实现特征复用,并对混合特征赋予不同权重,提高特征提取能力;在分类网络前设计过渡层,匹配特征维度;其次,引入Focal Loss损失函数,专注难分类样本,改善类间样本不均匀问题;然后,采用迁移学习方法,导入预训练权重,重构全连接层,增强模型鲁棒性;最后,在数据增强的辅助作用下,用Plant Village数据集中的6种番茄叶片病害图像进行测试,试验结果表明,本研究提出的AT-DenseNet网络模型在测试集上的准确率可达99.49%,并通过设置消融试验、绘制混淆矩阵等,验证了病害识别模型的有效性,可为番茄叶片的病害识别提供参考。
关键词:DenseNet;注意力机制;迁移学习;Focal Loss损失函数;叶片病害识别
中图分类号:TP391.41文献标志码:A
文章编号:1002-1302(2023)21-0209-09
番茄是在全球范围内普遍种植的蔬菜作物,是我国主要的农作物之一,其营养价值及应用价值极高,而番茄的病害严重影响了其产量和质量,且早期病害体现在叶片上,因此,对番茄叶片进行识别可以对病害实行早期干预,减少经济损失,常见的番茄叶片病害有细菌性斑疹病、早疫病、晚疫病、叶霉病等。
随着人工智能的不断发展,计算机视觉技术在各个领域广泛应用,通过图像处理的方法进行分类研究已经取得了良好的效果[1]。运用传统的图像识别方法进行病害识别的代表有:Srivastava等针对葡萄霜霉病,提出了采用统计阈值法先对葡萄叶片进行分割,根据其颜色差异判断是否感染[2];Mondal等分别提取不同植物叶片的形态特征,在此基础上实现了黄脉花叶病毒的识别[3];Chakraborty等采用Otsu阈值分割和直方图均衡化等技术预处理,利用支持向量机进行分类对患病区域进行图像分割,进而实现分类[4];Kurmi等用自适应分析小波变换(AAWT)进行计算,AAWT将预处理后的图像分解为不同的子带图像作为特征,以此进行叶片分类[5]。这些方法需要人为地选择特征,耗时耗力。近几年,神经网络快速发展,特征的提取与识别变得简单,在人脸识别[6]、文本识别[7]等各个领域都展现出了优越性。因此,越来越多学者将深度学习方法引入农业中,尤其是用于农作物病害识别。Wang等使用VGG16对苹果黑腐病进行识别,准确率最高可达到90%以上[8]。Tan等将卷积神经网络(CNN)与动量学习相结合识别瓜果病害,识别效果良好[9]。杨红云等在AlexNet网络的结构上进行改进,加入批量归一化(BN)层,并通过试验得出加入BN层的网络识别效果更佳[10]。文献[11-12]都在VGG网络的基础上进行改进,分别加入深度残差模块和Inception卷积模块,并与原始VGG网络对比证实模型的优越性。王春山等提出了改进的Multi-scale ResNet网络模型,通过添加多尺度特征提取模块和对残差结构进行改进,提高了蔬菜叶部病害识别的准确率[13]。DenseNet网络在ResNet网络的基础上进行改进,改善了不同层之间的信息流,通过稠密连接的方法提高特征利用率[14]。牛学德等使用DenseNet网络对番茄病害进行识别,证明了该网络的识别效果高于其他网络[15]。文献[16-21]将注意力模块和常见的卷积神经网络融合,在不同的数据集上都得了良好的识别效果。因此在番茄病害识别中,研究人员尝试将注意力机制加入到神经网络中,使网络能更加注意病斑位置。胡志伟等在残差网络中引入注意力机制构建ARNet网络模型,对早期、晚期5种番茄病害进行识别,准确率可达88.2%[22]。
以上算法大多通过增加网络深度提高模型准确率,但是番茄叶片病害区域存在病斑小、特征相似等特点,在增加网络深度时会造成参数量大、出现过拟合现象、丢失病害信息等问题。为了解决上述问题,本研究搭建了AT-DenseNet网络模型,该模型将卷积注意力机制模块(convolutional block attention module,CBAM)和DenseNet网络进行融合与改进,并引用了Focal Loss损失函数和迁移学习,可以更好地对细小特征进行提取,从而提高番茄叶片病害识别的准确率。
1 番茄叶片病害识别模型构建
1.1 DenseNet网络
使用传统方法进行病害识别时存在需要大量人力、主观性强的问题,所以,目前常用卷积神经网络进行叶片病害识别。本研究使用DenseNet网络作为基础网络,它借鉴了ResNet网络的思想,将短路连接发展为密集连接,实现特征复用,大大提高了网络搜索特征的能力,在降低参量的同时,可以有效解决深层卷积神经网络中常发生的梯度消失问题。DenseNet网络由DenseBlock和Transition组成,其网络结构如图1所示。
图1中,DenseBlock结构是一种密集连接方式,是DenseNet网络中的主要组成部分,对一个L层的网络,DenseBlock的输出特征如公式(1)所示:
其中,xL为第L层的输出;xL-1表示第L-1层的输出;HL(·)代表一系列非线性计算,包括BN+ReLU+1×1 Conv+BN+ReLU+3×3 Conv,1×1的卷积起到降低特征维数的作用。密集连接的网络结构如图2所示。
结合公式(1)和图2,密集连接模块将前面所有层与经过非线性操作的当前层进行拼接,這种通道维度的合并,能够最大限度地保留各个层的特征,实现浅层特征与深层特征间的特征重用,提高特征的利用率。
为保证上下2个密集模块宽高一致,在每2个DenseBlock之间添加Transition模块(过渡层),它是由BN、ReLU、1×1 Conv、2×2 AvgPooling组成的。
1.2 注意力机制
注意力机制相当于人类视觉,可以将有限的注意力集中在重要区域,运用于计算机上,即对高频特征区域给予更大的权重,对本研究来说,就是将注意力集中在叶片的病害区域,对无关区域进行降噪。
针对番茄不同病害在叶片上的表现具有相似性,且病害位置具有局限性等问题,引入混合注意力机制加强对其病害位置的关注。该网络通过2种机制级联的方式,将空间注意力机制(spartial attention module,SAM)和通道注意力机制(channel attention module,CAM)结合,提取空间与通道上的特征,提高对病害特征的提取能力,减少特征丢失。CBAM结构如图3所示,在番茄叶片病害特征提取时,在空间域上通过卷积等操作进行信息采集,提取出不同类别的特征,并保留其空间位置信息;CAM根据特征在通道上的重要程度来赋予权重系数,保留病害特征的通道信息,将SAM和CAM特征融合,将注意力集中在病害区域,防止信息丢失,提高对病害分类的准确率。
1.3 Focal Loss损失函数
目前,大多数分类网络使用交叉熵损失函数(Cross Entropy Loss)来计算分类损失,适用于样本数较为均匀的数据集。本研究使用Plant Village数据集中的6种番茄病害图像,其中包含5种病害图像和1种健康图像,而这6种病害图像的数据量差距较大,使用交叉熵损失函数并不是最好的选择,因此,引用Focal Loss损失函数,解决类间数据不均匀的问题。Focal Loss损失函数的计算公式如下:
其中,p(y|x)表示标签为x的样本预测为y的概率,它的大小可以反映分类难度;γ表示聚焦参数;[1-p(y|x)]表示调节系数,可以调节样本所占权重,提高负样本的分类准确率。本研究使用Focal Loss损失函数计算分类损失,通过调节聚焦参数γ来改变损失函数,有效地解决了样本不均匀的问题。
1.4 迁移学习
番茄叶片病害图像具有病斑区域小、类间特征相似、数据采集困难和样本数量少等特点,直接使用番茄病害图像作为数据集训练容易出现过拟合现象和识别精度不高的问题。因此,本研究借鉴迁移学习的思想,将基础网络DenseNet121在综合性强的大型数据集ImageNet上训练的权重保留下来,作为预训练权重,迁移到本研究模型上。为了适应番茄叶片病害数据集的特点,在迁移过程中需重构全连接层,将除全连接层之外的权重保留,覆盖并修改全连接层参数,以保证类别数量。通过使用迁移学习优化模型,有效解决训练过程中的问题。
1.5 AT-DenseNet网络模型
根据番茄叶片病害图像的特征,提出AT-DenseNet网络模型,该模型由特征提取网络、注意力网络和分类网络组成。模型选择DenseNet121网络为主干网络,插入CBAM作为注意力网络,在分类网络部分设计过渡层,进行维度匹配。使用Focal Loss损失函数调节样本,并结合迁移学习方法,冻结DenseNet121中的全连接层,其余权重迁移到AT-DenseNet网络中,同时对全连接层进行重构,使其满足样本需求,AT-DenseNet网络结构详见图4。
在输入层,输入预处理后224×224的番茄叶片图像。在特征提取层,首先通过7×7的卷积和3×3的最大池化层提取浅层特征,然后使用4個密集连接模块和3个过渡层提取高级特征,实现浅层、深层特征的重用。其中,4个Dense Block中密集连接个数分别为6、12、24、16,增长率设为12,即每层特征图的数量以12为增长率增加,过渡层的缩小倍数设为0.5,可以将Dense Block层输出的通道以0.5倍减少。
Dense Block 4与CBAM串联,在通道注意力模块上,将Dense Block 4提取到的番茄叶片特征F,分别进行最大池化和平均池化,将得到的2个特征图通过多层感知机变换,并应用于2个通道,经求和后使用Sigmoid函数得到通道上的特征,即CAM特征图,该结果与输入特征F点乘得FC;在空间注意力模块上,FC作为输入特征,先降低通道维数,并分别进行最大池化和平均池化,然后连接成一个新的特征,将该特征进行降维,得到SAM特征图,与FC点乘后得FS。 FS就是包含空间与通道信息的CBAM特征图。
将兼具浅层、深层和重要特征的融合特征图FS输入分类网络。在该网络前设计过渡层,过渡层由1×1的卷积层和7×7全局平均池化层级联而成,实现平衡特征维度的作用。重构全连接层FC,使得网络满足样本需求,由Softmax函数计算类别概率,取最大作为输出类别标签(如:0代表细菌性斑疹病),实现番茄叶片病害分类。
2 试验准备
2.1 试验环境及参数设置
本试验在Windows 10系统上搭建,处理器为Intel CoreTM i7-11800H @ 2.30 GHz;显卡为NVIDIA GeForce RTX 3050 Laptop GPU;编辑器使用PyCharm,语言使用Python,版本为3.8.12,运用PyTorch库搭建网络,版本为1.11.0。
AT-DenseNet模型的参数设置如下:在模型训练前,需对原图像进行数据增强,并统一缩放至 224×224,采用Adam算法作为优化器,初始学习率设为0.000 1,训练次数(epoch)设为100,训练集和测试集的批量大小(batch size)都设为16,激活函数使用ReLU函数,损失函数使用Focal Loss函数。
2.2 数据及处理
为了验证本研究模型,使用Plant Village数据集,该数据集是一个公开数据集,它包含了14种植物的叶片图像,其中,病害图像和健康图像共38个类别,数据非常丰富。本研究选取Plant Village数据集中6种常见的番茄病害图像进行试验,包括5种病害图像和1种健康图像,具体为细菌性斑疹病、早疫病、晚疫病、叶霉病、斑枯病和健康叶片(图5)。
为了提高模型的鲁棒性,避免过拟合现象产生,在试验前,对番茄叶片病害图像进行数据划分和数据增强等预处理。数据划分:将6种番茄图像以8 ∶1 ∶1的比例划分为训练集、测试集和验证集。数据增强:将划分好的数据集进行水平翻转、随机旋转(旋转角度为0~20°)、亮度增强,扩充数据量,使数据更具泛化能力,增强后的样本图像如图6所示。经过数据增强,将9 350张图片扩充到37 400张,其中各种类番茄图像的数量见表1。
2.3 评价指标
试验选择的评价指标为损失值、准确率(accuracy,Acc)和混淆矩阵,其中准确率是主要的衡量标准,它定义为分类正确的样本占总样本数量的比例,计算公式如下:
Acc=TP+TN/TP+TN+FP+FN。(3)
式中:TP、FP、TN、FN分别代表正阳性、假阳性、正阴性和假阴性的样本数量。
混淆矩阵可以非常直观地看到预测值与真实值之间的关系,直观地看出模型的分类效果,观测到哪些类别容易混淆,是分类任务中常用的评价指标之一。混淆矩阵是一个二维表格,它的每一列代表了预测类别,每一行代表了数据的真实类别,斜对角线即为预测正确的概率。在真实案例中 斜对角线的数值越大越好。在本试验中使用混淆矩阵观测识别效果,并观察易于混淆的类别。
3 试验结果与分析
为了验证本研究提出的AT-DenseNet模型对番茄病害的识别效果,共设置3组消融试验,分别为数据增强前后模型识别效果、改进模型与原模型之间的性能比较、不同损失函数对模型识别效果的影响,并设置对比试验与经典模型进行对比,最后通过混淆矩阵和识别结果进一步分析模型识别效果。以上消融试验在同一环境下操作,且训练轮数、初始学习率、优化算法等均保持一致。
3.1 数据增强前后试验效果对比
为了验证数据增强对试验结果的影响,本研究在其他条件保持一致的情况下,训练集和测试集选择数据增强前和数据增强后2种,对同一模型AT-DenseNet进行训练与测试。从图7中可以看出,数据增强后损失值更低,准确率更高,使用数据增强后的曲线较为平缓,收敛明显加快,证明使用数据增强不仅丰富了样本数量,提高了识别准确率,还能增强模型的鲁棒性。
由表2可知,数据增强后本研究模型准确率提高了0.98百分点,损失值降低了0.001 6,使用该方法后,增大了训练集数量,有效提高了模型的泛化能力和鲁棒性,在数据集方面增强了番茄病害识别的准确率。
3.2 使用注意力机制前后试验效果对比
为了验证使用注意力机制可以增强特征提取能力,使网络更加注意番茄叶片有病害的部分,在其他条件保持一致的情况下,测试仅改变注意力机制时模型对番茄叶片病害识别的效果。从图8可以看出,未使用注意力机制的模型(即DenseNet模型)准确率先达到稳定值,而使用注意力机制的模型(即AT-DenseNet模型)则相对较慢。分析原因是DenseNet模型在迁移学习时将较好的网络参数完全传给了对应的网络,而AT-DenseNet模型是从头开始训练的,虽然也使用了迁移学习,但冻结了全连接层,迁移了部分权重,因此,AT-DenseNet模型相对于DenseNet模型来说收敛较慢。除此之外结合图8-b观测到,DenseNet模型在训练到30次时已经收敛了,在后面的几轮中出现了过拟合现象,AT-DenseNet网络在30次时损失值没有达到最低值,反而還在收敛,且损失值不断减小并低于DenseNet模型的损失值,对比观察准确率曲线,AT-DenseNet 的准确率也高于DenseNet模型,且没有出现过拟合现象。
由表3可知,使用了注意力机制后的网络模型比原始网络模型准确率提高了0.36百分点,损失值降低了0.001 7,试验结果表明,将DenseNet网络与CBAM融合,在实现特征重用的基础上,能有效地关注番茄叶片病害部位的空间和通道特征,提高特征提取能力,使得分类准确率变高。
3.3 损失函数对试验效果的影响
不同的损失函数适用于不同类型的数据集,为了解决番茄叶片数据集类间差距大的问题,提出使用 Focal Loss 损失函数代替交叉熵损失函数 设置以下对比试验,在同一环境下,在AT-DenseNet模型上使用不同的损失函数,不同损失函数对模型的影响见图9。其中,γ为0的曲线即为交叉熵损失函数曲线。从准确率曲线中可以看出γ=1.0和γ=2.0时的Focal Loss损失函数准确率高于γ=0(交叉熵损失函数)的准确率,且曲线上升平缓,可见改变Focal Loss损失函数能够在一定程度上解决交叉熵损失函数的不足,提高识别准确率。从损失值曲线可以看出,使用Focal Loss损失函数后的模型损失值明显低于使用交叉熵函数的损失值,收敛速度更快。
由表4可知,γ=1.0和γ=2.0时的Focal Loss损失函数准确率高于交叉熵损失函数,γ=0.5和γ=5.0时的Focal Loss损失函数准确率低于交叉熵损失函数,使用γ=1.0的Focal Loss损失函数作为训练本研究模型的损失函数时准确率提高了0.65百分点,损失值下降了0.006 1。从表1中可以看出增强后的细菌性斑疹病的样本数为8 508张,而叶霉病的样本数最少,只有3 808张,不到细菌性斑疹病样本数的一半,样本间类内差距比较明显,Focal Loss损失函数常用于计算样本分布不均匀的数据集的损失值。因此,对于本研究样本来说,Focal Loss损失函数比交叉熵损失函数更加合适,这里也用试验进行了验证。由公式(2)不难发现,可以通过调节γ来调整样本权重降低的速率,γ增加对应的影响因子也在增加,对于本研究数据集来说,γ=1.0时较为合适,对样本类内差距的调节作用最好,因此本研究的损失函数选择γ为1.0的Focal Loss损失函数。
3.4 不同卷积神经网络模型对比
为验证本研究提出的AT-DenseNet模型的分类效果,在相同试验环境、使用相同数据集做对比试验。从表5中可以看出,AT-DenseNet模型与VGG16、Resnet50和DenseNet相比,准确率分别提高了2.43、0.60、0.50百分点,并且解决了过拟合现象,在试验中还发现,VGG16在后期发生了梯度爆炸,并不适用于番茄叶片病害识别;对比DenseNet和DenseNet-FL可知,使用γ为1.0的Focal Loss损失函数后准确率提高了0.14百分点,可以有效缓解样本不均匀的问题,但并不能解决过拟合问题;对比 AT-DenseNet-0(即未使用迁移学习的AT-DenseNet网络)和AT-DenseNet,使用迁移学习能够在一定程度上提高识别准确率。另外,AT-DenseNet模型在参数量上也占有优势,分别约占VGG16、Resnet50模型参数量的1/10、3/10,相比于DenseNet模型,虽然参数量有所增加,但只增加 1/100 左右,可以忽略不计。通过以上对比,本研究提出的模型能够有效解决过拟合、梯度爆炸等问题,且提高了分类准确率。
3.5 混淆矩阵
为了研究AT-DenseNet模型的分类效果,本研究将数据集按照训练集、测试集和验证集,以 8 ∶1 ∶1 的比例划分,验证集样本数量为3 740张,取验证集图片进行验证并画出6种番茄叶片病害种类的混淆矩阵。从图10中可以看出,绝大多数样本的分类结果集中在混淆矩阵的对角线上,早疫病和晚疫病的病害相似性强,识别存在误差,会将早疫病错误识别为晚疫病,叶霉病和斑枯病也存在少量被错误分类的情况。但总体来说,该模型识别效果较好,能够准确识别出番茄叶片具体的病害种类。
3.6 模型识别结果
随机抽取测试集中的5张图片(存在病害的图片),用AT-DenseNet模型测试。由表6可知,对5种病害图像都能预测正确,结合混淆矩阵可知,该模型对番茄叶片病害图像的分类效果较好,正确分类的概率普遍较高,即置信度高,但对早疫病来说,它的预测概率只有79.7%,把它预测为晚疫病的概率为11.7%,原因是早疫病和晚疫病的病害特征差异较小,区分困难。总体来说,本研究设计的AT-DenseNet模型能够较好地区分并识别5类病害图像和健康图像。
4 总结
本研究将深度学习与农业领域相结合,搭建了AT-DenseNet番茄叶片病害识别模型,该网络模型将CBAM融入DenseNet网络中,增强了模型对病斑位置的注意力,并设计过渡层,实现维度匹配;引用Focal Loss损失函数来调节类间数量差距,采用迁移学习方法,迁移权重系数,并重构全连接层,进一步增强了模型的鲁棒性,提高对番茄叶片病害的识别准确率。对Plant Village数据集中的6种番茄病害图像进行对比试验,结果显示,AT-DenseNet 的分类准确率可达99.49%,且收敛速度、识别精度、泛化能力等都高于原始网络,能够满足农业需求,本研究结果具有一定的理论和实际意义。
参考文献:
[1]张 顺,龚怡宏,王进军. 深度卷积神经网络的发展及其在计算机视觉领域的应用[J]. 计算机学报,2019,42(3):453-482.
[2]Srivastava A,Ma S,Inoue K.Development of a sensor for automatic detection of downey mildew disease[C]//International Conference on Intelligent Mechatronics and Automation,2004:562-567.
[3]Mondal D,Chakraborty A,Kole D K,et al. Detection and classification technique of yellow vein mosaic virus disease in okra leaf images using leaf vein extraction and Naive Bayesian classifier[C]//International Conference on Soft Computing Techniques & Implementations. IEEE,2016.
[4]Chakraborty S,Paul S,Rahat-uz-Zaman M. Prediction of apple leaf diseases using multiclass support vector machine[C]//International Conference on Robotics,Electrical and Signal Processing Techniques (ICREST). IEEE,2021:147-151.
[5]Kurmi Y,Gangwar S,Chaurasia V,et al. Leaf images classification for the crops diseases detection[J]. Multimed Tools Appl,2022,81:8155-8178.
[6]張子昊,王 蓉. 基于MobileFaceNet网络改进的人脸识别方法[J]. 北京航空航天大学学报,2020,46(9):1756-1762.
[7]白志程,李 擎,陈 鹏,等. 自然场景文本检测技术研究综述[J]. 工程科学学报,2020,42(11):1433-1448.
[8]Wang G,Sun Y,Wang J X. Automatic image-based plant disease severity estimation using deep learning[J]. Computational Intelligence and Neuroscience,2017,2017:2917536.
[9]Tan W X,Zhao C J,Wu H R. Intelligent alerting for fruit-melon lesion image based on momentum deep learning[J]. Multimedia Tools and Applications,2016,75(24):16741-16761.
[10]杨红云,万 颖,王映龙,等. 基于批归一化与AlexNet网络的水稻病害识别[J]. 激光与光电子学进展,2021,58(6):164-174.
[11]Syarief M,Setiawan W. Convolutional neural network for maize leaf disease image classification[J]. Telecommunication Computing Electronics and Control,2020,18(3):1376-1381.
[12]鲍文霞,黄雪峰,胡根生,等. 基于改进卷积神经网络模型的玉米叶部病害识别[J]. 农业工程学报,2021,37(6):160-167.
[13]王春山,周 冀,吴华瑞,等. 改进Multi-scale ResNet的蔬菜叶部病害识别[J]. 农业工程学报,2020,36(20):209-217.
[14]Huang G,Liu Z,van der Maaten L,et al. Densely connected convolutional networks[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu,HI,USA,2017:2261-2269.
[15]牛学德,高丙朋,南新元,等. 基于改进DenseNet卷积神经网络的番茄叶片病害检测[J]. 江苏农业学报,2022,38(1):129-134.
[16]Zhu H Y,Xie C,Fei Y Q,et al. Attention mechanisms in CNN-based single image super-resolution:a brief review and a new perspective[J]. Electronics,2021,10(10):1187.
[17]黄林生,罗耀武,杨小冬,等. 基于注意力机制和多尺度残差网络的农作物病害识别[J]. 农业机械学报,2021,52(10):264-271.
[18]李晓振,徐 岩,吴作宏,等. 基于注意力神经网络的番茄叶部病害识别系统[J]. 江苏农业学报,2020,36(3):561-568.
[19]Zeng W,Li M. Crop leaf disease recognition based on self-attention convolutional neural network[J]. Computers and Electronics in Agriculture,2020,172(1):105341.
[20]侯金秀,李 然,鄧红霞,等. 融合通道信息注意力网络的叶片病害识别[J]. 计算机工程与应用,2020,56(23):124-129.
[21]贾兆红,张袁源,王海涛,等. 基于Res2Net和双线性注意力的番茄病害时期识别方法[J]. 农业机械学报,2022,53(7):259-266.
[22]胡志伟,杨 华,黄济民,等. 基于注意力残差机制的细粒度番茄病害识别[J]. 华南农业大学学报,2019,40(6):124-132.
收稿日期:2023-02-06
基金项目:陕西省自然科学基础研究重点项目(编号:2022JZ-35)。
作者简介:李云红(1974—),女,辽宁锦州人,博士,教授,研究方向为红外热像测温技术、图像处理、人工智能、信号与信息处理技术。E-mail:hitliyunhong@163.com。