APP下载

基于卷积神经网络的种苗病害识别方法

2022-09-26陈伟文邝祝芳王忠伟

中南林业科技大学学报 2022年7期
关键词:准确率卷积神经网络

陈伟文,邝祝芳,王忠伟

(1.海南省林木种子(苗)总站,海南 海口 570203;2.中南林业科技大学 智慧物流技术湖南省重点实验室,湖南 长沙 410004)

农林产品病害问题是制约我国农业生产发展的主要灾害之一。由于农林产品病害的种类繁多,且常伴随影响范围广以及传染性强等问题,易根据影响时长和范围而对农林业生产造成不同程度的损失。因此,农林产品病害防治是农林业生产过程中很关键的问题,病害使农林产品的产量降低和品质变差,虽然人们可以使用农药等化学物质来控制植物病害,但仅仅依靠肉眼的观察以及人们以往的经验很容易出现误诊的情况,这使得农林产品病害情况不能被及时诊治,从而导致农林产品的产量下降,品质也不能得到切实保证。然而,为解决这种病害的及时诊治问题,能否尽早地并且精确地诊断农林产品病害类型,防止错误使用农药是很关键的。近年来,信息技术飞速发展,我国对农林病害智能识别技术的重视以及支持力度日益增大,农林产品病害识别也渐渐成为热门[1]。同时,卷积神经网络在这些年里已经广泛应用于各个领域,在图像分析和处理领域取得了一定的进展,在学术界常用的标准图像标注集ImageNet 上,基于卷积神经网络取得了很多成就,包括图像识别[2-6]、物体分类和检测[7],人脸识别[8]以及语音识别[9]等方面。

自1978年我国实行改革开放以来,我国的计算机技术发展得非常迅速。如今,随着现代科技的发展,集计算机技术、精密传感技术等于一体的智能化技术已经遍及人们生活的各个方面。具体到农林产品病害的智能识别领域,当前仍然有很多人在使用传统的分类网络依据图片的像素等特征进行识别图像病害种类。如马雪松等[10]用传统方法支持向量机以及图像处理技术对花生褐斑病图像的识别进行了研究。吕致等[11]使用支持向量机对分割后的梨树病害进行识别。陈悦宁等[12]建立BP 神经网络模型根据优化后的特征来识别不同种类的水稻病害。黄双萍等[13]用一种GoogLeNet模型检测水稻穗的瘟病。根据上面的学者作出的研究,研究发现虽然传统的病害识别方法识别的效果也不错,但是它有个最突出的问题就是需要人工对病害图片进行分析并提取特征,然而受天气、背景、危害程度等的影响,不同植物的不同病害特征也会更复杂,此时其适用性往往受到抑制,识别效果一般[14]。然而,卷积神经网络在大田自然复杂环境中进行病害识别却有较好的优势[15]。

在使用几种经典卷积神经网络对番茄种苗病害进行识别时,发现原始的AlexNet 模型在训练过程中出现了严重的过拟合现象。因此本文结合了常用的缓解过拟合的方法如扩增数据集、随机剔除神经元等方法,对原始的AlexNet 模型进行改进,得到一个对具体番茄叶片病害识别有更好预测分类性能的AlexNet-Improved 模型。

1 材料与方法

1.1 数据材料

PlantVillage工程为解决植物病害诊断的问题,面向所有用户开放数据库,其数据库中包含多类植物的患病与健康叶片图像数据。这些图像均来自自然环境,有着相同的尺寸大小、光照条件、背景和拍摄角度。数据集中图片均以.jpg格式保存。

1.2 方法分析

1.2.1 AlexNet

AlexNet 在2012年被Hinton 和他的学生Alex Krizhevsky 设计并提出[16],成功使用ReLU 作为CNN 的激活函数,使用重叠的最大池化,同时使用了CUDA 加速深度卷积网络的训练,利用GPU的并行计算能力,在神经网络训练过程中处理大量的矩阵运算。AlexNet 模型获得了当年竞赛的冠军,且准确率远超第二名,引起了很大的轰动。自那以后,卷积神经网络被很多人用在ImageNet 竞赛中,且层次越做越深,自此卷积神经网络便成了图像识别分类领域的核心算法,为深度学习带来一次大爆发。AlexNet 与LeNet 的结构非常相似,在LeNet 的基础上应用卷积神经网络的基本原理,但在卷积窗口数和激活函数上做出了改进。首先,由于之前的网络模型在使用Sigmoid 激活函数时出现梯度弥散问题,AlexNet 采用Relu 作为激活函数。其次,用最大池化替换平均池化,以避免特征被过度模糊[17]。最后,它提出了LRN 层(Local Response Normalization,局部响应归一化)以增强模型的泛化能力[18]。在最初设计AlexNet 网络中,原作者将网络模型放到两个GPU 上同时运行,使得模型训练的速度更快和识别图片的准确率更高。同时,由于有了计算速度更快的GPU,在模型输入数据的选择上,便可以使用更高像素的彩色图片。不过,如果选择了彩色图片作为数据,由于图像比之前的单通道灰度图像更加复杂,仅仅在硬件设备上提升计算速度并不能达到好的效果,所以还需要有针对性地对网络结构进行改进,使模型可以收敛得更快。

