廖經(jīng)緯,蔡英,王語晨,張艷秋,譚周渝,魏靜桐
(四川農(nóng)業(yè)大學(xué)信息工程學(xué)院物聯(lián)網(wǎng)工程系,雅安 625000)
植物病害是限制植物生存繁衍的主要因素。植物感染病害后一般會有如變色、壞死、畸形、腐爛和萎蔫等表現(xiàn),但是大多數(shù)的病害在早期具有隱蔽性,盡管可以通過光學(xué)顯微鏡對培養(yǎng)過一段時間的病原體進行生物方法上的測量并得到最為準確的結(jié)果,但是對于大多數(shù)的農(nóng)業(yè)工作者來說,這種方法耗時耗力,同時對其專業(yè)知識的要求過高,因此不利于推廣。
隨著計算機技術(shù)的快速發(fā)展,越來越多的學(xué)者將計算機圖像識別技術(shù)應(yīng)用到植物病害的檢測中來,例如程鵬飛等利用傳統(tǒng)的圖像分割技術(shù)進行植物病害的識別,對10個樣本檢測對象的識別率達到了80.3%,齊龍等利用BP神經(jīng)網(wǎng)絡(luò)代替?zhèn)鹘y(tǒng)圖像分割技術(shù)來提取玉米病害的特征,取得了更加好的識別效果,識別率達到了93.75%。馮潔等采用了基于光譜分析技術(shù)的黃瓜病害多光譜信息診斷方法。用16通道窄帶多光譜成像系統(tǒng)采集黃瓜葉面的五種常見病害的光譜信息值,與健康葉面和參考白板進行光譜數(shù)據(jù)非數(shù)值特征的標(biāo)定。
以上方法均是采用傳統(tǒng)圖像分割與光譜分析方法來進行植物病害識別的,但是植物病害在發(fā)生的早期,一般的病害特征表現(xiàn)得并不明顯,因此使用傳統(tǒng)的圖像分割技術(shù)對于早期植物病害的識別會產(chǎn)生較大的誤差,為解決這樣的問題,本文將使用在圖像識別領(lǐng)域表現(xiàn)得十分優(yōu)秀的卷積神經(jīng)網(wǎng)絡(luò)來進行植物病害的識別,卷積神經(jīng)網(wǎng)絡(luò)在手寫體識別,人臉識別等領(lǐng)域表現(xiàn)十分優(yōu)秀,Sladojevic等對CaffeNet進行細微的調(diào)節(jié)并取得了不錯的識別效果,這都說明采用卷積神經(jīng)網(wǎng)絡(luò)來進行植物病害識別是實際可行的。
實驗數(shù)據(jù)集獲取:
實驗數(shù)據(jù)集來自CrowdAI植物病害分類比賽圖片分類數(shù)據(jù)集,該比賽提供了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.番茄二斑葉螨病葉
圖像預(yù)處理:
自然條件下拍攝出來的植物病害圖片由于背景、光線、陰影等各項原因的影響,會干擾對圖像識別的正確性,所以在進行神經(jīng)網(wǎng)絡(luò)訓(xùn)練和識別之前需進行圖像預(yù)處理操作。
直方圖均衡化:
(1)圖像降噪
通過圖像降噪可以大大地減小圖像中的噪聲,同時可以模糊部分圖片細節(jié)信息,在原灰度圖圖像的每個像素點出使用如圖2所示的濾波器進行圖像濾波。
圖2
上式中w(s,t)為濾波核對應(yīng)項的系數(shù),f(s,t)為圖像對應(yīng)像素點,R為經(jīng)過濾波核濾波后輸出的結(jié)果,將這個濾波核在原圖的基礎(chǔ)上移動,對圖像的每個像素計算,將每個像素點輸出組合在一起形成一幅新的圖片就是濾波后的圖片。
每個濾波器輸出結(jié)果如下面公式所示:
圖3
(2)直方圖均衡化
直方圖均衡化是一種常用的圖像預(yù)處理技術(shù),其實現(xiàn)的主要方式就是通過某個映射關(guān)系T將原灰度圖原本的灰度值均勻地映射到灰度范圍內(nèi)的每一個灰度等級上,通過這樣的操作可以將原本聚集在某一個范圍內(nèi)的灰度值分攤到更寬的灰度范圍。
s=T(r)
上式中r為輸入的灰度值,s為轉(zhuǎn)換后輸出的灰度值,我們稱T為灰度變換函數(shù)。一幅圖像中的灰度級可以被視為區(qū)間內(nèi)的隨機變量,所以使用概率密度函數(shù)來進行圖像灰度級的描述。令Pr(r)代表隨機變量r的概率密度函數(shù),同時由于灰度值是離散值,所以概率密度可以近似地定義為:
n為圖像中總的像素點數(shù)目,k為灰度級,取值范圍為0~L-1,L為圖像中可能的灰度級總數(shù),nk為灰度級,為k的像素點的數(shù)目。
所以通過以下公式可以得到灰度圖均衡化后的輸出s:
通過以上均衡化操作后可以將聚集在一定范圍內(nèi)的灰度值,均勻地分布在整個灰度范圍上,可以有效增強圖像對比度,同時直方圖均衡化不需要輸入更多的參數(shù),只用輸入原本的灰度圖,就可以得到處理好的結(jié)果,可以很好實現(xiàn)自動處理的效果。圖4就是處理結(jié)果與原圖的對比效果。
可以看到經(jīng)過直方圖均衡化處理的圖像對比度明顯增強,原本圖像灰度值都分布在25到200這部分,經(jīng)過直方圖均衡化處理后,整張圖片的灰度值在0到255這個范圍上都有分布,在這樣有助于接下來我們進行圖像前景背景的分離。
圖4
(3)灰度變換
在進行直方圖均衡化之前需要將彩色RGB圖像轉(zhuǎn)換為灰度圖像,傳統(tǒng)的灰度轉(zhuǎn)換轉(zhuǎn)換公式如下:
Gray=0.299*R+0.587*G+0.114*B
R,G,B分別為圖像中的紅綠藍分量,通過上式計算可以得到彩色的圖像灰度圖。但是這只是對各分量的普通疊加,考慮到本系統(tǒng)對植物圖像分析的特點,本文設(shè)計了一種新的灰度變換方法,方法如下:
圖5
可以看到本文采用的方法很好地模糊了圖像細節(jié)同時保留了原本葉片的輪廓與形狀信息,但是缺點是葉片上的病斑也會被分割下來,接下本文會圖像前景背景進行分離。
圖像分割:
通過Ostu算法與Sobel算法分離圖像前景與背景。
(1)Ostu算法介紹:
Ostu算法是日本學(xué)者在1979年提出的一種基于概率統(tǒng)計學(xué)原理的自適應(yīng)閾值分割算法,又稱為最大類間方差法,計算方法是,其以每一個灰度可能出現(xiàn)的值為閾值,來進行閾值的劃分,以每次計算結(jié)果的類間方差來進行調(diào)整,選取使得類間方差達到最大的灰度級作為最佳閾值。Ostu算法的原理為:
假設(shè)圖像M總的像素點數(shù)目為N的話,則有:
上面各式中L為圖像中總的灰度級,ni為灰度級為i的像素點的數(shù)目,pi為灰度級為i的像素出現(xiàn)的概率,最后u代表圖像中的灰度均值。
對于任意灰度級k,可以將整幅圖像中的灰度值劃分為兩類,一類為[1 , k],另一類為(k+1,L]。
將k值從1變化到L取得的δ2(k)最大值的k即為最佳閾值。
(2)Sobel算法介紹:
Sobel算子是一階導(dǎo)數(shù)算子,Sobel算子通過計算水平和豎直方向上相鄰像素點的差值來確定圖像邊緣,具體計算原理如下:
假設(shè)圖像函數(shù)為 f( )x,y,則梯度定義為一個向量:
圖6
Gx和Gy分別是x方向上和y方向上的梯度。
grad為合成梯度,通過設(shè)定合適的闕值T,如果grad>T即可確定目標(biāo)像素點為邊緣點,然后使用形態(tài)學(xué)方法對邊緣范圍內(nèi)進行填充,可以得到二值化圖片。
由上面的分割結(jié)果我們可以看到兩種方法分割效果都不理想,所以本文采用將以上兩種二值圖取并集的方法得到新的二值圖,并以此來分割圖片前景與背景,效果如下:
圖7
最后本文將使用此方法分割所有38種數(shù)據(jù)集,分割效果如下:
圖8
卷積神經(jīng)網(wǎng)絡(luò)(CNN)最早由LeCun等人應(yīng)用在手寫體識別上,取得了非常不錯的效果,但是由于使用卷積神經(jīng)網(wǎng)絡(luò)進行圖像識別前需要進行大量的數(shù)據(jù)計算,所以受到計算機計算能力限制,在神經(jīng)網(wǎng)絡(luò)剛提出時,它在圖像識別領(lǐng)域上并沒有受到足夠的重視,但如今在近幾年的ImageNet比賽中,基于卷積神經(jīng)網(wǎng)絡(luò)的AlexNet、VGGNet取得了非常不錯的成績,隨著計算機計算能力大幅提升,越來越多的學(xué)者將開始將神經(jīng)網(wǎng)絡(luò)模型運用在圖像識別領(lǐng)域,同時相比于傳統(tǒng)神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)有很多優(yōu)勢所在。傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的全連接層與卷積神經(jīng)網(wǎng)絡(luò)的卷積層工作方式對比如下:
圖9
假設(shè)下一個隱藏層的隱藏單元數(shù)量為103,如果我們將預(yù)處理好的224×224大小的圖片分別輸入到這兩個神經(jīng)網(wǎng)絡(luò)中,可以通過下列公式計算出輸入層與輸出層之間的權(quán)值數(shù)量為:
使用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的時候,我們需要將有組成圖片的紅、黃、藍三種顏色排列成大小為n×1的列向量,當(dāng)輸入圖片大小為224×224時,輸入層的規(guī)模為150528通過上面的公式可以得到θ值約為1.5×108,CNN具有兩個優(yōu)秀的特性局部連接(Sparse Connectivi?ty)和權(quán)值共享(Shared Weights),如果卷積核的大小為8×8,通過局部連接的特性每個隱藏單元對應(yīng)輸入的將會是一個8×8大小的圖片,而不是整張圖片,同時通過權(quán)值共享將8×8個權(quán)值共享給剩下的所有的隱藏單元,所以不管隱藏層大小為多少,計算的都是這64個權(quán)值,如果有8個卷積核,那么θ值的大小就為64,相比于傳統(tǒng)神經(jīng)網(wǎng)絡(luò),通過卷積神經(jīng)網(wǎng)絡(luò)不僅可以縮短整個網(wǎng)絡(luò)的訓(xùn)練時間,而且可以有效地提取出圖片的特征值,所以我們將使用卷積神經(jīng)網(wǎng)絡(luò)進行植物葉片病害的識別。
實驗平臺:
處理器:英特爾第四代Haswell酷睿i7-4710MQ
顯卡:GTX870M
操作系統(tǒng):Windows 10
系統(tǒng)內(nèi)存:8G
本文使用的是基于TensorFlow為后端的Keras框架。
首先對已有的38類圖片每種圖片500張,共19000張分割了背景的植物病變的圖片進行轉(zhuǎn)換,轉(zhuǎn)換為大小為224×224的RGB圖像,如圖10。
本文采用了AlexNet的網(wǎng)絡(luò)結(jié)構(gòu),對其網(wǎng)絡(luò)中的節(jié)點數(shù)進行了調(diào)整,使其能夠適應(yīng)本文的38種分類,并且優(yōu)化訓(xùn)練時間,訓(xùn)練結(jié)果如圖11。
圖11
最后本文嘗試使用不同的優(yōu)化器對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,結(jié)果如表1。
圖10
表1
圖12
本文基于卷積神經(jīng)網(wǎng)絡(luò)對38種植物葉片病害進行了分類,在進行圖像識別之前本文針對綠色葉片,采用了一種新的灰度變換方式,并且通過Ostu算法與Sobel算法混合分割的方法,很好的將植物葉片與背景分割出來,然后本文針對38種植物病害對AlexNet進行改進,調(diào)整部分層次的網(wǎng)絡(luò)節(jié)點數(shù),對比了五種不同優(yōu)化器的結(jié)果,最后使用Adadelta優(yōu)化器訓(xùn)練神經(jīng)網(wǎng)絡(luò),并且在測試集上取得了98.4375%的識別率。
接下來我們的研究范圍將針對提取植物葉片上的病害來展開,然后訓(xùn)練神經(jīng)網(wǎng)絡(luò)對提取出來的植物病害進行識別,而不是對整張葉片進行識別。