梁萬杰,曹靜,孫傳亮,曹宏鑫,張文宇,2
(1. 江蘇省農業科學院農業信息研究所,南京市,210014; 2. 江蘇大學農業工程學院,江蘇鎮江,212013)
我國是農業大國,常見的農作物病蟲害達1 400多種,具有種類多、影響大、局部暴發成災和災害損失大等特點。病害是引起農產品減產和品質下降最重要的因素之一,也是制約高產、優質、高效農業持續發展的主要因素之一[1]。根據全國農技中心預測,2022年我國水稻病蟲害將呈偏重發生態勢,發生面積0.82億公頃次[2]。及時準確地識別農作物病蟲害是準確測報災情和合理防治的前提[3-4]。病蟲害識別的不及時、不準確,及大面積使用生物制劑、化學農藥等非綠色防治方法,引發農藥殘留,嚴重影響農產品產量和品質[5-7]。我國農民普遍缺乏病蟲害識別能力和防治知識,擁有農業病蟲害診斷和防治的專家受地域和人數制約,在時間和精力上難以滿足實際需求[8]。因此,研發便捷、快速、準確識別農作物病蟲害和精準提供病蟲害防治策略的智能化系統對現代農業的發展具有重要意義。
基于計算機視覺的作物病害識別一直是農業信息學研究熱點。早期基于計算機視覺的病害識別主要通過圖像分割獲得病斑區域,提取病害圖像特征,如:顏色空間特征[9]、YCbCr色彩空間[10]、形態、紋理特征[11]、綜合顏色特征[12]等,結合分類器進行病害識別。深度學習模型,特別是卷積神經網絡(Convolutional Neural Network, CNN)模型,具有自主學習特征能力,可從原始圖像中重構圖像的高層語義特征[13]。目前,深度學習已成為農作物病蟲害實時監測與智能診斷研究熱點。宋晨勇等[14]通過對GoogleNet模型的改進,實現了較高精準度的蘋果病害識別,并減少了模型參數量,提高了計算效率。王國偉等[15]利用深度卷積神經網絡模型構建玉米病害識別模型,平均識別率達96%,平均計算時間為0.15s。Lu等[16]提出基于多示例學習弱監督的深度學習模型用于小麥病害診斷。Lu等[17]提出改進的深度卷積神經網絡模型用于水稻病害識別。Ma等[18]利用深度卷積神經網絡研究黃瓜病害識別方法,在自然生長環境對黃瓜病害識別具有更好魯棒性。隨著智能手機的普及,物聯網和深度學習模型的發展,農作物病蟲害智能識別系統已成為應用研究一個重要方向。蘇一峰等[19]基于物聯網監控系統平臺,研發了一個小麥病蟲害診斷系統。趙建敏等[20]利用CNN模型實現了馬鈴薯葉片病害的準確識別,結合Web服務器和手機端APP設計實現了一個馬鈴薯病害智能識別系統。李昊等[21]采用物聯網技術和深度學習方法,基于尺度可變視頻流信息,研發了一套柑橘葉片病蟲害動態識別系統。
本文以蘋果、玉米、葡萄和番茄4種作物18種病害為研究對象,通過數據預處理、數據增強構建病害數據集。利用VGG16和Resnet50兩種深度學習模型,通過模型參數優化、模型交叉驗證等,構建單作物多病害識別和多作物多病害識別模型。并對識別模型性能進行對比分析。構建識別模型后,結合智能手機、Web技術和網絡編程技術,研發一個農作物病害智能識別系統。
作物病害圖像數據主要來自AI Challenger 2018數據集。該數據集按照物種—病害—程度分類,包含10個物種,共61個病害。帶標簽的數據包含32 768幅訓練集圖像和4 992幅驗證集圖像。本文主要選用蘋果、玉米、葡萄和番茄4個作物,18個病害和健康,共22個類別建立模型。
圖像按1∶1比例裁剪病害區域,并將圖像統一縮放為256像素×256像素。由于部分病害類別圖像樣本數量較少,為提高模型的泛化能力和魯棒性,通過增加圖像對比度與亮度、添加噪聲和旋轉90°等方法對樣本數較少類別的原始圖像進行數據增強。另外,通過各種途徑收集病害圖片,使病害樣本數量得到補充。表1展示數據集基本信息,圖1展示部分病害圖片。