1.2.2 数据集扩增

随着网络结构的加深加大,容易出现过拟合状况。产生过拟合问题的根本原因是特征维度过多,模型假设过于复杂,参数过多,训练数据过少,以至于拟合的函数完美地预测了训练集,但对新数据的测试集预测结果却很差。过度地拟合了训练数据,而没有考虑到模型的泛化能力。此时,如果有更多的数据样本输入到网络中,便能弥补训练数据过少的问题,有效解决过拟合情况,提升算法准确率。但训练数据样本有限,尤其是有些大型网络一般需要输入上万张图片进行训练,面对有限的数据集,便需要采取深度学习中的数据增强,它不仅能增强训练的数据量,提高模型的泛化能力,还能增加噪声数据,提高模型的鲁棒性。对原始图像进行随机裁剪、平移变换,颜色、光照变换等操作后,对于卷积神经网络模型,经过操作处理后的图片便是一张新的可用的图片[19-20]。为解决原模型的过拟合问题,本文借助于该技术,通过翻转操作,即在不影响番茄病害图像语义的情况下对图像做水平镜像翻转,在原始数据集的基础上生成翻转数据集,将原始数据集和翻转数据集进行组合,建立实验所需的扩增数据集。

1.2.3 改进的AlexNet 网络模型

随机剔除神经元即在网络结构中使用的Dropout 层[21]。具体详见图1,该图展示了使用Dropout 前后的网络对比。每次随机将全连接层的一部分神经元失活,如图中使用Dropout 后的全连接层的部分神经元与上下层的神经元的连接呈现出虚线形式,表明该虚线部分的神经元被失活,即全连接层中并不是每个结点都会在本次epoch 中起作用。下次训练时,又随机失活另一批神经元。经过这样的迭代操作,每次只更新部分神经元的参数,经过多次的迭代训练,几乎所有神经元的参数都能不定次数地更新[22],能很大程度上缓解模型过拟合问题。值得注意的是,Dropout 层一般只用于训练,测试时不做使用。在本文中所用的AlexNet 网络模型包含了3 层全连接层,分别在两层1×2 048 的全连接层上融合Dropout 技术,由原来每次随机失活20%的神经元增加到每次随机失活50%的神经元,由于每次随机将全连接层的更大一部分神经元失活,极大地减少了模型的总参数量,解决了原有的经典卷积神经网络常会出现的过拟合问题,提高了模型的效率和准确度。

图1 使用Dropout 的网络前后对比Fig.1 Before and after using Dropout network

2 结果与分析

2.1 数据采集及预处理

实验的数据集来自于PlantVillage 数据库(www.plantvillage.org),数据集有近十种植物的病害图片,约4 万张图片。本文使用其中的番茄叶片图像作为试验数据,共18 835 张图片。该番茄叶片数据集由9 种疾病类别和1 种健康类别组成,具体图片如下图所示图2所示:

图2 10 种类型的番茄图片Fig.2 10 types of tomato pictures

为了训练好模型,本研究将番茄病虫害数据集中90%作为训练集,其余10%作为测试集。10种类型训练与测试数据如下表1所示,其中训练集共有16 955 张图片,测试集共有1 880 张图片。训练集中的图片主要用来对网络进行训练,测试集中的图片则用于检测一次训练完的网络的验证准确率,据此对模型中的参数进行调整,以达到下一次的测试准确率更高。

表1 训练数据和测试数据Table 1 Training data and test data

由于卷积神经网络的全连接层代表网络输入向量的空间维度以及对应的神经元的数目。当卷积神经网络输入的图像尺寸不相同时,对应的网络的空间维度也不相同,导致全连接层的权重不固定,网络无法训练。所以本文在将图片输入网络之前,需要对图片进行尺寸方面的统一处理。原数据集中的图像尺寸为256×256,本文将番茄图像以中心点进行裁剪,裁剪后的图像尺寸为224×224。

2.2 实验设置及评估

2.2.1 实验环境

本文实验的硬件环境为Windows10 系统,计算机配置为i9-10900K CPU,GPU 为NVIDIA GeForce RTX 3090,专用GPU 内存为24GB。软件环境则是在Windows10(64 位)上,使用Anaconda3 管理环境,Python 为编程语言,选用PyCharm 作为Python 解释器,同时配置了Tensorflow2.1 版本的深度学习框架。

