肖小梅, 楊紅云*, 易文龍, 萬 穎, 黃 瓊, 羅建軍
(1.江西農業大學軟件學院, 南昌 330045; 2.江西農業大學計算機與信息工程學院, 南昌 330045)
農業是人類生存的基礎,經濟社會的不斷發展帶來了全球的氣候和環境問題,病害的發生以及真菌細菌的變異影響著人們的生活。農作物病蟲害的發病率越來越高,發生的病害也越來越復雜,因此,研究農作物病蟲害的預防,以及病蟲害診斷和補救措施顯得尤為重要。傳統的人工檢測病蟲害的方法完全依賴于人工的觀察經驗,這樣的方法速度慢、主觀性強、準確率低、效率低。因此實現對農作物病蟲害的快速準確識別具有重要意義[1]。
隨著互聯網的不斷發展,農業信息化技術在農作物病蟲害識別方面都得到了越來越廣泛的運用[2-9],為了提高識別準確率,傳統的機器學習方法主要是通過獲取目標的形狀,紋理,顏色等特征[10-11],然后再利用支持向量機、人工神經網絡對目標進行分類[12-13]。常用的形狀特征有致密度、偏心率、矩形度等,常用的顏色特征有顏色方差,峰值,偏度,熵等,常用的紋理特征主要有相關性、對比度、慣性、能量等。但是不同的病蟲害在不同階段可能表現出相似的特征,這些復雜的因素導致傳統機器學習方法適普性較差。
相對于傳統的識別方法,卷積神經網絡作為深度學習的算法之一,具有更加強大的特征學習能力以及特征表達能力,在農作物病蟲害分類上運用廣泛。陳鋒等[14]利用機器學習與卷積神經網絡結合的辦法識別了東北寒地里的5種玉米害蟲;程曦等[15]將深度卷積神經網絡引入儲糧害蟲的識別中,識別精度達97.61%,明顯優于傳統方法。孫鵬等[16]在普通卷積神經網絡的基礎上,引入了注意力機制,研究出了一種基于注意力機制的卷積神經網絡模型用于識別大豆蚜蟲,識別準確率相比于傳統網絡提升了6.53%,龍滿生等[17]利用遷移學習方法和卷積神經網絡識別油茶病害葉片圖像,平均識別準確率達96.53%以上,但是該模型局限太強,僅限于背景單一的油茶病害圖像,模型的實用性有待提升。Kawasaki等[18]介紹了一種基于卷積神經網絡(convolutional neural networks, CNN)的黃瓜葉病識別系統,準確率達到94.9%。Oppenheim[19]利用卷積神經識別馬鈴薯疾病,該算法性能良好,成功運用于農作物病害識別,Chen等[20]提出了一種水稻病害識別深度學習結構“DENS-INCEP”,它是將在ImageNet上預先訓練好的DenseNet與Inception模塊相結合進行遷移學習,通過定義一個新的具有實際分類數量的全連接層softmax層來截斷頂層,此外還使用了聚焦損失函數代替原來的交叉熵損失函數,該方法表現出了良好的性能。上述研究均表明卷積神經網絡在農作物病蟲害識別上具有很好的應用性,但是由于農作物病害蟲背景復雜,如果提高識別算法的識別準確率和魯棒性仍然是有待解決的問題。
為了實現對水稻害蟲的精確分類,提出一種基于改進的Alexnet卷積神經網絡的水稻害蟲識別模型:①在Alexnet的基礎上,去除原有的局部響應歸一化(local response normalization, LRN)層并在每一個卷積層后引入批量歸一化(batch normalization, BN)層進行批量歸一化,以提高模型的收斂速度;②用全局平均池化代替全連接層,減少網絡參數,提高網絡的抗過擬合性能;③用PReLU激活函數替換ReLU函數,避免神經元壞死。改進后的模型稱為Alexnet_n,并對稻縱卷葉螟、三化螟、稻蝗、稻飛虱4種常見的水稻害蟲進行分類,以驗證Alexnet_n模型在水稻害蟲圖像上的分類效果。
選取水稻中常見的稻飛虱、稻縱卷葉螟、三化螟、稻蝗4類害蟲進行訓練識別。由于稻縱卷葉螟對水稻產生危害主要是在幼蟲時期,所以本文研究主要識別的是稻縱卷葉螟幼蟲,其余3種害蟲選取成蟲。獲取害蟲圖像的途徑有兩個:在自然光環境下,利用單反數碼相機以及智能手機兩種設備進行實地拍攝,以植物葉片,白板等為背景收集江西農業大學實驗田的害蟲圖像;從Google、Naver和FreshEye等搜索引擎上收集害蟲圖像。部分害蟲樣本圖像如圖1所示。樣本庫中每類害蟲樣本圖像的數量在100~200,其中包括不同角度、姿態和自然環境下的原始圖像。