表1 數據集信息Tab. 1 Information of dataset

圖1 作物病害圖像示例Fig. 1 Example of crop disease image
根據5-flod交叉驗證需求,數據集被均分成5份,4份作為訓練集,1份作為測試集,即80%作為訓練集,20%作為測試集。
目前,應用較廣泛,識別效果較好的CNN模型有VGG16、GoogLeNet、Resnet和DenseNet等。由于VGG16和Resnet50在圖像識別方面的出色表現,本文選擇VGG16和Resnet50建立病害識別模型,通過對比分析選擇出識別能力最佳的模型架構。VGG16模型的結構和參數如圖2所示,Resnet50模型的結構和參數如圖3所示。圖中Conv代表卷積層,數字為卷積核大小;C為輸出特征圖個數,S為步長,P為填充值。模型結構圖中省略了歸一化層和激活函數層。

圖2 VGG16模型結構和參數Fig. 2 Model structure and parameters of VGG16

圖3 Resnet50模型結構和參數Fig. 3 Model structure and parameters of Resnet50
VGG模型的中心思想是使用3×3的卷積核和2×2的池化核,來減少模型參數和計算量,同時加深網絡結構來提升模型識別能力。VGG16模型主要由13個卷積層、3個全連接層、5個池化層和1個dropout層構成。卷積層共分為5個卷積塊,每個卷積塊由一組卷積層與激活函數,及一個最大池化函數組成。VGG16通過卷積層提取圖像特征,池化層降低特征維度,全連接層對數據進行分類,最后一層為softmax層,計算出輸入圖像屬于每個類別的概率,最后得到每個類的預測值。
殘差網絡(ResNet),引入殘差模塊、恒等映射、瓶頸層等技術,通過增加網絡層數使其具有更好的特征表達能力,巧妙地解決了網絡深度引發的梯度消失或梯度爆炸問題;有效地控制了網絡參數和計算復雜度。模型的激活函數采用Leaky ReLU。Leaky ReLU激活函數可以使梯度正常傳播,并能避免神經元處于“死亡”狀態。
模型基于Darknet深度學習開發平臺實現。Darknet是一個比較小眾的深度學習框架,但該框架具有以下優點:(1)沒有任何依賴項,易于安裝;(2)結構明晰,源代碼查看、修改方便;(3)易于移植,有利于模型系統與其他系統集成及應用開發。模型訓練、測試和運行的GPU是NVIDIA GEFORCE RTX 3090,該GPU采用第2代NVIDIA RTX架構,搭載了全新的RT Core、Tensor Core及SM流式多處理器,CUDA核心數10 496,存儲24 GB。操作系統是Ubuntu20.04。
1.4.1 模型訓練
采用5-flod交叉驗證方法,數據集被均分成5份,4份作為訓練集,1份作為測試集,即80%作為訓練集,20%作為測試集。分別用蘋果、玉米、葡萄、番茄病害數據集對模型進行訓練,建立4個作物的單作物多病害識別模型。然后用這4個作物病害數據集對模型進行訓練,并建立多作物多病害識別模型。
VGG16和Resnet50模型訓練采用隨機梯度下降法Stochastic Gradient Descent(SGD)對模型參數進行更新學習。模型學習速率為0.01,權重衰減率為0.000 5,沖量為0.9,迭代次數為30 000次,每次批次128張圖片。訓練輸入圖像大小為256像素×256像素,損失函數采用softmax。
模型訓練和驗證階段,首先按圖2和圖3的模型結構和參數建立模型配置文件。然后,根據Darknet系統要求,建立包含訓練數據集、驗證數據集、測試數據集、類別等數據配置文件。最后調用Darknet系統的模型訓練、驗證和測試功能,完成模型訓練、驗證和測試。
1.4.2 模型性能分析
采用5-flod交叉驗證方法,對每個模型進行交叉驗證,統計每個模型的平均正確率,結果如表2。VGG16病害識別模型正確率都達到96%以上。Resnet50病害識別模型識別正確率達到86%以上,與VGG16識別模型相比識別率偏低。Resnet50模型對番茄和葡萄的識別能力較低,與VGG16模型相比識別率分別下降9.12%和12.4%。Resnet50模型對玉米和蘋果的識別能力與VGG16模型相比正確率相差較小,分別下降1.68%和3.3%。Resnet50模型對多作物多病害的識別能力與VGG16相比識別率分別下降8.14%、7.03%和5.02%。在GPU支持下,VGG16和Resnet50識別一張圖片的平均時間分別是19.63 ms和18.82 ms,相差不大。因此,在此數據集上VGG16模型比Resnet50模型識別能力更強。

