許冠芝,王澤民,李成強
(西安工程大學電子信息學院,西安710600)
2017年我國發布了《新一代人工智能發展規劃》,其中包含了人工智能在智慧農業領域的應用,如使用農業信息大數據智能決策分析系統,建立完善一體化的智能農業信息監測系統等[1]。以人工智能技術解決傳統農業問題是當前的研究熱點。在此擬采用人工智能技術中的深度學習方法解決番茄葉部病害識別問題。番茄在我國栽種面積廣泛,是當今食用量最多的果蔬之一,但番茄葉病一直制約著番茄產量和質量的提升。番茄葉部病害類型的診斷對番茄病害的防治就顯得尤為關鍵。及早對番茄葉部病害進行識別防治,能最大化降低病害對番茄造成的經濟損失,具有重要的理論和實際意義[2]。
傳統對于番茄葉部病害的識別主要依賴農民或者專家下農田親自檢查,依靠經驗進行診斷。這種方法非常不便捷且診斷結果具有很強的主觀性[3]。近年來,對于農作物病害診斷逐漸發展為利用計算機技術對植物病害圖片進行識別。文獻[4]提出了一種利用統計方法,通過番茄葉片不同病害顏色、形狀等特征不同來確定番茄病害的方法。該方法對顏色特征的提取依賴較大,某幾種識別率較高,而某些病害則出現較高誤診。文獻[5]提出了一種基于光譜反射特性的番茄葉片早疫病病害識別方法,該方法在某一波段內識別率較高,具有極大的局限性。文獻[6]提出一種利用遺傳算法從圖像紋理、顏色、形狀等多個特征中選取穩定性及分類能力強的特征用于病害識別的方法,該方法依賴于人工對特征的選取,具有很強的主觀性。文獻[7]提出一種基于神經網絡的水稻二化螟蟲害的識別方法,該方法使用的樣本較少,增大實驗樣本可以提高對二化螟蟲的識別率。
綜上所述,現有方法大多是基于對病害的特征提取,不同病害對應不同的顏色、形狀特征,不具有通用性。人工方式特征提取對專家經驗要求較高。圖片的質量又對結果影響較大。針對此類問題,擬采用深度學習方法,建立番茄葉部病害識別模型。
深度學習是人工智能領域最前沿的研究方向之一。深度學習技術已成功應用于語音識別[8-9],圖像識別[10-11],自然語言處理[12-13]等領域。主要有深度置信網絡(Deep Belief Networks,DBN)[14],循環神經網絡(Recurrent Neural Network,RNN)[15],生成式對抗網絡(Generative Adversarial Networks,GAN)[16]和卷積神經網絡(Convolutional Neural Networks,CNN)[17]等。因卷積神經網絡對圖片特征提取效果最好,故在此采用卷積神經網絡網絡構建病害識別模型。
卷積神經網絡一般由輸入層、卷積層、池化層、全連接層和輸出層構成[18]。卷積層主要作用為對輸入數據進行特征提取。用一個合適大小的矩陣(卷積核)對輸入進行掃描,提取出輸入圖像的特征。卷積過程可以下式來表示:

式中,h表示輸出,x為輸入。輸入包含A個通道,即有A副圖像x1,x2,...,xA,相應的掃描矩陣即為w1,w2,...,wA,偏置為b。
池化層主要作用是對輸入的特征進行進一步的提取,可以簡化網絡的復雜度,又能保留主要特征。以下為常用的兩種池化操作計算公式:

式(2)為平均池化公式,式(3)為最大池化公式,其中h為輸出,A為輸入,采樣塊大小皆為α×β。
全連接層的主要作用是將卷積和池化提取的局部特征重新通過權值矩陣全卷積為完整的特征,因為應用到了所有局部特征,所以叫全連接。輸出層的作用就是最后對特征進行分類識別,輸出結果。
經全連接層提取的特征維度較高、計算量大、訓練耗時,需要對高維特征進行數據降維處理。PCA是一種用于數據降維的算法,中文名為主成分分析法[19],主要思想是對數據進行線性變換,將任意數據變換到新的坐標系中,保留數據中對方差影響最大的特征。為了得到包含最大差異性的主成分方向,需要計算數據矩陣的協方差,然后得到協方差矩陣特征向量,選擇特征值最大的K個特征所對應的的特征向量組成的矩陣。這樣就可以將數據裝換到新空間,實現降維。
樣本均值、樣本方差、協方差計算公式依次如下所示:

2.3.1 Softmax函數與中心損失函數
Softmax函數用于解決多分類問題,是Logistic函數的推廣[20],適合于此處的番茄多種葉病識別。該函數會判斷輸入屬于某一個類別的概率,如果最大,這個類就輸出1;其他類輸出值接近0。由此可知該算法類間互斥,某個輸入只能屬于一個類。Softmax損失函數如下式:

其中,y(i)表示病害標簽,W是模型參數,x(i)是訓練樣本特征向量。k為病害類別數目,m為樣本大小。
在實際應用中,當提取的特征不足以用來對類別進行強分類時,經常會出現類內距離大于類間距離的情況發生,對最終的分類識別結果影響較大。在此問題上,Wen[21]等提出了中心損失函數。對于一個卷積神經網絡來說,每次可計算出多個特征中心,同時根據特征值與其對于中心的距離計算損失函數。該函數可用下式表示:

其中,cyi是第yi個類的特征中心。xi是第i張圖片的特征值。類內變化可用下式表示:

由式(9)可知,特征中心cyi隨深度特征的變化而變化。Lc相對于cyi的更新計算公式如下式所示:

其中,當條件yi=j滿足時,δ(yi=j)值為1,不滿足時值為0。當訓練集規模較大時,需要以小批量的方式進行中心值的更新以解決一次性無法將所有中心獲取的問題。
2.3.2 改進的softmax函數
由前一節的論述可知,為了增大類間距離的同時減小類間距離,將softmax損失函數與中心損失函數結合起來,作為聯合監督函數。聯合監督函數代替原來的只含softmax函數作為輸出層的分類函數。聯合函數如下式所示:

其中,λ是用來平衡兩個損失的參數。合適的λ可以大大提高特征識別能力。由式(11)可知,當λ為0時,該函數即為softmax函數。
基于深度學習的番茄葉片病害圖像識別算法設計一個卷積神經網絡用于對輸入的病害圖像進行特征學習提取,對提取的病害特征進行PCA降維,最后利用改進的softmax函數進行病害分類??傮w框架如圖1所示。

圖1 算法總體框架圖
圖中,輸入是番茄葉部病害圖片,數據預處理是對輸入的圖片進行標準化和歸一化。核心點在于CNN網絡模型的構建,以及建立基于改進的softmax函數番茄葉部病害識別模型。在此將深度學習技術應用于傳統農業病害識別問題,引入PCA降維算法并改進softmax函數,以提高番茄葉部病害識別的準確度。
如前所述,組成卷積神經網絡由輸入層、卷積層、池化層、全連接層和輸出層構成。在此,根據數據集大小及番茄病害特點,設計一個七層CNN神經網絡,其模型如圖2所示。
此CNN模型共有七層(只計算卷積層和全連接層)。網絡的主要參數如下:
1)輸入為256×256×3的RGB圖像;
2)全部卷積層和全連接層激活函數都為Relu(Relu函數在輸入大于0直接輸入該值,輸入小于等于0時,輸出0);
3)卷積層 C1,卷積核大小為 6×6×3,設置 64 個卷積核,步長(stride)為 2,Padding=same(此處用padding來解決圖像邊界信息發揮較少問題,方法是進行零填充),輸出為 126×126×64;
4)池化層 S1,采樣區域為 3×3,步長為 2,采樣方式為最大采樣,輸入為C1的輸出,輸出為63×63×64;
5)卷積層 C2,卷積核大小為 3×3×64,設置 128個卷積核,步長為2,Padding=same,輸入為S1的輸出,輸出為 31×31×128;
6)池化層 S2,采樣區域為 3×3,步長為 2,采樣方式為最大采樣,輸入為C2的輸出,輸出為15×15×128;
7)卷積層C3,卷積核大小為3×3×128,設置256個卷積核,步長為1,Padding=same,輸入為S2的輸出,輸出為 15×15×256;
8)池化層 S3,采樣區域為 3×3,步長為 1,采樣方式為最大采樣,輸入為C3的輸出,輸出為7×7×256;
9)卷積層C4,卷積核大小為3×3×256,設置384個卷積核,步長為1,Padding=same,輸入為S3的輸出,輸出為 7×7×384;
10)池化層 S4,采樣區域為 3×3,步長為 1,采樣方式為最大采樣,輸入為C4的輸出,輸出為3×3×384;

