基于卷积神经网络的玉米病害识别方法研究*

2021-03-31 01:24:52王国伟刘嘉欣
中国农机化学报 2021年2期
关键词:图像识别准确率卷积

王国伟,刘嘉欣

(吉林农业大学信息技术学院,长春市,130000)

0 引言

我国三大农作物之一的玉米是重要的粮食作物及产业原料,玉米产业的稳定健康发展,在粮食安全、农民收入增加及国家经济中起着重要作用[1]。伴随着玉米产量的增加,玉米病害种类的繁杂,怎样迅速正确的判断出玉米病害,并且选取对应的控制措施,对玉米生产至关重要。根据肉眼观察和经验判断很容易导致误诊,容易花费很多时间,并且无法在一定时间内诊断和治疗玉米病害,从而使玉米生产效率降低。随着计算机技术的发展,利用图像识别技术诊断和检测病害已成为诊断研究的一个重要领域[2]。在植物病害识别中,机器学习技术与图像处理相结合的应用越来越广泛。针对玉米常见的病害,毛彦栋等[3]提出一种SVM和DS证据理论融合方法、陈丽等采用遗传算法、张开兴等[4]采用图像处理技术和BP神经网络算法、张善文等[5]基于局部判别映射(LDP)算法和朱景福等[6]应用局部线性嵌入(LLE)算法对提取的病害特征进行约简,识别率依次为93.3% 、90.0%、93.4%、94.4%、99.5%。这些研究尽管已经获得了良好的效果,但是很难提取特征,也存在适应性低和鲁棒性差等问题。

近几年,深度学习在图像分割和图像识别方面取得了良好的效果,并且在特征提取中起着重要作用,它能够自动提取图像特征,所以在各个领域都有广泛的应用 (如人脸识别[7-8]、语音识别[9]和行人检测[10]等)。顾博等[11]利用GrabCut自动分割算法并融合基于显著性的SLIC算法对玉米3种病害进行识别和分割、许景辉等[12]利用迁移学习方法对玉米大斑病和锈病进行识别。在对其他植物病虫害的识别中也有很多研究学者将深度学习技术运用其中,并且获得了较好的效果。马浚诚等[13]将卷积神经网络应用在温室黄瓜病害识别方法研究中,对黄瓜病害进行识别。王艳玲等[14]将迁移学习应用到AlexNet卷积神经网络中对10类番茄叶片病害图像识别。蒋丰千等[15]提出了一种基于caffe框架下的卷积神经网络识别方法来识别生姜病害。杨晋丹等[16]选取一种基于混合池化的CNN-9模型对草莓叶部白粉病病害进行识别以及蒲秀夫等[17]建立了一种二值化卷积神经网络模型对多种植物病虫害进行识别。

因此,本文基于经典CNN的深度学习网络模型-LeNet,根据玉米病害图像数据本身的特点,进行改进和完善,构建了一个多层 CNN 网络结构玉米病害图像识别模型,以期提高模型的鲁棒性和泛化能力,实现对玉米病害准确、快速的识别。

1 材料与方法

1.1 玉米图像数据集

本研究所用到的数据集,是由 5 种不同玉米图像组成,包括玉米花叶病、灰斑病、锈病、叶斑病4种病害图像和玉米健康图像。5类玉米试验样本图像共采集1 967张,均在自然环境下。其中玉米花叶病600张,灰斑病265张,锈病350张,叶斑病400张,玉米健康352张。本文试验将玉米图像分为2组:训练数据1 574张,测试数据393张。将样本集进行编号分类并制作标签,分别用 0、1、2、3、4 表示对应的类别标签,标签0为玉米花叶病、1为灰斑病、2为锈病、3为叶斑病、4为玉米健康。图片大小尺寸统一修改为256像素×256像素,表1列出了具体的数据集数量。4类玉米病害示例及玉米健康图像见图1。

表1 5种玉米图像数据集Tab. 1 5 kinds of corn image data sets

(a) 花叶病(b) 灰斑病(c) 锈病

(d) 叶斑病(e) 玉米健康

1.2 试验方法

1.2.1 程序运行环境

