APP下载

基于迁移学习的卷积神经网络玉米病害图像识别

2020-03-09许景辉邵明烨王一琛韩文霆

农业机械学报 2020年2期
关键词:准确率卷积病害

许景辉 邵明烨 王一琛 韩文霆

(1.西北农林科技大学机械与电子工程学院, 陕西杨凌 712100;2.西北农林科技大学旱区农业水土工程教育部重点实验室, 陕西杨凌 712100;3.西北农林科技大学中国旱区节水农业研究院, 陕西杨凌 712100)

0 引言

玉米作为我国三大农作物之一,是重要的粮食作物和工业原料,玉米产业的稳定健康发展在粮食安全、农民增收和国民经济中具有重要作用[1]。玉米病害直接影响玉米的产量与质量。玉米常见病害有十几种,病发处多为叶部、穗部和根部,其中尤以叶部的大斑病、锈病等最为常见[2]。及时准确地识别病害并进行控制,可将其危害降至最小。目前玉米病害识别主要依靠农林专家进行田间现场辨识,这种方法不仅主观性强,而且费时、费力、效率低下。因此,实现智能、快速和准确的玉米病害识别具有重要意义。

随着机器学习技术的发展与计算机数据处理能力的增强,结合图像处理的机器学习技术在植物病害智能识别上的应用越来越广泛,并且取得许多成果[3-6]。这些研究都是通过人工设计提取病害特征,虽然取得了较好的效果,但也存在特征提取困难、适应性差和抗干扰能力弱等问题。

田间自然环境下的玉米病害图像背景复杂,光照以及拍摄角度变化大,造成人工提取病害特征困难。在传统人工提取图像特征的方法中,无论是利用Canny算子从图像边缘提取,还是利用HIS分量分解颜色空间,都很难找到一个很好的阈值,把玉米病害特征与背景分割开。深度学习中的卷积神经网络在特征提取方面发挥着重要作用,它可以实现对图像特征的自动提取,并对图像的位移、缩放和扭曲等变形具有良好的适应性,已被应用于人脸识别[7-8]、遥感图像识别[9]和车辆自动驾驶[10]等领域。在农业领域,学者们也开展了许多相关的研究[11-15]。秦丰等[16]采用深度学习和支持向量机识别苜蓿叶部病害,孙俊等[17]、MOHANTY等[18]采用卷积神经网络对多种植物叶片病害进行识别,BRAHIMI等[19]基于深度卷积AlexNet网络模型将西红柿病害分为9种,高震宇等[20]将卷积神经网络应用在茶叶分选系统中。在上述研究中卷积神经网络虽取得较好的效果,但要得到较好分类识别性能的卷积神经网络模型还需要大量的数据。为此,龙满生等[21]、郑一力等[22]利用迁移学习,在小数据样本的情况下训练得到高性能的卷积神经网络模型,分别实现了油茶病害和不同植物叶片的识别。

卷积神经网络虽在植物叶片图像的特征提取与识别上有了一定应用,但上述试验样本多为简单的单一背景,大田实用性较差。对于复杂的田间背景图像,卷积神经网络则需要大量的训练样本学习提取图像特征的能力。而迁移学习使卷积神经网络在大数据集上已经训练得到了较好的特征提取能力,可以减小网络模型训练所需的样本数量。田间玉米病害图像背景复杂,并且目前没有大量的数据集。因此,本文在多角度光照变化较大的复杂背景下,拍摄田间玉米病害图像作为训练样本,基于VGG-16[23]网络模型,利用迁移学习方法,使用较小的训练样本训练识别精度较高的模型,以期实现田间复杂背景下的玉米大斑病与锈病的智能识别。

1 试验数据

1.1 图像数据采集

图像数据采集地点为陕西省杨凌区陵东村的一块玉米试验田,为了体现田间自然采集环境,采集时进行多角度拍摄;拍摄时间包括早晨、中午、傍晚等不同时刻;拍摄时的背景为田间复杂背景。利用杰锐微通HF800型工业摄像头,分辨率640像素×480像素,采集了玉米大斑病、锈病与健康叶片图像各150幅。为了丰富试验样本,利用网络搜集了3类图像样本各50幅。试验样本共计600幅,图像样本示例如图1所示。

