吳建偉 , 黃杰 , 熊曉菲 , 高晗 , 秦向陽 *
(1.北京市農林科學院,北京 100097;2.國家農業信息化工程技術研究中心,北京 100097;3.北京派得偉業科技發展有限公司,北京 100097)
桃樹是我國主要的果樹樹種之一,2017年,我國桃樹種植面積達78.19萬hm2,桃總產量達1 429萬t,居世界首位[1]。近年來,桃產業不斷適應市場變化,逐漸發展成為富民產業和生態產業[2]。桃樹極易遭受病害的侵擾而影響果品的品質和產量,及時準確地識別病害可以控制病害蔓延、降低管理成本、減少經濟損失,對桃產業的高質量發展具有重要意義[3-4]。傳統果園病害識別主要依賴人工鑒定及專家系統查詢和遠程服務[5-6],這些方法成本較高、效率低,而且容易受到經驗知識、信息傳遞、溝通時效、專家維護等多種因素影響,缺乏穩定性和可靠性。物聯網(internet of things,IOT)、人工智能(artificial intelligence,AI)等新一代信息技術的快速發展使農作物病蟲害智能識別成為植物保護主流趨勢[7-9],利用AI圖像識別技術自動對果樹病害進行診斷,無需聘請專業技術人員進行現場或遠程的咨詢鑒定,具有操作簡便、識別效率高、成本節約等優點,利于病害的及時診出,為提高果園病害監測預警和科學防治水平提供了有效途徑[10-11]。
基于AI的病害圖像識別方法主要利用機器學習、計算機視覺等技術,通過特定的計算機算法和模型對病害的光譜和圖像信號進行挖掘和分析,實現對病害情況的識別和鑒定[12]。經典的圖像處理技術(降噪、腐蝕、圖像增強、圖像分割、特征提取等)和機器學習方法(最小二乘法、K均值聚類算法、支持向量機、人工神經網絡等)在不同的農作物病蟲害識別方面已有大量研究并取得一定進展,然而受限于依賴人工設計特征提取、環境條件和發病期不同、樣本數量不足等因素,識別效果難以滿足應用需求[13-14]。將深度學習引入病蟲害圖像識別,在解決圖像分類和可視化問題上具有顯著優勢,通過通用的學習過程自主提取病害圖像高層次特征,數據處理效率和識別準確率更高[15-16]。目前應用較多的深度學習網絡技術包括卷積神經網絡(convolutional neural networks,CNN)、受限玻爾茲曼機(restricted boltzmann machine,RBM)、深度置信網絡(deep belief networks,DBN)、深度玻爾茲曼機(deep boltzmann machine,DBM)、循環神經網絡(recurrent neural networks,RNN)、生成式對抗網絡(generative adversarial networks,GAN)、膠 囊 網 絡 (capsule network,CapsNet)等。其中,CNN被認為是進行圖像識別的較優算法之一[17-18],基于CNN產生了許多性能良好的神經網絡模型用于作物病害識別,如 AlexNet、LeNet-5、GoogleNet、VGGNet、ResNet、InceptionV3、MobileNet、DenseNet、R-CNN、SSD等。黃雙萍等[19]利用GoogleLeNet建模,用于水稻穗瘟與健康稻穗的分類,最高穗瘟檢測精度可達92.0%。劉闐宇等[20]基于區域Faster R-CNN建立模型定位葡萄葉片位置,不僅能成功分辨病蟲害的種類,還能輸出目標檢測的位置信息。郭小清等[21]針對番茄葉部病害,對AlexNet模型進行了改進,運行性能和不同發病時期識別準確率都優于MobileNet、SquezeeNet、LeNet模型。近年來,利用深度CNN對柑橘、蘋果、梨、桃等果樹的病害識別進行了大量探索研究:張敏等[22]采用Alexnet網絡模型對柑橘潰瘍病樣本識別率高達98%,超過了支持向量機(support vector machines,SVM)、Adaboost、人工神經網絡(artificial neural network,ANN)、極限學習機(extreme learning machine,ELM)等傳統機器學習方法;金瑛等[23]基于ResNet-50深度卷積網絡模型,對梨黑斑病、梨銹病、蘋果花葉病、蘋果銹病4種果樹病害的平均識別率達到92.9%;張敏等[24]基于GoogLeNet改進模型對蘋果銹病、斑點落葉病葉片測試的平均準確率達到96%;Yao等[25]針對桃樹7種主流病害的識別,提出了改進的L2MXception網絡,該研究還對比了AlexNet、ResNet50、Xception、SENet154、DenseNet-169、HRNet-w48、MobileNetV3模型在原始、L2和L2M條件下的驗證準確率,其中原始條件下的DenseNet-169模型的驗證準確率為89.32%,明顯高于其他模型。DenseNet屬于密集型網絡,由Huang等[26]于2016年提出,借鑒了ResNet與GoogLeNet的優點,通過進一步特征重用和Bypass思想大幅度減少了網絡參數量,并在一定程度上緩解了層數加深后梯度消失的問題。本研究從桃園的病害識別與防治需求出發,突破傳統病害識別依賴人工、成本高、效率低、準確度低等問題,面向桃樹常見的11種病害,基于卷積神經網絡DenseNet-169分類模型進行微調改進,并搭建Web端,集成開發桃樹病害智能識別軟件系統,搭建便捷的“以圖識病”平臺,為桃樹產業的智慧化發展提供支持。
通過果樹病蟲害數據庫以及果園實地拍攝等不同途徑采集桃樹病害樣本圖像共計3 263張,涉及桃園主要發生的病害11種,包括桃黑斑病、桃褐腐病、桃黑星病、桃炭疽病、桃縮葉病、桃灰霉病、桃褐斑穿孔病、桃霉斑穿孔病、桃細菌性穿孔病、桃樹流膠病、桃樹木腐病;采集1 000張健康植株圖像作為對照,全圖像集共計4 263張。
1.2.1 樣本處理與數據集分割 圖像擴增是處理較少樣本數據集的有效方法,本研究采用隨機裁剪、改變尺寸、隨機水平翻轉、隨機豎直翻轉、隨機旋轉、高斯噪聲、椒鹽噪聲、對比度調整等圖像數據增強方法進行擴增(圖1),以提高所訓練網絡的魯棒性。數據集切分按照7∶2∶1比例劃分為訓練集、驗證集及測試集。