本试验所有代码均是在框架:PaddlePaddle 1.6.0(python 3.7)框架下完成的。框架环境:GPU:Tesla V100.Video Mem:16GB;硬件环境:Intel(R) Core(TM)i3-4005U CPU @1.70G。Windows 7 64bit 操作系统。

1.2.2 卷积神经网络

卷积神经网络(Convolutional Neural Network,简称 CNN)[18-19]作为深度学习技术的一个代表,近年来取得了飞速的发展。该结构包括输入层、卷积层、池化层、全连接层和输出层。其中卷积层和池化层是用于提取图像特征的模型核心部分,全连接层可以在高层次特征域中以图像分类为主实现图像映射。

其中,卷积层包括大量卷积核, 经过计算卷积可获得输入图像的特征图,其公式[20]如式(1)所示。

(1)

池化层(也称为下采样层), 它实质上是通过图像处理来提取原始特征信息, 并且减小数据的空间大小和特征维数,其公式如式(2)所示。

(2)

式中:down(·)——下采样函数;

1.3 玉米病害识别模型结构与训练

1.3.1 模型结构

本文模型是在经典的LeNet模型基础上进行改进。LeNet这个网络虽然很小,但它的整体结构模型非常完整,传统的卷积、池化等操作都有涉及[21]。LeNet[22]网络原有3 层卷积、2 层池化、1 层全连接层。改进之后,本文CNN玉米病害识别模型网络结构见图 2,共有10个网络层,包含输入层、3个卷积层、3个池化层、2个全连接层和输出层。

图2 CNN玉米病害识别模型网络结构图Fig. 2 CNN corn disease identification model network structure diagram

另外,在第一层卷积和第二层卷积当中,加入局部响应归一化层(Local Response Normalization,LRN),能够提高模型结构的准确性和泛化能力,全连接模块都包含了dropout 层,并且在训练期间一些连接会被随机丢弃,丢弃概率设置为0.5。另外本文采用修正线性单元(ReLU)[23]作为激励函数,添加在卷积层之后,进行数据的训练。本文池化方式采用的是最大池化法(Max pooling),最后采用Softmax分类器,作为最后的分类输出层,输出类别为5。

因此,按照试验的具体要求,在本研究中提出的玉米病害识别模型的网络结构参数设置如表2所示。

表2 本研究模型参数设置Tab. 2 Parameter settings of this research model

1.3.2 模型优化

模型结构优化的实质是最大程度地减少损失函数的迭代次数。通过将自适应矩估计(Adam)(Adaptive moment estimation)替换传统的随机梯度下降(SGD)(Stochastic Gradient Descent)方法来进行模型的优化。Adam算法的实质是按照损失函数动态调整每个参数梯度的一阶矩估计和二阶矩估计。其特点是计算效率高,占用内存小,适用于解决大样本量和优化参数问题。

选择指数衰减法作为学习率更新方法。首先将网络训练的初始学习率设定为较大的值,使训练达到最优解的邻域,然后学习率逐渐降低。指数衰减法学习率的更新见公式(3)。

lr=lro·dr∧(⎣gs/ds」)

(3)

式中:lr——衰减后的学习率;

lro——最初学习率;

dr——衰减系数;

gs——目前的迭代次数;

ds——衰减步长(也就是说,学习率在每次指定的迭代次数后都会更新)。

采用交叉熵损失函数计算分类损失,添加L2正则化惩罚模型内部加权参数,避免模型的过拟合。函数如公式(4)所示。

(4)

式中:J——训练损失率;

θ——模型加权系数;

λ——正则项系数;

x——批量训练样本数;

p——预期分类概率;

q——预测分类概率。

此外,本文中的第一和第二全连接层添加了Dropout策略层,以防止过度拟合。Softmax函数用作最后一个全连接层中的最终输出。Softmax函数通常用作神经网络模型的分类器。通过函数运算,计算出输入样本被识别为特定类别的概率。经过一系列参数调整后,将获得对应于正确类别的最大概率值。

1.3.3 模型训练过程