圖2 CNN結構模型圖
11)全連接層F1,使用了4096個神經元;
12)全連接層F2,F3神經元個數由PCA降維之后決定;
13)輸出層,采用改進的softmax函數,輸出類別為10類病害類型和健康類型共11種類別。
至此,得到了一個基本的神經網絡結構,全連接層F1得到一個4096維度特征,經PCA對高維特征進行降維。再通過改進的softmax函數進行病害種類識別。結構模型圖如圖3所示。

圖3 PCA與聯合函數結構模型圖
圖3所示結構是對圖2全連接層F1之后的改進。圖2是本提取方法的基本結構,但在池化層S4之后使用的是3個全連接層。提取的番茄病害特征維度較高且會出現類內距離大于類間距離情況,故圖3在圖2的基礎上,在全連接層F1之后加入了PCA對特征進行降維。全連接層F2與F3采用softmax損失和中心損失聯合函數對特征進行分類,以提高分類準確性。
以上述網絡結構為基礎,構建完整CNN網絡,對于PCA降維部分,在全連接層F1之后增加一層PCA降維層,在實驗時分別驗證不加入PCA降維,以及加入PCA降維之后。不同特征維度對識別精確度的影響。
對于全連接層F2及F3的softmax與中心損失聯合監督算法部分,將算法的輸入抽象為:訓練數據集{xi},分別初始化池化層和損失層參數θc、W及同時輸入參數:λ和學習率μt,其中迭代的次數t初始化為0。輸出則抽象為輸出參數θc。聯合監督的病害識別算法步驟可歸納如下:
Step1:判斷是否收斂,不收斂則跳向step2;
Step2:迭代次數t=t+1;
Step3:根據公式(11)計算聯合損失L;
Step5:利用梯度下降法公式更新參數W,cj,θc;
Step6:判斷是否收斂,如果收斂則迭代結束,否則從step1開始循環執行。
在算法設計完成的基礎上,通過實驗驗證番茄葉部病害識別算法的準確度和魯棒性。實驗需要分別驗證病害特征維度對精確度的影響,以及改進的softmax函數對精確度的影響。
驗證病害特征維度對準確度的影響的方法:首先使用原softmax函數,通過改變PCA降維維度,測試在softmax函數不改進的情況下,不同維度與準確度之間的關系,并根據結果得到最佳維度。
驗證改進的softmax函數對精確度影響的方法:由前一步得到了PCA降維的最佳維度,然后將該維度固定,測試改進的softmax函數中的參數λ對識別準確度的影響,以確定最佳λ。
觀察兩次準確度的變化,驗證本模型對番茄葉部病害識別準確度提升的作用,并與當前通常使用的其他番茄葉病識別算法比較,驗證本算法的優越性。
數據來源為:選取國外知名農作物人工智能研究機構CrowdAI網站所提供的番茄葉部病害圖片。另有部分圖片數據來自我國農業網站,如安徽省農業科學院情報研究所網站所提供的番茄病害圖片。
從數據集中選取了我國最常見的10類病害圖片,每類病害共選取600張圖片,加上正常番茄葉部圖片共11類,6600張圖片。這10類病害具體為番茄早疫病、番茄晚疫病、番茄葉霉病、番茄斑枯病、番茄花葉病、番茄棒孢菌病、番茄灰葉斑病、番茄細菌性斑點、番茄二斑葉螨病、番茄黃化曲葉病。將圖庫隨機劃分為訓練集和測試集,訓練集占總圖庫3/4,測試集為1/4。圖4給出了正常蕃茄葉片及部分患病葉片圖片。

圖4 數據集部分圖片
再對數據進行預處理。原圖分辨率大小不一,需要統一處理為256×256像素,以.jpg格式保存。使用谷歌tensorflow深度學習框架中提供的tf.image.resize_images函數調整圖像大小。此外還需對圖像進行歸一化處理。歸一化并不會改變圖像原有的信息,而是將圖像像素值取值范圍從0~255轉化為0~1之間,以方便卷積神經網絡對圖像的處理。此處使用最大最小歸一法對,公式如下所示:

其中,xi表示圖像的像素點值。max()與min()分別表示最大、最小函數。
4.3.1 PCA降維
采用圖2結構所示的卷積神經網絡F1層輸出的病害特征有4096維,特征維度較大,計算和訓練用時過長,降維可以去除冗余特征解決多重共線性問題。為了找到合適的特征維度既能去除冗余,又能擁有較好的識別精度,采用PCA算法對4096維的特征進行降維。經過多次實驗得到精確度與特征維度曲線圖如圖5。從圖中可以看出,數據維度降低過程中,精確度呈非線性變化,在降低到64維時精確度達到最優;而低于16維時精確度急劇降低,從4096降到64維過程中精確度穩步上升。這表明卷積神經網絡提取的特征含有一定的冗余信息。去除這部分冗余,精確度便得到改善。而數據維度低于16維時,由于過度降維,去除了有用信息,導致精確度急劇下降。

圖5 精確度與特征維度曲線圖
4.3.2參數λ對分類結果的影響
合適的λ值可用來平衡聯合函數,加強網絡對特征的分類能力。由于識別精度同時還受學習率的影響,首先固定學習率為0.5,改變λ值,測試不同λ值對識別精度的影響。測試結果如圖6所示。由圖可知,當λ為0時,為單純只有softmax算法,識別精度沒有聯合函數高,當λ取0.003時,識別精度最高,能比softmax改進之前精度提高2.5%左右。這也說明,一個合適的參數對于聯合函數是非常重要的。對于參數λ值的選取,目前只能通過多次實驗的方法確定。

圖6 參數λ與識別精確度關系圖
學習率對識別精度也有一定影響,故此還進行了學習率對識別精度影響的測試實驗,當參數λ固定選取0.003時,測試不同的學習率對識別精度的影響。根據前人研究經驗,學習率取值范圍限定為[0.001,1]。學習率與精確度關系曲線見圖7。依據分析,學習率最佳選擇為0.5。
所提出的方法在CrowdAI提供的數據源上獲得了較好的識別效果。每類番茄葉部病害的具體識別結果如表1所示。

圖7 學習率與識別精確度關系圖

表1 常見番茄葉部病害識別結果
從表1可知,所提出的番茄葉部病害模型識別率較高,綜合識別率能夠達到95%。為進一步說明所提模型的有效性和優越性,將本方法與目前在農業病害中常用的識別算法精確度進行性能對比,結果如表2所示。

表2 算法結果對比
從表2可以看出,所提出的基于深度學習的番茄葉部病害識別方法在識別精確度上優于傳統的識別算法;SVM+CNN算法采用了傳統機器學習分類算法SVM及CNN網絡的結合,并未對特征進行降維及對softmax損失改進,本文方法比SVM+CNN方法準確率提高了8.2%;GA-BP算法采用的是一種人工對病害特征選取的算法,相比而言,本文采用深度學習算法具有對特征自動提取的優點,本算法比GA-BP方法準確率提高4%;LSM-H算法適用于輪廓比較明顯的待識別物體,經過Hought變換及最小二乘法得到最終識別結果,準確率較高,但是局限性較大本文算法比LSM-H方法準確率提高了0.8%;FCNN-H是快速歸一化互相關函數與霍夫變換結合的一種傳統識別算法,識別準確率較低,本算法比FCNN-HT方法準確率提高了9%。
通過與同類的深度學習算法以及傳統機器學習算法的對比,可見本模型對番茄病害識具有更高識別精確度及更強的識別通用性。通用性是指本方法能識別番茄10種常見葉子病害,通過增加樣本數據,能夠做到識別更多的病害種類。而傳統機器算法通常只針對一種或一類進行識別。
提出了一種基于深度學習的番茄葉部病害識別算法模型,設計了一個七層卷積神經網絡,使用PCA降維算法并對softmax函數進行改進。該模型在CrowdAI所提供的數據集上的實驗結果表明:PCA對維度的降低能夠提高識別精確度,減少訓練時間,softmax聯合函數能夠一定程度增大類間距離的同時減小類內距離,提高CNN對病害特征的識別能力。實驗結果表明該模型對番茄10類病害綜合識別率達到95.7%,驗證了模型的有效性。