圖1 經過不同方法處理的桃黑星病圖像Fig.1 Images of peach black spot disease processed by different methods
1.2.2 模型選用與改進 本研究基于大型公開圖像分類數據集ImageNet預訓練的DenseNet-169對病害識別模型進行微調,加入注意力機制,即在DenseBlock前、transition層后各加入SElayer層(圖2),并修改模型最后一層分類層為需要訓練的病害類別總數量+1(other類)。

圖2 DenseNet改進模型結構Fig2 DenseNet improved medel structure
1.2.3 模型訓練與測試 ①數據預處理。為了改善模型特征提取性能,對圖像進行預處理,將輸入數據歸一化到[-1,1]之間,以防止數值過大造成網絡訓練參數的不穩定,并加快模型收斂速度,固定輸入圖片尺寸為224×224×3。
②模型訓練。選用合適的梯度下降算法、學習率、batch size等超參數,本研究模型的優化算法為隨機梯度下降(stochastic gradient descent,SGD),初始學習率設為0.001,隨著epoch的增加而逐步減小。DenseNet模型雖然較小,參數量較少,但是特征重用所造成的計算量大大增加,因此在計算能力有限的情況下要選擇較小批量(batch size),本次訓練選用大小為16。保存訓練時訓練集和驗證集的loss變化,通過loss曲線確定模型有無欠/過擬合現象,在確認不會發生上述情況時,將驗證集數據與訓練集數據進行合并訓練,得到最終模型。
③模型測試。使用訓練后的模型進行測試,同樣需要對圖像進行歸一化和圖像大小的處理,在輸入圖像路徑后,選擇對應的模型即可進行識別。識別過程中進行與訓練相統一的數據增強,對增強的所有圖片進行預測,加權求均值。
1.3.1 Web端搭建 搭建Web端接口以實現軟件系統對算法模型的調用,主要步驟包括:定義web_api.py,在此腳本中定義resolveJson方法,將包含模型名稱及此模型內類別名稱的Json文件傳入方法中進行解析,得到每個模型的名稱及其包括的類名;定義路由打開網頁時,跳轉到index.html頁面,頁面中定義超鏈接,跳轉到單張測試/批量測試頁面,在單張/批量測試頁面定義表單,用來傳輸圖片路徑、模型名字及類別數量;將表單中的數據接收到后臺,并判斷模型是否存在以及類別數量是否與模型數量一致。進行單張測試,調用test.init_param方法,將參數傳入進行模型的初始化及圖片測試前的預處理,最后調用eval-single方法,返回預測結果及置信度;進行批量測試,調用test.init_param方法,將參數傳入其中,進行模型的初始化及圖片測試前的預處理,最后調用eval方法,返回批量預測結果。使用matplotlib統計不同病蟲害的數量,并以圖表形式進行展示。
1.3.2 系統設計 桃樹病害智能圖像識別系統主要采用JAVA語言開發,以Springboot+Mybatis框架,基于XML和Web Services組件化開發模式實現業務模塊/組件的松耦合,軟件部署上采用B/S結構,數據庫使用MySQL。
①總體架構。該系統總體架構主要包括數據層、支撐層、應用層。數據層存儲和管理桃樹病害圖像數據、病害防治知識數據、用戶數據與系統使用數據等;支撐層提供AI算法模型、底層算法庫、基礎中間件、服務組件等應用支撐模型和組件;應用層實現桃樹病害查詢、分析、決策等數據可視化服務。
②功能設計。主要包括用戶登錄、AI識別、診斷記錄、系統管理4個模塊,為用戶提供完整的桃樹病害智能圖像識別應用。用戶注冊、登錄系統后,選擇并上傳待測桃樹病害圖像,調用AI算法模型進行識別,返回識別結果和防治建議,并可查詢歷史診斷記錄,進行系統后臺管理(圖3)。