本研究模型训练过程主要分为如下3个阶段: (1)创建数据集,建立与此研究训练相适应的玉米病害图像数据库,使用玉米病害图像作为模型训练下一阶段的数据源。(2)根据图2所示的模型思路,进行编译和模型参数设定。最大训练数设置为200轮,batch_size=50。(3)训练并且保存模型,执行器接收传入的程序。最后,采用反向传播算法逐层求导,在连续迭代训练过程中调整模型参数,得到最小收敛值当作最终输出。

2 结果与分析

2.1 不同激励函数对模型性能的影响

在神经网络结构中,这里的激励函数是为了保障网络输出是非线性函数而添加的。这里一般使用的几种激励函数是Tanh函数、Sigmoid函数和ReLU函数。与前两个函数相比,ReLU函数具有计算简单,收敛速度快的特点,函数如式(5)所示。

ReLU(x)=max(0,x)

(5)

图3显示了不同激活函数对识别准确率影响的试验结果。可以看出,当使用ReLU函数时,识别准确率最高。ReLU激励函数[24]由于采用了分段形式,所以它的前、后、导数形式都是分段的,使得优化学习和求解模型收敛问题更加容易。

图3 不同激活函数对试验产生的结果Fig. 3 Results of different activation functions on the experiment

2.2 有无Dropout层对模型性能的影响

训练模型的过程中,通常会发生过拟合现象。所谓的过拟合,具体显示为模型准确率在训练集上的表现良好,在测试集上的表现不佳,这意味着模型的泛化能力较弱,进而影响准确率。为避免训练过拟合,除了在数据处理过程中添加数据集之外,本研究还将Dropout层添加到模型中。在网络的每个训练期间,Dropout层会依据一定的概率将有些神经元权重临时置为0,减少神经元之间的依存关系,避免网络的过度拟合。在测试中,该程序共执行3次。测试结果如表3所示。

表3 Dropout层对试验的影响Tab. 3 Influence of Dropout layer on the experiment

2.3 网络层数,正则项系数及学习率对准确率的影响

为了确定最佳参数,得到最佳模型,对试验结果进行比较,包括网络层数的设置(卷积层、全连接层)、初始学习率的设置、正则项系数的设置等。其中,3 种全连接层设置(1 层、2 层、3 层),3 种卷积层设置(2层、3 层、4 层),3 组正则项系数设置(0、0.000 1、0.001),3 组初始化学习率设置(0.000 1、0.001、0.01)。试验测试结果见表4。根据表4中内容可以看出,在B2组实验中,当设置 2 个全连接层、3 个卷积层,正则项系数为0.000 1,学习率为0.001时最小训练损失率和最大训练准确率分为达到0.103 77和0.964 3,模型性能最优。

表4 参数设置与训练结果Tab. 4 Parameter settings and training results

2.4 Adam算法SGD算法比较

本文运用Adam算法代替传统的SGD算法。SGD算法通过保持单一的学习率(即alpha)来更新所有的权值,并且学习率在训练过程期间不会发生改变。而Adam算法通过计算梯度的一阶矩估计和二阶矩估计来设计针对不同参数的独立自适应学习率。在3个卷积层、2个全连接层、正则项系数为0.000 1、初始化学习率为0.001的总条件下,通过试验,来对比两种方法的差别。图4显示了在相同条件下Adam算法和SGD算法试验的训练准确率变化趋势。结果表明,当采用Adam算法时,模型的准确率更高。

图4 Adam算法和SGD算法训练准确率Fig. 4 Training accuracy of Adam algorithm and SGD algorithm

图5显示了在相同条件下Adam算法和SGD算法试验的训练损失率变化趋势。损失率越小代表着曲线越收敛,模型学习效果越好。根据图5能够看出,当使用Adam算法时,曲线收敛效果比使用SGD算法时更好,并且损失率更小。试验表明,当使用Adam算法优化模型时,模型效果更好,更为理想。

图5 Adam算法和SGD算法训练损失率Fig. 5 Adam algorithm and SGD algorithm training loss rate

2.5 验证结果分析

