許景輝 邵明燁 王一琛 韓文霆
(1.西北農林科技大學機械與電子工程學院, 陜西楊凌 712100;2.西北農林科技大學旱區農業水土工程教育部重點實驗室, 陜西楊凌 712100;3.西北農林科技大學中國旱區節水農業研究院, 陜西楊凌 712100)
玉米作為我國三大農作物之一,是重要的糧食作物和工業原料,玉米產業的穩定健康發展在糧食安全、農民增收和國民經濟中具有重要作用[1]。玉米病害直接影響玉米的產量與質量。玉米常見病害有十幾種,病發處多為葉部、穗部和根部,其中尤以葉部的大斑病、銹病等最為常見[2]。及時準確地識別病害并進行控制,可將其危害降至最小。目前玉米病害識別主要依靠農林專家進行田間現場辨識,這種方法不僅主觀性強,而且費時、費力、效率低下。因此,實現智能、快速和準確的玉米病害識別具有重要意義。
隨著機器學習技術的發展與計算機數據處理能力的增強,結合圖像處理的機器學習技術在植物病害智能識別上的應用越來越廣泛,并且取得許多成果[3-6]。這些研究都是通過人工設計提取病害特征,雖然取得了較好的效果,但也存在特征提取困難、適應性差和抗干擾能力弱等問題。
田間自然環境下的玉米病害圖像背景復雜,光照以及拍攝角度變化大,造成人工提取病害特征困難。在傳統人工提取圖像特征的方法中,無論是利用Canny算子從圖像邊緣提取,還是利用HIS分量分解顏色空間,都很難找到一個很好的閾值,把玉米病害特征與背景分割開。深度學習中的卷積神經網絡在特征提取方面發揮著重要作用,它可以實現對圖像特征的自動提取,并對圖像的位移、縮放和扭曲等變形具有良好的適應性,已被應用于人臉識別[7-8]、遙感圖像識別[9]和車輛自動駕駛[10]等領域。在農業領域,學者們也開展了許多相關的研究[11-15]。秦豐等[16]采用深度學習和支持向量機識別苜蓿葉部病害,孫俊等[17]、MOHANTY等[18]采用卷積神經網絡對多種植物葉片病害進行識別,BRAHIMI等[19]基于深度卷積AlexNet網絡模型將西紅柿病害分為9種,高震宇等[20]將卷積神經網絡應用在茶葉分選系統中。在上述研究中卷積神經網絡雖取得較好的效果,但要得到較好分類識別性能的卷積神經網絡模型還需要大量的數據。為此,龍滿生等[21]、鄭一力等[22]利用遷移學習,在小數據樣本的情況下訓練得到高性能的卷積神經網絡模型,分別實現了油茶病害和不同植物葉片的識別。
卷積神經網絡雖在植物葉片圖像的特征提取與識別上有了一定應用,但上述試驗樣本多為簡單的單一背景,大田實用性較差。對于復雜的田間背景圖像,卷積神經網絡則需要大量的訓練樣本學習提取圖像特征的能力。而遷移學習使卷積神經網絡在大數據集上已經訓練得到了較好的特征提取能力,可以減小網絡模型訓練所需的樣本數量。田間玉米病害圖像背景復雜,并且目前沒有大量的數據集。因此,本文在多角度光照變化較大的復雜背景下,拍攝田間玉米病害圖像作為訓練樣本,基于VGG-16[23]網絡模型,利用遷移學習方法,使用較小的訓練樣本訓練識別精度較高的模型,以期實現田間復雜背景下的玉米大斑病與銹病的智能識別。
圖像數據采集地點為陜西省楊凌區陵東村的一塊玉米試驗田,為了體現田間自然采集環境,采集時進行多角度拍攝;拍攝時間包括早晨、中午、傍晚等不同時刻;拍攝時的背景為田間復雜背景。利用杰銳微通HF800型工業攝像頭,分辨率640像素×480像素,采集了玉米大斑病、銹病與健康葉片圖像各150幅。為了豐富試驗樣本,利用網絡搜集了3類圖像樣本各50幅。試驗樣本共計600幅,圖像樣本示例如圖1所示。