表2 各識別模型識別性能Tab. 2 Recognition performance of different models %
對比分析VGG16建立的7個病害識別模型。番茄和葡萄病多作物害識別模型的正確率為96.75%,低于番茄病害識別模型的正確率(97.61%)。玉米、番茄和葡萄多作物識別模型的正確率為97.83%,與番茄病害識別模型的識別率僅相差0.22%。蘋果、玉米、番茄和葡萄4作物多病害識別模型的正確率為96.80%,與蘋果病害識別模型的識別率僅相差0.34%。從以上的對比結果可知,多作物多病害識別模型的正確率,與識別率最低的單作物多病害識別模型正確率相當,即多個單作物識別模型比一個多作物識別模型具有更好的識別能力。
表3統計了VGG16單作物和多作物識別模型對每種病害的識別正確率、召回率和精度。與單作物識別模型相比多作物識別模型對一些病害的識別能力有明顯下降,其中蘋果的3種病害的各項指標變化不大。玉米葉斑病的召回率和精度分別下降5.41%和7.31%,玉米花葉病毒病在召回率不變的情況下,精度下降了1.23%。葡萄黑腐病在精度不變的情況下召回率下降了3.8%,葡萄褐斑病在召回率不變的情況下精度下降了23.08%。番茄受影響的病害種類較多,其中番茄早疫病的召回率和精度分別下降7.41%和5.17%,番茄晚疫病的召回率和精度分別下降0.63%和8.19%;在精度不變的情況下番茄葉霉病、番茄斑枯病和番茄花葉病毒病的召回率分別下降了1.24%、2.85%和7.44%。綜上所述,在多作物識別模型中玉米、葡萄和番茄的病害識別性能都受到影響,平均識別正確率以及部分病害的精度和召回率都有明顯下降。結果表明多個單作物識別模型比一個多作物識別模型具有更好的識別能力。

表3 VGG16單作物模型和多作物模型性能Tab. 3 Recognition performance of VGG16 single crop and multi crop models
基于以上分析結果,本文提出了根據作物生長階段和作物類型分類建立單作物多病害識別模型的方法。該方法可以更好地利用作物生長環境、病害發生特點、病害發生規律、發展階段等先驗知識,建立性能更好的識別模型。
1) 系統總體設計。基于智能手機和深度學習模型的農作物病害智能識別系統的整體架構如圖4所示。系統由智能手機客戶端、Web服務器、套接字服務器和農作物病害識別模型組成。系統模塊和流程圖如圖5所示。

圖4 系統總體架構Fig. 4 System architecture

