改进残差网络在玉米叶片病害图像的分类研究

2021-12-12 02:51黄英来
计算机工程与应用 2021年23期
关键词:残差卷积病害

黄英来,艾 昕

东北林业大学 信息与计算机工程学院,哈尔滨 150040

玉米是全世界产量最高的粮食作物,与传统的小麦、水稻等粮食作物相比,玉米具有很强的环境适应性,其作为多用途作物在食用、饲用、工业原料及出口商品等各方面发挥着重要作用[1]。然而,近年来,随着全球气候异常以及玉米品种更换等原因,玉米叶部发生病害的现象明显增多,这给玉米的生产带来了极大危害。常见的玉米叶部病害有十多种,其中以大斑病、锈病和灰斑病为主[2]。传统的玉米叶片病害识别主要以工作人员肉眼观察为主,这种方法不但效率低下,而且判定标准往往带有主观性。因此,寻找出一种高效并且精准的玉米叶片病害识别方法至关重要。

近年来,学术界掀起了深度学习的热潮,其中卷积神经网络(Convolutional Neural Network,CNN)是深度学习最重要的分支之一,它被广泛地应用于计算机视觉领域。目前,卷积神经网络已经成为众多科学领域的研究热点之一。由于卷积网络可以直接输入原始图像,并且在各项领域都取得了较高的识别率,其便捷性与准确性等优点深受众多学者的好评。

鉴于卷积神经网络在图像检测领域的突出能力,多名学者利用它来解决农业方面的图像识别问题。赵建敏等[3]采用深度学习理论设计病害识别系统,搭建8层CNN+softmax分层卷积神经网络模型,在马铃薯叶片病害识别中取得了较高的识别率。吴开兴等[4]设计了通过卷积神经网络实现番茄病害识别的模型,研究了采用不同尺寸的卷积核和池化方法对该模型性能的影响。Salih等[5]研究了基于卷积神经网络的六种不同番茄叶片图像检测的方法。Yadav等[6]使用对比度拉伸预处理和FCM聚类算法,实现了对苹果叶片病害图像的分类。

以上几种方法都是自行构建一个大型CNN模型的过程,然而训练好一个深度CNN模型不仅需要上百万个参数,而且网络训练的开销也十分大。迁移学习的出现则可以很好地解决上述问题。迁移学习是运用已存有的知识对不同但相关领域问题进行求解的一种机器学习方法[7]。同样,迁移学习具备以下优点:不但可以在较小的训练样本下获得较高的精度,还可以大幅度减少网络的训练开销[8]。韩猛[9]以AlexNet和VGGNet模型为基础,实现了17类花卉和102类花卉的精准识别。Alsharman等[10]使用改进的GoogleNet模型,对包含COVID-19临床表现的CT图像进行识别。倪黎等[11]应用改进的Xception卷积网络,融合了SE模块,应用到10种动物种类识别中,取得了较高的识别准确率。巨志勇等[12]提出了基于位置的柔性注意力算法,对Inception v3神经网络进行改进,最终在果蔬识别算法中准确率可达90%以上。

为进一步提升卷积神经网络对玉米叶片病害图像分类的效率和正确率,本文提出一种基于迁移学习与对ResNet-50网络结构进行改进的算法。将ResNet-50模型在图像数据库ImageNet上预训练的权重参数进行迁移学习,并改进传统的ResNet-50模型结构,使之更加拟合玉米叶片病害图像的特性,实现对4种常见的玉米叶片图像更加精准快速的识别。

1 玉米图像识别网络模型构建

1.1 残差网络模型

2015年,残差网络被何恺明等[13]4位学者提出,并在同年的ImageNet大规模视觉识别竞赛中获得了冠军。随着深度学习的发展,传统的卷积神经网络模型结构越来越深。理论上更深的网络可以取得更好的识别效果,但实验证明通过简单的叠加层方式来增加网络深度,可能会引发梯度爆炸与梯度消失等一系列问题,从而导致网络的收敛性变差。因此,残差网络的出现成功解决了此类问题,使得即便在网络层数很深的情况下,网络依然可以取得良好的效率和性能。