圖1 玉米葉片圖像示例
首先從采集的圖像中隨機選擇75%用于訓練,25%用于測試。然后把原始的訓練圖像進行旋轉變換(分別旋轉90°、180°、270°)與翻轉變換(上下翻轉、左右翻轉),把訓練圖像集擴充到5 400幅,作為訓練集。最后采用雙三次差值法把圖像縮放到224像素×224像素。
深度學習中的卷積神經網絡是一種流水線式多處理層的網絡模型,它包含多個卷積層、池化層和全連接層。模型的訓練為在損失函數的驅動下將誤差反向傳播至網絡各層并對參數權值進行更新,模型的測試則為原始數據通過所有訓練好的中間層映射到輸出。卷積層的功能是對圖像進行特征提取,每層包含許多個卷積核,卷積核與圖像作用獲得圖像的局部信息。卷積層計算公式為
(1)

fm,n——維度為H×W的卷積核

i、j——張量的坐標值
m、n——卷積核的坐標值
池化層是使用池化函數對特征圖進行壓縮降維,對輸入具有平移不變性,不僅能提高模型對圖像發生位移、旋轉等變換的泛化能力,還能減少模型的計算量和參數個數。常用的池化函數有平局池化、最大池化和隨機池化等。若采用最大池化函數和2×2的池化窗口,則池化層的計算公式為
fpool=Max(si,j,si+1,j,si,j+1,si+1,j+1)
(2)
式中fpool——池化后的結果
si,j——特征圖張量上(i,j)位置上的元素
全連接層是對卷積層與池化層提取的高維特征數據進行降維平鋪,再進行非線性變換,最后將結果輸入到分類器中進行分類。
遷移學習是將一個任務上訓練好的卷積神經網絡模型通過簡單的調整使其適用于一個新的任務[24-26]。訓練好的卷積神經網絡的卷積層可以對圖像進行特征提取,提取到的特征向量再輸入結構簡單的全連接層就可以實現較好的識別分類,所以經過卷積層提取的特征向量可以作為圖像的一個更加精簡且表達能力更強的向量。于是,訓練好的卷積層加上適合新任務的全連接層將組成新的網絡模型,對新的網絡模型稍加訓練就可以處理新的分類識別任務[27]。
遷移學習首先保持模型卷積層的結構不變,接著向卷積層載入訓練好的權重與參數。然后設計適用于新任務的全連接層,接著用新設計的全連接層代替原本的全連接層,并與先前的卷積層組成新的卷積網絡模型。最后用新圖像數據集訓練新模型,訓練新模型有兩種方式,一種方式為凍結卷積層,只訓練全連接層,另一種方式為訓練網絡的全部層。
本文使用VGG-16基本網絡模型進行遷移學習,VGG-16是牛津大學計算機視覺組(Visual Geometry Group)和Google DeepMind公司一起開發的一種深度卷積神經網絡模型,其模型如圖2所示,包含了13個卷積層、5個池化層和3個全連接層,模型參數繁多,為了訓練得到一個較好的分類識別網絡模型,需要大量的數據集。

圖2 VGG-16卷積神經網絡模型
VGG-16在ImageNet數據集上完成訓練,圖像數量高達100多萬幅。然而玉米病害的圖像目前還沒有足夠大的數據集,難以把網絡模型訓練到理想的分類效果。因此可以利用遷移學習的方法來實現玉米病害的小數據集分類任務。保留圖2中卷積模塊5之前的模型結構,然后重新設計全連接模塊。改進后的全連接模塊如圖3所示。

