李建華,郝 炘,牛明雷,王俊偉,李平安,楊立國
(1. 天津市寶坻區(qū)朝霞街道辦事處,天津301800;2. 天津農(nóng)墾渤海農(nóng)業(yè)集團(tuán)有限公司,天津301823;3. 農(nóng)業(yè)農(nóng)村部工程建設(shè)服務(wù)中心,北京100081;4. 北京市植物保護(hù)站,北京100029;5. 湖南省益陽市桃江縣農(nóng)業(yè)局,益陽413499;6. 內(nèi)蒙古自治區(qū)植保植檢站,呼和浩特010010)
農(nóng)作物病害是我國主要農(nóng)業(yè)災(zāi)害之一,它具有種類多、影響大并時(shí)常暴發(fā)成災(zāi)的特點(diǎn),不僅對農(nóng)作物生產(chǎn)造成損失,還會對食品安全產(chǎn)生威脅[1]。農(nóng)作物病害的正確診斷和鑒定,對保證作物產(chǎn)量、預(yù)防食品安全起著重要作用。識別病害需要專業(yè)人士進(jìn)行鑒定分析、得出結(jié)論,但大多數(shù)種植人員專業(yè)知識較少、經(jīng)驗(yàn)不足,因此迫切需要借助現(xiàn)代計(jì)算機(jī)和互聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)農(nóng)民通過拍攝病害葉子的圖像來判斷作物疾病,及時(shí)對疾病做出預(yù)防[2]。
隨著深度學(xué)習(xí)和圖像技術(shù)不斷發(fā)展,利用高性能的并行計(jì)算集群,極大提高了計(jì)算速度,使得卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)在目標(biāo)檢測[3-5]和圖像分類[6-7]方面取得了巨大的進(jìn)步。彌補(bǔ)了傳統(tǒng)的圖像分類方法中,特征提取能力較差,經(jīng)過復(fù)雜的圖像預(yù)處理和分類算法之后無法根據(jù)獲取到的特征表達(dá)進(jìn)行分類的缺點(diǎn)。利用卷積神經(jīng)網(wǎng)絡(luò)結(jié)合計(jì)算機(jī)視覺技術(shù)識別農(nóng)業(yè)病害已經(jīng)成為當(dāng)下研究的熱點(diǎn)。Kawasaki等[8]利用卷積神經(jīng)網(wǎng)絡(luò)提出一種黃瓜葉病診斷系統(tǒng),在甜瓜黃斑病毒和西葫蘆黃花葉病毒和非病害類別方面達(dá)到94.9%的準(zhǔn)確度。Sanyal等[9]根據(jù)水稻葉子顏色紋理診斷了褐斑病和稻瘟病的水稻病。李艷[10]提出了利用Fisher準(zhǔn)則的卷積神經(jīng)網(wǎng)絡(luò)識別4種馬鈴薯病害,精度為87.04%。Srdjan等[11]利用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了對13種病害的識別,該模型還具有分辨植物葉片與其周圍環(huán)境的能力,最終獲得較高的識別率。Mohanty等[12]分別使用AlexNet和GoogLeNet模型訓(xùn)練,對農(nóng)業(yè)相關(guān)網(wǎng)站(PlantVillage)中14種植物、59種病害以及部分健康植物的圖像進(jìn)行分類識別,識別精度分別可達(dá)到97.82%和99.35%。Brahimi等[13]收集了14 828張圖像對番茄葉片59種病害種類識別,準(zhǔn)確率達(dá)到99.18%。Jihen等[14]利用LeNet網(wǎng)絡(luò)對香蕉病害進(jìn)行分類,并取得了較高的識別率。
文章以10種農(nóng)作物,59種病害為基礎(chǔ),提出了一種基于改進(jìn)型的卷積神經(jīng)網(wǎng)絡(luò)的農(nóng)作物病害識別方法。對常見病狀進(jìn)行等級劃分并將每種植物健康葉片作為負(fù)樣本加入數(shù)據(jù)集,得到35 861張數(shù)據(jù)集。利用隨機(jī)失活(Dropout)和局部響應(yīng)值歸一化的方法以及稀疏連接的網(wǎng)絡(luò)結(jié)構(gòu),設(shè)計(jì)了一種8層卷積神經(jīng)網(wǎng)絡(luò),建立農(nóng)作物病害識別模型,并驗(yàn)證模型有效性,實(shí)現(xiàn)對農(nóng)作物日常出現(xiàn)疾病的診斷和預(yù)防。
該研究中的圖像數(shù)據(jù)來源于AI Challenger 2018比賽中的植物病害數(shù)據(jù)集,對蘋果、櫻桃、玉米、葡萄、柑橘、桃樹、辣椒、馬鈴薯、草莓和番茄10種植物的病害重新整理劃分,將每種植物的健康葉片作為負(fù)樣本加入到數(shù)據(jù)集中,避免網(wǎng)絡(luò)的過擬合現(xiàn)象。數(shù)據(jù)集最終包含35 861張不同尺寸的病害葉片圖像,由于神經(jīng)網(wǎng)絡(luò)要求輸入圖像的尺寸必須統(tǒng)一,因此利用圖像填充法填充圖像后再將尺寸縮放成227×227像素大小的圖像。10種農(nóng)作物的數(shù)據(jù)集中,由于一些疾病初期和后期的表現(xiàn)癥狀相差比較大,因此對這些不同程度的疾病分為不同類別,共59種類別,部分樣本圖像。如圖1所示,部分典型病害根據(jù)特征是否明顯劃分為一般程度和嚴(yán)重程度,但像番茄花葉病毒病的發(fā)病程度外觀不明顯則作為一個(gè)類別。根據(jù)不同類別,整理網(wǎng)絡(luò)所需要的數(shù)據(jù),加入健康葉片作為負(fù)樣本之后樣本類別為59類,總數(shù)量為35 861張圖像,如表1所示,并按照7∶1的比例將數(shù)據(jù)集樣本劃分為訓(xùn)練集31 370張圖像和測試集4 491張圖像。
利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行農(nóng)作物病害分類,其關(guān)鍵部分在于葉片圖像的特征提取,傳統(tǒng)方法特征提取能力有限,具有極強(qiáng)特征提取能力的卷積神經(jīng)網(wǎng)絡(luò)使得圖像分類邁入了一個(gè)新的階段。LeNet是CNN的第一個(gè)典型網(wǎng)絡(luò)結(jié)構(gòu)[6],由兩層卷積層、兩層池化層以及三層全連接層構(gòu)成。LeNet是典型的淺層網(wǎng)絡(luò)的代表,但是該文數(shù)據(jù)集包含類別較多,LeNet無法較高準(zhǔn)確率地完成病害分類。AlexNet[15]在ImageNet競賽中對1 000種類別圖像進(jìn)行分類,以超過第二名10.9個(gè)百分點(diǎn)的絕對優(yōu)勢一舉奪冠,在圖像分類領(lǐng)域上獲得了很好的成果,相比后期出現(xiàn)的深層網(wǎng)絡(luò),AlexNet設(shè)計(jì)更加簡潔明了。農(nóng)作物病害小樣本分類時(shí),深層網(wǎng)絡(luò)過度提取特征容易導(dǎo)致過擬合,且訓(xùn)練速度和識別速度較慢,因此針對農(nóng)作物病害的小樣本數(shù)據(jù)集,該文設(shè)計(jì)了一種基于AlexNet卷積神經(jīng)網(wǎng)絡(luò)的農(nóng)作物病害識別方法,能夠?qū)崿F(xiàn)快速訓(xùn)練和識別,如圖2所示。
圖1 部分農(nóng)作物病害樣本圖像:(a)蘋果黑星病一般(b)蘋果黑星病嚴(yán)重(c)櫻桃白粉病一般(d)櫻桃白粉病嚴(yán)重(e)玉米灰斑病一般(f)玉米灰斑病嚴(yán)重(g)葡萄黑腐病一般(h)葡萄黑腐病嚴(yán)重(i)柑橘黃龍病一般(j)柑橘黃龍病嚴(yán)重(k)桃瘡痂病一般(l)桃瘡痂病嚴(yán)重(m)辣椒瘡痂病一般(n)辣椒瘡痂病嚴(yán)重(o)馬鈴薯晚疫病一般(p)馬鈴薯晚疫病嚴(yán)重(q)草莓葉枯病一般(r)草莓葉枯病嚴(yán)重Fig1 Partial sample image of crop diseases
表1 農(nóng)作物病害訓(xùn)練集Table 1 Training set of crop diseases
圖2 農(nóng)作物病害識別卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Agricultural crop disease identification convolutional neural network structure
AlexNet卷積網(wǎng)路由5個(gè)卷積層、3個(gè)最大池化層和3個(gè)全連接層組成,網(wǎng)絡(luò)的參數(shù)結(jié)構(gòu)以及圖像經(jīng)過每層之后的數(shù)據(jù)結(jié)果如表2所示。網(wǎng)絡(luò)的輸入層定義了輸入圖像的大小為227×227像素大小的RGB彩色圖像,因此圖像通道數(shù)為3。
表2 卷積神經(jīng)網(wǎng)絡(luò)各個(gè)階段主要參數(shù)Table 2 Structure of Convolutional Neural Networks
表2列出了卷積神經(jīng)網(wǎng)絡(luò)AlexNet每一階段的重要參數(shù),其中LRN(Local Response Normalization)為局部響應(yīng)值歸一化,為局部神經(jīng)元的活動創(chuàng)建競爭機(jī)制,使得其中響應(yīng)比較大的值變得相對更大,并抑制其他反饋較小的神經(jīng)元,增強(qiáng)了模型的泛化能力。
卷積層是由一個(gè)可訓(xùn)練的濾波器去卷積上一層輸入的圖像,輸出圖像的特征圖。通過卷積運(yùn)算可以使原信號增強(qiáng)、降低噪聲信號,網(wǎng)絡(luò)使用稀疏連接,改善了人工神經(jīng)網(wǎng)絡(luò)中參數(shù)冗余的缺點(diǎn)。在最后通過3層全連接層,對病害葉片的局部信息進(jìn)行提取整合,最后一層全連接層參數(shù)設(shè)定為59,選取概率最大的類輸出預(yù)測結(jié)果。
由于模型中參數(shù)較多而訓(xùn)練樣本較少,訓(xùn)練結(jié)果容易出現(xiàn)過擬合現(xiàn)象,降低了網(wǎng)絡(luò)的魯棒性。因此AlexNet首次提出了Dropout,即隨機(jī)失活方法。通過在最后兩個(gè)全連接層中使用Dropout,按照一定的概率將網(wǎng)絡(luò)中的神經(jīng)元進(jìn)行剔除,使得訓(xùn)練過程中部分神經(jīng)元停止工作,有效緩解了過擬合的發(fā)生,達(dá)到了正則化效果。該文在AlexNet網(wǎng)絡(luò)的全連接層中加入舍去概率為0.2的Dropout層,隨機(jī)舍棄部分神經(jīng)元,使其強(qiáng)制性失活,過濾特征中的冗余信息,使得模型的泛化能力更強(qiáng),降低局部特征的依賴性。
該文使用隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD)進(jìn)行訓(xùn)練,梯度下降法又被稱為最速下降法(Steepest Descend Method),其理論基礎(chǔ)是梯度的概念。梯度與方向?qū)?shù)的關(guān)系為:梯度的方向與取得最大方向?qū)?shù)值的方向一致,而梯度的模就是函數(shù)在該點(diǎn)的方向?qū)?shù)最大值。為了評估模型擬合好壞,通常用損失函數(shù)來度量擬合的程度。損失函數(shù)極小化,意味著擬合程度最好,對應(yīng)的模型參數(shù)即為最優(yōu)參數(shù)。在線性回歸中,損失函數(shù)通常為樣本輸出和假設(shè)函數(shù)的差取平方。將訓(xùn)練集劃分為多個(gè)小樣本集分批進(jìn)行訓(xùn)練,根據(jù)隨機(jī)抽取的小樣本數(shù)據(jù)的訓(xùn)練結(jié)果沿著梯度方向調(diào)整參數(shù),加快迭代速度。
AlexNet網(wǎng)絡(luò)在最后一層全連接層中使用了Softmax分類器對結(jié)果進(jìn)行分類,從而得到不同類別的概率,而所有類別的概率之和為1。Softmax分類器的函數(shù)定義為:
式(1)中,ai(x)為類別i通道上的像素點(diǎn)x的輸出值;C為類別,在該研究中C=59;yi(x)為像素點(diǎn)x屬于類別i的概率。利用交叉熵?fù)p失函數(shù)計(jì)算下降梯度,其公式為:
式(2)中,p(xi)為圖像i的真實(shí)標(biāo)簽,q(xi)為圖像i的網(wǎng)絡(luò)預(yù)測值,所有元素之和為損失函數(shù)的值。
在進(jìn)行農(nóng)作物病害識別模型訓(xùn)練中,該實(shí)驗(yàn)硬件環(huán)境中使用了兩個(gè)GeForce GTX 2080Ti型GPU;軟件環(huán)境為Ubuntu16.04操作系統(tǒng)以及Tensorflow深度學(xué)習(xí)框架,其中Keras的版本為2.2.4,CUDA API的版本為9.1,cuDNN的版本為9.0;算法實(shí)現(xiàn)語言采用Python3.6.3版本。
利用準(zhǔn)備好的訓(xùn)練集對農(nóng)作物病害識別模型進(jìn)行訓(xùn)練,訓(xùn)練過程中利用交叉驗(yàn)證(Cross Validation)法中的留出法將數(shù)據(jù)集按照7∶1的比例分為訓(xùn)練集與測試集,其中訓(xùn)練集按照9∶1的比例劃分為訓(xùn)練部分和驗(yàn)證部分。在實(shí)際訓(xùn)練過程中,每當(dāng)訓(xùn)練的樣本批次數(shù)量為10的倍數(shù)時(shí),進(jìn)行一次驗(yàn)證集驗(yàn)證識別率。借此可以更加直觀分析模型的過擬合程度以及訓(xùn)練效果。
該實(shí)驗(yàn)將樣本訓(xùn)練迭代次數(shù)設(shè)置為20次,學(xué)習(xí)率為0.000 1,每迭代一次輸入的樣本數(shù)量為50張圖像。在圖像輸入網(wǎng)絡(luò)之前將每個(gè)圖像填充縮放到227×227像素,并進(jìn)行歸一化處理。在對樣本進(jìn)行訓(xùn)練時(shí),根據(jù)每次迭代之后計(jì)算的損失函數(shù)的損失值和訓(xùn)練精度值,利用SGD和反向傳播算法沿著小樣本梯度下降的方向優(yōu)化網(wǎng)絡(luò)參數(shù)。如圖3所示為訓(xùn)練集和驗(yàn)證集每輪訓(xùn)練的損失值和精度值變化曲線。
圖3(a)為農(nóng)作物病害模型訓(xùn)練過程中訓(xùn)練集的損失值和精度值,圖(b)為驗(yàn)證集的損失值和精度值,整體而言,模型訓(xùn)練過程中的損失值呈下降趨勢,精度值呈上升趨勢,其數(shù)值經(jīng)歷了快速收斂后呈現(xiàn)在較小范圍內(nèi)震蕩趨勢。比較訓(xùn)練集和驗(yàn)證集的曲線變化趨勢可知,兩者間損失值和精度值的變化趨勢基本一致,說明網(wǎng)絡(luò)整體收斂較好,未出現(xiàn)過擬合情況,且收斂速度較快,模型在11~20輪之間趨于穩(wěn)定。
為了比較不同迭代次數(shù)對模型性能的影響,對農(nóng)作物病害模型進(jìn)行訓(xùn)練,每50輪保存一次模型,訓(xùn)練輪數(shù)為200輪時(shí)停止,利用測試集測試每50輪模型的預(yù)測結(jié)果,如表3所示。
表3 不同訓(xùn)練輪數(shù)的模型性能Table 3 Model performance of different training rounds
從表3可以看出,隨著迭代次數(shù)的不斷增加,網(wǎng)絡(luò)收斂越來越好,但當(dāng)?shù)螖?shù)增加到一定程度時(shí),模型的損失函數(shù)值不下降且還有上升趨勢,精度值也不再上升,在0.83±0.03之間震蕩,模型在測試集上預(yù)測的正確率也不再增加。由此可知,當(dāng)模型收斂良好時(shí),增加迭代次數(shù)后模型的性能不再提升。
表4為農(nóng)作物病害模型在測試集上的測試結(jié)果,模型綜合可達(dá)到0.83的高識別率,由于一些類別樣本數(shù)量較少,類別特征較弱,模型對此類樣本識別率較低,因此需要增加樣本數(shù)量和多樣性來提升模型對農(nóng)作物病害的識別能力。
表4 農(nóng)作物病害模型對每種病害的識別結(jié)果Table 4 Identification results of each disease in the crop disease model
該文基于深度學(xué)習(xí)技術(shù)和圖像處理算法,利用卷積神經(jīng)網(wǎng)絡(luò)AlexNet進(jìn)行了農(nóng)作物病害識別模型構(gòu)建。使用10種農(nóng)作物59種類的數(shù)據(jù)集對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,統(tǒng)計(jì)每種病害的識別率,利用深度學(xué)習(xí)訓(xùn)練平臺,不斷地迭代訓(xùn)練網(wǎng)絡(luò),設(shè)計(jì)了9組不同的迭代步數(shù)的對比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,該文模型總體達(dá)到了0.83的高識別率,較多種類的識別率達(dá)到0.96~1.0的識別率。模型會隨著迭代次數(shù)的增加收斂越來越好,但當(dāng)網(wǎng)絡(luò)收斂到一定程度時(shí),迭代次數(shù)便不能提高模型的性能。證明該研究基于卷積神經(jīng)網(wǎng)絡(luò)的農(nóng)作物病害識別,在有充足的數(shù)據(jù)量進(jìn)行訓(xùn)練時(shí),可以獲得更高的識別率。但是真實(shí)環(huán)境中,光照程度不同,會影響圖像的質(zhì)量,對于強(qiáng)光或弱光情況下的圖像,識別率會降低,光照情況對于整個(gè)圖像研究領(lǐng)域都具有較大挑戰(zhàn)性,因此對于使用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)農(nóng)作物病害識別的應(yīng)用,還需進(jìn)一步實(shí)驗(yàn),增強(qiáng)網(wǎng)絡(luò)的魯棒性,如增加不同光照實(shí)驗(yàn),采集不同光照下的病害圖像,進(jìn)一步訓(xùn)練,優(yōu)化改進(jìn)網(wǎng)絡(luò)。