王 超,王春圻,刘金明
(1.黑龙江八一农垦大学科技处 黑龙江,大庆 163319;2.黑龙江八一农垦大学食品学院 黑龙江,大庆 163319;3.黑龙江八一农垦大学国家杂粮工程技术研究中心 黑龙江,大庆 163319;4.黑龙江八一农垦大学信息与电气工程学院 黑龙江,大庆 163319)
玉米是我国的重要农作物之一,近年来因气候破坏、环境污染等问题导致玉米在种植阶段面临病害类型多、破坏性强,防治难度大等诸多隐患,使得玉米产量及质量均在严重下降。同时由于农村劳动力相对短缺,针对玉米病害的判断不准确而导致病害防治更困难。
随着计算机技术的发展,深度学习在语音识别和视觉识别等领域引起了人们的广泛关注,相比于传统算法,选用深度学习方法具有较强的识别率、更高的可靠性和降低错误率等优势。因此,本文采用卷积神经网络来对玉米叶片病害进行识别。通过深度学习对玉米叶片进行病害识别,将深度学习可以更熟练的应用于农业,加强对病害进行精确的识别,丰富病害防治技术,提升农作物的质量和产量。
本文以大斑病菌、锈病、灰斑病玉米叶片和健康玉米叶片为研究主体,使用预训练网络AlexNet、GoogLeNet 和ResNet 识别病害玉米叶片进行对比实验,并与经典的机器学习算法做比较;同时通过对ResNet 模型和SVM、KNN、BP 神经网络进行对比,探究深度学习网络结构ResNet进行玉米叶片病害快速识别的可行性。
本文数据集来自于PlantVilliage数据集(https://plantvillage.psu.edu/)。试验选取玉米常见的灰斑病、锈病、大斑病菌感染玉米叶片和健康玉米叶片4类玉米图片,共计1529张。原始数据量如表1所示。
从网上获取到的图像数据由于尺寸大小不一致,不可以直接去使用,对于不同网络输入要求不一致,因此需要对图像尺寸进行调节,满足各类网络的输入要求,因此,有必要对原始数据进行如下预处理。处理后图像如图1所示。
为了防止网络训练过拟合,有必要提供大量训练数据。但是收集额外的数据会消耗大量的物质和人力资源,效率尤其低下。因此,本文对原始数据使用数据增强技术来扩充。数据增强主要包括角度,亮度,对比度增强等,增加有关数据。这次,使用ImageDataGenerator 类来创建图像生成器,然后写入数据增强的方式,本实验采用了角度变换、色度变换以及像素值变换3种方式完成数据集扩充,最后得到7645张图片数据,处理后的数据量如表2所示。
表1 原始数据量
图1 处理后的图片(统一格式,扩充)
表2 处理后数据量
Tensorflow 程序分为两个阶段,一个阶段是构建阶段,另一个是实现阶段。其中构建阶段是从创建op(operation)开始,在python中op的创建是由op构造器(ops constructors)创建的,然后作为一个node加入到graphs中。在执行阶段,首先得建立一个会话(Session),然后将构建好的graphs放到绘画中去执行。
下面是Tensorflow中各部分的基本使用:
(1)图(graphs)用于计算任务,构建神经网络的过程,但它们只是进行构建网络并不会进行计算。
(2)图是在会话(Session)的上下文中运行的。
(3)数据使用张量表示,张量维度由“阶”呈现。零阶是表示数字的标量;一阶是代表一维整体的向量。第二阶是代表二维整体的矩阵。张量是有序的并可以通过张量右边的方括号来确定。如,表示的是3阶。
(4)用变量保持状态。
(5)使用feed 和fetch 分配或获取任意操作(构造操作)的数据。
深度学习的特点是对数据进行非常多的重复训练,在先进的机器上迭代次数可能会达到几十亿次。图形处理器(Graphics Processing Unit,GPU)正好有这个专长,处理器专门处理诸如全局管理之类的复杂操作,而图形处理器专门处理对大量数据的简单且重复的操作,因此选择搭建基于GPU加速的Tensorflow框架。经试验证明,采用GPU加速的速度约为使用CPU处理速度的10倍左右。
ResNet引入了残差网络结构和ResNet网络的结构实现过程,每个ResNet网络包含输入部分、输出部分和中间卷积部分。通过这种结构可以把网络层加深,并且最终分类效果会更好。ResNet结构可以非常快速地加速神经网络的形成,并且极大地增加了模型的准确性。
本文的玉米叶片病害识别模型主要用卷积神经网络来构建,玉米叶片病害识别算法的流程如图2所示。
图2 玉米叶片病害识别算法流程图
本文使用迁移学习方法来完善ImageNet上的预训练网络(例如AlexNet,GoogLeNet,ResNet)。迁移学习能够自动化地提取更具表现力地特征,满足实际应用中的端到端需求。普遍情况下收集到的数据量不会像Imagenet一样大,并且很难形成具有足够泛化能力的网络。所以,在实际应用中使用迁移学习微调在ImageNet上预训练过的网络是一个有效而且快速的模型训练方法。
本文利用三个经典的卷积神经网络AlexNet、GoogLeNet 和ResNet 进行识别玉米叶片病害。玉米叶片类别为玉米大斑病菌、玉米灰斑病和玉米锈病、健康玉米叶片共4种,因此,ResNet、GoogLeNet和AlexNet的最后一个全连接层的神经元个数被修改为4。所有实验均在Python3.8.0 软件上实现,并使用了NVIDIA TITAN Xp GPU来加速训练。优化方法设置为随机梯度下降,“配置x”后的括号内的第一个数字代表批量尺寸,第二个数字代表epoch次数。同时设置了9种配置方式,其中,批量尺寸有16、32 和64 共三种,epoch 有8、16 和20 共三种,将9 种配置分别应用到3 种预训练网络上共得出了27 个网络模型。预训练网络性能对比实验的评价指标定为准确率,即分类正确的样本个数占样本总数的比例。不同参数配置下的网络分类准确率如表3所示。
由表3 可见,在配置5(32,16)下,使用预训练网络ResNet 得到了全局最优的分类准确率为92.82%。AlexNet 在配置7(64,8)上取得了最高分类准确率为89.51%,GoogLeNet在配置6(32,20)上取得了最高分类准确率为90.24%。因此,批量尺寸的增加以及epoch次数的增加都对各个网络的性能无特定的影响。
ResNet 模型(32,16)的形成过程显示了训练过程中训练损失的曲线和验证损失的曲线,如图3(a)所示;而在图3(b)中显示了训练准确率和验证准确率的曲线。结果发现,无论是在损失曲线上还是在准确率曲线上,验证集的曲线仍遵循与训练集相同的趋势,并且验证损失和训练损失之间的差异小于0.1。
表3 不同参数配置下的网络分类准确率
图3 ResNet(32,16)训练与验证损失曲线和准确率曲线
基于ResNet的模型在批量尺寸为32个、epoch次数为16时,达到了全局最优的分类准确率为92.82%,不仅证明出使用ResNet 作为预训练网络的优异性,还从侧面证明出了该模型具有良好的泛化能力。
对比了最优参数配置(32,16)ResNet 模型和支持向量机、k近邻、BP神经网络的分类准确率。最优参数配置(32,16)ResNet 模型的分类准确率为92.82%,支持向量机、k 近邻、BP 神经网络的分类准确率分别为72.34%、74.81%和73.98%,分别比最优参数配置(32,16)ResNet模型低了20.48%、18.01%和18.84%。可见,最优参数配置(32,16)ResNet 模型的分类准确率明显的优于支持向量机、k近邻、BP神经网络。
本研究以深度学习为基础,通过采集玉米灰斑病、锈病、大斑病菌感染叶片、玉米健康叶片共4 种叶片来进行识别研究。采用了ResNet作为主体模型提出玉米病害识别模型,并使用预训练网络AlexNet、GooLeNet 和ResNet迁移学习识别玉米叶片病害的性能对比实验,得出的结论是ResNet 模型在批量尺寸为32 个,epoch 次数为16 时取得了最高的分类准确率为92.82%,由此可见ResNet 模型相比于AlexNet模型和GoogLeNet模型能够达到更优的分类准确率。由此可见ResNet模型能够达到更好的准确率,可以更快的识别病害并且更优于传统机器学习算法。