对于一个堆积层结构来说,在输入样本为x时假设输出结果为H(x),在传统的网络中是直接学习输入到输出的映射H(x),而残差网络学习的是F(x)=H(x)-x,即目标值H(x)与输入值x的差值,称为残差(residual)。当F(x)足够小时,输出就近似变成了H(x)=x,此时堆积层仅仅做了恒等映射,这样不必重新学习一个映射函数,更容易拟合残差。残差块的结构如图1所示。

图1 残差块结构Fig.1 Structure of residual block

每个残差块的计算公式如式(1)、(2)所示:

其中,xl和yl分别表示第l层的输入和输出,h(xl)为恒等映射,F(xl,Wl)为残差部分,一般由两个或三个卷积操作构成,Wl为权值矩阵,f为激活函数。

这时残差块可以表示为:

通过递归,可以得到任意深层L与浅层l的关系表达式:

根据BP算法中使用的导数的链式法则,反向传播的梯度可以表示为:

其中ε表示损失函数。在整个训练过程中,由于不可能全为-1,因此这个公式保证了不会出现梯度消失的现象,残差学习更容易。

1.2 改进ResNet-50网络模型

目前常见的ResNet残差网络模型有ResNet-18、ResNet-34、ResNet-50、ResNet-101、ResNet-152等,数字部分代表其包含多少层可训练网络层数。本文选择ResNet-50网络结构,并对其进行改进。传统的ResNet-50网络结构如图2所示。

1.2.1 卷积核的替换

由图2可以看出,在输入图片数据后,首先经过ResNet-50网络结构中的卷积层,在传统的ResNet-50网络结构中其卷积核大小为7×7。一般情况下,7×7的卷积核被认定为较大的卷积核,目的是提取出输入图像更大邻域范围的信息。然而在玉米叶片病害图像识别中,病害症状复杂多样,且病害图像中病害区域较小,玉米大斑病、灰斑病与锈病之间病害特征差异较不明显。针对上述现象,需要对玉米叶片病害图像提取更多细微特征,来实现更加精准的病害图像分类效果。因此,在本文设计中,改进首层7×7卷积层,利用三个3×3卷积核的组合替换一个7×7卷积核。

图2 ResNet-50网络结构Fig.2 Structure of ResNet-50 network

在卷积神经网络中,每一层输出的特征元素在输入图像上映射的区域大小,称为感受野(Receptive Field)。感受野的计算公式如下:

其中,RFl-1表示第l-1层对应的感受野大小,fl表示第l层的卷积核大小,为第1层到第l-1层步长的累乘。RF0代表输入层对应的感受野大小,其值为1,本实验中所有卷积核移动的步长均为1。

传统ResNet-50网络第一层经过7×7卷积层时,其感受野大小RF1根据式(6),可以表示为:

使用3×3卷积核连续卷积三次时,根据式(6),每层的感受野计算过程如下:

由此可知,改进ResNet-50中首层卷积层前后,保证了具有相同的感受野,说明多个小卷积核连续卷积和单个大卷积核卷积的作用相同。

此外,三个3×3堆叠卷积层相较于一个7×7卷积层,提升了网络的深度,卷积层之间使用了更多非线性激活函数,导致网络的非线性更高,增加了判别能力,在一定程度上提升了神经网络的效果。同时,未改进的7×7卷积核具有7×7×1×channels=49×channels个参数,改进后的三个3×3卷积核参数个数为3×3×3×channels=27×channels,减少了约45%的参数,使计算量大大降低,从而提高了计算性能。

1.2.2 LeakyReLU激活函数

为了防止梯度消失,节省计算量,并有效缓解过拟合现象,传统的ResNet-50结构中使用了ReLU激活函数。式(7)和图3分别为ReLU激活函数的公式和图像:

图3 ReLU激活函数图像Fig.3 Graph of ReLU activation function