如上所述,在玉米图像中选取了120幅玉米花叶病图像、53幅灰斑病图像、70幅锈病图像、80幅叶斑病图像和70幅玉米健康图像作为固定的检测数据集。数据集中的所有图像均未参与模型的训练和识别。因此,通过识别准确性来检验本文模型的泛化能力,即模型对未参与训练的新图像是否同样具有高的识别准确率。试验结果表明,用未参与模型训练的新图像来检验模型的识别能力,仍然取得了理想的识别率。其中,由于锈病和玉米健康图像与其他玉米病害具有明显不同的特征,因此识别率达到了100%;叶斑病玉米病害图像在某些细节特征上与灰斑病有相似的细节特征,出现误判现象,识别准确率为93.75%。花叶病的玉米病害图像识别准确率为95.83%;灰斑病的玉米病害图像识别准确率略低,但也达到了90.57%。由于测试集图像与训练集图像具有相同的背景等因素,因此5类玉米图像识别的平均准确率达到96%,接近于训练准确率。

表6为测试集玉米图像识别后统计的混淆矩阵。其中,叶斑病和灰斑病在形状、颜色、纹理及局部细节上有相似之处,因此2类玉米病害均存在误判现象;花叶病和玉米健康虽不属于同一种,但也存在相似之处,因此花叶病图像有 5张被误判为玉米健康。

表6 测试集玉米图像识别后统计的混淆矩阵Tab. 6 Confusion matrix of the statistics of the corn image recognition in the test set

3 不同方法比较

为验证本文研究方法的可行性,将其与传统的CNN模型和基于CNN的VGG网络模型进行4种玉米病害和玉米健康图像识别的对比试验。试验主要从识别率、损失率和单幅玉米病害图像识别时间三个方面对模型性能进行评估,对比结果如表7所示。从中可看出,VGG模型的平均识别率为49.75%,平均识别时间为6.20 s,在对比的三种模型中识别率最低且识别时间最长;传统CNN模型的平均识别率为80.66%,平均识别时间为3.10 s,识别效果相对较好;本文提出的方法平均识别率为96.43%,平均识别时间为0.15 s,识别率最高,识别时间最短,识别效果最好。

表7 提取方法比较Tab. 7 Comparison of extraction methods

4 结论

本文基于经典CNN模型LeNet的基础上,构建了一个10层的玉米病害识别模型,完成对玉米花叶病,灰斑病,锈病,叶斑病,4类不同玉米病害图像和玉米健康图像的识别分类。在训练集和测试集上达到了一定的识别效果。

1) 基于深度学习的玉米病害图像识别模型可以自动提取出玉米病害特征,可以较好的对玉米病害图像进行分类,对玉米花叶病、灰斑病、叶斑病识别准确率分别为95.83%、90.57%、93.75%,对锈病和玉米健康识别准确率均为100%,平均识别准确率在96%以上,平均识别时间为0.15 s,无需人工的对输入图像进行特征提取,只需简单地标记类别即可,节省了大量人力和时间,提高了识别效率和精度。

2) 在模型优化方面,提出了用Adam算法代替传统的SGD算法,提高了识别率。 除此之外,使用指数衰减法调整学习率,并且将L2正则项添加到交叉熵函数中。为了防止训练过程中过拟合情况的发生,在网络层中使用Dropout策略和ReLU激励函数。

3) 与其他模型的图像识别率相比,该模型具有更强的识别性能和较好的实用性。可鉴别4种玉米病害和玉米健康图像。该模型提高了模型的泛化能力和鲁棒性,为接下来的植物病害研究提供了基础和理论依据。

因为本研究只是研究和分析了4种常见的玉米病害,所以必然存在一些限定性,为了进一步推广模型,并提高玉米病害图像识别的准确性和实用性,下一阶段将收集更多高质量的玉米病害图像,调整和优化模型。

猜你喜欢
图像识别准确率卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
健康之家(2021年19期)2021-05-23 11:17:39
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
基于Resnet-50的猫狗图像识别
电子制作(2019年16期)2019-09-27 09:34:50
高速公路图像识别技术应用探讨
从滤波器理解卷积
电子制作(2019年11期)2019-07-04 00:34:38
图像识别在物联网上的应用
电子制作(2018年19期)2018-11-14 02:37:04
高速公路车牌识别标识站准确率验证法
图像识别在水质检测中的应用
电子制作(2018年14期)2018-08-21 01:38:16