圖5 系統主要模塊和流程圖Fig. 5 Modules and flow chart of the system
系統主要功能模塊包括:用戶注冊、用戶登錄、信息采集、網絡服務管理、知識庫管理和結果展示等。病害識別的主要流程是:首先采用智能手機拍攝農作物病害圖像,通過網絡上傳到服務器,同時上傳作物類型和采集時間信息;服務器接收到信息后,首先解析信息,判斷要調用的識別模型并加載模型參數和權重,然后對圖像進行識別,得到準確的識別結果;Web服務器根據識別結果,精準查詢對應的病害知識和防治方法,并把識別結果、病害信息和防治方法展示給用戶。
2) 網絡服務設計與實現。套接字網絡服務器的功能是提供TCP/IP網絡鏈接接口,并根據接收到的信息調用識別模型。網絡接口可以根據協議接收Socket鏈接請求。網絡服務器可以作為獨立的平臺,除為本文系統提供服務,還可以為農業專家系統、農業機器人、智能農機和無人機等提供病害識別服務。
套接字網絡服務器基于Darknet、C語言和Socket網絡編程實現。Darknet是用C語言開發的深度學習開發平臺,可使識別模型與Socket服務無縫集成。識別模型采用配置文件的方式進行配置和管理。首先為每個模型建立網絡結構文件、病害類別文件、模型權重文件,然后采用作物類別和病害類別,建立模型相關文件的索引,從而實現模型的分類管理。網絡服務器接收到網絡鏈接請求后,建立處理線程。處理線程接收作物類型、發病時間和病害圖像數據,查詢模型索引文件,并精準調用識別模型對病害進行識別。最后,通過TCP/IP鏈接把識別結果發送給客戶端。
3) 手機端設計與實現。手機客戶端基于響應式H5頁面、JAVA、JSP、Struts架構等技術實現。手機端網頁通過標簽設置頁面元信息,使其自動適應手機界面。手機客戶端主要功能包括:用戶注冊、用戶登錄、農作物病害數據采集、農作物病害識別、識別結果展示、病害防治方法展示等。手機客戶端部分界面如圖6所示。

(a) 用戶登錄

(b) 病害信息采集

(c) 識別結果圖6 手機客戶端界面Fig. 6 Interface of smartphone
用戶登錄界面如圖6(a)所示,包括賬號/手機號、密碼輸入接口,登錄和重置按鈕。新用戶需要點擊下方的注冊進行賬號注冊。用戶登錄系統后進入病害信息采集界面(圖6(b))。采集信息包括采集時間和作物類型。病害圖像有圖片庫選擇和現場拍照兩種輸入方式。網頁信息提交后由自定義Action與Socket服務器建立TCP/IP鏈接,并發送圖像和相關參數到Socket服務器。Socket服務器解析接收到的信息并根據作物類型、發病時間調用對應的識別模型。識別結果和正確率通過TCP/IP鏈接發送給自定義Action。自定義Action根據識別結果查詢對應的病害知識和防治辦法,并把相關信息發送到客戶端,顯示在手機屏幕上,如圖6(c)所示。在GPU支持下,頁面響應時間1~2 s,滿足應用需求。
1) 本文以蘋果、玉米、葡萄和番茄4種作物18種病害為研究對象,采用VGG16和Resnet50構建識別模型,通過數據預處理、數據增強、模型參數優化、模型交叉驗證等,構建了單作物多病害識別模型和多作物多病害識別模型。驗證結果表明基于VGG16建立的病害識別模型的識別正確率都達到96%以上,性能優于基于Resnet50構建的識別模型。分析基于VGG16建立的病害識別模型性能后發現根據作物類型和發病時間構建的單作物多病害識別模型性能優于單個的多作物多病害識別模型。因此,本文提出了根據作物類型和發病時間構建病害識別模型的方法,該方法可以有效利用作物生長環境、病害發生規律、發展階段等先驗知識,建立單作物多病害的病害識別模型,從而實現最佳的識別效果。這種模型構建方法也更適合應用場景。
2) 基于智能手機的農作物病害智能識別系統可為農戶、基層植保人員及其他用戶提供精確的識別結果、病害知識和防治方法。系統具有以下特點:(1)根據作物類別和發病時間構建病害識別模型體系,使系統的病害識別能力更強、準確度更高。(2)系統通過網絡服務器實現模型調用,降低了功能子系統間的耦合,增加了系統的可擴展性,隨著更多識別模型的建立將極大地提升系統的識別能力。(3)Socket網絡服務器可同時為農業機器人、智能農機、無人機及其他農業專家系統提供作物病害識別服務。(4)基于手機網頁形式,可以減少占用手機端系統資源,系統安裝部署、升級方便。隨著更多作物識別模型的建立并集成到系統,將形成更完整的識別模型體系,系統功能會更加完善,并加快系統的落地應用。