基于卷积神经网络的植物病害识别技术
2018-08-01廖经纬蔡英王语晨张艳秋谭周渝魏静桐
廖经纬,蔡英,王语晨,张艳秋,谭周渝,魏静桐
(四川农业大学信息工程学院物联网工程系,雅安 625000)
0 引言
植物病害是限制植物生存繁衍的主要因素。植物感染病害后一般会有如变色、坏死、畸形、腐烂和萎蔫等表现,但是大多数的病害在早期具有隐蔽性,尽管可以通过光学显微镜对培养过一段时间的病原体进行生物方法上的测量并得到最为准确的结果,但是对于大多数的农业工作者来说,这种方法耗时耗力,同时对其专业知识的要求过高,因此不利于推广。
随着计算机技术的快速发展,越来越多的学者将计算机图像识别技术应用到植物病害的检测中来,例如程鹏飞等利用传统的图像分割技术进行植物病害的识别,对10个样本检测对象的识别率达到了80.3%,齐龙等利用BP神经网络代替传统图像分割技术来提取玉米病害的特征,取得了更加好的识别效果,识别率达到了93.75%。冯洁等采用了基于光谱分析技术的黄瓜病害多光谱信息诊断方法。用16通道窄带多光谱成像系统采集黄瓜叶面的五种常见病害的光谱信息值,与健康叶面和参考白板进行光谱数据非数值特征的标定。
以上方法均是采用传统图像分割与光谱分析方法来进行植物病害识别的,但是植物病害在发生的早期,一般的病害特征表现得并不明显,因此使用传统的图像分割技术对于早期植物病害的识别会产生较大的误差,为解决这样的问题,本文将使用在图像识别领域表现得十分优秀的卷积神经网络来进行植物病害的识别,卷积神经网络在手写体识别,人脸识别等领域表现十分优秀,Sladojevic等对CaffeNet进行细微的调节并取得了不错的识别效果,这都说明采用卷积神经网络来进行植物病害识别是实际可行的。
1 算法实现
实验数据集获取:
实验数据集来自CrowdAI植物病害分类比赛图片分类数据集,该比赛提供了38种不同分类的植物病害,如图1所示。
图1
1.苹果疮痂病2.苹果黑腐病3.锈病4.苹果健康叶5蓝莓健康叶6.樱桃白粉病7.樱桃健康叶8.玉米灰斑病9.玉米锈病10.玉米枯叶病和11.玉米健康叶12.葡萄黑腐病13.葡萄黑痘病14.葡萄叶枯病15.葡萄健康叶16.橘子黄龙病叶17.桃子细菌性斑点病18.桃子健康叶19.辣椒细菌性斑点病20.辣椒健康叶21.土豆早疫病22.土豆晚疫病23.土豆健康叶24.覆盆子健康叶25.黄豆健康叶26.南瓜白粉病叶27.草莓叶焦病28.草莓健康叶29.番茄细菌性斑点病30.番茄早疫病31.番茄晚疫病32.番茄叶霉病33.番茄斑枯病34.番茄健康35.番茄轮斑病36.番茄黄曲病37.番茄花叶病38.番茄二斑叶螨病叶
图像预处理:
自然条件下拍摄出来的植物病害图片由于背景、光线、阴影等各项原因的影响,会干扰对图像识别的正确性,所以在进行神经网络训练和识别之前需进行图像预处理操作。
直方图均衡化:
(1)图像降噪
通过图像降噪可以大大地减小图像中的噪声,同时可以模糊部分图片细节信息,在原灰度图图像的每个像素点出使用如图2所示的滤波器进行图像滤波。
图2
上式中w(s,t)为滤波核对应项的系数,f(s,t)为图像对应像素点,R为经过滤波核滤波后输出的结果,将这个滤波核在原图的基础上移动,对图像的每个像素计算,将每个像素点输出组合在一起形成一幅新的图片就是滤波后的图片。
每个滤波器输出结果如下面公式所示:
图3
(2)直方图均衡化
直方图均衡化是一种常用的图像预处理技术,其实现的主要方式就是通过某个映射关系T将原灰度图原本的灰度值均匀地映射到灰度范围内的每一个灰度等级上,通过这样的操作可以将原本聚集在某一个范围内的灰度值分摊到更宽的灰度范围。
s=T(r)
上式中r为输入的灰度值,s为转换后输出的灰度值,我们称T为灰度变换函数。一幅图像中的灰度级可以被视为区间内的随机变量,所以使用概率密度函数来进行图像灰度级的描述。令Pr(r)代表随机变量r的概率密度函数,同时由于灰度值是离散值,所以概率密度可以近似地定义为:
n为图像中总的像素点数目,k为灰度级,取值范围为0~L-1,L为图像中可能的灰度级总数,nk为灰度级,为k的像素点的数目。
所以通过以下公式可以得到灰度图均衡化后的输出s:
通过以上均衡化操作后可以将聚集在一定范围内的灰度值,均匀地分布在整个灰度范围上,可以有效增强图像对比度,同时直方图均衡化不需要输入更多的参数,只用输入原本的灰度图,就可以得到处理好的结果,可以很好实现自动处理的效果。图4就是处理结果与原图的对比效果。
可以看到经过直方图均衡化处理的图像对比度明显增强,原本图像灰度值都分布在25到200这部分,经过直方图均衡化处理后,整张图片的灰度值在0到255这个范围上都有分布,在这样有助于接下来我们进行图像前景背景的分离。
图4
(3)灰度变换
在进行直方图均衡化之前需要将彩色RGB图像转换为灰度图像,传统的灰度转换转换公式如下:
Gray=0.299*R+0.587*G+0.114*B
R,G,B分别为图像中的红绿蓝分量,通过上式计算可以得到彩色的图像灰度图。但是这只是对各分量的普通叠加,考虑到本系统对植物图像分析的特点,本文设计了一种新的灰度变换方法,方法如下:
图5
可以看到本文采用的方法很好地模糊了图像细节同时保留了原本叶片的轮廓与形状信息,但是缺点是叶片上的病斑也会被分割下来,接下本文会图像前景背景进行分离。
图像分割:
通过Ostu算法与Sobel算法分离图像前景与背景。
(1)Ostu算法介绍:
Ostu算法是日本学者在1979年提出的一种基于概率统计学原理的自适应阈值分割算法,又称为最大类间方差法,计算方法是,其以每一个灰度可能出现的值为阈值,来进行阈值的划分,以每次计算结果的类间方差来进行调整,选取使得类间方差达到最大的灰度级作为最佳阈值。Ostu算法的原理为:
假设图像M总的像素点数目为N的话,则有:
上面各式中L为图像中总的灰度级,ni为灰度级为i的像素点的数目,pi为灰度级为i的像素出现的概率,最后u代表图像中的灰度均值。
对于任意灰度级k,可以将整幅图像中的灰度值划分为两类,一类为[1 , k],另一类为(k+1,L]。
将k值从1变化到L取得的δ2(k)最大值的k即为最佳阈值。
(2)Sobel算法介绍:
Sobel算子是一阶导数算子,Sobel算子通过计算水平和竖直方向上相邻像素点的差值来确定图像边缘,具体计算原理如下:
假设图像函数为 f( )x,y,则梯度定义为一个向量:
图6
Gx和Gy分别是x方向上和y方向上的梯度。
grad为合成梯度,通过设定合适的阙值T,如果grad>T即可确定目标像素点为边缘点,然后使用形态学方法对边缘范围内进行填充,可以得到二值化图片。
由上面的分割结果我们可以看到两种方法分割效果都不理想,所以本文采用将以上两种二值图取并集的方法得到新的二值图,并以此来分割图片前景与背景,效果如下:
图7
最后本文将使用此方法分割所有38种数据集,分割效果如下:
图8
2 植物病害识别
卷积神经网络(CNN)最早由LeCun等人应用在手写体识别上,取得了非常不错的效果,但是由于使用卷积神经网络进行图像识别前需要进行大量的数据计算,所以受到计算机计算能力限制,在神经网络刚提出时,它在图像识别领域上并没有受到足够的重视,但如今在近几年的ImageNet比赛中,基于卷积神经网络的AlexNet、VGGNet取得了非常不错的成绩,随着计算机计算能力大幅提升,越来越多的学者将开始将神经网络模型运用在图像识别领域,同时相比于传统神经网络,卷积神经网络有很多优势所在。传统神经网络的全连接层与卷积神经网络的卷积层工作方式对比如下:
图9
假设下一个隐藏层的隐藏单元数量为103,如果我们将预处理好的224×224大小的图片分别输入到这两个神经网络中,可以通过下列公式计算出输入层与输出层之间的权值数量为:
使用传统神经网络的时候,我们需要将有组成图片的红、黄、蓝三种颜色排列成大小为n×1的列向量,当输入图片大小为224×224时,输入层的规模为150528通过上面的公式可以得到θ值约为1.5×108,CNN具有两个优秀的特性局部连接(Sparse Connectivi⁃ty)和权值共享(Shared Weights),如果卷积核的大小为8×8,通过局部连接的特性每个隐藏单元对应输入的将会是一个8×8大小的图片,而不是整张图片,同时通过权值共享将8×8个权值共享给剩下的所有的隐藏单元,所以不管隐藏层大小为多少,计算的都是这64个权值,如果有8个卷积核,那么θ值的大小就为64,相比于传统神经网络,通过卷积神经网络不仅可以缩短整个网络的训练时间,而且可以有效地提取出图片的特征值,所以我们将使用卷积神经网络进行植物叶片病害的识别。
3 实验结果与分析
实验平台:
处理器:英特尔第四代Haswell酷睿i7-4710MQ
显卡:GTX870M
操作系统:Windows 10
系统内存:8G
本文使用的是基于TensorFlow为后端的Keras框架。
首先对已有的38类图片每种图片500张,共19000张分割了背景的植物病变的图片进行转换,转换为大小为224×224的RGB图像,如图10。
本文采用了AlexNet的网络结构,对其网络中的节点数进行了调整,使其能够适应本文的38种分类,并且优化训练时间,训练结果如图11。
图11
最后本文尝试使用不同的优化器对神经网络进行训练,结果如表1。
图10
表1
图12
5 结语
本文基于卷积神经网络对38种植物叶片病害进行了分类,在进行图像识别之前本文针对绿色叶片,采用了一种新的灰度变换方式,并且通过Ostu算法与Sobel算法混合分割的方法,很好的将植物叶片与背景分割出来,然后本文针对38种植物病害对AlexNet进行改进,调整部分层次的网络节点数,对比了五种不同优化器的结果,最后使用Adadelta优化器训练神经网络,并且在测试集上取得了98.4375%的识别率。
接下来我们的研究范围将针对提取植物叶片上的病害来展开,然后训练神经网络对提取出来的植物病害进行识别,而不是对整张叶片进行识别。