基于三通道注意力网络的番茄叶部病害识别

2021-09-26 02:37单玉刚
科学技术与工程 2021年25期
关键词:叶部准确率番茄

马 宇,单玉刚,袁 杰

(1.新疆大学电气工程学院,乌鲁木齐 830001;2.湖北文理学院教育学院,襄阳 441053)

番茄病害问题是影响番茄生长发育的主要因素之一,病害问题导致番茄的质量和产量严重下降,同时使农民遭受严重的经济损失,由于番茄病害的多样性和复杂性,人工识别的方法具有成本高、主观性强、准确率低等问题。随着计算机视觉及深度学习的不断发展,人工智能不断应用于农作物采摘、生长状况实景监测和病害识别等方面,基于多层卷积神经网络(convolutional neural networks,CNN)的深度学习方法在番茄病害识别取得了较大进步,中外针对农作物病害识别提出许多有效的方法。龙满生等[1]提出一种对油茶叶片图像进行阈值分割、旋转对齐、尺度缩放等预处理后在迁移学习和数据扩充方式下的油茶病害图像分类,分类准确率高达96.53%。郭小清等[2]结合番茄叶部病害的不同图像特点,采用不同尺度的卷积核对图像提取特征,去除局部响应归一化层,设计出一种基于AlexNet的多感受野识别模型,对番茄病害的平均识别准确率达到了92.7%。董松等[3]提出一种基于过渡区研究的黄瓜病害识别方法,根据黄瓜病害图像的病斑区和过渡区在颜色和形状方面的22个特征数据,使用支持向量机(support vector machine,SVM)对霜霉病、白粉病和靶斑病3种病害的识别率达到了83.3%、76.7%和90.0%。刘翠翠等[4]以川麦冬叶部黑斑病、炭疽病、叶枯病3种病害图像为研究对象,采用K-means聚类分割技术分离出病斑。岳有军等[5]在VGG-16网络的基础上,加入批归一化层、采用全局平均池化和联合损失函数的方法对其进行结构优化,提高了分类准确率。王艳玲等[6]以Plant Village数据集中的14 529张番茄叶部病害图像作为研究对象,将迁移学习应用在AlexNet卷积神经网络中,减少了训练所需时长,测试平均准确率达到了95.62%,提高了5.6%。

许景辉等[7]以玉米病害图像作为研究对象,在VGG-16模型的基础上,改进全连接层,针对图像数据小,对训练图像进行数据增强扩充,对玉米的病害识别平均准确率达到95.33%。卷积神经网络和迁移学习在植物病害分类的应用广泛,并取得不错的效果。胡志伟等[8]以早、晚期5种番茄病害叶片为研究对象,提出ARNet,使用残差网络并引入多层注意力模块,解决番茄叶部病害区域特征不易提取,避免网络训练出现退化现象,平均识别率达到了88.2%。于洪涛等[9]为了提高自然环境下苹果病虫害的识别准确率和识别效率,提出了具有动态学习特征的VGG-F苹果病虫害识别模型。但目前已有CNN模型在图像的背景复杂和类间相似度较高的情况下,对叶部病害的有效特征提取效果不足,导致对番茄叶部病害的识别准确率不高。因此,为了高效、准确地识别番茄叶部10种病害,现设计一种基于三通道注意力的番茄病害识别方法。首先,对现场采集数据集和Plant Village公共数据集进行图像增强和拓展,其次,在ResNeXt50[10]残差网络的基础上,嵌入注意力机制并行提取网络中目标的通道特征和空间特征,使用双损失函数解决训练过程出现的过拟合问题,最后,通过迁移学习弱监督训练参数减少模型训练时间和检测时间,并提高番茄病害识别准确率。

1 数据集准备

图像采集地点为江苏省徐州市“三乡工程”项目示范区苏蔬基地,农耕占地面积22 000 m2。园区利用太阳能秸秆粪便沼气站所产沼液沼渣及农业废弃物配制有机基质,盐碱地较少,种植茄果类蔬菜;棚内依托农业物联网开展智能环境调控,进行绿色蔬菜生态种植。年产粉果鲜食型西红柿120万kg、小番茄30万kg。图片采集工具为华为mate20pro手机,为模拟自然光线场景,采集时进行多角度拍摄;为算法适应不同番茄叶片距离,在不同高度拍摄;拍摄时间包括8:00,12:00和17:00,共计500张,如图1所示。为保证数据的平衡性,拓展使用Plant Village数据集的12 000张番茄叶部病害图像,如图2所示。

图1 人工采集的番茄叶部病害图例Fig.1 Sample of manually collected tomato leaf diseases

将所有图像的尺寸缩放为224×224大小,采用数据增强的方法,对数据集图片进行旋转、增加图片对比度、中心剪切并对阴影部分进行填充,图片旋转角度包括15°、30°及45°。预处理后的番茄叶部病害图像如图3所示。

番茄叶部病害识别实验采用Plant Village数据集中的12 000张番茄叶片图像,并加上人工采集的500张图像共计12 500张番茄病害图像。为保证数据平衡,每类1 250张,数据集按8∶2划分为训练集和测试集。