圖3 改進后的全連接模塊流程圖
輸入圖像經過卷積和池化模塊1~5運算可展開成一個1×25 088的向量,通過全連接層1降維到1×256。之后進入非線性激活函數,常用的激活函數有sigmoid函數、tanh函數與ReLU函數,模型采用ReLU激活函數。ReLU函數相對于前兩個函數具有計算簡單、收斂速度快等特點,其表達式為
(3)
式中fReLU——ReLU函數
t——ReLU函數的自變量
接著進入Dropout層[28],Dropout層是在網絡的每次訓練過程中,按照一定的概率將一部分神經元權重暫時置0,可以緩解神經元之間的協同適應,降低神經元間的依賴,避免網絡的過擬合。然后進入全連接層2把向量的維數進一步降到1×3。最后利用Softmax函數計算得到最終的分類概率,其計算公式為
(4)
式中vr——向量中第r個分量
pr——第r個分量的分類概率
k——分量的序號
用新設計的全連接層代替VGG-16的全連接層模塊構成一個新的網絡模型,再把利用VGG-16已經訓練好的卷積層權重與參數遷移載入到上述新構建模型的卷積層中,最后用收集到的玉米圖像對新模型進行訓練,訓練完成的新模型即可對玉米病害圖像進行檢測與識別,具體流程如圖4所示。

圖4 基于遷移學習的玉米病害圖像識別方法流程圖
試驗在Python 3.6.7、Tensorflow-GPU 1.8.0軟件環境下完成。硬件環境中CPU采用Intel core i7-6500U,主頻2.5 GHz;GPU采用Nvidia GeForce 940MX,2 GB顯存。
綜合考慮硬件設備的性能以及訓練效果,試驗每批次訓練與測試都是15幅圖像,即batch size設置為15,動量參數設置為0.9。在不同影響因素下對網絡模型進行訓練,包括全新學習與兩種不同的遷移學習訓練方式(凍結卷積層,只訓練全連接層與全部層)、不同學習率(0.01、0.000 1)以及圖像數據是否擴充,共計12組試驗。
觀測各組試驗發現,若訓練收斂,則迭代訓練43 200次后訓練的準確率與損失函數值都趨于穩定,其中訓練準確率變化范圍在1個百分點以內,損失函數值變化范圍在0.01以內。因此選擇迭代訓練43 200次的模型對訓練樣本和測試樣本的準確率進行評估并保存,結果如表1所示。為了記錄試驗過程中的數據,每訓練一輪(遍歷所有訓練圖像)便對訓練樣本和測試樣本的準確率進行評估并保存。

表1 不同因素下模型訓練與測試的準確率
3.3.1學習率對模型的影響
原VGG-16在ImageNet數據集上的訓練初始學習率為0.01。針對本試驗樣本,當學習率設置為0.01時,由表1可知,各組試驗的訓練準確率與測試準確率都在33%左右,而在3種葉片中隨機識別的準確率為33.33%。為找到出現這種結果的具體原因,在學習率為0.01的情況下增添多次試驗并記錄每次試驗中每輪訓練的損失函數值,發現不同的卷積層初始參數會出現3種損失函數值。第1種情況如圖5a所示,損失函數值一直波動,不能夠減小收斂。第2種情況如圖5b所示,損失函數先收斂,然后訓練到某輪后發生梯度爆炸。第3種也是發生梯度爆炸,而與第2種情況不同的是梯度爆炸發生在開始訓練時。第1種與第2種情況發生在全新學習訓練方式中,過大的學習率導致全新學習無法正常訓練,第3種情況發生在兩種遷移學習訓練方式中,過大的學習率引起損失函數值梯度爆炸,參數更新過快,破壞遷移學習中原本訓練好的權重信息,使遷移學習失去意義。當學習率設置為0.000 1時,3種訓練方式均能取得較好的效果。