圖1 水稻害蟲圖像
1.2.1 數據擴充
在深度學習中,卷積神經網絡的訓練往往需要大量的數據集,否則會出現過擬合、識別精度低等現象。但是現有條件下,對水稻害蟲樣本的采集比較困難,目前還缺乏大型的水稻蟲害圖像數據集,因此需要采用一些數據擴充方法來達到增大數據集的目的[21]。現使用平移變換(shift)、尺度變化(scale)、旋轉(rotation)、翻轉變換(flip)、噪聲擾動(noise)以及亮度調節(brightness)等數據擴充方法將原數據集擴充了10倍,擴增后的數據集數量如表1所示。

表1 害蟲數據集
1.2.2 圖像增強
由于網上下載的水稻害蟲圖片,清晰度參差不齊。絕大部分圖像像素低于原相機的拍攝的圖片,且圖像細節不夠明顯,為了解決這一問題,采用了一種基于多尺度的圖像的細節提升算法[22],該方法首先使用了3個尺度的高斯模糊,然后和原始圖像做減法,由此獲得圖像細節信息,這些細節是不同程度的。最后,為了達到增強原始圖像信息的效果,通過一定的組合的方式把獲得的圖像細節信息融合到原圖中。該方法的增強效果如圖2所示。

圖2 圖像增強對比圖
2.3.1 經典的Alexnet
Alexnet是由Alex Krizhevsky提出的一個經典的卷積神經網絡,最早是用于ImageNet的分類,其網絡結構如圖3所示。Alexnet包含5層卷積層、3層池化層和3層全連接層[23],卷積層和全連接層需要進行參數訓練[24]。其中卷積層是Alexnet的核心,用于提取特征。池化層可以減少特征矩陣的大小,實現特征降維。激活函數幫助Alexnet網絡獲得非線性特征。全連接層(dense)可以整合卷積層或者池化層中具有類別區分性的局部信息,起到分類作用。Alexnet獲得了當年ILSVRC(ImageNet Large Scale Visual Recognition Challenge)比賽的冠軍,其的創新之處在于使用非線性非飽和函數ReLU[25]代替了原有的softmax函數,采用LRN局部響應歸一化,提高精度,增強了模型的泛化能力。采用最大池化(max pooling)方法代替了原有的平均池化(average pooling),降低模糊化效果。此外,為了提高網絡運行速度,Alexnet還采用雙GPU(graphics processing unit)的設計模式。

圖3 Alexnet經典模型
1.3.2 改進的Alexnet模型
由于水稻害蟲外觀分類數據集和ImageNet數據集相差較大,將Alexnet直接應用于水稻害蟲會導致識別準確率的降低,所以針對水稻害蟲外觀提出了一種基于改進的Alexnet卷積神經網絡的水稻害蟲識別模型,去除之前的LRN層,在每一個卷積層之后引入BN層和使用全局平均池化代替全連接層進行網絡結構的優化,并用PReLU激活函數替換ReLU函數,進一步提高Alexnet在水稻害蟲識別上的性能。改進后的模型結構如圖4所示。

圖4 Alexnet_n模型
(1)批歸一化。學習數據分布是卷積神經網絡學習過程的本質,訓練數據與測試數據的分布不同,會降低網絡的泛化能力。Alexnet原有的LRN局部響應歸一化層可以增大局部較大的響應值,而抑制較小的值,從而提高模型泛化能力。而BN層還可以在此基礎上,提高模型的收斂速度。BN是由Ioffe & Szegedy提出的一個用于訓練神經網絡的數據處理技巧。可以通過緩解梯度彌散和加快模型收斂速度來使所訓練的模型更加容易和穩定[26]。
去除Alexnet原有的LRN層,在每一個卷積層的激活函數之后,加入了BN層。BN算法的如式(1)所示:

(1)
式(1)中:μ為批處理Xi~Xλ個水稻害蟲樣本數據的均值。
方差δ為