图1 玉米叶片图像示例

1.2 图像数据预处理

首先从采集的图像中随机选择75%用于训练,25%用于测试。然后把原始的训练图像进行旋转变换(分别旋转90°、180°、270°)与翻转变换(上下翻转、左右翻转),把训练图像集扩充到5 400幅,作为训练集。最后采用双三次差值法把图像缩放到224像素×224像素。

2 玉米病害图像识别模型构建

2.1 卷积神经网络模型

深度学习中的卷积神经网络是一种流水线式多处理层的网络模型,它包含多个卷积层、池化层和全连接层。模型的训练为在损失函数的驱动下将误差反向传播至网络各层并对参数权值进行更新,模型的测试则为原始数据通过所有训练好的中间层映射到输出。卷积层的功能是对图像进行特征提取,每层包含许多个卷积核,卷积核与图像作用获得图像的局部信息。卷积层计算公式为

(1)

fm,n——维度为H×W的卷积核

i、j——张量的坐标值

m、n——卷积核的坐标值

池化层是使用池化函数对特征图进行压缩降维,对输入具有平移不变性,不仅能提高模型对图像发生位移、旋转等变换的泛化能力,还能减少模型的计算量和参数个数。常用的池化函数有平局池化、最大池化和随机池化等。若采用最大池化函数和2×2的池化窗口,则池化层的计算公式为

fpool=Max(si,j,si+1,j,si,j+1,si+1,j+1)

(2)

式中fpool——池化后的结果

si,j——特征图张量上(i,j)位置上的元素

全连接层是对卷积层与池化层提取的高维特征数据进行降维平铺,再进行非线性变换,最后将结果输入到分类器中进行分类。

2.2 迁移学习

迁移学习是将一个任务上训练好的卷积神经网络模型通过简单的调整使其适用于一个新的任务[24-26]。训练好的卷积神经网络的卷积层可以对图像进行特征提取,提取到的特征向量再输入结构简单的全连接层就可以实现较好的识别分类,所以经过卷积层提取的特征向量可以作为图像的一个更加精简且表达能力更强的向量。于是,训练好的卷积层加上适合新任务的全连接层将组成新的网络模型,对新的网络模型稍加训练就可以处理新的分类识别任务[27]。

迁移学习首先保持模型卷积层的结构不变,接着向卷积层载入训练好的权重与参数。然后设计适用于新任务的全连接层,接着用新设计的全连接层代替原本的全连接层,并与先前的卷积层组成新的卷积网络模型。最后用新图像数据集训练新模型,训练新模型有两种方式,一种方式为冻结卷积层,只训练全连接层,另一种方式为训练网络的全部层。

2.3 模型构建

本文使用VGG-16基本网络模型进行迁移学习,VGG-16是牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起开发的一种深度卷积神经网络模型,其模型如图2所示,包含了13个卷积层、5个池化层和3个全连接层,模型参数繁多,为了训练得到一个较好的分类识别网络模型,需要大量的数据集。

图2 VGG-16卷积神经网络模型

VGG-16在ImageNet数据集上完成训练,图像数量高达100多万幅。然而玉米病害的图像目前还没有足够大的数据集,难以把网络模型训练到理想的分类效果。因此可以利用迁移学习的方法来实现玉米病害的小数据集分类任务。保留图2中卷积模块5之前的模型结构,然后重新设计全连接模块。改进后的全连接模块如图3所示。

图3 改进后的全连接模块流程图

输入图像经过卷积和池化模块1~5运算可展开成一个1×25 088的向量,通过全连接层1降维到1×256。之后进入非线性激活函数,常用的激活函数有sigmoid函数、tanh函数与ReLU函数,模型采用ReLU激活函数。ReLU函数相对于前两个函数具有计算简单、收敛速度快等特点,其表达式为

(3)

式中fReLU——ReLU函数

t——ReLU函数的自变量