圖5 損失函數值變化曲線
3.3.2圖像數據擴充對模型的影響
通過表1可知,在學習率為0.000 1時,相比較于原始圖像數據集,擴充圖像數據作為訓練集對3種訓練方式的測試準確率分別提高了1.34、2.66、4.00個百分點,表明圖像數據擴充可以提高測試的準確率。 圖像數據擴充前后全新學習與遷移學習訓練全部層的訓練準確率都為100%,而遷移學習只訓練全連接層的訓練準確率卻下降了0.08個百分點,這是因為數據擴充增加了數據的多樣性,僅僅訓練改變全連接層參數難以讓模型適應多樣的數據。但遷移學習只訓練全連接層的測試準確率卻有所提高,表明擴充圖像數據提高了模型的魯棒性。
數據擴充雖提高了模型的魯棒性,但提高效果最為明顯的遷移學習訓練全部層也僅提高4個百分點。為研究遷移學習訓練全部層在不同擴充圖像情況下的泛化能力,對原始數據集、旋轉擴充數據集、翻轉擴充數據集以及旋轉翻轉共同擴充數據集進行測試,訓練準確率與測試準確率如圖6所示。3種不同擴充情況下的訓練準確率與測試準確率相差不大,原因是數據圖像采集時為多角度拍攝,旋轉和翻轉操作對圖像的質量改變不大。又由于遷移學習使模型在大數據集上訓練得到了較好的特征提取能力,弱化了數據集在數量擴充上的作用。但3種擴充數據較原始數據集的測試準確率有所提升,原因是原訓練樣本集只包含450幅圖像,訓練樣本數量較少,數據擴充為模型訓練提供了必要的數據量。表明遷移學習雖弱化了數據擴充作用,但一定數量的訓練集還是必要的。
3.3.3學習方式對模型的影響
在學習率為0.000 1、擴充圖像作為訓練集的條件下,3種訓練方式的訓練準確率與測試準確率如圖7所示。由圖7a可知,全新學習訓練方式的收斂速度最慢,并且具有較大的波動。遷移學習只訓練全連接層的收斂速度較全新學習快一些,最后趨于平穩,遷移學習訓練全部層收斂速度最快,僅訓練十幾輪訓練準確率就達到了100%。表明遷移學習縮短了模型收斂時間。

圖6 不同擴充方式下的訓練與測試準確率

圖7 不同訓練方式下訓練與測試準確率曲線
由圖7b可知,測試準確率最低的為遷移學習只訓練全連接層,原因是遷移參數權重的卷積層模塊雖然可以提取圖像的特征,但玉米病害圖像數據與ImageNet圖像數據存在較大差異,僅訓練改變全連接模塊,不能達到理想的效果,而遷移訓練全部層可以明顯提高測試的準確率。
3.3.4模型檢驗
為了便于應用,用Python將腳本程序開發成圖形用戶界面,為擴大待檢測玉米病害圖像的來源,設計了3種圖像來源方式,分別為:用requests庫通過輸入的網址爬取網絡圖像、用PyQt5庫中的文件選擇功能選取本地圖像以及通過OpenCV庫調用攝像頭拍攝的圖像。在界面中選擇訓練好的模型以及通過上述3種方式獲取的玉米病害圖像,載入待檢測的圖像即可進行檢測。現選擇遷移學習訓練全部層訓練的模型,選擇1幅玉米大斑病圖像進行檢測,結果顯示圖像為大斑病的概率為99.87%,如圖8a所示。再選擇1幅玉米銹病圖像進行檢測,結果顯示圖像為銹病的概率為100%,如圖8b所示。為檢驗模型的識別精度與泛化能力,從網絡搜集3種病害圖像各50幅,3種圖像的查準率與查全率如表2所示,平均查準率與查全率分別為93.42%與93.33%,結果表明通過遷移學習訓練全部層訓練的模型具有較好的應用效果。
(1)與全新學習相比,遷移學習縮短了訓練時間,提升了模型的識別性能,在玉米病害圖像識別方面具有較好的識別精度。
(2)遷移學習弱化了數據擴充的作用,但一定數量的訓練集還是必要的,對數量較小的訓練數據集進行必要的數據擴充可以提高模型的識別性能。
(3)在全新學習和遷移學習中,學習率0.01訓練效果不理想。在全新學習中,學習率較大會導致損失函數值振蕩或梯度爆炸,無法達到訓練效果;在遷移學習中,學習率較大會導致參數更新過快,破壞遷移學習中原本訓練好的權重信息。
(4)VGG-16原訓練樣本與玉米病害樣本差別較大,在遷移學習中,若保持卷積層模塊的權值參數不變,只訓練全連接層模塊,測試集的準確率為83.33%,而訓練模型全部層模塊,在測試樣本中的準確率為95.33%。表明訓練全部層模塊,模型能夠更好地提取玉米葉片病害圖像的特征。

圖8 可視化界面檢測結果

表2 模型的識別精度
(5)在田間復雜背景下,卷積神經網絡的遷移學習對玉米病害圖像識別具有較好的應用效果。