(2)
計算數據的均值和方差后,再對水稻害蟲樣本數據進行歸一化:

(3)
式(3)中:m為大于0的常量。
yi=βiXi+αi
(4)

(2)全局平均池化。經典的Alexnet是在卷積層后采用全連接層進行特征向量化的,最后再softmax分類。但是全連接層參數過多,容易造成過擬合,嚴重依賴dropout進行規則化[27]。為了解決這個問題,采用全局平均池化來代替全連接層[28]。與傳統的全連接層不同,對每個特征圖一整張圖片進行全局均值池化,這樣每張特征圖都可以得到一個輸出,如圖5所示。采用全局平均池化,可以大大減小網絡參數,避免過擬合,值得注意的是,每張特征圖相當于一個輸出特征,然后這個特征就表示了我們輸出類的特征。相比于全連接層,全局平均池化的優勢表現在:①通過加強特征圖與類別的一致性實現了簡化卷積網絡結構的目的;②無需參數優化,有效得避免了過擬合現象;③整合了空間信息,對輸入的空間變換更具有穩定性。

圖5 全局平均池化
(3)激活函數PReLU。經典的Alexnet使用的激活函數是ReLU,代替了CNN中的sigmiod并且解決了sigmoid引起的梯度彌散問題。此外,在學習速度上面ReLU也比sigmiod表現得更好。ReLU的表達式為

(5)
式(5)中:x為上層的輸入。
ReLU函數是單向激活的,當神經元的值小于零時,神經元不輸出,當神經元的值大于0時,神經元的輸出與輸入呈線性關系[29]。ReLU可以降低網絡的復雜性,降低過擬合的概率。也可以減少訓練時間,避免梯度的消失。但是ReLU有一個缺點,可能會導致神經元壞死。為了解決上述問題,采用PReLU激活函數,它是ReLU函數的改進。PReLU的表達式為

(6)
PReLU在ReLU的基礎上增加了一個參數修正a,a是一個大于0的常數,有效地避免了神經元壞死。它不僅減少了訓練時間函數,而且避免了像ReLU那樣的過擬合。
訓練與測試均是在keras框架下完成的。進行實驗的計算機物理環境配置是:CPU是Intel(R) Xeon(R) Silver 4112@ 2.6 GHZ 2.59 GHZ;16 GB內存;GPU是NVIDIAQuadro P4000,8 GB顯存。軟件環境:CUDATookit 9.0,CUDNN7.1;keras 2.1.2;windows 10 64 bit操作系統。
在水稻害蟲數據集上驗證改進后的Alexnet在水稻蟲害方面的識別效果,并與已有的方法進行比較。
圖6是傳統Alexnet迭代了200次之后的損失(loss)曲線和準確率(accuracy)曲線圖。由圖6可知,Alexnet的loss曲線和accuracy曲線訓練曲線在迭代了50次之后開始收斂,但是曲線出現局部突變現象,說明結果不穩定,測試損失(validation loss)曲線以及測試準確率(validation accuracy)曲線收斂之后開始出現偏離現象,說明出現了一定的過擬合現象。

圖6 Alexnet的識別效果
圖7是Alexnet_n迭代了200次之后的loss曲線和accuracy曲線圖。由圖7(a)可知,Alexnet_n模型在迭代了30次左右訓練損失(train loss)和測試損失(validation loss)都開始收斂,二者的值相差很小,且趨近于0,說明該模型達到了擬合狀態,并未出現過擬合或者欠擬合現象。Alexnet_n模型的accuracy曲線如圖7(b)所示,從圖7可以看出,在迭代了30次以后訓練準確率(train accuracy)曲線和測試準確率(validation accuracy)都開始收斂,二者的值相差很小,穩定在1附近。說明改進后的模型在水稻害蟲數據集上有較高的識別率和較好的魯棒性,優于原有模型。

圖7 Alexnet_n的識別效果
對兩種模型運用不同的激活函數結果進行對比。由表2可知,改進激活函數可以提高模型的準確率。

表2 激活函數對比
為了更好地評價Alexnet_n模型在水稻害蟲識別上表現出的性能,本實驗還采用了召回率(recall)、精確率(precision)、F1值等常用的幾個指標來對結果進行評價[30],其各指標的計算方式為

(7)

(8)