接着进入Dropout层[28],Dropout层是在网络的每次训练过程中,按照一定的概率将一部分神经元权重暂时置0,可以缓解神经元之间的协同适应,降低神经元间的依赖,避免网络的过拟合。然后进入全连接层2把向量的维数进一步降到1×3。最后利用Softmax函数计算得到最终的分类概率,其计算公式为

(4)

式中vr——向量中第r个分量

pr——第r个分量的分类概率

k——分量的序号

用新设计的全连接层代替VGG-16的全连接层模块构成一个新的网络模型,再把利用VGG-16已经训练好的卷积层权重与参数迁移载入到上述新构建模型的卷积层中,最后用收集到的玉米图像对新模型进行训练,训练完成的新模型即可对玉米病害图像进行检测与识别,具体流程如图4所示。

图4 基于迁移学习的玉米病害图像识别方法流程图

3 模型训练与试验结果分析

3.1 试验环境

试验在Python 3.6.7、Tensorflow-GPU 1.8.0软件环境下完成。硬件环境中CPU采用Intel core i7-6500U,主频2.5 GHz;GPU采用Nvidia GeForce 940MX,2 GB显存。

3.2 试验设计

综合考虑硬件设备的性能以及训练效果,试验每批次训练与测试都是15幅图像,即batch size设置为15,动量参数设置为0.9。在不同影响因素下对网络模型进行训练,包括全新学习与两种不同的迁移学习训练方式(冻结卷积层,只训练全连接层与全部层)、不同学习率(0.01、0.000 1)以及图像数据是否扩充,共计12组试验。

3.3 试验结果与分析

观测各组试验发现,若训练收敛,则迭代训练43 200次后训练的准确率与损失函数值都趋于稳定,其中训练准确率变化范围在1个百分点以内,损失函数值变化范围在0.01以内。因此选择迭代训练43 200次的模型对训练样本和测试样本的准确率进行评估并保存,结果如表1所示。为了记录试验过程中的数据,每训练一轮(遍历所有训练图像)便对训练样本和测试样本的准确率进行评估并保存。

表1 不同因素下模型训练与测试的准确率

3.3.1学习率对模型的影响

原VGG-16在ImageNet数据集上的训练初始学习率为0.01。针对本试验样本,当学习率设置为0.01时,由表1可知,各组试验的训练准确率与测试准确率都在33%左右,而在3种叶片中随机识别的准确率为33.33%。为找到出现这种结果的具体原因,在学习率为0.01的情况下增添多次试验并记录每次试验中每轮训练的损失函数值,发现不同的卷积层初始参数会出现3种损失函数值。第1种情况如图5a所示,损失函数值一直波动,不能够减小收敛。第2种情况如图5b所示,损失函数先收敛,然后训练到某轮后发生梯度爆炸。第3种也是发生梯度爆炸,而与第2种情况不同的是梯度爆炸发生在开始训练时。第1种与第2种情况发生在全新学习训练方式中,过大的学习率导致全新学习无法正常训练,第3种情况发生在两种迁移学习训练方式中,过大的学习率引起损失函数值梯度爆炸,参数更新过快,破坏迁移学习中原本训练好的权重信息,使迁移学习失去意义。当学习率设置为0.000 1时,3种训练方式均能取得较好的效果。

图5 损失函数值变化曲线

3.3.2图像数据扩充对模型的影响

通过表1可知,在学习率为0.000 1时,相比较于原始图像数据集,扩充图像数据作为训练集对3种训练方式的测试准确率分别提高了1.34、2.66、4.00个百分点,表明图像数据扩充可以提高测试的准确率。 图像数据扩充前后全新学习与迁移学习训练全部层的训练准确率都为100%,而迁移学习只训练全连接层的训练准确率却下降了0.08个百分点,这是因为数据扩充增加了数据的多样性,仅仅训练改变全连接层参数难以让模型适应多样的数据。但迁移学习只训练全连接层的测试准确率却有所提高,表明扩充图像数据提高了模型的鲁棒性。