圖3 桃樹病害智能圖像識別系統Fig.3 Intelligent image recognition system of peach diseases
本研究用DenseNet-169網絡對桃樹11種主要病害樣本數據集進行訓練,根據損失值(loss)和準確率(accuracy)曲線分析結果(圖 4),形成SEDDenseNet模型,驗證集損失值和準確率隨著迭代次數的增加逐步趨于穩定,未出現大幅波動,沒有過擬合現象,模型效果穩定。

圖4 模型訓練的損失值與準確率Fig.4 Loss value and accuracy curve of training model
訓練結果(表1)顯示,11種桃樹病害樣本準確率在85.00%~98.28%之間,平均準確率91.47%,總體識別率93.65%,訓練模型實現了對桃樹主要病害的準確識別;桃黑斑病準確率樣本最多達到569個,準確率最高達到98.28%,桃褐斑穿孔病樣本最少(208個),準確率最低達(85%),樣本數量對于準確率正相關。

表1 桃病害圖像識別DenseNet-169改進模型測試結果Tab.1 Test results of DenseNet-169 improved model for peach tree diseases image recognition
與DenseNet基準模型相比,以迭代次數50遞加,改進的SEDenseNet網絡模型準確率提升了2.7個百分點(圖5)。

圖5 DenseNet-169模型改進前后對比曲線Fig.5 Comparison curve before and after improvement of DenseNet-169 model
本研究開發了桃樹病害智能圖像識別系統(圖6),注冊用戶通過輸入用戶名和密碼進入系統,上傳待識別的桃樹病害圖片,系統自動對圖片進行預處理并匹配相應算法模型,推理出相似度排名前5病害種類及其相似度,并結合相應知識模型,提供所識別相似度最高的病害的名稱、癥狀特點、防治方法等信息。系統提供上傳圖片、上傳時間、識別結果與置信度等查詢功能,結合AI診斷模型管理,實現對訓練的各類桃樹病害深度學習算法模型的管理和維護。結合桃園現場的病害識別試驗應用,系統有效集成主要發生的桃樹病害圖像識別算法模型,平均識別速度達10.3 fps,實現了快捷、準確的“以圖識病”。

圖6 桃樹病害智能圖像識別系統界面Fig.6 Interface of intelligent image recognition system for peach diseases
植物病蟲害圖像識別相對于傳統的人工鑒定與專家遠程服務,顯著改善識別效率,為廣大農戶提供便捷、快速、準確的診斷服務,從而減少病蟲害損失,提升作物產量與品質。近年來,在農林領域得到了快速發展與較好應用。現有研究探討了基 于 GoogLeNet、 FI-DenseNet、 ResNet50、MobileNet、one-shot、EESP、Xception-CEMs、VGG-16等深度學習模型在植物病害圖像識別方面的實踐,并取得了良好的應用效果[27-30]。本研究采用DenseNet-169網絡模型,通過特征在通道上的連接來實現特征重用,前面所有層和后面層密集連接,每層都可以直接利用損失函數的梯度以及輸入信息[31],加強了特征的傳遞和有效利用,解決小數據集容易過擬合等問題,使得模型更容易訓練,對于農業病蟲害樣本不易獲得的情況尤為有利。同時,還加入了注意力機制,目的是讓模型能夠忽略無關信息,讓深度神經網絡學到每張樣本圖片中需要關注的病害植株區域,形成注意力,從而提高識別效率。結果顯示,11種桃樹病害樣本準確率處于85.00%~98.28%之間,平均準確率91.47%,實現了智能識別。目前,本研究開發的桃樹病害智能識別與應用系統已在北京市平谷區規模化桃園開展試點應用,促進桃園植保防治工作更加及時高效;同時,隨著該方法的使用與推廣,桃園病害數據不斷積累,AI模型將得到優化,以實現更精準、智能的識別診斷,為進一步監測預警與大數據分析提供有效支撐。