基于卷积神经网络的菜心病害程度识别算法

2021-07-21 07:50:46庚,孙
顺德职业技术学院学报 2021年3期
关键词:菜心卷积病害

王 庚,孙 盛

(1.广州铁路职业技术学院,广东 广州 510430;2.广东工业大学 计算机学院,广东 广州 510000)

菜心为十字花科芸薹属,一、二年生草本植物,在长江以南的地区被广泛种植和食用[1]。菜心是广东省栽培面积最大的蔬菜品种,亦是出口港澳及东南亚国家的主要蔬菜品种[2]。作为广泛种植的蔬菜,一旦发生病虫害,就会给种植户造成巨大的损失。病虫害严重影响着作物的产量和质量,病虫害程度检测可以在发生大规模虫害前提供预警信息,可以为相关部门提前采取措施提供决策支持。

近年来,越来越多图像分类算法技术应用于农作物病虫害的程度检测中。如:吴华瑞提出了一种基于深度残差网络的番茄叶片病害识别方法[3],马浚诚等设计了一种温室黄瓜霜霉病诊断系统[4],丁小奇针对大白菜和马铃薯叶片,构建了基于特征检测的蔬菜叶片病虫害识别模型[5]。在图像分类的算法中,比较经典的算法有k 最近邻算法(KNN)、支持向量机(SVM)、BP 神经网络[6]。但是,随着近年来深度学习及迁移学习等新的技术的迅速发展;深度学习模型,例如:卷积神经网路,在分类任务中具备更加优异的性能。因此,本文采用LeNet-5 分类网络设计并实现一个菜心病害程度识别算法。

1 数据采集及预处理

1.1 数据采集

通过前期调研和向蔬菜基地农民的咨询,于2019 年3 月至12 月期间,进行了3 次集中图像采集。共采集了1 200 张图像;采集设备相关信息见表1。

表1 菜心图像采集信息

在数据集中存在的病害因素基本上都是虫害。根据与农民的咨询,按菜心的虫害程度分为三类,分别是轻度(mild,包括无病)、中度(moderate)和重度(severe)。轻度:叶片虫洞低于10 个或者没有;中度:叶片虫洞低于20 个但大于10 个;或叶片虫洞大于10 个,但虫洞面积占叶片面积比重略大。重度:叶片虫洞大于20 个;或叶片虫洞小于20个,但虫洞面积占叶片面积比重较大;或叶片虫洞面积占叶片面积比重特别大。病害程度分类示意图见图1。

图1 菜心病害程度分类(轻度、中度、重度)示意图

通过人工判别制作数据集,同时,为了降低计算复杂度,将图像数据从2 448*2 448 裁剪成256*256。轻度病害图像样本共计400 个,见图2。

图2 菜心病害图像(轻度)数据集

1.2 数据预处理

步骤1:图像裁剪。在拍摄的图像中,有很多图像样本包含过多叶片,会影响数据有效特征的数量,因此,需要人工进行裁剪,如图3。

图3 图像样本裁剪

步骤2:训练集分批。本文算法是基于TensorFlow平台实现,而在TensorFlow 中,数据的计算格式是以批(batch)的形式进行训练,而批的大小(batch_size)可以自由定义。在TensorFlow 中,整合数据的方式大概有两种,一种是将数据处理并打包成tfrecord 格式,另一种将数据处理并打包成Dataset 类的格式。前者是整理成一个文件,并放置在硬盘中,后者则是在训练的过程中生成Dataset 类的实例,所以后者整合的数据是存放在内存中的。因此,如果数据集庞大的话,应该运用tfrecord 的方式,如果数据集不大的话,可用Dataset 的实例。由于本文数据集规模较小,因此采用Dataset 实例。

同时,还可调用tf.image.per image standardization()方法对图像像素数值进行标准化处理。当数据集被整合成Dataset 的实例后,可以对其进行顺序随机处理,然后再读取生成的Dataset,并分批送进模型进行训练。

步骤3:数据扩增。在深度学习模型的训练过程中,通常会采用数据扩增策略,完成数据集的样本数量扩充,使得模型的拟合性能更好。常用的方式有:翻转、旋转、缩放比例、裁剪和对比度调整等。本文采用随机调整图片对比度的方式来扩充数据集。

2 基于LeNet-5 的菜心病害程度分类算法