2.2.2 搭建AlexNet-Improved 网络

实验中改进的模型AlexNet-Improved 由5 个卷积模块和3 个全连接模块堆叠而成,最后1 个全连接层的输出数为10,即目标分类数。采用SoftMax 计算损失,激活函数为ReLu。同时根据常用的缓解过拟合的方法,选用数据增强,对训练数据集中的图片进行随机裁剪,翻转以扩大可训练的数据集。在全连接层前使用Dropout 层每次随机失活50%的神经元,这样虽然会延长训练的时间,但一定程度地避免了过拟合状况。由于LRN 层在深度网络中的作用并不明显,所以在本文改进的AlexNet 模型上去掉了LRN 结构。改进的AlexNet 网络模型如图3所示。

图3 改进的模型AlexNet-ImprovedFig.3 AlexNet-Improved network model

2.2.3 训练网络模型

具体训练过程如下:

1)从本地读取建立好的数据集;

2)将数据集随机打乱,将图片进行翻转以扩增数据集;

3)实例化模型,设置图片高宽信息和种类数;

4)设置模型优化方法为Adam 优化算法,学习率为0.000 5,使用categorical_crossentropy 损失函数,标注网络评价指标为accuracy。

5)使用回调函数callbacks 实现模型断点续训,保存当前模型的所有权重。

6)将数据输入模型进行训练,不断更新并优化模型参数。

7)保存模型和参数权重。

2.3 实验结果

为了体现AlexNet-Improved 模型在病害识别领域上的优势,本文与LeNet 和VGG16 及原始的AlexNet 网络模型进行对比,比较4 种网络模型性能上的差异。

首先比较4 种网络模型:LeNet、VGG16、原始的AlexNet 和改进后的模型AlexNet-Improved在同一训练集上的训练效果差异。现使用这4 种网络模型在番茄数据集上训练150 个epoch,4 种模型训练过程中的训练准确率、训练损失值和验证准确率及验证损失值如图4所示,其中图4a 为4 个模型的训练准确率,图4b 为4 个模型的验证准确率,图4c 为4 个模型的训练损失值,图4d为4个模型的验证损失值。在图4a,图4b和图4c中,除了LeNet 模型收敛较慢,其他3 个模型的收敛速度及最高最低值相差不大,在训练20 个epoch的节点时曲线几乎趋于平缓,且数值均在90 以上。但是从图4d 中可以明显看出原始的AlexNet 的验证损失值从第40 个epoch 后逐渐增大,最大损失值高达0.8,且曲线波动较大,出现了较为严重的过拟合现象,而改进后的AlexNet-Improved 模型的过拟合现象较原模型有了很大的改善。

图4 准确率与损失值比较Fig.4 Comparison of accuracy and loss values

然后比较4 种网络模型在同一验证集上使用已经训练好的权重文件得到的混淆矩阵,如图5所示,图5a 为改进后的模型AlexNet-Improved 的混淆矩阵,图5b 为原始AlexNet 模型的混淆矩阵,图5c为LeNet 模型的混淆矩阵,图5d 为VGG16 模型的混淆矩阵。其中Bs、Eb、He、Lb、Lm、Mv、Sl、St、Ts、Yl 分别代表番茄的细菌性斑点病、早疫病、健康、晚疫病、叶霉病、花叶病、斑枯病、二斑叶螨病、轮斑病及黄曲病共10 种类型。x 轴为真实值,y 轴为预测值,图中对角线上的数值为识别正确的样本数量,例如图5a 中第一行的数值‘211’代表细菌性斑点病测试数据集中有211 个样本被正确识别为细菌性斑点病,第二行的数值‘93’代表早疫病测试数据集中有93 个样本被正确识别为早疫病,其他数值依此类推。通过分析图5中4 个混淆矩阵及表2中4 个模型在同一测试集上正确识别的数量对比,可以清楚发现细菌性斑点病、早疫病、晚疫病、花叶病、二斑叶螨病、轮斑病及黄曲病七种类型在AlexNet-Improved 模型中准确识别的样本数量远高其它3 个模型,仅叶霉病、健康、斑枯病这3 种类别在AlexNet-Improved 模型中准确识别的样本数量比其他3 个模型少,说明了AlexNet-Improved 模型在病害识别上的优势非常明显。

表2 正确识别数量比较Table 2 Comparison of correct identification number

图5 混淆矩阵比较Fig.5 Comparison of confusion matrix