由式(7)和图3可以看出,只有当神经元的输入为非负时ReLU函数才会起作用,而当神经元的输入为负数时,计算的输出全为0,这样就导致负的梯度在ReLU函数被置0,而且这个神经元有可能再也不会被任何数据激活,这种现象称为神经元的“坏死”。

为了解决这一问题,本文使用LeakyReLU[14]激活函数替代ReLU激活函数。LeakyReLU激活函数的公式和图像分别如式(8)和图4所示:

式(8)中的a为一个很小的常数。由图4可见,LeakyReLU激活函数不仅在正半轴保留了ReLU函数的特点,而且当输入小于0时,LeakyReLU激活函数可以保留负轴的值,使梯度正常传播,从而避免了神经元处于“死亡”状态。

图4 LeakyReLU激活函数图像Fig.4 Graph of LeakyReLU activation function

1.2.3 网络结构的调整

当神经网络层数较多时,网络每更新一次,后面的层输入数据的分布就会发生较大变化,这样后层网络需要不断调整来适应输入数据分布的变化,导致整个网络的学习速率过慢。如果保证每层的输入分布是稳定的,那么会加快网络的收敛速度。因此,批标准化(Batch Normalization,BN)的作用就是将输入数据规范化为均值为0,方差为1的标准化变量,减少样本分布的变化问题。批标准化实现公式如下:

其中,xi为批标准化层输入数据,μ为平均值,σ2为方差,ε是一个极小值,避免因方差为0而产生计算错误。这一操作使得输入特征分布具有相同的均值与方差,但由于归一化后的xi被限制在了正态分布下,使得网络的非线性表达能力下降,为此,批标准化又引入了两个可学习的训练参数γ和β,算法公式如下:

其中,yi为批标准化层输出数据,γ是尺度因子,β是平移因子。这样可以让输入能够到达激活函数的非线性区域,使得网络能够学到更多的分布。当γ=σ,β=μ时,可以保留原始输入特征的分布信息。

在批标准化过程中,由于使用mini-batch的均值与方差作为对整体训练样本均值与方差的估计,尽管每一个批次中的数据都是从总体样本中抽样得到,但不同mini-batch上的均值和方差有所不同,这就为网络的学习过程增加了随机噪音,在一定程度上起到了正则化的作用。此外,在训练中,批标准化层会通过丢弃Dropout的方式来提升网络的泛化能力,起到与Dropout一样防止网络过拟合的作用[15]。

传统的残差块结构排列如图5所示。

图5 传统残差块排列Fig.5 Arrangement of traditional residual block

由图5可知,传统残差网络是经过卷积层+批标准化+激活函数的排列顺序。这样由于输入的图像未进行归一化处理,所以批标准化的存在并不能起到很大的作用。因此,本文对传统的残差网络结构调整为批标准化+激活函数+卷积层的排列顺序,这样不仅可以很好地发挥出批标准化层的作用,还保留了传统残差块结构中的恒等映射部分。本文中经过改进的ResNet-50残差块结构排列如图6所示。

图6 改进残差块排列Fig.6 Arrangement of improved residual block

1.3 迁移学习

近年来,迁移学习在机器学习领域取得了重大突破,且在深度学习中也发挥着良好的应用。迁移学习是一个把已经训练好的模型参数迁移到新的模型中来帮助新模型训练的过程,其目的是将源领域学习到的信息应用推广到目标领域的学习过程中[16]。对于玉米叶片病害图像来说,由于本实验的训练样本和叶片种类都比较少,因此决定使用在ImageNet大规模数据集上对ResNet-50网络进行训练的权重,来提取图像的初步特征,经过实验证明迁移学习在小样本数据下短时间内可以训练出令人满意的效果。

2 模型训练

2.1 实验环境

本实验使用基于Python语言的Pytorch深度学习框架,硬件环境CPU为AMD Ryzen 7 4800H@2.9 GHz,GPU为NVIDIA GeForce RTX 2060显卡,操作系统为Windows10,Python版本为3.8.5,采用Jupyter notebook应用程序进行编译,实验结果曲线采用matplotlib模块进行可视化。

