劉合兵, 魯?shù)眩?席磊
(1.河南農(nóng)業(yè)大學信息與管理科學學院,河南 鄭州 450046;2.河南經(jīng)貿(mào)職業(yè)學院,河南 鄭州 450046)
玉米作為一種重要作物,其整個生長周期會受到各類病害的侵襲,病發(fā)處多為葉部、穗部和根部,其中葉部的大斑病、灰斑病和銹病等會對玉米生長造成嚴重的影響[1-3]。近年來,此類病害有加重跡象[4]。目前,相關農(nóng)作物病害識別多通過傳統(tǒng)機器學習方法進行,包括支持向量機(support vector machines, SVM)模型[5-7]以及BP神經(jīng)網(wǎng)絡(back propagation neural network, BPNN)模型[8]等。但是,此類方法操作繁瑣,誤差大,且需要人為提取特征,實際應用較為不便。卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)是在人工神經(jīng)網(wǎng)絡(artificial neural networks,ANNs)基礎上進行卷積計算,并通過局部連接、池化等操作令模型具有對圖像的自我判斷能力,從而使病害識別更為高效。目前,CNN已在小麥、黃瓜以及煙草等病害識別中取得不錯的進展[9-11]。但在實際應用中,CNN模型還存在缺乏數(shù)據(jù)去訓練網(wǎng)絡的情況,導致在病害識別過程中相關信息無法得到及時反饋[12]。遷移學習是將已有的數(shù)據(jù)或模式應用到相關卻不同的領域中,通過利用一個或者多個輔助領域任務中學到的有用知識來改變特定領域數(shù)據(jù)不足的問題,從而達到提高學習效果的目的[13]。相關研究表明,遷移學習深度模型的泛化能力能縮短訓練時間。鄭一力等[14]發(fā)現(xiàn),將遷移學習應用在Inception-V3等網(wǎng)絡進行訓練可以得到較好的植物葉片識別效果。隨著時代的發(fā)展,傳統(tǒng)的CNN模型存在復雜度高、部署困難等缺點,不適合移動設備的開發(fā)與應用,而不需要網(wǎng)絡連接、只部署在手機端的作物病害識別應用軟件(application, APP)更符合實際需求。劉洋等[15]綜合比較了MobileNetV1模型和 InceptionV3模型在移動端的差異后,發(fā)現(xiàn)MobileNetV1作為輕量級神經(jīng)網(wǎng)絡在移動端性能更優(yōu)。而Mobile Net系列模型都具有相同特點[16]。因此,本試驗以來自PlantVillage[17]公共數(shù)據(jù)集的玉米葉部病害為研究對象,將MobileNetV2和遷移學習相結(jié)合,在改進網(wǎng)絡識別能力基礎上開發(fā)了移動端玉米病害識別系統(tǒng),并對實地篩選的真實玉米葉片進行驗證,證明該系統(tǒng)具有良好的魯棒性和識別能力,減少了在異常和特殊情況下系統(tǒng)崩潰導致的識別錯誤,為相關研究提供理論基礎與技術支持。
本研究以健康玉米葉片以及3種玉米病害(玉米大斑病、玉米灰斑病、玉米銹病)葉片作為試驗對象。試驗數(shù)據(jù)來自PlantVillage[16]公共數(shù)據(jù)集,共3 852幅。示例圖像如圖1所示。
圖1 健康玉米葉片與玉米病害葉片示例圖像Fig.1 Example images of healthy maize leaves and diseased maize leaves
由于試驗中健康玉米葉片以及3種玉米病害(玉米大斑病、玉米灰斑病、玉米銹病)葉片數(shù)據(jù)量有限,故選擇通過數(shù)據(jù)增強[18]的方法擴大數(shù)據(jù)集的規(guī)模,以增強原數(shù)據(jù)集中存儲圖像的多樣性,進而達到增加模型泛化能力的作用。數(shù)據(jù)增強技術包含了多種變換因素,包括空間、幾何等各方面的變換操作均可以實現(xiàn)圖像增強的目的。本試驗使用Python的PIL模塊對所有試驗數(shù)據(jù)圖像進行水平翻轉(zhuǎn)以增強模型魯棒性及適應性。同時,針對數(shù)據(jù)集中玉米灰斑病圖像數(shù)量過少的情況,本試驗特別對玉米灰斑病圖像增加垂直翻轉(zhuǎn)操作。數(shù)據(jù)增強后的所有樣本共計8 730幅,示例圖像如圖2所示。
為方便模型訓練,將8 730幅圖像統(tǒng)一調(diào)整為224像素×224像素,并用0、1、2和3作為數(shù)據(jù)集的標簽分別代表健康玉米葉片、玉米大斑病、玉米灰斑病和玉米銹病。依據(jù)增強后的圖像劃分數(shù)據(jù)集,按8∶2的比例將數(shù)據(jù)分為訓練集和測試集。數(shù)據(jù)增強后的圖像數(shù)量如圖3所示。
本研究采用TensorFlow作為玉米病害識別模型搭建和訓練平臺,模型在GPU環(huán)境下運行。試驗的軟件及硬件配置如表1所示。
圖2 增強后健康玉米葉片和玉米病害葉片示例圖像Fig.2 Example images of healthy maize leaves and diseased leaves of maize after enhancement
圖3 數(shù)據(jù)增強后圖像數(shù)量Fig.3 Image numbers after data enhancement
表1 試驗軟硬件配置Table 1 Test software and hardware configuration
試驗選擇的模型為MobileNetV2模型[19],其結(jié)構(gòu)如表2所示。其中,Conv2d為二維的卷積操作,Bottleneck為反向殘差模塊,Avgpool為全局池化操作,t為通道擴展因子,c為輸出通道數(shù),n為塊重復次數(shù),s為步長,k為自己樣本訓練通道數(shù)。對試驗所用的batchsize和學習率進行測試并優(yōu)化,選擇其中效果最好的batchsize和學習率參數(shù)作為試驗默認參數(shù)。對試驗所用數(shù)據(jù)的前2層卷積塊與最后一層卷積塊進行特對比分析。采用ImageNet上預訓練好的MobileNetV2模型參數(shù)作為遷移對象,用特征提取、全部遷移和微調(diào)3種方法,對遷移模型進行訓練。
表2 MobileNetV2模型結(jié)構(gòu)Table 2 Mobilenetv2 model structure
采用隨機梯度下降算法進行優(yōu)化,隨機梯度下降算法的公式如下:
(1)
由公式(1)可知,除了梯度本身,bachsize和學習率這2個參數(shù)直接決定了模型的權重更新,從優(yōu)化本身來看是影響模型性能收斂最重要的參數(shù)[20]。η直接影響模型的收斂狀態(tài),n則影響模型的泛化性能,因此本試驗來測試bachsize和學習率對模型性能的影響。
采用準確率(accuracy,A) 作為病害檢測結(jié)果的主要評價指標,對模型進一步分析采用精確率(precision,P)、召回率(recall,R) 、特異度(specificity,S)作為評價指標[21]。各個指標的計算是由分類結(jié)果的混淆矩陣得出,如表3所示。
表3 混淆矩陣Table 3 Confusion matrix
1.5.1 準確率 準確率即指識別分類任務中正確識別的樣本數(shù)與樣本總數(shù)的比值。準確率的計算公式為:
(2)
對于普通數(shù)據(jù)集來講準確率越高則模型效果越好。但對于數(shù)據(jù)集樣本數(shù)量不均等時,準確率就不能作為評價的唯一標準,還需要其他指標輔助進行評判。
1.5.2 精確率 精確率可以簡單理解為一個類的精確率越高,這個類被其他分類誤判的數(shù)量就越少。精確率的計算公式為:
(3)
1.5.3 召回率 召回率指一個類被錯誤判斷給其他類的數(shù)量,數(shù)量越少則召回率的值越高。召回率跟精確率是相互制衡的指標。如果一個類精確率提高,那么其召回率也會相應的下降。召回率的計算公式為:
(4)
1.5.4 特異度 特異度表示的是所有負例中被分對的比例,衡量了分類器對負例的識別能力。特異度的計算公式為:
(5)
前面提到的評價指標常被用在二分類模型評估上,而本試驗的對象是四分類問題,因此使用平均值的方法構(gòu)建試驗的評價指標。
試驗遷移學習的過程如圖4所示。遷移學習[22-24]可以加快網(wǎng)絡模型收斂進程,減少網(wǎng)絡訓練所需的樣本數(shù)量和時間。利用遷移學習,將ImageNet從大量試驗中得到的模型通用參數(shù)遷移到試驗中,實現(xiàn)對玉米病害的識別。試驗采用全部參數(shù)遷移、特征提取、微調(diào)3種不同遷移方法得到的模型與全新訓練的MobileNetV2模型進行對比,通過準確率、精確率、召回率和特異度的對比,最終選擇效果最好的模型遷移方法。
1.6.1 全部參數(shù)遷移 全部參數(shù)遷移指的是基于模型的遷移學習方法,也是最常用的遷移學習方法,即通過一些手段來對源域的樣本進行權重權衡,來對源域和目標域的樣本進行遷移。試驗中全部遷移是采用預訓練模型的結(jié)構(gòu)和初始權重,即ImageNet上已經(jīng)訓練好的MobileNetV2模型文件在玉米病害數(shù)據(jù)集上直接應用。
1.6.2 特征提取 特征提取是指將目標域除全連接層之外的所有網(wǎng)絡的權重凍結(jié),將源域中模型的全連接層替換為具有隨機權重的新全連接層,并且只訓練新的全連接層。在本試驗中,將ImageNet上已經(jīng)訓練好的MobileNetV2網(wǎng)絡結(jié)構(gòu),將原本的輸出層去掉,添加1個四分類的分類器,將ImageNet的MobileNetV2預先模型訓練好的網(wǎng)絡作為試驗任務的特征提取器,只對最后增加的分類器參數(shù)進行重新學習,而預先訓練好的網(wǎng)絡參數(shù)不會被修改或凍結(jié)。
1.6.3 微調(diào) 微調(diào)則是重新設計要遷移模型的卷積模塊,凍結(jié)網(wǎng)絡的部分層,重新訓練部分層。通俗來說,就是使用預訓練網(wǎng)絡的初始化網(wǎng)絡,用新數(shù)據(jù)訓練部分或整個網(wǎng)絡。試驗將MobileNetV2網(wǎng)絡的第10個Bottleneck開始凍結(jié),然后對后面的Bottleneck重新進行訓練。因為底層網(wǎng)絡捕獲的是曲線、邊緣這種普遍的特征,在一般卷積神經(jīng)網(wǎng)絡底層提取信息都是相通的。保證這些權重不變,讓網(wǎng)絡在學習過程中重點關注玉米病害數(shù)據(jù)集特有的一些特征,對后面的網(wǎng)絡進行調(diào)整,直到凍結(jié)所有卷積層為止,尋找出準確率最高的微調(diào)方法作為試驗的最終微調(diào)模型。
圖4 遷移學習流程圖Fig.4 Flow chart of transfer learning
2.1.1 batchsize值對模型性能的影響 將batchsize值設置為4的倍數(shù),分別測試當batchsize值為16、32、64時對模型準確率的影響情況,測試結(jié)果如圖5所示。當bachsize值為16時,模型識別準確率顯現(xiàn)較低的水平。當batchsize值為32時識別準確率明顯增加,當batchsize值為64時,準確率的提升不明顯。最終設定試驗默認batchsize值為32。
圖5 不同bachsize值的測試準確率對比Fig.5 Comparison of test accuracy for different bachsize values
2.1.2 學習率對模型性能的影響 神經(jīng)網(wǎng)絡每次更新參數(shù)都會存在誤差,學習率即指控制此誤差的其中1個參數(shù)。當學習率設置過大時,會使損失函數(shù)曲線錯過理論最優(yōu)點,網(wǎng)絡永遠無法到達極值點;當學習率設置過小時,損失函數(shù)曲線離理論最優(yōu)點較遠,會增加網(wǎng)絡到達極值點的時間,且容易導致網(wǎng)絡困在局部最小值附近。試驗對4種不同學習率進行測試,分別設置學習率為0.1、0.01、0.001、0.000 1,在同樣條件下觀察試驗結(jié)果。測試結(jié)果如圖6所示。本試驗中,當學習率設置為0.1時,由于損失函數(shù)震幅大,一直在梯度最小值附近,導致模型準確率偏低。當學習率設置為0.01時,準確率有明顯提升。當學習率設置為0.001時,準確率繼續(xù)提升,但是增長幅度較小,說明學習率已經(jīng)接近最優(yōu)值。當學習率為0.000 1時,模型測試準確率出現(xiàn)降低,且準確率穩(wěn)定過慢,說明學習率可能錯過最優(yōu)值。因此,將學習率為0.001作為試驗的默認學習率。
對MobileNetV2網(wǎng)絡卷積塊進行特征可視化,可以更好地理解該模型的識別病害過程。從卷積塊(Bottleneck)淺層到深層選擇進行可視化,結(jié)果如圖7所示。分別選取網(wǎng)絡第1個卷積、第2個卷積與第16個卷積進行對比。從圖中可以看出卷積層圖像的形狀特征在第16個卷積時已經(jīng)無法辨認其信息,原因是神經(jīng)網(wǎng)絡的淺層卷積層提取的特征強調(diào)的是紋理、細節(jié)等普遍存在的特征信息,在第1個卷積與第2個卷積圖像上基本能比較清晰地展現(xiàn)出來。隨著卷積層數(shù)的增加,深層卷積層提取的更多是抽象特征信息,這些抽象特征需要通過一些復雜運算才能具體描述其中的含義[25]。
圖6 不同學習率下的測試準確率Fig.6 Test accuracy at different learning rates
圖8是MobileNetV2遷移學習前后的混淆矩陣對比?;煜仃囍蠿和Y軸的數(shù)字0、1、2、3分別對應著玉米正常葉、玉米大斑病、玉米灰斑病和玉米銹病。其中,X軸代表真實標注的標簽,Y軸代表網(wǎng)絡的預測標簽,當預測標簽與真實標簽一一對應,即藍色深度越深時,證明識別相應標簽的效果越好。利用混淆矩陣可以明顯看出模型預測結(jié)果和實際結(jié)果之間的誤差。結(jié)果表明,微調(diào)模型在識別玉米大斑病和玉米灰斑病時有更好的識別準確率。
表4為4種網(wǎng)絡模型測試集的準確率、精確率、召回率、特異度與模型訓練1個epoch所用時間的對比。其中,微調(diào)模型的性能最好。在整體識別率上,微調(diào)模型分別比全新訓練模型、特征提取模型和全部遷移模型高出3.09%、4.69%和1.66%。精確率、召回率和特異度也有相應的提升。對比4種模型訓練1個epoch的平均時間可知,特征提取模型因為凍結(jié)了全部的Bottleneck,減少了模型對預訓練的Bottleneck重新學習的過程,因此耗時最短。全新訓練模型、全部遷移模型和微調(diào)訓練模型的單個epoch時間所差無幾,三者的epoch時間約為特征提取模型的2倍。
從試驗評價指標來看,MobileNetV2微調(diào)模型最佳。從耗時成本來看,MobileNetV2特征提取模型用時最短。經(jīng)過試驗得出不同遷移學習方法相比傳統(tǒng)模型在準確率和時間上均有明顯優(yōu)勢,微調(diào)的MobileNetV2網(wǎng)絡更適合移動端系統(tǒng)搭建。
圖7 不同卷積層的特征圖對比示例Fig.7 Comparative examples of characteristic diagrams of different convolution layers
(0)健康葉片(1)枯葉病(2)灰斑病(3)銹病 (0) Healthy leaves (1) Leaf blight (2)Gray spot (3) Rust圖8 4種模型的混淆矩陣Fig.8 Confusion matrix of four models
表4 4種模型結(jié)果對比Table 4 Comparison of results of four models
如圖9所示,對比傳統(tǒng)全新訓練的MobileNetV2網(wǎng)絡,采用微調(diào)遷移學習方法的模型可以更快收斂,且微調(diào)模型的效率提升更為顯著,魯棒性更好。
為實現(xiàn)田間玉米病害的快速準確地識別,以微調(diào)的MobileNetV2模型為基礎,開發(fā)移動端玉米病害識別系統(tǒng)。該系統(tǒng)無須借助網(wǎng)絡連接,用戶打開手機APP進行相應操作便可實現(xiàn)對玉米葉部病害的精準識別。系統(tǒng)界面包含“選擇照片”和“實時獲取”2個模塊。“選擇照片”模塊為靜態(tài)圖像的識別,可通過MobileNetV2模型對用戶手機中的圖片或現(xiàn)場拍照的照片進行圖像處理與結(jié)果展示。“實時獲取”模塊為動態(tài)圖像識別,即通過調(diào)用手機攝像頭權限進行視頻拍攝,并把拍攝的視頻流轉(zhuǎn)化成圖像,然后通過MobileNetV2模型進行實時分析,動態(tài)展示識別結(jié)果。系統(tǒng)運行過程如圖10所示。
系統(tǒng)使用Android Studio進行開發(fā),在編譯時引入Java API、C++ API及TensorflowLite相關工具庫。首先將訓練好的微調(diào)模型存儲為h5的格式,利用TensorflowLite自帶的轉(zhuǎn)換功能將模型轉(zhuǎn)換為tflite 的格式。添加調(diào)用攝像頭、讀取圖庫和動態(tài)申請的權限,并在 Android 識別界面中添加“選擇照片”“實時獲取”按鈕,將編譯好的代碼運行在 Redmi Note4X 3GB內(nèi)存標準版測試手機上。導入圖像后“識別結(jié)果”文字上方會顯示導入的圖像,在“識別結(jié)果”文字下方會顯示識別的標簽、結(jié)果、準確率及運行時間。系統(tǒng)識別系統(tǒng)界面如圖11所示。
圖9 全新訓練模型與微調(diào)模型對比Fig.9 Comparison between the new training model and the fine tuning model
為驗證玉米病害識別系統(tǒng)在自然場景下的魯棒性,在大田環(huán)境下開展實測。在“選擇照片”模塊的測試中,先對實地病發(fā)玉米葉片進行拍照,然后隨機選取50幅用作測試樣本。測試結(jié)果如表5所示。經(jīng)測試,本系統(tǒng)能夠?qū)?2個測試樣本進行準確識別,識別準確率為84%,每個樣本的平均測試耗時為1.16 s。在“實時獲取”模塊的測試中,同樣選擇實地拍攝的視頻中的50幀圖像作為測試樣本,本系統(tǒng)能夠準確識別的有37幀,識別準確率為74%,每個樣本的平均測試耗時為0.13 s。實地大田拍攝的圖像光照背景差異較大,且在拍攝過程中存在抖動等現(xiàn)象,導致“實時獲取”模塊的識別準確率低于“選擇照片”模塊。“實時獲取”模塊中圖像差異度相對較小,幾乎相當于模型重復對一種圖片進行識別,因此平均耗時較短。
圖10 玉米病害識別系統(tǒng)運行圖Fig.10 Operating diagram of maize disease identification system
圖11 手機識別系統(tǒng)界面Fig.11 Mobile phone identification system interface
表5 玉米病害實地測試結(jié)果Table 5 Field testing results of maize diseases
本研究提出一種基于遷移學習和MobileNetV2模型的玉米病害識別方法,保留了傳統(tǒng)MobileNetV2網(wǎng)絡模型對于淺層的識別能力,并在此基礎上加入遷移學習,將遷移學習后的模型進行卷積層的刪減試驗。試驗結(jié)果表明,微調(diào)遷移學習后的MobileNetV2模型比全新訓練的MobileNetV2模型在識別效率與識別準確率方面均有所提高。微調(diào)的遷移學習方法相比于許景輝等[26]提到的遷移學習方法具有更好的識別結(jié)果。
試驗結(jié)果表明,在準確率、精確率、召回率、特異度4種評價指標上,全新訓練的MobileNetV2模型的結(jié)果為96.16%、95.87%、95.85%和98.75%;特征提取模型的結(jié)果為94.56%、94.15%、94.12%和98.22%;全部遷移模型的結(jié)果為97.59%、97.40%、97.40%和99.20%;微調(diào)模型的結(jié)果為99.25%、99.25%、99.20%和99.75%。通過分析發(fā)現(xiàn),在4種指標的性能表現(xiàn)上,微調(diào)模型優(yōu)于其他3種模型。在模型識別準確率上,本文的微調(diào)MobileNetV2模型方法優(yōu)于王國偉等[27]的改進LeNet模型和劉翱宇等[28]的TFL-ResNet模型。這表明本試驗提出的微調(diào)MobileNetV2模型能更有效實現(xiàn)玉米葉部病害分類,為玉米病害辨識提供一種有效可行的方法。
為了驗證本研究所提方法模型的實際性能,本研究設計并實現(xiàn)了基于Android平臺的玉米病害識別APP,并進行實地數(shù)據(jù)測試。采用拍照和實時獲取2種方法進行試驗,在準確率和平均耗時2種評價指標上,拍照的結(jié)果為84%、1.16s,實時獲取的結(jié)果為74%、0.13s,識別準確率及速度略優(yōu)于劉洋等[15]的移動端植物病害識別程序。與PRASAD等[29]的研究相比,本系統(tǒng)不需要手工設計特征并上傳至服務器。根據(jù)本研究提出的方法搭建的系統(tǒng)能更好應用于日常檢測玉米病害,為開發(fā)相關APP的提供參考。