金 瑛,葉 颯,李洪磊
(1.遼寧師范大學大數(shù)據(jù)與商務智能實驗室,大連 116029;2 中國農(nóng)業(yè)科學院農(nóng)業(yè)信息研究所,北京 100081)
果樹病害因受到全球氣候和環(huán)境條件變化呈現(xiàn)出爆發(fā)式上升趨勢。由于病害的傳播速度取決于環(huán)境條件和植物的易感染性,果樹在生長周期中容易受到多種疾病的入侵。在實際的果樹病害檢測識別中,種植戶通常依賴于人眼觀察和靠經(jīng)驗診斷,這種方法不僅耗時、主觀性強、而且誤判率高。因此能夠使用高科技手段,在復雜的農(nóng)業(yè)生態(tài)環(huán)境中及時準確的診斷果樹所患疾病具有積極意義。
互聯(lián)網(wǎng)的普及應用,以及與機器學習技術的結合,為果樹病害的遠程診斷提供了有力支撐。相關研究表明,利用機器學習,特別是深度學習技術自動識別果樹病害圖像是可行的。如祁釗等提出了主成分分析和支持向量機組合的方法識別室外玉米葉部病害的圖像,并用Retinex 算法,對圖像進行了增強,總識別精度達到90.74%[1]。劉浩洲等使用K-means 聚類圖像分割方法,識別獼猴桃花朵,該算法成功率為92.5%[2]。畢傲睿提出了利用改進的中值濾波方法去除噪聲,并有效的保留了邊緣信息的預處理方法,采用直方圖均衡化方法,對圖像進行了增強,提高動態(tài)范圍和比較高的對比度,將受到不同影響的圖像轉化為較統(tǒng)一的形式;使用模糊C 均值聚類算法分割病斑圖像,對圖像的特征提取方法上選擇15 類特征參數(shù),最后選用基于支持向量機的病害識別模型[3]。屈赟等對病斑圖像分割時運用了最大類間方差法(Otsu)提取出重要的顏色、紋理和形狀特征,最后利用支持向量機(SVM)方法分類病斑,并且建立了蘋果葉部病害特征庫[4]。劉雙以Gentle AdaBoost 算法為基礎,從梯度和紋理的角度更全面地描述,篩選出最佳的特征后,將訓練好的各層分類器按照一定的篩選率組合成級聯(lián)檢測器,快速排出背景值;最后引入SIFT 模板匹配算法對檢測出的結果進行二次篩選確定檢測目標[5]。盧柳江等應用機器學習理論,利用Haar-like 提取的圖像特征構建弱分類器,并通過AdaBoost 算法將弱分類器集合升級為強分類器,運用級聯(lián)的方法合成AdaBoost 分類器來識別農(nóng)作物蟲害。根據(jù)背景的復雜程度,模型的識別率保持在95.71%和86.67%區(qū)間內(nèi),解決了農(nóng)作物蟲害的預防工作強度大、耗時長、效率低的問題[6]。
近幾年來,在農(nóng)業(yè)領域中深度學習備受廣大研究者的青睞,相對于傳統(tǒng)機器學習,深度學習(Deep Learning,DL)可以從原始數(shù)據(jù)中自動提取特征,將較低層次的特征組合成高層次的特征[7]。該網(wǎng)絡的特征提取和結構化數(shù)據(jù)的顯著優(yōu)勢,有效地推動了農(nóng)業(yè)智能機械裝備的開發(fā),其相應研究成果不斷涌現(xiàn)[8]。黃雙萍等針對水稻穗瘟病的圖像檢測問題,采用了深度卷積神經(jīng)網(wǎng)絡GoogLeNet模型,模型的最高識別準確率達到92%[9]。李艷等使用卷積神經(jīng)網(wǎng)絡對馬鈴薯疾病進行了分類,該算法成功應用于農(nóng)作物病害的識別,顯示了深度學習技術在農(nóng)業(yè)任務中的潛力[10]。李淼等利用了ImageNet 數(shù)據(jù)集和PlantVillage 網(wǎng)絡公開數(shù)據(jù)集,以黃瓜和水稻病害為研究對象開展研究,通過采用知識遷移和深度學習方法,提高了相關領域的圖像識別效率[11]。王細萍等通過引入卷積、采樣算子的方法,提出時變沖量學習的蘋果病變圖像識別方法,正確率高達97.45%[12]。張建華等提出了棉花病害的識別模型,采用微型遷移的策略共享模型中的卷積層和池化層的參數(shù),以此來優(yōu)化VGG 的結構和權值,并且用6 標簽分類器實現(xiàn)圖像識別,總體準確率達到89.51%[13]。蔣豐千等通過對病害圖像的二值化和輪廓分割等預處理,利用Caffe 框架對優(yōu)化后的網(wǎng)絡模型進行了識別率等方面的實驗驗證,開發(fā)了大豆疾病檢測系統(tǒng)[14]。王梅嘉等在蘋果葉部病害識別方面通過擴展對比度,去除葉面絨毛,銳化圖像,去除光照影響完成預處理。利用遺傳算法優(yōu)化模糊C 均值聚類,提取了8 個參數(shù)作為有效特征。通過構建BP、RBF、DBN三種網(wǎng)絡和支持向量機(SVM)實現(xiàn)病斑識別[15]。邱靖等利用深度卷積網(wǎng)絡建立3 種水稻病害的識別模型,對數(shù)據(jù)歸一化處理,并運用深度學習框架Keras 進行深度CNN 訓練,統(tǒng)一用9×9 卷積核尺寸和最大池化函數(shù),經(jīng)過一定次數(shù)的迭代,其識別準確率達到90%以上,以較高的識別率實現(xiàn)了3 種水稻分類,泛化能力較強、準確率較高、魯棒性較好[16]。
綜合上述研究,雖然在圖像識別方面廣大研究者已經(jīng)相應地取得了進展,但多集中于單一病種的診斷識別。部分研究是基于公共數(shù)據(jù)集訓練的,數(shù)據(jù)質量可靠度不高,導致模型在實際應用中出現(xiàn)較大偏差。
本研究基于卷積神經(jīng)網(wǎng)絡中的ResNet-50 模型,以梨黑斑病、梨銹病、蘋果花葉病、蘋果銹病這4 種患病葉片圖像為對象進行模型訓練,實驗數(shù)據(jù)集數(shù)量達到近10 000 張,數(shù)據(jù)來源真實可靠,圖像本身上具有全面性和完整性,以此訓練的診斷模型可靠性更具說服力。隨后在果樹病害圖像識別模型的基礎上開發(fā)相應的應用軟件,通過互聯(lián)網(wǎng)提供診斷服務。
本研究數(shù)據(jù)來源于農(nóng)業(yè)專業(yè)知識服務系統(tǒng)的果樹病害圖譜庫[17]。該圖譜庫包含10 000 張果樹病害葉片圖像,其中包括梨黑斑病、梨銹病、蘋果花葉病、蘋果銹病各2 500 張,樣本數(shù)據(jù)分布平衡。這4 種果樹疾病是常見多發(fā)疾病,其中梨銹病發(fā)生普遍,是梨樹的重要病害類型,在發(fā)病嚴重時,個別梨園梨樹感病品種的病葉率在60%以上。梨銹病主要危害葉片、新梢和幼果。葉片受害,葉正面形成橙黃色圓形病斑,并密生橙黃色針頭大的小點,后期小粒點變?yōu)楹谏?;梨黑斑病也是梨樹重要的病害,在中國主要梨區(qū)普遍發(fā)生。西洋梨、日本梨、酥梨、雪花梨最易感病,發(fā)病嚴重時會引起早期落葉和嫩梢枯死,致使裂果和早期落果;蘋果花葉病在各地均有發(fā)生,陜西關中地區(qū)有些果園的病株率高達30%以上,危害較嚴重。病葉表現(xiàn)5 種癥狀:斑駁型、花葉型、條斑型、環(huán)斑型和鑲邊型,診斷有一定困難;蘋果銹病近年來在一些地區(qū)發(fā)生有明顯上升趨勢。蘋果銹病可引起落葉、落果和嫩枝折斷,各蘋果產(chǎn)區(qū)均有發(fā)生。主要為害幼葉、葉柄、新梢及幼果等幼嫩綠色組織。初期葉片正面產(chǎn)生橙黃色有光澤的小斑點,隨后發(fā)展成直徑為0.5~1.0cm 的橙黃色圓形病斑,病斑邊緣常呈紅色,稍肥厚。嚴重時,一片葉子上可有十幾個病斑。
該圖譜庫中的葉片圖像由專業(yè)人士在果樹展葉期從果園采摘,根據(jù)上述病癥表現(xiàn),精心挑選病斑清晰的葉片,在室內(nèi)攝影棚內(nèi)拍攝。背景為純白色。色溫在5 200~5 500。每個葉片分全景、局部、正位拍攝。圖片庫圖片分辨率高,細節(jié)清晰,達到高分辨率標準,但對于機器學習而言,場景不夠多樣化、自然化,會影響診斷模型的泛化能力。為了彌補這個缺陷,本文通過在線收集的方式,收集到100 余張關于4 種病害的網(wǎng)絡圖像,與上述圖譜庫相結合,進行樣本數(shù)據(jù)增強。這些圖像包括梨黑斑病25 張、梨銹病27 張、蘋果花葉病28 張、蘋果銹病24 張。圖1 為農(nóng)業(yè)知識服務系統(tǒng)圖譜庫樣例,圖2 是線上收集的公共圖像數(shù)據(jù)集,并經(jīng)過專業(yè)人士鑒別后用于數(shù)據(jù)增強。
上述數(shù)據(jù)集按8∶2 比例分割為訓練集、驗證集。網(wǎng)絡收集的數(shù)據(jù)做測試集。其中訓練集用于模型訓練,驗證集用于模型參數(shù)調優(yōu),測試集用于測試模型的泛化能力。為了降低數(shù)據(jù)規(guī)模,加快模型訓練過程,在本研究中所有圖像被統(tǒng)一壓縮至640×480 尺寸。
圖1 樣本數(shù)據(jù)圖像(農(nóng)業(yè)知識服務系統(tǒng)圖譜庫)Fig.1 Image samples(Agricultural Knowledge Service System Image Library)
圖2 果樹病害公共圖像(源于網(wǎng)絡)Fig.2 Public images of fruit tree diseases(from the Internet)
鑒于本研究獲取的圖像均為采摘后在純凈環(huán)境中拍攝,背景不夠豐富,圖像過于精美和標準,色彩、亮度多樣性差,將會對模型的泛化能力產(chǎn)生很大影響[18,19]。因此本研究對上述樣本數(shù)據(jù)進行了數(shù)據(jù)增強處理,提高圖像樣本數(shù)據(jù)的多樣性水平,從而在一定程度上保證了模型的泛化能力。這些處理包括如下方式。
(1)旋轉方向。即通過旋轉和位移等方式提高病變?nèi)~子的圖像相對位置的多態(tài)性,該多態(tài)性采用與標準圖像的夾角或矢量位移的描述。本研究每隔30 度進行一次旋轉采樣,即1 張原始圖片會產(chǎn)生12 張旋轉后的圖片。
(2)顏色抖動[20]。由于不同空間相對位置和日照條件不同,同一對象會采集得到不同亮度、飽和度、對比度等模式,在顏色平衡區(qū)間上呈現(xiàn)出不同圖像的復雜性,提升算法的魯棒性。本研究對每張圖片進行3次顏色抖動的隨機處理。
(3)隨機切割。在保留足夠病害葉子主要信息的情況下,對圖片進行裁剪,減少部分背景信息,從而增加形態(tài)上的多樣性,提高模型的泛化能力。本研究對每張圖片進行3 次切割處理。
(4)污化處理。對多所采集的圖像進行隨機污化,以防訓練中出現(xiàn)過擬合的現(xiàn)象,降低模型的泛化能力。本文對污化處理添加了隨機污化、1∶1 污化和不放回污化。本研究對每張圖片各進行3 次污化處理。
(5)增噪處理。由于深度神經(jīng)網(wǎng)絡模型是高度非線性的,圖像的一個像素微調可影響對抗樣本,因此本研究引入了隨機白噪聲來模擬拍攝不同清晰度的樣本數(shù)據(jù)。本研究對每張圖片進行1 次隨機增噪處理。
(6)背景疊加。將果樹葉片與其生長背景進行疊加,豐富圖片的背景信息。本研究對每張原始圖片進行1 次背景疊加。
本研究在大型計算機服務器上進行。該服務器8核CPU,內(nèi)存128G,運行Linux 操作系統(tǒng)。在Python3.6 的環(huán)境下,安裝了TensorFlow[21]、Keras 深度學習軟件包和OpenCV 圖像處理軟件包。
TensorFlow 是谷歌公司推出的基于數(shù)據(jù)流編程(Dataflow Programming)的符號數(shù)學系統(tǒng),被廣泛應用于各類機器學習(Machine Learning)算法的編程實現(xiàn),其前身是谷歌的神經(jīng)網(wǎng)絡算法庫DistBelief。TensorFlow 擁有多層級結構,可部署于各類服務器、PC終端和網(wǎng)頁并支持GPU 和TPU 高性能數(shù)值計算。TensorFlow的Python 版本支持LInux、Windows、macOS操作系統(tǒng)。TensorFlow 提供Python 語言下的4 個不同版本:CPU 版本(Tensorflow)、包含GPU 加速的版本(Tensorflow-Gpu),以及它們的每日編譯版本(Tf-Nightly、Tf-Nightly-Gpu)。安裝Python 版TensorFlow 可以使用模塊管理工具Pip/Pip3 或Anaconda 并在終端直接運行。
OpenCV 是一個基于BSD 許可(開源)發(fā)行的跨平臺計算機視覺和機器學習軟件庫,主要傾向于實時視覺應用。OpenCV 可以運行在Linux、Windows、Android 和Mac OS 操作系統(tǒng)上。OpenCV 由一系列C函數(shù)和少量C++類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。OpenCV 具有輕量級、高效率、便于應用的優(yōu)點,因而深得圖像處理專業(yè)人士青睞。
在圖像和視覺智能處理領域,TensorFlow 與OpenCV 組合使用非常流行。本研究將TensorFlow 用于診斷模型訓練,而OpenCV 用于實現(xiàn)圖像樣本的數(shù)據(jù)增強處理以及其他預處理操作。
傳統(tǒng)的深度學習算法一般采用數(shù)據(jù)初始化(Normalized Initialization)和正 則 化(Intermediate Normalization)[22]來解決計算資源消耗高、模型容易過擬合和梯度消失/梯度爆炸問題。這種方法雖然在一定程度上解決了梯度問題,但是后續(xù)又出現(xiàn)了網(wǎng)絡退化等現(xiàn)象,于是HE 等提出了一種殘差學習框架ResNet[23]。隨著網(wǎng)絡深度的增加,使用ResNet 有助于模型預測性能的顯著提高,同時模型訓練時間沒有明顯增加,因此ResNet 成為目前應用最為廣泛的卷積神經(jīng)網(wǎng)絡。
ResNet 通常設置18、34、50、101 等多種層數(shù)選擇,考慮到實驗環(huán)境和數(shù)據(jù)規(guī)模,本研究選擇50 層的ResNet。
圖3 殘差網(wǎng)絡示意圖Fig.3 Diagram of a residual network
ResNet-50 包括一個跨層連接,如圖3 所示[24]。該跨層連接通過快捷連接Shortcut 跨層傳遞輸入信息,然后將其添加到卷積輸出中以完全訓練底層網(wǎng)絡,相當于直接執(zhí)行了恒等映射。在恒等映射函數(shù)中,假設殘差網(wǎng)絡的最優(yōu)結果輸出為H(X),經(jīng)過卷積操作后的輸出F(X),由于F(X)=H(X)-X,因此最優(yōu)結果為H(X)=F(X)+X。假設殘差映射比原映射更易優(yōu)化,那么在極端情況下就很容易將殘差推至0,即F(X)=0,這就變成了恒等映射函數(shù)H(X)=X,這比將映射逼近另一個映射要簡單得多,可以從時間、效果等多方面滿足要求。因此ResNet 在訓練中額外的參數(shù)和計算復雜度不會因此而增加,模型相當于退化為一個淺層網(wǎng)絡,從而隨著深度的增加而大大提高了準確性,不用過多地擔心網(wǎng)絡的“退化”問題。只要訓練數(shù)據(jù)足夠,逐步加深網(wǎng)絡,就可以獲得更好的性能表現(xiàn)。換而言之,ResNet 可以在網(wǎng)絡深度增加時,預測偏差減小(準確度上升),而方差也不會顯著增加(泛化能力不受影響)。方差與偏差同時被優(yōu)化,這在機器學習算法中極為難得。
為了高效準確的識別常見果樹病害的圖像,本研究將分類器改進為4 目標Softmax 分類器。Softmax 分類器是把一種目標變量分成多個種類的算法,可以接受全連接層輸入的特征矩陣,輸出輸入目標對應的每個種類的不同概率值。例如,有N 個輸入目標,每個目標的標記 yi∈{1,2,3……},k 為模型輸出類別的種類數(shù)(k≥2)。本文做梨黑斑病、梨銹病、蘋果花葉病、蘋果銹病的四分類器,k 值取值為4。對于給定的輸入xi,用假設函數(shù)fθ(xi)估計對應類別概率j 值P(yi=j|xi)。則函數(shù)為
θ 是Softmax 分類器的參數(shù),為保證概率和為1,使用
進行歸一化,Softmax 分類器的損失函數(shù)為
其中(yi=j)為指示性函數(shù),其取值與括號內(nèi)的真值保持一致,即yi=j 成立時函數(shù)值為1,否則為0。
本研究經(jīng)過多次試驗對比后,對模型的參數(shù)設置如下表所示。模型優(yōu)化器為Adam。Adam 優(yōu)化算法采用框架默認參數(shù),其所占內(nèi)存少,計算效率高,適用于非穩(wěn)態(tài)目標等諸多優(yōu)勢,由于本研究對象果樹病害樣本數(shù)據(jù)規(guī)模大,非常適合本研究對象果樹病害樣本的大規(guī)模圖像數(shù)據(jù)[25]。
表1 模型參數(shù)設計表Table 1 Model parameters
查準率(Precision)指的是預測為正例的集合中真正例的比例,其定義如下:
公式(4)中TP(True Positive)指模型識別出的正類數(shù)量、TN(True Negative)指模型識別出的負類數(shù)量、FP(False Positive)指模型誤報的數(shù)量,即將負類圖像預測為正類的數(shù)量、FN(False Negative)指模型的漏報數(shù)量,即未識別出的正類數(shù)量。
查全率(Recall Ratio),也叫召回率,是預測結果中真正例與實際所有整理的比值。
在實際應用中,查準率和查全率會出現(xiàn)悖反現(xiàn)象,即此消彼長。F-Score 是查準率與查全率的加權調和平均,在評價模型預測性能時綜合性更強。
應用實踐中,常設置α=1,即F1 指標。
模型精度(ACC)是分類正確的樣本數(shù)占總樣本數(shù)的比例,可從總體上反應一個模型的預測能力,其定義如下:
從實驗數(shù)據(jù)集中抽取80%的數(shù)據(jù)作為訓練集,20%數(shù)據(jù)作為驗證集,經(jīng)過迭代后訓練效果如圖4 所示。橫軸為訓練周期(Epochs),縱軸為誤差/ 精度(Loss/Acc)。由圖4 可知,隨著迭代次數(shù)越多,模型的精度越來越高,誤差越來越低,大約在第22 代訓練周期后趨于平穩(wěn),誤差逐漸趨向于0,而精度逐漸趨向于1。訓練集和驗證集的兩項指標近似重合,說明模型的偏差、方差和精度均收斂于理想水平。
圖4 模型收斂過程Fig.4 Model convergence process
表2 混淆矩陣Table 2 Confusion matrix
在表2 的混淆矩陣中,行表示預測類別,列表示真實類別。從混淆矩陣中可以看出,基于當前的樣本集合,梨銹病和梨黑斑病表征有一定的相似性,在梨黑斑識別過程中容易誤判為梨銹病。
表3 顯示模型的性能指標。蘋果花葉病和蘋果銹病的識別準確度較高,而梨銹病與梨黑斑的識別性能稍微遜色,模型的總體精度ACC 為92.9%。
表3 模型評價指標(數(shù)據(jù)增強)Table 3 Model evaluation metrics(data augmentation)
而對于未經(jīng)圖片增強的原始數(shù)據(jù)集,本研究使用相同的參數(shù)進行ResNet-50 模型訓練,結果發(fā)現(xiàn)模型的精確度、召回率、和F1 Score 顯著下降。如表4 所示。
表4 模型評價指標(原始數(shù)據(jù))Tab.4 Model evaluation metrics(raw data)
該軟件系統(tǒng)基于上述ResNet-50 模型,使用Java和Python 語言開發(fā),采用B/S 系統(tǒng)構架。系統(tǒng)技術結構如圖5 所示。
圖5 果樹病害識別系統(tǒng)技術結構圖Fig.5 Technical structure diagram of fruit tree disease recognition system
用戶交互子系統(tǒng)使用Java 開發(fā),其主要功能為建立用戶與系統(tǒng)的交互界面。使用該子系統(tǒng),用戶可以上傳需要診斷的圖片,并獲得診斷結果。模型服務子系統(tǒng)則提供樣本圖片處理、模型訓練和模型應用服務(圖片診斷)。該系統(tǒng)采用復合技術構架是為了充分發(fā)揮Java 與Python 在網(wǎng)絡計算和模型運算方面的各自優(yōu)勢,同時較好地實現(xiàn)了運算負載的均衡。
該系統(tǒng)的兩個子系統(tǒng)可以共用1 臺硬件服務器,也可以分別安裝到不同的服務器,兩個子系統(tǒng)通過http 協(xié)議進行數(shù)據(jù)通信。
模型服務子系統(tǒng)還動態(tài)存儲了用戶上傳的圖片,這樣模型訓練模塊就可以根據(jù)系統(tǒng)在使用過程中圖片數(shù)據(jù)的積累對模型進行重新訓練,使模型得到持續(xù)完善,診斷性能獲得不斷提升。系統(tǒng)的工作流程如圖6所示。
圖6 果樹病害識別系統(tǒng)流程圖Fig.6 Flow chart of the fruit tree disease recognition system
用戶采集到病害圖像后,可通過上傳本地圖片或指定圖片地址,模型即可獲得輸入的圖片,之后再進行預測。ResNet-50 模型使用了Softmax 函數(shù),輸出4種分類的概率。本文選擇其中最大概率分類作為診斷結果。診斷結果根據(jù)不同概率水平分為高度疑似(大于0.75)、疑似(大于0.3)和不確定3 種水平,為用戶判斷提供參考價值。系統(tǒng)工作界面如圖7 所示。
圖7 果樹病害智能診斷系統(tǒng)界面Fig.7 The interface of the intelligent diagnosis system for fruit tree diseases
本研究使用ResNet-50 訓練了病害智能診斷模型,為果樹病害圖像識別提供了一種可操作可借鑒的試驗經(jīng)驗。鑒于樣本圖像拍攝場景單一、色彩、清晰度、亮度趨同、多樣性差的特點,該研究采用數(shù)據(jù)增強技術對樣本圖像進行了預處理,提高了樣本數(shù)據(jù)的多樣化水平。實驗證明,該做法顯著提高了模型的預測性能?;谏鲜鲈\斷模型,開發(fā)了果樹病害智能診斷系統(tǒng),在線提供果樹病害診斷服務。
實驗還發(fā)現(xiàn),受圖像數(shù)據(jù)集樣本多樣性不足的影響,該模型的泛化能力還需進一步提高。通過搜集到的互聯(lián)網(wǎng)公共圖像測試,該模型的整體精度下降到85.2%水平。這說明盡管本研究對樣本進行了數(shù)據(jù)增強操作,但樣本的多樣性水平仍然沒有達到理想水平,這需要在今后的研究中進一步豐富樣本多樣性,同時在模型訓練中,進一步優(yōu)化參數(shù)設置,從數(shù)據(jù)優(yōu)化和模型優(yōu)化兩個方向出發(fā),努力提高診斷模型的預測精度。