2.2 实验数据与预处理

本研究采用Plant Village数据集所收集到的2 000张玉米叶片图像作为实验数据,该数据集包含4类常见的玉米叶片图像,其中的3类为病害图像,1类为健康图像。病害图像分别为玉米大斑病、玉米灰斑病和玉米锈病。部分图像如图7所示。

图7 部分样本图像Fig.7 Part of sample images

每幅图像的像素大小为256×256,实验中将图像的尺寸缩放为ResNet-50神经网络输入的标准尺寸224×224像素,并且将训练集和测试集的比例划分为4∶1。此外,由于数据集的样本较少,容易产生过拟合现象。因此,采用数据增强的方式对数据集进行扩充。本实验采用随机水平翻转、随机旋转20°、随机调整明暗度与对比度的方式对训练集进行扩充,扩充后的图像共6 800张。数据集分布如表1所示。

表1 数据集分布Table 1 Distribution of datasets

2.3 实验超参数设置

在训练过程中,寻找出最合适的超参数往往需要经过大量的实验,不同的超参数对于实验结果都会产生影响。因此,在经过多次实验验证,本实验的超参数设置如下:batch-size设置为16。使用Adam优化器来对模型进行优化,因为其具有收敛速度快、易调参等优点,学习率设置为0.000 1。损失函数为交叉熵损失函数CrossEntropyLoss。整个网络训练的epoch设为100。

2.4 模型评价指标

为了验证本实验所使用的网络模型在玉米叶片图像中识别的性能,需要将识别准确率P作为检测结果的主要评价指标,其公式如下:

其中,T代表被正确分类的样本数,F代表被错误分类的样本数。

3 实验结果与分析

利用4种玉米叶片图像数据集,经过数据增强,在100个epoch后经过本文改进的ResNet-50模型中最高取得了98.3%的准确率。在训练集和测试集上的损失函数和准确率的变化分别如图8和图9所示。

图8 训练集与测试集损失函数变化Fig.8 Changes in loss function of training set and test set

从图8和图9中可以看出,模型在经过大约50个epoch后已基本收敛。测试集仅在不到10个epoch就已经取得了超过90%的精度,并且取得了较低的损失值。接下来讨论在是否数据增强、是否改进网络以及不同网络模型的条件下对实验结果的影响。

图9 训练集与测试集准确率变化Fig.9 Changes in accuracy of training set and test set

3.1 数据增强对实验结果的影响

未经过数据增强与经过数据增强的测试结果如表2所示。

表2 是否经过数据增强条件下实验结果对比Table 2 Comparison of experimental results under data enhancement or not

使用数据增强的方式对训练集进行扩充,将1 600张训练集扩充4倍,得到6 400张训练样本,最后与未进行数据增强的实验结果进行对比,从表2可以看出,不管是训练集还是测试集,准确率都得到了提升。其中训练集提升了0.2个百分点,测试集提升了2.0个百分点。同样两个数据集的损失值也在数据增强后趋于下降。此外,相较于数据增强后的实验结果,未进行数据增强处理的训练集与测试集准确率的差值要更大一些,说明在经过随机水平翻转、旋转角度、调整明暗度与对比度等操作对原始数据进行增强后,增加了数据的多样性,不但使模型的鲁棒性与泛化能力得到了进一步的提升,而且改善了模型的过拟合。虽然经过数据增强后测试集准确率有所上升,但提升的效果有限,这说明模型在迁移学习中已获得了在大规模数据集上的权重参数,得到了良好的特征信息获取能力,数据增强的作用因此被弱化了[17]。

3.2 改进网络对实验结果的影响

为了进一步验证本文中改进的模型相较于传统模型的优势,做出多组对比实验,实验结果如表3所示。

