宋晨勇,白皓然,孫偉浩,馬皓冉
(青島農(nóng)業(yè)大學(xué)機電工程學(xué)院,山東青島,266109)
2018年,蘋果的全球貿(mào)易量達(dá)到了5 000 kt,年人均消費量8.2 kg,是消費量最大的水果之一[1]。近年來,由于病原體的變種以及蘋果保護(hù)措施的不足,蘋果病害的種類數(shù)量逐漸增加。而傳統(tǒng)的基于知識庫的專家系統(tǒng)在處理復(fù)雜多變的自然數(shù)據(jù)過程中有著局限性,隨著農(nóng)業(yè)信息化和物聯(lián)網(wǎng)的發(fā)展,通過葉片外觀和視覺癥狀識別蘋果疾病的病變自動診斷系統(tǒng)將會在規(guī)?;r(nóng)業(yè)生產(chǎn)中得到越來越多的關(guān)注。
從20世紀(jì)80年代開始,計算機視覺技術(shù)在作物病蟲害識別領(lǐng)域中得到了廣泛研究和發(fā)展[2-7]。張靜等[2]采用葉片紋理特征提取識別黃瓜斑疹病和角斑病。隨著計算機視覺技術(shù)和機器學(xué)習(xí)理論的逐漸完善,科研工作者運用判別式分析方法、匹配方法和機器學(xué)習(xí)方法進(jìn)行植物病害分類識別,取得了良好效果。胡小平等[3]利用BP網(wǎng)絡(luò)預(yù)測小麥條銹病的嚴(yán)重程度,獲得了較高的準(zhǔn)確率。以上研究在提取病斑圖像的特征參數(shù)方面,大多是以提取單變量特征參數(shù)為主,因此在識別效率方面尚待提高。
伴隨著數(shù)據(jù)的爆炸增長和計算機硬件的發(fā)展,深度學(xué)習(xí)在圖像識別領(lǐng)域取得了巨大進(jìn)步,擴(kuò)大了精準(zhǔn)農(nóng)業(yè)領(lǐng)域的計算機視覺范圍。大量的學(xué)者將深度學(xué)習(xí)理論應(yīng)用到農(nóng)作物病害識別的研究中,取得了良好的效果[8-15]。王細(xì)萍等[8]利用深層架構(gòu)卷積神經(jīng)網(wǎng)絡(luò)和時變沖量學(xué)習(xí)相結(jié)合進(jìn)行多階段特征融合,并取得了良好的效果。楊國亮等[12]的研究通過參數(shù)指數(shù)非線性(PENL)函數(shù)改進(jìn)殘差網(wǎng)絡(luò),在一定程度上提高植物病害的識別準(zhǔn)確度。這些研究取得了較好的效果,但沒有考慮模型中大量的網(wǎng)絡(luò)參數(shù)導(dǎo)致模型響應(yīng)時間過長的問題。因此,設(shè)計出一種能優(yōu)化低延遲和高識別率之間關(guān)系的識別模型在蘋果農(nóng)業(yè)實際生產(chǎn)具有重要意義。
本文以蘋果為研究對象,利用機器學(xué)習(xí)理論,圍繞蘋果病害診斷進(jìn)行了系統(tǒng)性研究,從減少網(wǎng)絡(luò)參數(shù)數(shù)量和訓(xùn)練收斂時間著手,提出了基于深度學(xué)習(xí)的GoogLeNet改進(jìn)模型,優(yōu)化低延遲和高識別率之間關(guān)系,以期提高以蘋果葉銹病和斑點落葉病為例的蘋果病害的識別準(zhǔn)確率,實現(xiàn)蘋果病害實時、便利的圖像自動識別,為蘋果病害防治防控提供一種可行的診斷方法。
本文分析了數(shù)據(jù)集的特征,并使用基于幾何變換和圖像操作的數(shù)據(jù)增強方法,對數(shù)據(jù)集進(jìn)行了預(yù)處理。數(shù)據(jù)增強整體過程如圖1所示。
圖1 數(shù)據(jù)增強整體過程Fig. 1 Data enhancement process
通過人工拍攝,并借助百度圖片、谷歌等不同網(wǎng)站來源共采集了100幅圖像,其中包括不同時期的正常蘋果葉片、蘋果銹病葉片及蘋果斑點落葉病葉片的圖片,如圖2所示。
(a) 正常蘋果葉片
(b) 蘋果銹病葉片
(c) 蘋果斑點落葉病葉片圖2 正常蘋果葉片與有病狀葉片圖Fig. 2 Images of normal and diseased apple leaves
網(wǎng)絡(luò)來源的所有圖片都是通過Python腳本進(jìn)行下載,下載圖片全部經(jīng)過人工篩選,并且請相關(guān)專家對篩選圖像進(jìn)行了多次評估,確保了樣本標(biāo)簽的準(zhǔn)確性。
1.2.1 數(shù)據(jù)增強
隨著訓(xùn)練數(shù)據(jù)集的擴(kuò)展,深度卷積神經(jīng)網(wǎng)絡(luò)的性能將進(jìn)一步提高[16]。為了擴(kuò)大樣本數(shù)量,保證模型訓(xùn)練對數(shù)據(jù)的需求,故對已采集圖片進(jìn)行數(shù)據(jù)增強處理。通過隨機旋轉(zhuǎn)、裁剪圖像,銳化圖像,隨機噪聲變換和模糊等變換,或改變圖片對比度等方法擴(kuò)展圖像數(shù)據(jù),具體方法如表1所示。蘋果葉病圖像數(shù)據(jù)增強情況如表2所示,增強圖片具體示例如圖3~圖5所示。
表1 圖像數(shù)據(jù)增強方法說明Tab. 1 Description of image data enhancement methods
表2 蘋果葉病原始圖像數(shù)據(jù)和擴(kuò)展后的圖像數(shù)據(jù)分布情況Tab. 2 Number of apple leaf original images data andenhanced images data
(a) 原圖
(b) 裁剪
(c) 旋轉(zhuǎn)
(d) 銳化
(e) 模糊
(f) 噪聲變換
(g) 改變對比度圖3 經(jīng)過不同方法處理的正常蘋果葉片圖像Fig. 3 Normal apple leaf image processed by different methods
(a) 原圖
(b) 裁剪
(c) 旋轉(zhuǎn)
(d) 銳化
(e) 模糊
(f) 噪聲變換
(g) 改變對比度圖4 經(jīng)過不同方法處理的蘋果銹病圖像Fig. 4 Apple rust images processed by different methods
(a) 原圖
(b) 裁剪
(c) 旋轉(zhuǎn)
(d) 銳化
(e) 模糊
(f) 噪聲變換
(g) 改變對比度圖5 經(jīng)過不同方法處理的蘋果斑點落葉病圖像Fig. 5 Images of apple spotted leaf disease processed by different methods
1.2.2 數(shù)據(jù)集制作
在數(shù)據(jù)增強之后共9 905張圖像,其中將絕大部分?jǐn)?shù)據(jù)用作GoogLeNet模型的訓(xùn)練和驗證,少量數(shù)據(jù)用作模型測試,GoogLeNet模型和改進(jìn)模型的訓(xùn)練集,驗證集和測試集的比例約為50∶10∶1。數(shù)據(jù)集具體分配情況如表3所示。
表3 GooLeNet模型的數(shù)據(jù)集分布情況Tab. 3 Data set distribution of GoogLeNet model
1.2.3 圖像預(yù)處理
在劃分?jǐn)?shù)據(jù)集后,為了改善模型特征提取性能,必須對葉片圖像進(jìn)行預(yù)處理。首先對圖像進(jìn)行標(biāo)準(zhǔn)化操作,減少由于陽光強度變化引起的顏色變化,降低過擬合風(fēng)險。并且在定位準(zhǔn)確、圖像完整的情況下根據(jù)葉片在圖像中的位置直接進(jìn)行標(biāo)準(zhǔn)切割,減少試驗中圖像因采集方式或者拍攝距離的差異所導(dǎo)致的誤差。GoogLeNet改進(jìn)模型使用299×299的標(biāo)準(zhǔn)切割圖片,具體效果如圖6所示。
圖6 預(yù)處理后的299×299蘋果葉片圖
圖片切割操作是由基于OpenCV框架的Python腳本自動計算,最后利用基于Tensorflow框架的Python腳本生成GoogLeNet改進(jìn)模型的數(shù)據(jù)文件。
GoogLeNet結(jié)構(gòu)有22層,由于網(wǎng)絡(luò)層次數(shù)量,神經(jīng)元數(shù)量和訓(xùn)練數(shù)據(jù)的增加,GoogLeNet模型具有比以前的深度學(xué)習(xí)結(jié)構(gòu)更多的特征[17]。GoogLeNet模型使用稀疏網(wǎng)絡(luò)結(jié)構(gòu)來改善過度擬合和過度占用內(nèi)存的缺點,它使用金字塔模型來增加寬度,并提出“初始模塊”的概念,“初始模塊”的主要思想是指由一系列易獲得的稠密子結(jié)構(gòu)來近似和覆蓋卷積網(wǎng)絡(luò)的局部稀疏結(jié)構(gòu)。GoogLeNet結(jié)構(gòu)中共使用了11個初始模塊,3個分類器。每個初始模塊包括多個平行卷積層,并且采用最大池化層用于同時捕獲不同的特征,并且將任意n×n的卷積核都分解成兩個1×n,n×1的一維卷積核,如圖7所示。1×1卷積核實現(xiàn)了卷積核跨通道的交互和信息整合,并通過卷積核通道數(shù)的降維或升維,使模型網(wǎng)絡(luò)結(jié)構(gòu)更緊湊,參數(shù)數(shù)量顯著地減少[18]。
圖7 1×n和n×1卷積核的Inception結(jié)構(gòu)Fig. 7 Inception structure of 1×n andn×1 convolution kernels
為了使模型更適應(yīng)樣本數(shù)據(jù)集,通過綜合衡量模型性能和參數(shù)數(shù)量尋找初始模塊和分類器數(shù)量的最佳組合。GoogLeNet改進(jìn)模型使用了1個分類器和4個初始模塊,模型結(jié)構(gòu)如圖8所示。
模型采用隨機梯度下降(Stochastic gradient descent,SGD)算法進(jìn)行優(yōu)化。模型的超參數(shù)設(shè)置如表4所示。其中 GoogLeNet改進(jìn)模型的初始學(xué)習(xí)率都比原模型縮小10倍,分別為0.001,GoogLeNet改進(jìn)模型批次容量為GoogLeNet模型的2倍。
表4 GoogLeNet、GoogLeNet改進(jìn)模型的超參數(shù)設(shè)置Tab. 4 Hyper-parameter settings ofGoogLeNet, improved GoogLeNet
圖8 GoogLeNet改進(jìn)模型結(jié)構(gòu)Fig. 8 GoogLeNet improved model structure
在計算機上通過Tensorflow框架,Pycharm開發(fā)環(huán)境和Python語言訓(xùn)練和測試模型。Tensorflow框架是Google用于數(shù)據(jù)流圖的數(shù)值計算開源軟件庫,其已經(jīng)成功實現(xiàn)了深度學(xué)習(xí)算法,實現(xiàn)了異構(gòu)分布式系統(tǒng)上大規(guī)模高效率的學(xué)習(xí)。Tensorflow為模型培訓(xùn),測試和調(diào)整參數(shù)提供了完整的工具包,部署模型可以在中央處理單元(CPU)和圖形處理單元(GPU)上運行。NVIDIA cuDNN是用于深度神經(jīng)網(wǎng)絡(luò)的GPU加速庫。它強調(diào)性能、易用性和低內(nèi)存開銷,將Tensorflow與cuDNN庫集成可以大幅提高CNN模型訓(xùn)練速度。
GoogLeNet原模型的初始學(xué)習(xí)率為0.01,優(yōu)化器動量為0.9,損失函數(shù)使用對數(shù)損失函數(shù)。為了使模型測試結(jié)果更有說服力,本研究分別使用準(zhǔn)確率,精準(zhǔn)率,召回率,F(xiàn)1值衡量模型的性能。準(zhǔn)確率,即提取出的正確樣本數(shù)與總樣本數(shù)之比,經(jīng)過第20 000次迭代后,GoogLeNet原模型驗證集準(zhǔn)確率為98.1%,損失值為0.77,如圖9所示。GoogLeNet改進(jìn)模型的驗證集準(zhǔn)確率為98.3%,損失值為0.04,如圖10所示。
精準(zhǔn)率是正確的正例樣本數(shù)與預(yù)測為正例的樣本數(shù)的比值,召回率是正確的正例樣本數(shù)與樣本中的正例樣本數(shù)的比值,F(xiàn)1值為正確率和召回率的調(diào)和平均值。GoogLeNet模型與改進(jìn)模型的精準(zhǔn)率,召回率,F(xiàn)1值測試結(jié)果如表5所示。
(a) 損失值曲線圖
(b) 準(zhǔn)確率曲線圖圖9 GoogLeNet模型的測試集損失值和準(zhǔn)確率Fig. 9 Validation set loss and accuracy ofthe GoogLeNet model
(a) 損失值曲線圖
(b) 準(zhǔn)確率曲線圖圖10 GoogLeNet改進(jìn)模型的測試集損失值和準(zhǔn)確率Fig. 10 Validation set loss and accuracy ofGoogLeNet improved model
GoogLeNet模型與改進(jìn)模型的平均準(zhǔn)確率只相差0.2%。在精準(zhǔn)率方面,GoogLeNet改進(jìn)模型比原模型提高了2.1%,召回率上,GoogLeNet改進(jìn)模型比原模型提高了1.2%,在銹病上的召回率提高了4.0%,在F1值方面,GoogLeNet改進(jìn)模型比原模型提高了1.7%,這表明改進(jìn)模型有效地提升了模型的性能。
表5 GoogLeNet模型和GoogLeNet改進(jìn)模型對比結(jié)果Tab. 5 Comparison results of GoogLeNet model andGoogLeNet improved model
在運行時間上,相同運行環(huán)境下,兩個模型的運行時間差異卻很明顯,GoogLeNet模型的訓(xùn)練時間需要大約4.5 h,GoogLeNet改進(jìn)模型的訓(xùn)練時間大幅減少,只需要大約2.5 h,減低了44.44%,并且GoogLeNet改進(jìn)模型的模型參數(shù)僅為GoogLeNet模型的17.5%,表明模型運行時間的大幅降低得益于模型參數(shù)數(shù)量的減少,具體如表6所示。改進(jìn)的GoogLeNet模型在保持模型識別性能的前提下降低了網(wǎng)絡(luò)參數(shù)數(shù)量,提高了模型的訓(xùn)練和識別效率。
表6 GoogLeNet原模型以及改進(jìn)模型的參數(shù)數(shù)量及分布Tab. 6 Number and distribution of parameters of theoriginal GoogLeNet model and the improved model
病害識別系統(tǒng)主要由用戶登錄模塊、賬號注冊模塊、圖像識別模塊、識別記錄日志模塊四個模塊組成。病害識別系統(tǒng)設(shè)計具體流程如圖11所示。
圖11 病害識別系統(tǒng)設(shè)計圖Fig. 11 Design diagram of disease identification system
病害識別系統(tǒng)技術(shù)路線由卷積神經(jīng)網(wǎng)絡(luò)和Torndao框架兩部分構(gòu)成,在模型構(gòu)建上采用Tensorflow框架構(gòu)建病害識別網(wǎng)絡(luò),Python語言進(jìn)行樣本標(biāo)識和處理,使用sqlite3和peewee數(shù)據(jù)庫存儲數(shù)據(jù)。在網(wǎng)絡(luò)視圖上基于python、html、javascript和CSS(Cascading Style Sheets)構(gòu)建網(wǎng)頁服務(wù)端,使用Torndao框架進(jìn)行系統(tǒng)前后端交互,系統(tǒng)技術(shù)路線如圖12所示。
圖12 蘋果病害圖像在線識別系統(tǒng)技術(shù)路線圖Fig. 12 Apple disease image online recognitionsystem technical route
病害識別系統(tǒng)的用戶登錄模塊使用render的方法引入編寫的登錄靜態(tài)網(wǎng)頁login.html,并將登錄用戶名字“l(fā)oginUsername”和登錄密碼“l(fā)oginPassword”分配給當(dāng)前訪問用戶的用戶名“Username”和密碼“Password”變量,并通過json進(jìn)行數(shù)據(jù)轉(zhuǎn)換,默認(rèn)返回響應(yīng)碼“200”則表示“登錄成功”,如果默認(rèn)返回響應(yīng)碼“500”則表示“用戶名或密碼錯誤”,并以同樣的形式設(shè)置了賬號注冊模塊。
在圖像識別模塊中,主要包括模型導(dǎo)入、圖片上傳及處理、圖像識別、識別結(jié)果呈現(xiàn)等四個部分,具體實現(xiàn)流程為注冊登錄完成后界面會顯示提取照片,手動輸入需要辨別的蘋果病害圖像,網(wǎng)頁中會顯示圖片中植物的病狀,并且給出葉片患病的概率。在模型導(dǎo)入中將訓(xùn)練好的GoogLeNet模型參數(shù)文件使用load_weights函數(shù)導(dǎo)入,并使用compile函數(shù)編譯參數(shù)文件。在圖片上傳部分中,網(wǎng)頁前端使用form表單的形式進(jìn)行上傳,并在網(wǎng)站后端調(diào)用Image庫讀取圖片數(shù)據(jù),利用Image.new函數(shù)創(chuàng)建一幅給定模式和尺寸的圖片,以適應(yīng)圖片識別模型的要求,判斷獲取上傳圖片的尺寸與創(chuàng)建圖片是否一致,若不一致則使用Image.resize函數(shù)對圖像進(jìn)行填充或裁剪,并且將修改圖片格式統(tǒng)一轉(zhuǎn)換為RGB格式,最后利用paste函數(shù)將轉(zhuǎn)換好的圖片粘貼匹配到創(chuàng)建的圖像上。最后得到的圖片識別結(jié)果將會存放在本地文件夾件中,并在網(wǎng)頁前端羅列出病害的可能性。
在識別記錄日志模塊中,網(wǎng)頁將會記錄每一次的病害識別結(jié)果,通過對識別結(jié)果的簡單統(tǒng)計以幫助果農(nóng)了解果樹生長狀況,減小經(jīng)濟(jì)損失。
為了測試系統(tǒng)的穩(wěn)定性和準(zhǔn)確性,故從待測圖片中隨機挑選圖片進(jìn)行測試,測試界面及結(jié)果如圖13所示,測試結(jié)果顯示葉片患有蘋果斑點落葉病的概率為80.1%。
通過對測試集150張圖片進(jìn)行評估,葉片測試的平均準(zhǔn)確率達(dá)到了96.0%,詳細(xì)測試結(jié)果如表7所示,圖14是部分葉片測試過程的識別記錄。經(jīng)過評估,系統(tǒng)表現(xiàn)出了良好的穩(wěn)定性,并且實現(xiàn)了對蘋果葉病的準(zhǔn)確識別。
圖13 預(yù)測分析界面Fig. 13 Analysis interface
表7 測試結(jié)果Tab. 7 Test results
圖14 識別記錄模塊視圖Fig. 14 View of the recognition record module
本文對基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)改進(jìn)模型用于蘋果葉病識別進(jìn)行了研究并得到了以下的結(jié)論與成果。
1) 在識別蘋果正常葉片、銹病葉和斑點落葉病葉片的過程中,本研究在GoogLeNet模型的Inception結(jié)構(gòu)基礎(chǔ)上建立了改進(jìn)模型,并使用四種指標(biāo)(準(zhǔn)確率,精準(zhǔn)率,召回率,F(xiàn)1值)綜合衡量模型的性能。實驗結(jié)果表明,GoogLeNet改進(jìn)模型的精準(zhǔn)率,召回率,F(xiàn)1值比原模型分別提高了2.1%,1.2%,1.7%,并且GoogLeNet改進(jìn)模型的識別精準(zhǔn)率達(dá)到98.3%,具有良好的穩(wěn)定性和泛化能力,在蘋果病害識別中具有明顯優(yōu)勢。
2) 新模型減少了inception模塊上的數(shù)量,在模型前段增加了卷積層和池化層的數(shù)量,極大的減少模型的參數(shù)數(shù)量,減小了模型過擬合的風(fēng)險。實驗結(jié)果表明GoogLeNet改進(jìn)模型的訓(xùn)練時間比原模型減低了44.44%,并且GoogLeNet改進(jìn)模型的模型參數(shù)僅為原模型的17.5%,模型文件占用的設(shè)備內(nèi)存明顯減少,提升了模型的響應(yīng)速度。
3) 基于Tornado框架建立了蘋果病害識別系統(tǒng),建立了用戶登錄模塊、賬號注冊模塊、圖像識別模塊、識別記錄日志模塊四個模塊,并對系統(tǒng)進(jìn)行測試,結(jié)果表明葉片測試的平均準(zhǔn)確率達(dá)到了96.0%,系統(tǒng)表現(xiàn)出良好的穩(wěn)定性,并實現(xiàn)了對蘋果銹病,斑點落葉病的準(zhǔn)確識別。