基于改进卷积神经网络的复杂背景下玉米病害识别
2021-04-13樊湘鹏周建平
樊湘鹏 周建平,2 许 燕,2 彭 炫
(1.新疆大学机械工程学院,乌鲁木齐 830047; 2.新疆维吾尔自治区农牧机器人及智能装备工程研究中心,乌鲁木齐 830047;3.新疆大学工程训练中心,乌鲁木齐 830047)
0 引言
农业病虫害胁迫对作物生长造成不可逆转的影响[1],每年因病虫害导致的粮食损失接近粮食总产量的1/3,对粮食安全造成严重威胁。采取预防措施并不能彻底消除病虫害,只有及时喷洒农药才能控制病害的蔓延,并降低损失。在不影响病害防控效果的前提下,精准喷施农药可节约近60%的药量[2],并可解决因农药残留而导致的环境生态恶化和作物品质降低的问题。精准识别作物病害类型、判定危害程度是选择农药的关键,对赢得植保作业时机和精准施治至关重要[3],已成为大田生产管控智能化的重要目标[4]。近年来,机器视觉结合图像处理技术通过在复杂背景中分割目标区域、提取单个或多个组合特征来识别病害,解决了人工识别易误判、依赖专家经验、耗费人力和物力的问题[5-9]。但手工提取特征过程繁琐、耗时,且最终的识别精度有限,因此在实际应用中严重受限[10]。
自从HINTON等[11]提出深度学习(Deep learning,DL)概念后,针对深度学习的研究和应用层出不穷。DL已成为解决不同领域、不同场景、不同尺度目标检测问题的主流算法,并取得了较优的成果[12]。DL对特征的提取与传统方法有着本质的不同,它依靠不同的功能对数据特征进行转换和表示,能适应密集型图像计算任务。将DL引入农业信息感知领域,可大大降低工作量、提高效率[13-14],为作物表型病害识别拓展全新的研究视角[15]。
基于卷积神经网络(Convolutional neural network,CNN)的作物病害识别具有较高的准确率[16-21],但所采用的样本数据都是在受控条件下采集或以简单背景图像作为研究对象,训练得到的网络不具备消除背景干扰的能力。而在大田环境中,光线变化、叶片相互遮挡、土壤和杂草等复杂的背景因素使模型推广应用的准确性和泛化性大大降低。玉米是重要的粮食作物,由各类真菌导致的病害,如炭疽病、热带锈病、南方锈病、黑星病、小斑病、大斑病、锈斑病、条纹斑病、褐斑病等[22],严重威胁玉米的品质和产量。本文以田间玉米9种病害为研究对象,提出一种基于改进卷积神经网络的玉米病害识别方法,根据获取的图像特点对其进行样本扩增、缩放、背景去除和局部细分割等处理,探究影响模型应用效果的数据集方面因素,利用优化后的识别模型设计基于移动端的病害识别系统,并进行田间验证。
1 数据与方法
1.1 数据采集与数据集建立
实验中用到的图像数据采集自乌鲁木齐农场玉米种植基地,利用尼康D750型相机作为采集设备。为了使采集到的图像更具代表性,分别在晴天、阴天、多风天气条件下,于早、中、晚等不同时刻进行多角度拍摄,拍摄时背景含有相互遮挡叶片以及秸秆、杂草和土壤等复杂条件,连续拍摄5 d,获得500幅图像。实验样本不够丰富会造成田间环境的识别率比实验室条件下降低约30%[23]。为丰富样本量,在Digipathos网站(https:∥www.digipathos-rep.cnptia.embrapa.br/)挑选能够反映在实际应用中出现的众多复杂情况的玉米病害样本图像276幅。在采集过程中使得各类病害的样本数量尽量保持均衡[24]。将源于Digipathos网站数据库的玉米病害图像数据子集和田间采集图像共同构成数量为776的样本集。通过分析样本数据可以得到玉米病害的识别难点主要在于:①背景复杂且差异比较明显。②不同的病害类型之间的表型症状之间有一定相似性。③同一种病害的不同发病阶段的表征具有一定的差异性。部分样本如图1所示。
1.2 图像数据预处理
为了有效提升数据品质、增加数据特征多样性并测试卷积神经网络在较多局部信息条件下的表现效果,对病害图像集进行预处理操作,包括数据标注、数据增强、背景去除、细分割和归一化处理等。卷积神经网络需要进行有监督的训练,须标注才能用于训练,请专业技术人员比对确认,按照PASCAL VOC2007标准,利用LabelMe工具进行标注和存储。数据集的增强采用仿射变换、镜像变换、透视变换、裁剪缩放、颜色抖动、调整亮度和对比度、添加噪声等方式对图像进行处理,将相应的数据集扩充到原来的6倍。本文将扩增后的图像分别统一设置为128像素×128像素、256像素×256像素和512像素×512像素作为输入图像进行对比实验。图像背景去除是为了去除图像信息中的噪声信息,以便模型在训练过程中能够按照目标区域的特征信息提取并学习。图像细分割是指将原始样本细分割成包含个体病变或局部症状区域的较小图像。对原始样本进行细分割后的部分图像如图2所示,对图像进行预处理后的样本数量及标注情况如表1所示。
表1 预处理后样本情况Tab.1 Profile of samples after preprocessing
对卷积神经网络而言,将数据集归一化是梯度下降过程的要求,能够防止梯度爆炸,加速网络收敛。样本的归一化通过图像中像素点总数的均值μ和方差σ计算,即
(1)
式中x——第i个像素归一化后的像素值
a——大于0的微小常数,保证分母大于0
1.3 卷积神经网络构建
CNN是深度学习的经典算法之一,通过模拟人脑结构来学习大量复杂的输入与输出之间的映射关系。CNN主要包含输入层、卷积层、激活函数、池化层(采样层)、全连接层和输出层,相邻层节点之间采取局部连接和权值共享,减少网络各层之间的连接和参数,通过不同的卷积核对图像卷积提取特征,借助Softmax分类,实现端到端的目标检测输出[25]。基于卷积神经网络的病害识别应用示意图如图3所示。在CNN的输入层可直接将图像作为原始数据输入。卷积层(Convolutional layers, CL)对输入特征图进行卷积计算,是CNN特征提取关键过程之一。特征提取效果与卷积层的卷积核数量有关,本文选取5个卷积层Conv1、Conv2、Conv3、Conv4、Conv5,卷积核尺寸均设为5×5;Conv1、Conv2、Conv3、Conv4、Conv5所包含的卷积核个数分别为64、64、128、128和256。Conv2中padding为1,对边界进行扩充。池化层(Pooling layer, PL)中的下采样操作可以在提取有效特征的基础上减少数据运算量,减小图像尺寸忽略无关信息,提高训练效率。本文构建4个池化层,选择尺寸为2×2、步长为2的最大池化方式(Max-pooling)向下采样,Max-pooling通过在图像传递中的内核窗口上获取最大值来执行,不仅能提取关键特征,还能降低计算复杂度减小运行时间[26]。激活函数的作用在于判定每个神经元的输出是否达到阈值。本实验中,除输出层外均采用修正线性单元激活函数(Resctified linear units, ReLU), ReLU函数梯度计算简单,还可以加快网络的训练过程。全连接层(Fully connected layers, FCL)的每个神经元和前一层的神经元通过权值进行前向传播加权计算得到下一神经元输入,本文网络结构中包含2个全连接层FCL1和FCL2,其中FCL1包含500个神经元,FCL2包含100个神经元。输出层采用Softmax函数提取对输出病害类型的概率进行计算并实现分类,从而得到识别结果。在本实验中,病害类型共有9种,因此输出层节点数设为9。
1.4 卷积神经网络算法优化
为了进一步提高卷积神经网络对玉米病害的识别率,对建立的卷积神经网络进行优化。在1.3节所述中,网络参数量大、结构复杂,在训练数据集不是特别大的情况下,容易发生过拟合现象。为避免模型过拟合,降低复杂背景因素噪声影响,保证模型对新数据依然有良好的分类效果,采用L2正则化方法和Dropout算法对CNN进行优化。
1.4.1L2正则化算法
L2正则化的思路是将正则化项(惩罚项)与损失函数相加,通过限制模型中参数数量最多的权重ω,防止模型任意拟合训练集当中的复杂背景等噪声信息,降低模型复杂度。假设用于模型在训练过程中的原始损失函数为J0(ω,b),均方误差损失函数的表达式为
(2)
式中m——样本数据集元素数量
L——代价函数
y′(i)——神经元输出实际值
y(i)——神经元的输出期望值(真值)
b——神经元传递过程中的偏置量
加入正则化后优化时不是直接优化J0(ω,b),而是优化J0(ω,b)+cλR(ω)。R(ω)是正则化项或惩罚项,描述的是模型的复杂程度,计算式为
(3)
式中ωj——第j个神经元的权值
l——全连接层的数量
L2正则化后的“新”损失函数为
(4)
式中λ——正则化参数
实验利用L2正则化方法优化全连接层和输出层,经交叉验证,λ取0.005。
1.4.2Dropout算法
作为一种简单且高效的优化算法[27],Dropout策略的作用在于根据设定概率使网络训练过程中的神经元输出值随机丢弃,即让一部分神经元“失活”,避免网络训练过程中产生过拟合现象。在本实验中,在模型的卷积层加入Dropout策略,Dropout参数值设定为0.25。
1.5 实验平台与训练方法
整个实验的运行环境为Windows 7(64位)操作系统,计算机内存16 GB,搭载Intel(R) Xeon(R) CPU E5-2630 v4 @2.20 GHz处理器,Anaconda 3.5.0,CUDA 8.0编程平台,cuDNN 6.0,基于开源深度学习框架TensorFlow开发环境,使用Python 3.5.6编程语言,实验包括模型训练、测试和不同方法之间的对比验证。实验中将对原始图像数据增强后样本的80%(3 725幅图像)用于训练,剩余20%(931幅图像)用于测试。本文采用随机梯度下降算法(Stochastic gradient descent, SGD)对模型参数优化训练。学习率是SGD算法中的重要参数,为保证参数以合适的速度达到最优值,选择指数衰减法设置学习率,即最初利用较大的学习率以较快的速度得到较优值,随着迭代次数的增加学习率逐渐变小,使模型在训练后期趋于稳定。学习率随迭代次数衰减的公式为
(5)
式中r——优化过程中的学习率
r0——初始学习率,设为0.01
I——迭代次数,最大迭代次数设为6 000
θ——迭代过程中的衰减速度
ε——衰减系数,设置为0.96
指数衰减法在TensorFlow中的实现代码为:
global_step=tf.Variable(0)
learning_rate=tf.train.exponential_decay(0.1, global_step, 100, 0.96, staircase=True)
learning_step=tf.train.GradientDescentOptimizer(learning_rate).minimize(…, global_step=global_step)
1.6 卷积神经网络手机识别系统
为实现田间玉米病害的快速检测,以改进卷积神经网络为基础,开发手机端玉米田间病害识别系统。保存训练好的模型,利用iOS平台的模型转换库Core ML Tools将模型以HDF5格式存储的模型转换为iOS平台使用的格式。在编译时添加依赖库,添加调用摄像头和读取图库的权限,并在iOS识别界面中添加拍照、图库、识别、保存按钮,将置信度的阈值设定为0.65。即当系统计算得到的阈值大于0.65时输出检测结果,否则重新输入图像并配置按钮对模型的调用,生成安装文件后安装在iPhone7测试手机上。系统工作界面如图4所示。
1.7 模型评价指标
采用平均识别精度(Average precision,AP)作为病害检测结果的有效性指标,利用测试平均识别时间评价模型的识别速度,两者共同反映模型的性能。平均识别时间为样本测试总耗时与测试样本数量的比值,平均识别精度的计算公式为
(6)
式中PAP——平均识别精度
TP——正确分类为正样本的数量
FP——错误划分为正样本的数量
2 实验结果与分析
2.1 优化算法对模型性能的影响
实验首先选用尺寸为512像素×512像素×3(宽×高×颜色通道)的训练集分别对采用正则化与Dropout算法优化后的CNN模型和未优化的CNN模型进行训练并测试,比较2种网络模型整体损失函数随迭代次数的变化趋势以及在测试集上的平均识别精度变化情况。
利用训练数据集进行6 000次迭代训练后的误差变化情况如图5a所示,模型识别精度随迭代次数的变化趋势如图5b所示。由图5可知,2种网络在约2 000次迭代中快速拟合,精度快速增加;在迭代2 000~5 000次过程中,损失值缓慢降低,识别精度缓慢增加;当迭代次数达到5 500次后,损失值趋于平稳,识别精度也维持平稳,此后模型收敛。利用L2正则化和Dropout优化后CNN模型性能优于未优化CNN模型。实验最终得到未优化CNN模型最高识别精度为88.08%,而经L2正则化和Dropout算法优化后CNN模型平均识别精度达到97.10%,提高了9.02个百分点。
2.2 输入图像尺寸选择与分析
根据改进后的CNN模型,使用不同分辨率的数据集样本训练,以获得合适的输入尺寸。实验结果为:输入训练集图像为512像素×512像素时平均识别精度最高,为97.10%;当训练集图像为128像素×128像素时,测试精度为92.92%,测试过程平均每幅图像识别时间为0.317 s;当训练集图像为256像素×256像素时,测试精度为96.56%,测试集单幅图像平均识别时间为0.351 s。可以发现,输入图像分辨率越低时,识别速度越快,但平均识别精度越低,这是因为图像被过度压缩后导致部分特征信息丢失,使得训练过程中对图像底层信息的学习不够。当输入图像尺寸从128像素×128像素增加至256像素×256像素,测试过程单幅图像处理时间只增加了0.034 s,而测试集的精度提高了3.64个百分点,当图像尺寸增加为512像素×512像素时,单幅图像处理时间增加了0.221 s,而测试集精度仅增加了0.54个百分点,因此综合考虑精度和实时性选择256像素×256像素尺寸的输入图像。
2.3 数据集对模型性能的影响
在自然条件下,采集到的图像受不同天气条件和背景因素的影响,特征的提取效果有所差异,当模型无法提取到更准确的特征时会影响到模型的识别效果。为了比较不同品质和不同数量的数据集对模型性能的影响,本文将数据集分为原始数据(未数据增强)、原始数据增强、原始数据增强后去除复杂背景、细分割后全样本、细分割后数量减少样本这5种类型对模型训练和测试。细分割后样本数量减少后的样本量保证与原始数据增强后的数量一致。由于细分割后的尺寸不固定,而含有全连接层的模型要求必须输入固定尺寸的图像,因此含有细分割样本的图像在训练时将模型调整为不包含全连接层的模型,其他参数保持一致。每种数据集按照8∶2的比例划分训练样本和测试样本,实验所获得的识别结果如表2所示。
表2 利用不同类型的数据集训练模型的性能Tab.2 Performance of models trained with different types of data sets
通过表2可知,利用原始数据集训练得到的模型识别精度最低,且识别检测平均耗时最长。将原始数据增强后,样本量扩大到原来的6倍,模型平均识别精度提升到了96.56%。当对数据集去除复杂背景后,模型的准确率可进一步提高到97.96%,对数据集进行细分割后平均识别精度达到了最高(99.12%)。通过对错误识别的样本图像进行分析和表2可知,当选定相同模型类别并设置相同参数的情况下,数据集的样本数量、背景复杂度、是否对目标进行分割(去除背景)等都会影响到模型的训练过程,进而导致不同的性能。利用原始数据增强后的样本训练的模型识别精度远高于利用原始数据的识别精度,这是由于模型受训练数据集种类少、样本量不足的限制,当训练数据集的数量级和模型复杂度不匹配时会发生模型过拟合问题。针对此类问题可以采用数据增强技术对样本进行扩增来提高识别精度。在对增强后的图像去除背景后,其识别精度和速度有所提升,这很可能是因为图像背景中具有病害特征类似的元素,网络在训练过程中也会受复杂背景影响学习这些噪声元素,从而导致错误的识别结果。这说明,当图像背景复杂并且叶片具有和症状类似特征时,移除背景,即将叶片分割出来对提高识别精度有效果。在对样本进行细分割后,由于去除了更多无关的信息,所分割区域有更多病斑的局部信息,可以保证模型训练过程中能够提取到更多有效信息,而受噪声信息的影响小,因此大大提高了平均识别精度。
在田间作物生长过程中,多数情况下都会是复杂的背景情况,比如玉米茎秆等非叶片目标、杂草、土壤、光照不均匀、叶片遮挡等。上述实验中,基于改进卷积神经网络的病害识别方法在不去除背景的情况下,当输入图像为3通道256像素×256像素时,模型测试精度可以达到96.56%,能够满足实际应用要求;去除背景后模型精度仅增加了1.4个百分点,但去除背景的过程大大增加了工作量。因此,从应用效率角度考虑,本文所提方法具有一定的优越性,可以满足实际农业生产中具有复杂背景的玉米病害识别的需求。
2.4 卷积神经网络病害识别系统
为验证所提方法实际应用的效果,利用开发的手机端识别系统进行大田环境中的识别实验,实验选择在田间现场拍摄的方式进行。手机识别系统识别结果界面如图6所示。采集图像50次,拍摄有效图像为48幅,其中识别正确的有40幅,可以实现83.33%的准确率,在手机识别系统测试的平均耗时为0.453 s。识别有误的原因在于拍摄过程中存在抖动、模糊等现象,且背景复杂度差异较大,进而导致整体测试结果准确率偏低。后续将对识别系统进行优化,添加图像去模糊和背景抑制算法,提升图像清晰度,降低背景干扰,进一步提高系统在田间应用中的性能。
3 结论
(1)构建5个卷积层、4个池化层和2个全连接层的CNN模型,利用L2正则化算法和Dropout策略优化网络,利用具有复杂背景的玉米病害图像对模型进行训练和测试,优化后CNN模型平均识别精度为97.10%,比未优化模型高出9.02个百分点,且收敛更快。
(2)兼顾准确率和识别速度,选择256像素×256像素的输入图像,可以同时满足精度与实时性的要求。通过对数据集进行扩增、背景去除或叶片分割可以提高模型的识别效果。
(3)建立了基于移动设备的玉米田间病害识别系统,并进行了测试实验,得到平均准确率为83.33%,表明基于改进卷积神经网络的病害识别方法能够满足复杂背景下的病害识别要求。