2.1 经典分类模型的分析和对比

在基于卷积神经网络模型的分类算法中,最经典的模型有LeNet-5、VGG-16、GoogLeNet 等。VGG-16 和GoogLeNet 是ImageNet 挑 战 赛(ILSVRC14)的第一名和第二名。VGG-16 网络的一大特点是通过3×3 滤波器的组合与堆叠,在输入域内提取出更多细小的特征。通过构建和组合多个3×3 卷积核,可以获得5×5 或7×7 卷积核一样的计算效果,连续几个结构较小的卷积核比单个结构大的卷积核可能具有更好的非线性效果[7]。GoogLeNet 的网络深度有22 层,但模型参数比AlexNet 和VGG 小很多,GoogleNet 参数为500 万个,该模型在AlexNet 的基础上引入 Inception 结构代替了单纯的卷积+激活的经典组合模式。全连接层全部替换为简单的全局平均 pooling,使得网络参数量更少。升网络性能最直接的办法就是增加网络深度和宽度,深度指网络层次数量、宽度指神经元数量[8]。在实际应用中,VGG-16 和GoogLeNet 有以下特点:1)参数过多,在模型的训练容易产生过拟合;2)巨大的网络参数量,对于计算和存储资源要求较高,给用户带来较大的硬件投入成本负担;3)较深的网络层数容易出现梯度弥散。而LeNet-5 网络大约仅有6 万个参数,属于规模较小的网络,其训练过程的复杂度远远低于VGG-16 和GoogLeNet,已经足够处理本文待解决的问题,因此采用了LeNet-5 网络模型完成菜心病害程度分类任务[9]。

2.2 LeNet-5 网络模型搭建

根据LeNet-5 的原始模型,首先实现一个简单的分类网络,包含两组卷积和池化组合,两层全连接层和一个softmax 分类层。如果输入为[n,256,256,3]的图像矩阵,其中n是batch size,256 表示训练样本像素为256×256,3 表示数据是三通道的rgb 图像;第一个卷积层含有64 个大小为3×3×3 的滤波器,步长为1,padding 对边缘补0,该层产生的输出为[n,256,256,64]的矩阵。接着,此卷积层的输出进入第一个池化层(kernel 为3×3,步长为2,padding也对边缘补0)后,产生新的输出为[n,128,128,64]。同理,再经过一次卷积(32 个3×3×64 的滤波器,步长为1,padding 取0)和池化后,可以得到输出为[n,64,64,32]的矩阵。随后,矩阵数据进入第一次全连接层,权重的维度为单个像素矩阵平整化的大小,此处即为[131 072,128],矩阵数据将平整化,从而得到[n,128]的矩阵。再经历一次全连接层[128,64]进行降维,得到[n,64]的矩阵。最后,通过softmax 层实现线性回归,计算出每一类的得分,根据菜心的病害程度有三个分类,所以这个层输出为[n,3],即输出为n个三种类别的概率分布。网络的细节见图4。在这个架构中,dropout 的概率为0.5,学习率为0.000 1,激活函数为ReLU 函数,同时在池化后执行lrn()操作,优化器使用的Adam,训练集的batch size 为25。网络模型结构见图4。

图4 LeNet-5 网络结构模型

同时采用局部响应归一化(LRN,Local Response Normalization)技术,对局部神经元的活动创建竞争机制,使其中响应比较大的数值变得相对更大,通过抑制其他反馈较小的神经元,增强模型的泛化能力。ReLU 函数所具有的线性及非线性性质使得不需要输入归一化来防止达到饱和,但是,局部归一化方案可提高网络的泛化能力[10]。在上述参数设定的情况下,将网络模型结构记为Model1,分类的精确度可以从0.35 左右升至0.50~0.55 之间,但是训练很快就出现了过拟合的现象,如图5a 所示。

2.3 LeNet-5 网络模型调优

为了减弱过拟合现象,必须对网络模型进行调优。不同的网络结构在训练中可能产生不同的过拟合,如果采取取平均操作,可能让一些“相反的”拟合现象抵消。本文采取了Dropout 策略来减弱过拟合,整个dropout 过程,本质上相当于对很多个不同的网络结构取平均。在训练数据的过程中,本文设定的dropout 概率为0.5,将一部分中间层的单元暂时从网络中关闭,通过把该单元的输出设置为0,使其不工作,来避免拟合。DropConnect 与Dropout 不同的地方,是在训练神经网络模型过程中,它不是改变隐层节点的输出数值,而是将节点中的输入值,这种策略会将每个与节点相连的输入权值以1-p 的概率变成0。DropConnect 实质上可以去除复杂模型中的大量冗余结构,会增强模型的泛化能力。

