万 颖杨红云王映龙罗建军梅 梦
(1.江西农业大学 计算机信息与工程学院,南昌 330045;2.江西农业大学 软件学院,南昌 330045;3.江西省商务学校 基础教学部,南昌 330103)
农作物病害是中国农业灾害之一,也是制约农业可持续发展的主要因素之一,不仅对农作物生产造成损失,还会对食品安全产生威胁[1-2]。而识别病害则要求鉴定人员具有丰富的专业知识与实际经验,且鉴定分析过程既费时又费力,因此需要借助计算机和互联网技术来帮助农民判断作物疾病并及时做出预防。自20世纪50年代以来,研究者就利用图像处理技术来开展农作物病害识别的研究[3-4]。
水稻作为世界主要粮食作物之一,其病害是影响产量的主要因素之一,所以快速、准确的识别与检测水稻病害并进行有效的防治是非常重要的[5]。在图像识别方面,传统的图像技术与机器学习过程较为繁琐,高光谱、红光谱等技术[6-7]需获取水稻病害图像的光谱信息及图像信息,传统机器学习方法如判别分析、支持向量机等,在对图像病害进行分类识别前需先利用图像处理技术提取水稻病害病斑的颜色、纹理、形状等特征向量,再从中筛选出有效特征[8-13],才可达到对病害较高的识别准确率。
图像分割是常用的图像处理技术,根据像素值大小把一副图像划分成若干个相似的区域,并能用轮廓线区分,可减少背景等因素的影响[14],常见的分割方法有区域生长分割、最大类间方差法(OTSU)及分水岭分割等。
卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络[15],在农作物识别方面有较好的成果[16-17]。樊湘鹏等[18]引入卷积神经网络中Faster-CNN 算法并将其进行适应性改进,经试验对比可知,以VGG16卷积层结构作为特征提取网络的识别框架,对9种玉米病害的平均识别准确率为97.23%。杨明欣等[19]利用迁移MobileNet V2网络模型对玉米病害小样本进行识别分类,结果表明该模型识别准确率达到97.23%。陈善雄等[20]结合最大稳定极值区域和卷积神经网络对病害区域和非病害区域进行分离,在传统卷积神经网络框架上加入两级inception结构,最终对8种荞麦病害图像的平均识别精准率达97.5%。在水稻病害识别方面,谭云兰等[21]采用深度卷积神经网络实现对8类水稻病害的识别分类,试验表明网络模型得到了较高的识别精度,其中纹枯病的准确率为93%。刘成[22]运用卷积神经网络与机器学习分别对水稻病害图像进行分类识别,试验结果表明卷积神经网络的识别效果更优,准确率达96.7%。
传统的图像技术和机器学习对图像特定特征依赖性强,而卷积神经网络可通过大量的训练样本自动提取图像特征,大大降低了模型的局限性。本文以自然状态背景下的白叶枯病、赤枯病、胡麻斑病和纹枯病4类水稻病害为对象,结合图像分割与卷积神经网络建立病害识别模型,通过比较、分析模型的训练及测试识别效果,计算评价性能指标,获得更为有效的模型,为进一步研究更智能化地识别水稻病害提供支持。
以水稻病害为识别对象,并对采集到的图像进行人工处理后构建为本次试验的数据集。为了提高模型的特征学习能力和抗干扰,对原始图像进行随机旋转(逆时针5°至顺时针5°)、随机翻转、随机亮度变换及随机对比度等数据扩充处理,扩充后白叶枯病样本数量为450张,赤枯病和纹枯病样本数量均为400张,胡麻斑病样本数量为350张。设置卷积神经网络的训练样本和测试样本的比例为8∶2,则最终训练样本有1 280张,测试样本有320张。
采用区域生长、CV 模型和显著性检测3 种算法对水稻病害图像进行分割。
区域生长法:区域生长法是将具有相似特征的像素合并为区域,每个像素种子点都会根据某种相似性准则将具有相似特征的相邻像素归并到种子像素所在的区域中,当没有新像素纳入区域时停止生长,完成分割[23-24]。为得到较好的分割效果,选择合理的种子点和生长准则,是非常重要的。
CV 模型:CV 模型是由Chan和Vese提出的一种基于区域的几何轮廓模型,其引入了水平集函数来获取最优轮廓,该模型已被运用于多领域的图像分割,它具有易于处理曲线的拓扑结构变化[25-26]。计算过程是将图像分为前景和后景后,预估它们的平均像素,在定义域Ω 上,封闭曲线将其分为曲线内和曲线外,然后初始化水平集函数,最后将每个像素点进行演化。
显著性检测:显著性检测是通过自上而下的目标驱动或自下而上的数据驱动方式,自动地从图像中提取最突出或最能吸引视觉注意的局部区域[27-28]。
卷积神经网络包含了输入层、卷积层、池化层(取样层)、全连接层及输出层。输入层也就是整个神经网络的输入,可以是任意尺寸的图像。试验中SIX_CNN 和EIGHT_CNN 的输入层图像像素大小分别与LeNet-5、Alex Net经典网络的输入层大小相同,输入层图像通道均为3。
卷积层是卷积神经网络中最为重要的部分,在卷积神经网络中,卷积层的参数个数和图片的大小无关,只和过滤器的尺寸、深度以及当前层节点矩阵的深度有关。所以比起全连接网络层,它大幅度地减少了参数个数,加快计算深度,所以能够很好地扩展到更大的图像数据上。池化层中进行矩阵运算时,不会改变矩阵的深度,并通过有效缩小矩阵尺寸来减少后面全连接层的参数。使用池化层既可以加快速度也可以防止过拟合,且对模型效果的影响不大。本试验中神经卷积网络的池化类型均为最大池化。
卷积神经网络参数:试验中的SIX_CNN 包含两层卷积层、两层池化层以及两层全连接层,EIGHT_CNN 中包含三层卷积层、三层池化层以及两层全连接层。SIX_CNN 与EIGHT_CNN均使用softmax分类器来得到测试图像各个类别的概率。其中的核大小及步长等参数如表1所示。
表1 卷积神经网络参数Table 1 Parameters of the convolutional neural network
采用3种图像分割方法对数据集进行处理,并将分割后的图像分别输入两个卷积神经网络,经过训练得到6个网络模型,将原始数据输入较深的卷积神经网络中实现端到端的卷积神经网络训练,得到1个网络模型。识别具体流程如图1所示。
图1 模型训练流程图Fig.1 Flow chart of model training
输入图像I后,就已知图像中的某个像素Ik,Ik∈[0,255],将输入图像转化为灰度图后,获取直方图D就可知像素值An的次数为Fn,An∈[0,255]。元素D(x,y)=|Ax-Ay|表示像素Ax与像素Ay之间的颜色差距,且因为An∈[0,255],D(x,y)∈[0,255]。此时像素Ik的显著值Sals(Ik)计算[29]为公式:
神经网络输入为三维图像,同时为增强卷积神经网络对图像的学习,提高识别率,将Sals(Ik)计算后的图片与原图的像素进行减法运算,增强对比度,降低复杂背景的影响。图像进行减运算后的像素值为Zk,范围为[0,255],计算公式为Zk=Ik-Sals(Ik)。
图像经显著性检测分割后,输入EIGHT_CNN 卷积网络,为了更好地管理和优化神经网络的训练过程,采用可视化工具Tensorboard。图2展示了整个神经网络的结构,图中实线表示了计算结点之间的数据传输,箭头方向表达了数据传输的方向,且每条边上标注了张量的维度。由图可知,三层卷积层处理后得到的张量维度分别为57×57×48,28×28×128,13×13×192,最后一层池化层向第一层全连接层传输的维度为6 912,经softmax分类后的维度为4。
图2 EIGHT_CNN 神经网络结构图Fig.2 Structure diagram of EIGHT_CNN neural network
试验中loss_function节点存放的是计算损失函数相关的计算,Train_step节点存放的是学习率、优化方法以及每一轮训练需要执行的操作,该节点与其他节点有较多的连接,图3可较清晰地看出,每一个卷积层、池化层和全连接层均会将数据输入该节点进行处理,而该节点无数据输出。moving_average节点存放的则是处理滑动平均相关的计算,由图4可看出,网络每一层的数据都会经过滑动平均计算。
图3 train_step节点连接示意图Fig.3 Node connection diagram of train_step
图4 moving_averge节点连接示意图Fig.4 Node connection diagram of moving_averge
试验中均通过Opencv 软件库进行图像处理,平台为Visual Studio 2016,神经网络采用基于python语言的Tersorflow 深度学习框架。所用的计算机配置为Inter(R)Core(TM)i5-6500 CPU@3.20 GHz 3.19 GHz,RAM 为8.00 GB,系统为64位操作系统。试验中每个模型的输入数据大小均为1 600 张彩色图像,其中随机的1 280张图像为训练样本,320 张图像为测试样本。模型训练采用批量训练的方法,每个批次训练的样本数为64。试验经过多次更改迭代次数、损失函数、学习率等参数后,最终卷积神经网络SIX_CNN 与EIGHT_CNN 均 选 择 了500 次 迭代,而SIX_CNN 中的学习率选择了0.01,EIGHT_CNN 中的学习率选择了0.001,SIX_CNN 中卷积层和全连接层的激活函数均为Relu,EIGHT_CNN 中的卷积层激活函数为Relu,而全连接层的激活函数为Sigmoid。
试验采用区域生长法、显著性检测和CV 模型对水稻病害图像进行自动分割,表2展示了各分割方法下4种水稻病害图像的分割结果。将分割后得到的水稻病害图像分别作为本次试验中两种卷积神经网络的输入图像,将得到6种病害识别模型。
交叉熵是判断一个输出向量和期望的向量之间的接近程度常用的评判方法之一。它刻画的是两个概率分布之间的距离,也是分类问题中使用比较广的一个种损失函数。由于交叉熵与softmax回归一起使用,Tensorflow 对这两个功能进行了统一封装。图5~图10分别展示了6个模型以迭代次数为横轴的训练损失值和训练准确率、测试损失值和测试准确率的曲线波动。图中红线代表训练损失曲线,蓝线代表测试损失曲线,紫线代表训练准确率曲线,黑线代表测试准确率曲线。
图5 Reg_SIX_CNN_model曲线波动Fig.5 Curve fluctuation diagram of Reg_SIX_CNN_model
图6 Cv_SIX_CNN_model曲线波动Fig.6 Curve fluctuation diagram of Cv_SIX_CNN_model
图7 Sal_SIX_CNN_model曲线波动Fig.7 Curve fluctuation diagram of Sal_SIX_CNN_model
由图5~图10中可看出,SIX_CNN 训练的3个模型损失值下降得较快,较早开始趋于稳定,可知该网络的收敛速度更快。EIGHT_CNN 网络中损失值则下降得比较缓慢,最后逐渐趋于稳定。各模型的识别准确率见表3。
表3 模型识别准确率Table 3 Accuracy of model recognition
由上可知,卷积神经网络识别结果均为95%以上。当网络模型不变时,显著性检测处理过的图像数据的识别结果最高,可知本试验中显著性检测对该数据集分割后更有利于图像的识别。当处理图像方法不变时,卷积网络EIGHT_CNN 的识别结果较高,可知EIGHT_CNN 网络对该数据集的效果更强。综合看来,Sal_EIGHT_CNN_model模型的识别结果最高,鲁棒性更强。
4种水稻病害分类中,可划分为4种两分类情况。当以白叶枯病为中心作为正类时,赤枯病、胡麻斑病及纹枯病为负类。那么,实际为白枯病的图片被判定为白枯病的总数量为TP1,实际为白枯病的图片被判定为其他3种病害的总数量为FN1,实际为其他3种病害的图片被判定为白枯病的总数量为FP1。
表4 各模型下4种病害精准率Table 4 Precision values of four diseases of each model
各模型下4种病害的Recall值见表5,综合精准率和召回率,可知神经网络模型对4种病害的识别情况,如在Cv_EIGHT_CNN_model中,赤枯病的召回率为0.99,可知在赤枯病测试图像中有99%以上的图像识别正确,则该病害图像被预测为其他3种病害的可能性较小,从赤枯病精确率及白叶枯病召回率可看出,其他两种病害被预测为赤枯病的图像较多,整体观察可知,该模型对白叶枯病的识别效果最好。
表5 各模型下4种病害Recall值Table 5 Recall values of four diseases of each model
通过上式的计算,各模型的F1值见表6。结果可知,当分割方法不变时,EIGHT_CNN 网络下的模型F1 score较高,当卷积神经网络不变时,显著性检测分割后的图像输入卷积网络得到的F1 score较高。结合各模型精确率、召回率与评价指标F1值,可知Sal_EIGHT_CNN_model该模型在本试验中识别结果为最佳。
表6 各模型F 1值Table 6 F 1 score of each model
为进一步验证Sal_EIGHT_CNN_model网络模型在水稻病害的识别能力,将数据增强后的水稻病害原图像输入EIGHT_CNN 网络中实现端到端的网络模型训练,图11 展示EIGHT_CNN 模型的训练损失值和训练准确率、测试损失值和测试准确率的曲线波动。将图11 与图10 Sal_EIGHT_CNN_model曲线波动图进行对比,可知数据经显著性检测分割后得到的网络模型比端到端深度学习网络模型更加稳定,较少出现损失曲线或准确率曲线突升或突降的现象。
图11 EIGHT_CNN_model曲线波动Fig.11 Curve fluctuation diagram of EIGHT_CNN_model
为直观对比Sal_EIGHT_CNN_model模型与EIGHT_CNN_model模型对病害图像数据的识别结果,给出了两个模型的训练、测试识别准确率和F1值(表7)。
表7 Sal_EIGHT_CNN_model与EIGHT_CNN_model对比Table 7 Comparison ofn Sal_EIGHT_CNN_model andEIGHT_CNN_model
从表7可知,Sal_EIGHT_CNN_model模型比EIGHT_CNN_model模型的训练准确率高1.07个百分点,测试准确率上提1.30个百分点。F1值对比表明,Sal_EIGHT_CNN_model中将一种病害判定为其他3 种病害的概率低于EIGHT_CNN_model,即Sal_EIGHT_CNN_model模型对4种水稻病害图像的识别结果优于EIGHT_CNN_model模型。由此可知,将图像进行显著性检测分割后,更有利于卷积神经网络对病斑特征的提取及识别分类,得到最佳的网络识别模型。
为提高计算机视觉对水稻病害的自觉准确识别率,采用不同的图像处理方法与卷积神经网络,对水稻的4种病害进行识别分类。由试验结果可知,不同的图像处理得到不同的分割效果,其中显著性检测算法对病害图像的分割效果最好,减少了背景等干扰因素对卷积神经网络识别的影响,表明对数据集进行不同的图像处理会明显得影响卷积神经网络识别结果,图像数据的不同对比度、亮度及病斑的不同位置可增强模型的泛化能力。从SIX_CNN 和EIGHT_CNN 的试验结果可知,网络层数更深的卷积神经网络提取的病斑病理特征更优,使得softmax 分类器识别的结果更佳。将图像分割后得到的网络模型与端到端卷积神经网络识别模型进行对比后可知,卷积神经网络对水稻病斑特征具有较强的自我学习能力,而经过显著性检测分割的图像数据,降低了背景等噪声对卷积神经网络的影响,提升了网络模型的识别能力。试验对比可知Sal_EIGHT_CNN_model模型的识别准确率最高,测试识别准确率达到99.88%。
对试验中常见的过拟合[30-31]现象,本研究也采取一系列策略:试验中通过增加图像的对比度、亮度及对图像进行翻转等方法增强数据,以此来减少模型的过拟合;试验中卷积神经网络的全连接层均采用了Dropout,因Hinton 等[32]提出的Dropout通过在训练过程中随机地忽略一定比例的节点响应,减轻传统全连接神经网络的过拟合问题,有效地提高网络的泛化性能;通过使用批次归一化来减少过拟合风险[33]。
马超等[34]对水稻病斑与非病斑的样本块提取HOG 特征,将这些特征作为输入向量代入SVM 分类器进行训练,最后的研究结果表明,HOG+SVM 对多种病斑检测的综合识别率可达94%以上。牛旭[35]搭建的卷积神经网络对水稻病害平均识别准确率达96%。刘婷婷等[36]建立的CNN 网络模型对水稻纹枯病的准确识别率达97%。邱靖等[37]搭建的深度卷积神经网络对水稻病害的识别准确率最高可达96.67%。由此可见,目前计算机技术在水稻病害识别中的应用已取得较好的成果。经比较,Sal_EIGHT_CNN_model模型识别率较高,模型有效可行,且具有更强的鲁棒性,可降低图像背景、图像位置、图像采光等对识别的影响。为推进推广运用,研究还有一定的提升空间,后续需要继续进行的试验方向有以下几个:增加训练样本的种类和数量,使得智能分类的品种更多;增强对图像的处理,降低光照角度等拍摄原因对识别的影响;训练更多更优的神经网络,提高对更多种类的识别准确率,希望未来也能运用到其他病害的识别。
采用图像分割结合卷积神经网络的方法对水稻病害进行识别,减低复杂背景的影响,提高了模型的计算准确率,且本研究提出的7个网络模型,对白叶枯病、赤枯病、胡麻斑和纹枯病的总识别率均达到95% 以上。其中基于显著性检测与EIGHT_CNN 卷积神经网络的模型测试识别率达到99.88%,相比较于其他模型,识别精度更高,鲁棒性更强,也可为后续的病害叶片智能识别提供理论依据。