2 改进的深度残差网络番茄叶部病害识别方法

2.1 三通道注意力网络结构设计

选用ResNeXt50为基础网络,采用ResNeXt模块作为本文算法的特征提取网络的基础模块,ResNeXt模型延用了ResNet的shortcut连接、VGG模块堆叠和Inception的分组卷积方法,可以有效防止神经网络反向传播带来的梯度弥散和梯度爆炸,并把building block中除了shortcut以外的支路数量作为基数(cardinality)。减少了超参数数量,拓扑结构相同,有利于模型的拓展和移植。

总体网络结构包括输入层、ResNeXt模块、池化层、全连接层和输出判别层。ResNeXt模块由分组残差连接的瓶颈结构层[11](bottleneck layer)组成,包括多组的1×1卷积、3×3卷积、1×1卷积依次连接。除输出判别层外,其他层均采用ReLU[12]作为激活函数,采用Softmax[13]对番茄叶部病害进行判别。实验中改进的网络结构如图4所示,算法的输入叶部病害尺寸为224×224×3,原ResNeXt算法对输入图像使用步长为2的7×7卷积进行提取,针对叶部病害图像类间距较小的特点,本文采用3个3×3小卷积核对进行特征提取,降低参数,增加特征表达层次,得到特征图C1;采用步长为2大小为3×3的卷积核对C1进行最大池化;采用3个三通道注意力残差模块对C2进行卷积,输入通道为64,输出通道为256,步长为1;采用4个32路径的ResNeXt模块对C3进行卷积,输入通道为256,输出通道为512,步长为1;采用6个32路径的ResNeXt模块对C4进行卷积,输入通道为512,输出通道为1 024,步长为1;采用3个32路径的ResNeXt模块对C4进行卷积,输入通道为1 024,输出通道为2 048,步长为1;对C5进行全局最大池化后经全连接层和Softmax分类层10个神经元。

图2 拓展番茄叶部病害图例Fig.2 Samples of expanded tomato leaf diseases

图3 预处理后的番茄叶部病害图像Fig.3 The images of tomato leaf diseases after pretreatment

图4 网络结构Fig.4 Structure of network

2.2 三通道注意力残差模块设计

由于不同病害的番茄叶部图像特征具有相似性,并且番茄叶部图片中的病害区域与整个图像相比面积较为狭小,例如番茄叶斑病和番茄细菌性斑点病。借鉴注意力模块(convolutional block attention module,CBAM)[14],本文模型在ResNeXt模块中加入并联的通道加权转换器和空间加权转换器,如图5所示,输出特征红色部分为注意力模块关注的信息,将特征插值映射回原图可见,番茄叶部病害特征得到更大的关注,无用特征被抑制。

图5 注意力模块结构Fig.5 Attention module structure

设计的三通道注意力转化器公式为

F′=f1×1[MC(F)⊗F+MS(F)⊗F]

(1)

式(1)中:⊗为矩阵元素点乘;MC(F)为通道注意力特征图;MS(F)为空间注意力特征图,为1×1大小的卷积核,在第一个残差模块中,输入56×56×256的番茄病害特征图,经卷积1×1后得到维度为56×56×1的空间权重图和1×1×256的通道权重图,使用sigmoid激活函数将权重归一化到0~1;F′为最终输出特征图。

通道注意力模块是对图像特征的通道特征进行压缩和提取,通过对原特征通道加权的方式,关注番茄不同类别病害细节特点,计算公式为

MC(F)=δ{MLP[AvgP(F)]+MLP[MaxP(F)]}

(2)

式(2)中:MLP为共享网络;F为输入特征图;δ为激活函数,将权重归一化到0~1。最大池化和平均池化共享一个神经网络提取特征。

空间注意力模块是对图像特征的空间特征进行压缩和提取,关注番茄病害的病灶位置,计算公式为

MS(F)=δ{MLP[AvgP(F)];MLP[MaxP(F)]}

(3)

式(3)中:分号“;”为矩阵横向拼接操作。最大池化和平均池化共享一个神经网络提取特征。

2.3 番茄病害识别算法流程

首先,通过在ResNeXt50网络基础上,增加注意力模块和设置双损失函数,加载已有训练参数,构建网络结构模型。在网络训练前,为了使训练模型具有更强的泛化能力,防止训练模型过拟合,将原始数据集进行扩充增强。之后,标注样本图像集,并将批量输入图片送入设计网络进行训练并得到最终训练模型。在测试时,用训练好的模型对10种类别的番茄叶片分类,并进行多组实验。其算法流程如图6所示。

图6 三通道注意力网络算法流程图Fig.6 Three-channel attention network algorithm flow chart

3 实验与分析

3.1 实验环境

实验中的计算机配置为64位Windows10 操作系统,8核64 GB CPU,NVIDIA-v100 32 GB GPU。软件方面,实验环境为PyTorch深度学习框架,版本为1.0.0。

3.2 评价指标

单个类别的识别准确率(accuracy,Acc)数学表达式为

(4)