(9)
式中:TP為真正例,表示樣本實際為正樣本,檢測為正樣本的個數;FP為假正例,表示樣本實際為負樣本,但檢測為正樣本的個數; FN為假負例,表示樣本實際為負樣本,檢測為正樣本的個數。結果如表3所示,由表3可知,Alexnet_n模型在4種水稻害蟲識別上的都有不錯的表現,精確率、召回率、F1都維持在較高水平。

表3 水稻害蟲數據集測試指標
為了進一步驗證改進后的Alexnet模型的有效性,將本文研究的方法與傳統卷積神經網絡做對比,結果如表4所示。由表4可知,改進后的模型相對于原有模型具有更高的準確率,平均準確率高達98.92%,均高于LeNet5、VGG13和VGG16等傳統模型,相比于原有模型提升了1.96%。平均損失值為0.03,均低于LeNet5、VGG13和VGG16等傳統模型,相比于原有模型降低了0.1。此外,改進后的模型針對4種害蟲的識別精確率、召回率、F1均高于LeNet、VGG13和VGG16等傳統模型,與原有模型相比,改進后的模型在三化螟、稻飛虱、稻蝗3種害蟲的識別效果均優于原有模型,稻縱卷葉螟幼蟲的識別效果較原有模型稍差但不明顯。

表4 不同方法在水稻害蟲數據集上的對比
此前已有不少研究者將卷積神經網絡運用于水稻害蟲識別體系的建立中。劉德營等[31]使用改進的自制昆蟲圖像采集裝置采集自然環境下的白背飛虱圖像,將卷積神經網絡用于白背飛虱的識別,識別準確率可達94.14%,但是該模型識別的害蟲種類單一,實用性有待提升。佘顥等[32]提出了一種基于SSD(single shot multibox detector)網絡模型的水稻害蟲識別方法,提高了害蟲識別的準確率速度以及檢測精度,但是該方法只適用于大目標的檢測,對小目標的檢測效果并不理想。梁萬杰等[33]針對水稻蟲害識別問題,提出了一種基于卷積神經網絡的二化螟害蟲識別方法,識別精度達到89.14%,滿足基本要求,但仍有提升空間。錢蓉等[34]提出了基于VGG16的水稻害蟲識別模型,識別平均準確率達90.7%,但是VGG16網絡存在模型參數過多不易訓練等特點。
本文研究中選取了稻縱卷葉螟、三化螟、稻蝗、稻飛虱4種常見的水稻害蟲為研究對象,解決了模型識別種類單一的問題,在數據處理階段,還對害蟲圖像進行尺度變化等預處理,使得模型對小目標具有魯棒性。在模型選取階段,選取了模型較小的Alexnet進行改進,在Alexnet的基礎上通過去除LRN層,添加BN層來加速網絡的收斂,提高網絡的泛化能力,并用全局平均池化代替全連接層來優化網絡結構,減少參數量,此外還將激活函數ReLU替換成PReLU,避免了神經元壞死。相對于錢蓉等[34]采用的模型,改進后的模型結構簡單,便于訓練。改進后的模型平均識別準確率可達98.92%,均高于前人的研究成果[31-34]。實驗結果表明改進后的網絡模型對水稻害蟲圖像具有較好的識別效果和較好的魯棒性,有希望應用于水稻生長過程中的信息監測和自動化栽培中,也為農作物害蟲的識別與分類提供了新的思路和方法。
值得注意的是,在本文研究中僅對水稻常見的4類害蟲進行識別,但是農作物的害蟲遠遠超過4類,因此在未來的研究中,增加害蟲類別,提高模型建立的樣本總量,以改進網絡性能是需要研究的問題之一。
提出了一種基于改進的Alexnet模型用于識別水稻害蟲,經過實驗得到以下結論。
(1)針對經典卷積神經網絡Alexnet在水稻害蟲分類過程中存在的參數過多,計算量大并且容易過擬合現象,提出了在對數據集進行數量擴增和細節增強的同時,在卷積層后面添加批量歸一化,用全局平均池化代替全連接層,用PReLU激活函數代替ReLU激活函數的方法來改進Alexnet,優化后的網絡比原網絡提高了1.96%,并且降低了損失函數的值。
(2)結果表明改進后的模型在水稻害蟲分類上表現出了較好的性能,平均準確率達到98%以上,優于Alexnet、LeNet5、VGG16、VGG13等經典卷積神經網絡。損失函數的值為0.03,低于其他模型,說明對比于其他模型,Alexnet_n在更適用于水稻害蟲的識別。