此外,学习率作为另外一个重要的超参数,控制了网络模型训练和优化的速度。如果学习率数值太小,梯度下降的速度会变得很慢,使得模型收敛的时间变长;但是,如果学习率过大,梯度下降的步长太大,又可能会导致模型训练跳过最优解。在梯度下降的过程中,优化器可以改变学习率,同时也可以人为的设定学习率。因此,有必要对原始模型参数进行调整,通过改变学习率和网络层数,得到一个新的网络:记为Model2。Model2 是在Model1的基础上,增加了两组卷积和池化层,即四组卷积和池化层。通过改变网络结构,分类的精度从0.35左右逐步升至0.60~0.65 之间,验证精度有较大提升,见图5b 所示。

图5 LeNet-5 网络模型训练过程

3 实验结果及分析

3.1 实验环境搭建

系统开发采用了Python 语言,网络模型的搭建和预测都是基于TensorFlow。保存训练模型有两种方式,分别是pb 文件或ckpt 文件。由于pb 文件具有语言独立性,因此采用pb 文件作为模型的保存方式。此外,其他语言和深度学习框架都可以读取pb文件,训练好的pb 文件还可以迁移到其他框架。以pb 文件形式保存的模型参数,其相关变量为固定的,模型体积得到了大幅的缩小。

界面开发采用的是跨平台GUI 工具包PyQt。PyQT 开发的界面可以在Qt 支持的各个平台上运行,包括三大桌面系统Windows,Mac OS 和Linux 以及两个移动系统iOS 和Android[10]。因而,本系统界面可以在多种操作系统环境下运行。

3.2 网络模型预测结果及分析

通过读取待预测的菜心图像,选择已保存的训练好的模型的pb 文件进行预测,返回分类的结果和对应概率分布。用户选择任意的菜心图像后,可以自行选择已训练好的网络模型,然后提交给pb 文件对应的网络模型中进行预测;为了方便用户灵活选择和实验,系统预先设置了4 种模型参数配置:pb_1,pb_2,pb_3,pb_4;同时,也可以支持用户进行二次开发,根据需求自行训练模型。预测结束后,显示结果以及各分类的概率,对应概率最大的那个类别就是菜心样本对应的病害程度。详细过程见图6。在图6 中,用户选择的样本为一个病害程度严重的菜心图像,预测结果severe 的概率最大,为99.029 3%,因此该菜心的病害程度为严重。

图6 系统预测界面及结果输出

4 结语

运用卷积神经网络的模型,构建一个小规模的菜心图像训练集,将菜心病害程度划分成三个类别。针对收集数据样本有限的问题,采用数据扩增技术完成训练集的扩充。在得到初步结果后,完成模型训练和参数调优;最后,结合PyQT 技术完成一个跨平台的用户界面。由于时间和经济成本的限制,图像样本训练集数量仍有待进一步扩增;后续研究中,可以继续扩充图像样本库;同时,结合农业专家的知识,在移动互联网环境下,给菜心种植农户提供精确的病害鉴别服务,可以较早的采取病害处理措施,降低病害导致的经济损失。

猜你喜欢
菜心卷积病害
连州菜心秋种忙
源流(2022年11期)2023-01-29 11:26:20
早春养羊需防六大病害
今日农业(2022年3期)2022-06-05 07:12:02
小麦常见三种病害咋防治
今日农业(2021年8期)2021-11-28 05:07:50
基于3D-Winograd的快速卷积算法设计及FPGA实现
葡萄病害周年防治历
烟台果树(2021年2期)2021-07-21 07:18:28
果树休眠期咋防病害
今日农业(2020年19期)2020-11-06 09:29:38
从滤波器理解卷积
电子制作(2019年11期)2019-07-04 00:34:38
基于傅里叶域卷积表示的目标跟踪算法
最好的老年人食谱——牛肝菌扒菜心
一些菜心,一些故事
西湖(2016年9期)2016-05-14 08:44:03