表3给出了网络在不同改进策略下对测试结果的影响。从表格中可以看出,利用三个3×3级联卷积替代7×7卷积核,使用LeakyReLU激活函数替代ReLU,以及更改网络结构这三种方法均能提升网络的性能,而把这三种方法结合起来构建新的网络,在测试集上取得了最高的精度和最低的损失,这也进一步验证了本文所提网络的可靠性。其中更改网络结构方法提升的效果最为明显,这是因为将批标准化和激活函数放在卷积层前,使输入的图片首先经过归一化处理,发挥了批标准化层的作用,这样加强了模型的正则化,降低过拟合的影响。此外,利用三个小卷积核替代一个大卷积核,也会在一定程度上降低网络的参数量,更有效地提取图像特征;使用LeakyReLU激活函数可以保留负区间的值,避免“坏死”现象,增强模型的鲁棒性。实验证明使用这两种方法相较于传统的ResNet-50模型,也提升了测试精度。

表3 网络在不同改进策略下实验结果对比Table 3 Comparison of experimental results of network under different improvement strategies

3.3 不同网络模型对实验结果的影响

在深度学习中,AlexNet、GoogleNet、Inception v3、VGG、ResNet等常被用作于迁移学习策略下的预训练模型,均在不同领域的图像识别中取得了较好的识别效果[18]。因此,本文在相同的实验条件下,将这些模型作为本研究的对比模型,在不同网络模型上的实验结果如表4所示。

表4 不同网络模型实验结果对比Table 4 Comparison of experimental results of different network models

由表4可知,不同网络模型的测试集准确率、训练时间以及模型训练参数都存在着差异。其中的AlexNet、GoogleNet、Inception v3、VGG16、VGG19模型在经过迁移学习加载预训练模型参数后,分别取得了92.6%、92.5%、91.3%、93.8%和92.9%的准确率,说明迁移学习可以更好地提取玉米叶片特征,取得较高的准确率。本文又选用了几个常见的ResNet模型进行对比实验,由实验结果可以看出,ResNet系列模型虽然比VGG系列模型训练时间更短,训练参数更少,但是VGG相较于ResNet的识别准确率却没有提升,这说明ResNet系列模型更适合于本文的研究。此外,ResNet-50模型在表4所列举的传统ResNet模型中取得了最高的准确率,甚至超过了训练参数更多、层数更深的ResNet-101模型,证明了ResNet-50模型更有利于玉米叶片病害图像的识别。S-ResNet模型是吴宇豪等[19]提出的一种改进ResNet-50模型,采用使用swish激活函数与SVM分类器的方法,实验结果相较于传统ResNet-50模型准确率有了提升,但是训练时间略长。本文中改进的ResNet-50网络模型在玉米叶片识别中取得了最高的准确率,并比其他实验模型提升了至少2.4个百分点。虽然在训练时间与模型参数中未取得最优,但是其较好地平衡了模型的识别精度与复杂度,在模型参数相差无几时取得了最短的训练时间。上述结果表明本文提出的模型具有一定的可行性,可以在玉米叶片病害图像识别中取得更好的效果。

4 结束语

为了进一步提升玉米叶片病害图像识别的准确率,本文提出了一种改进传统残差网络ResNet-50模型的方法。首先对传统模型第一层卷积层中7×7卷积核替换为三个3×3的卷积核,减少了网络参数,其次使用Leaky-ReLU激活函数来取代ReLU,解决了ReLU带来的神经元“死亡”问题,最后调整了网络结构,将批标准化层和激活函数放在了卷积层前,最大程度降低了过拟合。实验结果表明,本文提出的网络模型取得了98.3%的识别精度,相较于其他网络模型获得了更好的分类效果,具有更强的鲁棒性,与传统的ResNet-50网络模型相比减少了训练时间与训练参数,验证了本文算法的有效性,更适合用于玉米叶片病害图像的识别研究。

猜你喜欢
残差卷积病害
早春养羊需防六大病害
基于双向GRU与残差拟合的车辆跟驰建模
小麦常见三种病害咋防治
基于3D-Winograd的快速卷积算法设计及FPGA实现
葡萄病害周年防治历
基于残差学习的自适应无人机目标跟踪算法
果树休眠期咋防病害
基于递归残差网络的图像超分辨率重建
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法