数据扩充虽提高了模型的鲁棒性,但提高效果最为明显的迁移学习训练全部层也仅提高4个百分点。为研究迁移学习训练全部层在不同扩充图像情况下的泛化能力,对原始数据集、旋转扩充数据集、翻转扩充数据集以及旋转翻转共同扩充数据集进行测试,训练准确率与测试准确率如图6所示。3种不同扩充情况下的训练准确率与测试准确率相差不大,原因是数据图像采集时为多角度拍摄,旋转和翻转操作对图像的质量改变不大。又由于迁移学习使模型在大数据集上训练得到了较好的特征提取能力,弱化了数据集在数量扩充上的作用。但3种扩充数据较原始数据集的测试准确率有所提升,原因是原训练样本集只包含450幅图像,训练样本数量较少,数据扩充为模型训练提供了必要的数据量。表明迁移学习虽弱化了数据扩充作用,但一定数量的训练集还是必要的。

3.3.3学习方式对模型的影响

在学习率为0.000 1、扩充图像作为训练集的条件下,3种训练方式的训练准确率与测试准确率如图7所示。由图7a可知,全新学习训练方式的收敛速度最慢,并且具有较大的波动。迁移学习只训练全连接层的收敛速度较全新学习快一些,最后趋于平稳,迁移学习训练全部层收敛速度最快,仅训练十几轮训练准确率就达到了100%。表明迁移学习缩短了模型收敛时间。

图6 不同扩充方式下的训练与测试准确率

图7 不同训练方式下训练与测试准确率曲线

由图7b可知,测试准确率最低的为迁移学习只训练全连接层,原因是迁移参数权重的卷积层模块虽然可以提取图像的特征,但玉米病害图像数据与ImageNet图像数据存在较大差异,仅训练改变全连接模块,不能达到理想的效果,而迁移训练全部层可以明显提高测试的准确率。

3.3.4模型检验

为了便于应用,用Python将脚本程序开发成图形用户界面,为扩大待检测玉米病害图像的来源,设计了3种图像来源方式,分别为:用requests库通过输入的网址爬取网络图像、用PyQt5库中的文件选择功能选取本地图像以及通过OpenCV库调用摄像头拍摄的图像。在界面中选择训练好的模型以及通过上述3种方式获取的玉米病害图像,载入待检测的图像即可进行检测。现选择迁移学习训练全部层训练的模型,选择1幅玉米大斑病图像进行检测,结果显示图像为大斑病的概率为99.87%,如图8a所示。再选择1幅玉米锈病图像进行检测,结果显示图像为锈病的概率为100%,如图8b所示。为检验模型的识别精度与泛化能力,从网络搜集3种病害图像各50幅,3种图像的查准率与查全率如表2所示,平均查准率与查全率分别为93.42%与93.33%,结果表明通过迁移学习训练全部层训练的模型具有较好的应用效果。

4 结论

(1)与全新学习相比,迁移学习缩短了训练时间,提升了模型的识别性能,在玉米病害图像识别方面具有较好的识别精度。

(2)迁移学习弱化了数据扩充的作用,但一定数量的训练集还是必要的,对数量较小的训练数据集进行必要的数据扩充可以提高模型的识别性能。

(3)在全新学习和迁移学习中,学习率0.01训练效果不理想。在全新学习中,学习率较大会导致损失函数值振荡或梯度爆炸,无法达到训练效果;在迁移学习中,学习率较大会导致参数更新过快,破坏迁移学习中原本训练好的权重信息。

(4)VGG-16原训练样本与玉米病害样本差别较大,在迁移学习中,若保持卷积层模块的权值参数不变,只训练全连接层模块,测试集的准确率为83.33%,而训练模型全部层模块,在测试样本中的准确率为95.33%。表明训练全部层模块,模型能够更好地提取玉米叶片病害图像的特征。

图8 可视化界面检测结果

表2 模型的识别精度

(5)在田间复杂背景下,卷积神经网络的迁移学习对玉米病害图像识别具有较好的应用效果。

猜你喜欢

准确率卷积病害
早春养羊需防六大病害
小麦常见三种病害咋防治
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
葡萄病害周年防治历
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
果树休眠期咋防病害