式(4)中:Ni为单个番茄病害类别图像总数;Nc个为单个类别正确的预测数。

平均识别准确率(average accuracy,AA)数学表达式为

(5)

式(5)中:ns为番茄病害叶部图像类别数目,取ns为10;i∈[1,10]为病害类别标签;ni为第i类番茄叶部病害图像总数;nii为第i类样本预测结果为i的总数。

分类结果一致性和信度指标(Kappa)系数,数学表达式为

(6)

(7)

式中:p0为总体分类精度,即每一类正确分类的样本数量之和除以总样本数;pe为偶然达到的一致性比率,即每一类分类结果由于偶然性与实际类别结果所达到的一致性;ai为第i类番茄病害样本数;bi为第i类测试正确样本数;n为番茄病害样本类别总数,n取10。

3.3 迁移学习网络训练

针对卷积神经网络病害识别需大量的样本对网络长时间训练,考虑到大部分训练数据存在关联性,所以使用迁移学习方法[15](transfer learning),将模型已学习到的模型参数分享给新模型,加快模型的训练效率。

选用已进行弱监督学习[16](weakly supervised learning)的ResNeXt50权重。借助迁移学习方法,从网络提取卷积层和池化层作为本文模型的特征提取模块得到番茄害图像的高层特征,对其进行模型参数迁移,该模型采用ReLU函数对每个输入值x进行阈值筛选,函数公式为

(8)

模型最后全连接层添加Dropout[17]方法,采用0.6的丢失率,保留60%的神经元活性,其余的40%神经元冻结来解决过训练过拟合问题。双损失函数设计公式为

loss=∂1lossCrossEntropy+∂2lossLabelSmooth

(9)

式(9)中:∂1、∂2为两种损失函数的权重,分别设置为0.5和0.5;lossCrossEntropy为交叉熵损失函数;lossLabelSmooth为签平滑损失函数。标签平滑损失函数相当于向番茄病害识别真实分布中添加了服从均匀分布的噪音,抑制正负样本间的差值,提高番茄病害检测网络的泛化能力,公式为

(10)

式(10)中:i为预测标签类别值;y为实际标签类别值;loss为lossLabelSmooth得到的损失值;β为随机噪音。

将交叉熵损失函数和标签平滑损失函数累加,通过标签平滑归一化方法[18]对交叉熵损失函数进行优化,防止番茄病害检测识别过拟合。

3.4 番茄叶部病害识别

使用训练集分别进行迁移学习训练和从零开始训练,不同训练方式下算法训练集准确率和损失值变化如图7所示。由图7可见,通过图7(a)和图7(b)不同训练方式下算法训练集的准确率对比,采用迁移学习的方式可以更快地提高算法的分类准确率。通过图7(c)和图7(d)的损失值变化对比,采用迁移学习预训练参数的训练方式可以加速训练过程。观察图7(c),改进后算法在第138次迭代损失值开始收敛,收敛速度领先其他4种识别方法,改进算法的损失值随着迭代次数的增加在0.164~0.220的范围间震荡,变化幅度皆小于其他方法,表明改进算法的训练稳定性和快速性。实验中各个算法的训练时长、运行时占用内存及平均检测时间如表1所示。

图7 不同训练方式下算法训练集准确率和损失值变化Fig.7 The accuracy and loss of algorithm training set under different training methods

测试集应用不同方法计算所得的分类平均准确率如表2所示。可见,随着网络模型层数加深,网络可以提取番茄病害图像的更高层特征,改进的三通道注意力残差网络模型测试集准确率达到了98.4%,参数量占用内存105.9 MB,Kappa系数为0.96,相比于VGG-16降低了54.3%的运行内存,测试集平均准确率提升了4.0%,平均每张番茄叶部病害图片检测速度仅为VGG-16的21.6%。表明改进模型数据平衡性较好。

表1 不同算法训练和识别对比Table 1 Experimental comparison of different algorithms

表2 各类别叶部病害测试集准确率Table 2 Accuracy of test set of leaf diseases in various categories

实验结果表明,改进算法分类测试准确率高达98.4%,相比起传统机器学习方法与其他神经网络方法都更高,各类样本检测准确率分布均匀,检测速度符合实时性,Kappa系数为0.96,在不同环境场景下拥有较高识别精度,是一种轻量实用的改进算法。

4 结论

改进算法与ResNeXt50原算法相比缩短了算法训练时长,降低了算法的内存占用空间。提升了算法对番茄叶部病害分类识别的准确率和稳定性,平均测试准确率达到了98.4%,能够在复杂背景下精确识别番茄叶部病害,检测速度符合应用实时性,算法可移植性强。改进算法可以应用于多种叶片病害的识别,在农业的病害预防领域具有重要应用价值,为农业信息化技术提供可靠的理论依据。

猜你喜欢
叶部准确率番茄
面向移动端的苹果叶部病虫害轻量级识别模型
基于YOLOv3的多类烟草叶部病害检测研究
秋茬番茄“疑难杂症”如何挽救
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
番茄果实“起棱”怎么办
基于颜色差异性的植物叶片病害图像分割方法
HOME家系列