最后比较4 种模型在准确性上的差异,以准确率,精确率,召回率及F1 值即精确率和召回率的调和平均值为衡量指标,结果如表3所示。原始模型AlexNet 的准确率为0.934,改进后的模型AlexNet-Improved 准确率为0.958,与AlexNet-Improved 模型的准确率相比,AlexNet 模型提高了2.4%。同时,AlexNet-Improved 模型的准确率比LeNet 模型高6.1%,比VGG16 模型高2.2%。AlexNet-Improved 模型的F1 值则比AlexNet 模型高3%,比LeNet 模型高7.5%,比VGG16 模型高2.7%。AlexNet-Improved 模型的4 个准确性指标都比其他3 个模型高,说明AlexNet-Improved 模型优于其余3 个模型。

表3 准确率、精确率、召回率和F1 值比较Table 3 Comparison of accuracy,precision,recall and F1 value

3 案例研究

为了研究AlexNet-Improved 模型在具体番茄病害图片识别中的效果,本节从网络中随机选取一些番茄病害图片为研究对象如图6,在图6a 中可以用肉眼观察到圆形或不规则形,有同心轮纹的病斑,很明显为番茄早疫病的症状。图6b 中,叶片上有圆形或近圆形病斑,边缘深褐色,中部灰白色,稍凹陷,并散生许多墨色小粒点,为番茄斑枯病的症状。图6c 中,叶片叶尖及边缘处有不规则的病斑,并呈萎蔫状,为番茄晚疫病的症状。图6d 中,叶片显著黄化褪绿,叶脉及其周围部分叶肉呈浓绿,为番茄黄曲病的症状。本节将这些图片按照本模型所需要的输入尺寸大小裁剪成224×224,然后进行归一化处理,使用Keras 中的model.load_weights()方法读取已经训练好的AlexNet-Improved 模型的权重文件,然后使用model.predict()方法预测得出番茄叶片的病害类型。

在图6中,图6a 被正确识别为早疫病的叶片,图6b 被正确识别为斑枯病的叶片,图6c 被正确识别为晚疫病的叶片,图6d 被正确识别为黄曲病的叶片。AlexNet-Improved 模型在4 个案例中表现出了很高的准确率,验证此前的实验结果。

图6 AlexNet-Improved 模型的案例研究Fig.6 Case study of AlexNet-Improved model

4 结 论

本文对基于卷积神经网络的种苗病虫害识别方法进行研究。使用近年来被大家广泛应用于图像识别领域的卷积神经网络,对AlexNet 模型进行改进,提出了AlexNet-Improved 模型,选取LeNet、VGG16 及原始AlexNet 模型作为对比网络模型,选择用9 种常见的番茄种苗病害类别和1 种健康类别数据进行训练及测试,得出网络模型训练过程中的准确率及损失值变化,画出4 个模型混淆矩阵,并由此计算出模型的准确率、精确率、召回率及F1 值。研究的主要过程包括配置网络训练所需软件环境,从网络上寻找合适的数据集并整理成适用于网络训练的格式,然后搭建网络模型,进行训练,对比原始模型的分类性能不断改进新模型。主要研究成果及创新之处为:原始的模型在番茄数据集上训练时出现了严重的过拟合现象,基于此采用数据增强将训练集中的图片随机翻转、裁剪,然后用Dropout 方法随机失活50%的神经元,得到了准确率为0.958、精确率为0.946、召回率为0.948 及F1 值为0.947 的AlexNet-Improved模型。最后使用AlexNet-Improved 模型对具体的番茄叶片进行识别,得到了很不错的识别效果,对原始的番茄病害识别模型数据集训练的过拟合现象有很大的改进。

5 讨 论

本文虽然实现了基于卷积神经网络的种苗病害识别方法研究,但还有一些地方需要改进。首先在对网络模型进行训练时,即使使用配置了GPU 的服务器进行训练,训练时长仍然是一个问题,今后应在现有的网络结构上进行改进和优化,加快其收敛速度,或者使用框架中自带的方法在模型收敛时便提早停止迭代,进一步提升模型的效率。其次,本模型局限于背景单一、病害单一的番茄病害叶片图像,在今后的研究中应继续采集番茄病害叶片图像,扩大数据集的数量与种类,特别是增加不同气候条件、不同拍摄角度、不同病害的番茄叶片图像,将复杂自然条件下的番茄病害叶片图像用于模型训练,进一步提高模型的识别性能。最后改进后模型准确率只比原始模型高出2.4%,说明改进的空间仍然很大,还需要从不同方向入手对该模型进行更深入的改进以达到更高的准确率。

猜你喜欢

准确率卷积神经网络
基于全卷积神经网络的猪背膘厚快速准确测定
基于神经网络的船舶电力系统故障诊断方法
基于图像处理与卷积神经网络的零件识别
MIV-PSO-BP神经网络用户热负荷预测
基于改进Hopfield神经网络的对地攻击型无人机自主能力评价
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