基于SVM和CNN组合模型的黄瓜病斑叶片检测与识别
2020-11-22王建春李凤菊钱春阳张雪飞徐义鑫吕雄杰杜彦芳
王 浩, 王建春, 李凤菊, 钱春阳, 张雪飞, 徐义鑫, 吕雄杰, 杜彦芳, 宋 斌
(天津市农业科学院 信息研究所, 天津 300192)
黄瓜是人们日常生活中必不可少的蔬菜之一,生产中白粉病、褐斑病、霜霉病时常发生,经济损失非常大。国内外学者依据计算机视觉算法及深度学习网络对农作物病害识别进行了大量的研究[1-5]。OBERTI等[4]基于葡萄白粉病植株图像的校准集,建立2个光谱指数组合的识别模型,利用摄像机不同角度成像对叶片的感染程度进行评估,从而实现对葡萄白粉病的早期预防。FERENTINOS等[5]使用87 848张图片进行训练,从而建立神经网络模型,实现对25种不同植物自由组合58种不同疾病的检测与识别,同时为算法模型设计了可以扩充的接口,方便应用于实际生产。相比于国外研究状况,我国计算机视觉技术应用于农业生产领域的研究起步较晚,但近年来其研究发展迅速[6-8]。吴娜等[6]提出一种基于混合颜色空间的双次otsu算法,把叶片分成了正常类与病斑类,实现对黄瓜靶斑病的图像分割,其算法的错分率均值和方差分别为2.12%和0.08%,平均处理时间小于0.2s。YUAN等[7]利用马氏距离建立关于小麦白粉病的人工神经网络模型,实现基于小麦高分辨率多光谱图像的最大似然分类器,其算法的整体准确率可达89%。现阶段国内的研究多通过叶片的颜色特征进行阈值分割识别病斑,或利用叶片固有的形状特征定位得病斑所属类别[8]。但现有研究中此类方法多是简单地依赖颜色空间和叶片的区域特征,虽然在实验室环境中具有较好的识别性,但因算法很难覆盖到病斑叶片的所有特征,因而复杂场景下的识别率不高、鲁棒性不强,很难投入到真实的农业生产中[9]。因此,针对黄瓜叶片常见病斑检测与识别时存在的环境适应性差、识别精度低的问题[10-14],设计基于SVM和CNN组合模型的黄瓜病斑叶片检测与识别算法,通过图像增强、直方图均衡化等图像处理方法对图像进行预处理,利用SVM算法对优化后的HOG算子进行特征训练得到病斑叶片的分割图像;最后通过稀疏滤波器及增加偏置来对CNN算法进行改进,进而识别出叶片的病斑类别,以期达到在强光弱光、阴天雾天、枝叶互相遮挡等复杂自然场景下对病害的识别,适合实际生产应用。
1 研究方法
1.1 黄瓜病斑叶片图像获取及训练
黄瓜病斑叶片图像一部分拍摄于实验室环境,一部分拍摄于自然环境。为更好地获得白粉病、褐斑病、霜霉病的样本图像数据,在自然环境下,人为使黄瓜植株感染相关病症,并在强光弱光、阴天雾天、枝叶互相遮挡等情况下对病斑叶片进行不同角度、不同距离的拍照,保证采集的病斑叶片的多样性。试验共采集实验室环境和真实设施环境下黄瓜叶片图像12 000张,其中,病斑图片样本8 890张(白粉病图像2 900张,褐斑病图像3 010张,霜霉病2 980张),非病斑叶片3 110张。
对以上图像数据采用10折交叉验证的方式训练得最终的算法模型,即把黄瓜病斑叶片分成10份,每次把1份作为测试样本,其他9份作为训练样本,重复以上操作10次,从而得到最终的算法模型。试验中采用Linux操作系统进行GPU编程,选用具备灵活性和可延展性的TensorFlow作为其开发框架实现最终的编码工作。
1.2 流程设计
首先设计一种图像增强算法对原始图片进行预处理,利用灰度值展宽、直方图均衡化进行再处理后,把方向可控滤波器作用于HOG算子提取病斑叶片的特征信息,利用SVM算法训练得叶片的切割图,最后把共享权值的稀疏滤波器应用于传统的CNN算法,对其采样层增加合适的偏置得到优化后的CNN算法分类器,从而识别出黄瓜叶片的病斑类别。具体算法流程如图1。
1.3 优化的图像预处理
病斑叶片识别的方式多为对采集的图像进行特征提取处理,利用训练好的分类模型得到叶片的病症类别[15]。但图像分析的好坏,很大程度上会受环境的影响,当环境出现强光弱光、阴天雾天、枝叶互相遮挡的复杂条件时,算法的识别率将会大幅降低。因此,采用叶片区域色彩增强[16]的预处理方法,首先计算RGB图像各通道均值,当各通道均值相加的和低于500时,设定增强系数:
α=1+100/[avg(R)+avg(G)+avg(B)]
式中,α为增强系数,avg(R)、avg(G)、avg(R)分别为图像的红、绿、蓝均值。
图像经增强处理后(图2)使得暗淡的图像变得更为明亮,但还需对叶片区域进行再增强处理,为使叶片区域更为明显,设定相关阈值:
Rd=min(G-B,G-R)/(R+B+G)
式中,Rd为增强阈值,假设Rd>0.3,则说明此区域有更高的概率为叶片区域,因而可在其他通道数值保持不变的情况下,将原来的G通道值改为G*(1+Rd)。
以上操作之后,需进一步对黄瓜图像中像素个数多的灰度值进行展宽处理,使得像素能均匀分布占有更多的灰度级。同时,通过直方图均衡化处理进一步提高病害图像的对比度[17]。
1.4 基于优化的HOG+SVM的病斑叶片检测
通过方向可控滤波器可对传统的HOG算子进行优化。具体为:对灰度化的原始图像利用方向可控滤波器在水平和垂直方向上进行处理,之后提取图像在两个方向上的梯度特征进行HOG处理操作。假设方向可控滤波器在两个垂直方向上的取值分别为∂和β,图像像素点在其方向上的梯度值可表示为f∂(x,y)和fβ(x,y),那么边界方向f(x,y)和幅值θ(x,y)可分别表示为:
在对HOG算子进行优化后,通过SVM算法训练HOG特征算子的方式得到病斑叶片的检测分类器,从而进行叶片的提取。通过网格搜索法(gridSearch CV)对病斑样本图像进行对比分析,选取线性核函数作为SVM算法的核函数[19]进行训练得到算法模型;然后应用此模型对新样本进行检测,如果输出结果为1,代表此区域为叶片区域,把此处二值化后的图像像素置为1;如果输出结果为0,说明此区域为非叶片区域,把二值化后的此处图像像素置为0,从而达到病斑叶片图像分割的目的。
1.5 基于改进CNN算法的病斑叶片识别
卷积神经网络算法原理为每一卷积层进行特征提取,每一采样层进行特征分析,通过各层之间的相互连接,从而形成整个神经网络。卷积神经网络的采样层可表示为:
一般传统卷积神经网络的训练步骤首先是对网络进行权值的初始化,之后样本数据先后经过卷积层、下采样层、全连接层,通过向前传播的方式得到最终输出值。但是一个完整的图像在应用卷积神经时,由于其隐藏单元较多,导致连接权值量非常大,对如此庞大的数据进行整合运算复杂度较高。同时,权值学习迭代次数足够多,容易出现局部最优解或训练过拟合的情况,导致整个算法的鲁棒性不高。因此,采用在每个映射面上进行共享权值的稀疏连接,并通过稀疏滤波器进行特征提取,在保证反映图像真实情况下,降低整个神经网络的数量级。全连接、疏连接、稀疏滤波器的对比见图3。
应用共享权值稀疏滤波器的CNN网络架构图如图4,对图片进行归一化处理,把病斑图片的像素处理为64×64后输入到卷积神经网络中,第1个卷积层C1包含3个稀疏滤波器,当样本被输入到C1层后,应用稀疏疏滤波器对图像特征进行优化,稀疏疏滤波器的目标函数可以表示为:
把稀疏滤波器与采样单元相连,通过稀疏滤波器进行卷积操作得到3个Feature Map,每个Feature Map为32×32像素的特征映射图,之后把特征映射图输入到下采样层S2。S2对特征映射图添加一个偏置,添加偏置后的函数可表示为:
hi(x)=f(wxi+b)
式中,hi(x)为偏置函数,w为样本权重,b为样本偏置。
S2通过添加偏置改变权值矩阵值,之后经过双曲正切函数做平滑处理,减小梯度,双曲正切函数可表示为:
式中,tanh(xi)为第i个样本的双曲正切函数,exi-e-xi为第i个样本的双曲正弦函数,exi+e-xi为第i个样本的双曲余弦函数,
通过采样层S2后,把病斑图像像素缩小至14×14,卷积层C3和下采样层S4作类似处理,得5个像素为6×6的特征映射图,全连接层的每个节点通过与上一层的每个节点相连得到最终的网络结构。每层的具体的特征映射图、神经元结构、卷积核结构见表1。
表1 改进的卷积神经网络结构
1.6 叶片检测算法验证及评价
叶片检测算法通过查全率和查准率指标与Otsu、LBP+SVM算法进行了交叉验证。
式中,Recall为查全率,Precision为查准率,TP为被正确检测的叶片数量,FP为被错误检测的叶片数量,FN为未能正确检测出的叶片数量。
试验主要在识别率和操作时间方面与病斑叶片识别常用算法(显著性算法[20]、BP神经网络算法[21]、传统CNN算法)进行对比评价。同时为了更好地体现算法的价值性,又与人眼识别的情况进行了比较。
2 结果与分析
2.1 黄瓜病斑叶片的检测效果
从表2看出,对于叶片背景单一,各方向光照均匀的实验室环境,各算法查准率和查全率相对稳定;但是对于存在强光弱光、阴天雾天、枝叶互相遮挡的自然境中的黄瓜病斑图像,无论是查全率还是查准率上均是改进的SVM+CNN算法较优,能较精确地对病斑叶片进行分割(图5)。
表2 不同算法对黄瓜叶片病斑图像的查准率和查全率
2.2 黄瓜病斑叶片的识别效果
从表3看出,不同算法的识别率以改进的SVM+CNN算法最高,为91.9%,比人眼的识别率高;最低是显著性算法,为80.7%,该算法作为图像处理中的传统算法,需要依赖图像处理得到的相关知识来获取图像的特征数据,之后利用所提取到的特征数据训练出相关的模型,当样本量较少,场景较为单一时,此算法表现出较好的识别性,但很难适合复杂的设施环境;BP神经网络与传统的CNN算法自身仍然存在一定的局限,虽然在自然环境下,传统CNN算法一定程度上略优于人眼对病斑叶片的识别,但其缺少权值共享,前层网络不能更好的服务后层网络。而研究所用算法通过稀疏连接和权值共享对传统CNN网络进行改进,算法的识别率高于传统的CNN识别算法。
操作时间方面,显著性算法是人为的提取图像特征,可以在很大程度上减少寻找图像特征而浪费的时间,因而训练时间较快,但是识别时间和改进的SVM+CNN算法差距不大。BP神经网络和传统CNN算法在训练在处理图像数据时,往往通过分层思想单独训练高数量级的像素块,因而训练时间较大,其识别时间也明显高于显著性算法。改进的SVM+CNN算法由于应用了稀疏连接和权值共享,与BP神经网络和传统的CNN算法相比,很大程度上降低了网络各层间的训练体量,一定程度上缩短了训练时间。虽然改进的SVM+CNN算法的识别时间略高于显著性算法,但明显优于其他2个算法。
表3 不同算法对黄瓜叶片病斑图像的识别率和自然场景识别时间
应用改进的SVM+CNN算法可以较准确地对生产中黄瓜叶片主要病害的病斑进行识别(图6),同时,针对市面上主流手机像素为800万至2 000万的情况,采用提出的SVM和CNN组合模型,在GeForce GTX 1080单显卡的Ubantu16.04环境下,通过试验对黄瓜病斑叶片的检测与识别的整体时间进行了测试,结果(图7)表明,改进的SVM+CNN算法随着手机摄像头分辨率的提高,其识别时间也逐步增加,但是对于2000万像素的摄像头拍摄的黄瓜病斑图片,识别算法可以在1秒左右完成相关识别,因而满足实际生产需要,具有较好的推广应用前景。
3 结论
植物病害带来的危害不仅仅只是危害作物生长,为控制植物病害的蔓延需喷洒大量的农药,造成农产品严重的农药残留及环境污染。开展植物病害早期快速诊断可实现对病害的早发现、早防治,在将植物病害影响降到最低的同时避免农药的滥用,大幅降低了农药用量和次数,减少了对大气、水、农产品等的污染,作物的产量和质量得到提升,使农业生产向更高效、更优质、更环保的方向发展。研究利用摄像机不同角度成像对叶片的感染程度进行评估,从而实现对葡萄白粉病的早期预防。研究针对强光弱光、阴天雾天、枝叶互相遮挡等真实的黄瓜生长场景,首先设计基于图像增强的预处理算法,并把方向可控滤波器作用于HOG算子来提取病斑叶片的特征信息,使得SVM分类器能更好的对病斑叶片进行检测。对传统的CNN算法进行优化,通过把稀疏连接和权值共享应用于CNN算法,改进了其层与层间的关联度,降低了样本训练时间,提高了对黄瓜病斑图像的整体识别率。改进的SVM+CNN组合模型对黄瓜生产所处的真实场景具有较高鲁棒性和较好时效性,可以满足实际生产需要。今后的工作需进一步采集更多种类的病斑叶片数据,完善相关算法,从而提升算法模型的实际应用价值。