邵澤中,姚青,唐健,李罕瓊,楊保軍,呂軍,陳軼
(1浙江理工大學信息學院,杭州 310018;2中國水稻研究所/水稻生物學國家重點實驗室,杭州 310006;3嘉善縣農業農村局,浙江嘉興 314100;4桐鄉市農業技術推廣服務中心,浙江桐鄉 314500)
【研究意義】及時準確地識別田間農業害蟲的種類是害蟲準確測報和合理防治的前提[1]。傳統的害蟲識別方法主要依賴個人的專業經驗進行辨別,或參考書本、網絡上的文字和圖像進行比對,或尋求專家鑒定等。由于田間昆蟲種類繁多,有些不同種類的昆蟲外觀相似,而同一種類的昆蟲可能存在較大的變異,這種人工識別農業害蟲的方法主觀性強,實時性差,容易造成誤判[2]。另外,我國農民科技文化素質普遍較低,擁有農業害蟲診斷和防治知識的專家受地域和人數的制約,在時間和精力上難以滿足到田間為廣大農戶進行一線指導。在基層測報人員日益減少的情況下,亟需一種便捷、快速、準確識別農業害蟲和提供害蟲防治策略的智能工具?!厩叭搜芯窟M展】隨著圖像處理技術的發展與應用,近20年國內外許多學者開展了基于圖像的害蟲自動識別研究。首先通過各種圖像采集設備[3-5]獲取高質量的害蟲圖像,然后提取害蟲圖像特征,主要包括全局特征中的顏色[6-7]、形態[8-9]或紋理[10]等,局部特征中的 SIFT[11]、HOG[12-13]、LBP[13]、PCBR[14]等,并進行特征篩選或多特征融合[15-16],最后利用這些特征訓練各種分類模型,如支持向量機[6,11,13]、神經網絡[8,17-18]、K-NNC[15]、MKL[19]、稀疏表示分類器[11]等。利用上述傳統的模式識別方法,在有限種類和樣本集上均能取得了較好的識別效果,但由于需要手工設計特征、模型存在魯棒性不高和泛化能力差等問題,導致很多研究成果未能在實際生產中得到應用。近幾年,深度學習方法中的卷積神經網絡(convolutional neural network,CNN)在大規模圖像識別任務中表現出色,它是一種端到端的機器學習方法,可以從圖像中自動逐層提取成千上萬的特征,這些良好的特征表達在目標識別中起到至關重要的作用[20]。已有很多學者利用遷移學習方法對卷積神經網絡微調,利用農業害蟲訓練和測試樣本對模型不斷的優化,最終獲得了較高的準確率[21-27]。LIU等[21]首先利用顯著性分割方法定位自然環境下拍攝的 12種水稻害蟲,然后建立 CNN 模型識別害蟲,準確率達95.1%。DING等[22]利用CNN和滑動窗相結合的方法對性誘劑粘板圖像上的害蟲進行檢測,獲得了較好的結果。陳娟等[23]提出了一種基于改進殘差網絡的害蟲圖像識別方法,在相同數據集下對38種北方園林害蟲的平均識別準確率達到 91.4%。CHENG等[24]提出了一種基于深度殘差學習網絡的害蟲識別方法,對10種害蟲進行測試,最終獲得了 98.7%的識別率。XIA等[25]在VGG19模型基礎上進行改進,對24種害蟲進行識別,獲得了89.2%的識別率。LIU等[26]提出了一種基于區域的燈誘害蟲檢測模型,16種害蟲的檢測率為75.46%;ALFARISY等[27]利用CaffeNet模型對數據增強后的 13種水稻病蟲害圖像進行識別,獲得了87%的準確率。隨著智能手機的普及與基于深度學習的害蟲智能識別研究的深入,將兩者結合實現手機版的農業害蟲智能識別APP成為應用研究的方向。目前我國流行的APP“形色”[28]和“花伴侶”[29]可以讓用戶通過手機拍攝和上傳的植物或花卉等圖像進行實時地智能識別,獲得較高的準確率,為植物和花卉愛好者提供了一個便捷的智能識別工具。樊景超[30]建立了基于MobileNets的6種常見果園害蟲識別APP,準確率達到了90%。趙彬宇等[31]針對儲糧害蟲,開發了基于安卓系統的儲糧害蟲智能圖鑒及圖像識別APP,對146種常見儲糧害蟲制作了信息查詢列表,利用VGG16網絡模型對 10種常見儲糧害蟲進行在線識別,獲得較高的識別率。【本研究切入點】農田環境復雜,害蟲種類繁多,害蟲圖像采集和人工標定困難,導致前人研究中害蟲種類較少,結果無法滿足生產實際的需求。【擬解決的關鍵問題】本研究利用深度學習方法和安卓技術,開發了一個面向移動終端的農業害蟲智能識別系統,解決了農民或基層植保人員在田間遇到不認識害蟲時無法實時獲得有用信息的問題,可利用本系統的 Android移動終端(手機或PAD)拍攝害蟲圖像,上傳圖片就可以實現害蟲的自動識別,并為用戶提供一對一的農業害蟲防治信息。

圖1 面向移動終端的農業害蟲智能識別系統設計圖Fig.1 Frame map of the intelligent identification system of agricultural pests for mobile terminals
面向移動終端的農業害蟲智能識別系統的整體設計見圖1。該系統由移動端 APP、云服務器和農業害蟲識別模型組成,移動端APP拍攝農業害蟲圖像,通過網絡上傳到云服務器,安裝在云服務器上的識別模型對農業害蟲圖像進行識別,并將結果反饋到移動端。
通過手機或相機拍攝和網絡收集了66種常見農業害蟲圖像共8 857幅(圖2)。按照9﹕1的比例來確定訓練樣本量和測試樣本量,隨機選取956幅圖像作為測試圖像集,剩余圖像作為訓練圖像集。66種農業害蟲名錄和圖像樣本量信息見表 1。所有圖像中的害蟲種類均經過了專家的鑒定。
不同的農田不同的用戶,拍攝的害蟲圖像背景和害蟲在整幅圖像中所占區域比例差異較大。為了提高害蟲的識別率,從圖像中以長寬1﹕1比例裁剪害蟲區域,并將圖像縮放至統一尺寸224×224像素。
深度學習中卷積神經網絡模型需要大量的訓練樣本。由于本文部分害蟲種類圖像樣本量較少,為了提高模型的泛化能力和魯棒性,通過增加圖像對比度與亮度、添加噪聲和旋轉90度3種方法[32]對原始圖像進行數據增強,訓練集擴增3倍。
目前,圖像識別效果較好的CNN有CaffeNet[33],VGG[34],GoogLeNet[35]、ResNet[36]和 DenseNet[37]等。由于DenseNet在多個圖像識別任務中表現出色[38-40],本文建立基于DenseNet的農業害蟲識別模型。
1.4.1 DenseNet模型的建立 DenseNet網絡結構主要由Dense Block和Transition層組成,其核心是采用密集連接機制,即每個層都會接受其前面所有層所學習的特征圖作為輸入(圖3)。在每個Dense Block中,各個層的特征圖大小一致,可以在通道維度上連接,每層之間采用非線性組合函數 BN+ReLU+3×3 Conv的結構,如圖4所示。Transition Layer處在2個Dense Block中間,包含1×1卷積層和2×2平均池化層。1×1卷積是為了在Dense Block結束后減少其特征圖的通道數,2×2池化層可以降低特征圖的尺寸。

表1 66種常見農業害蟲種類與圖像樣本量Table 1 66 species of common agricultural pests and image number

圖2 66種農業害蟲圖像Fig.2 Images of 66 agricultural pests

圖3 DenseNet的網絡結構Fig.3 Network architecture of DenseNet

圖4 Dense Block中的非線性轉換結構Fig.4 Nonlinear transformation structure in Dense Block
DenseNet采用密集連接的網絡結構,加強了特征傳播,實現了特征復用,極大減少了參數數量,抑制了過擬合的同時也減輕了梯度消失的影響。這些特點讓DenseNet在參數和計算成本更少的情形下實現比ResNet更優的性能。
本文建立基于 DenseNet121的農業害蟲識別模型。
1.4.2 DenseNet模型的訓練 首先,對DenseNet模型權值參數進行初始化。為了避免數據過擬合和獲得較高魯棒性的模型,利用遷移學習方法,在ImageNet數據集[41]上訓練迭代 31萬次后得到權值文件初始化DenseNet網絡權值。
然后,將DenseNet模型訓練學習參數設定為:采用隨機梯度下降法Stochastic Gradient Descent(SGD),初始學習速率為 0.001,學習速率的衰減策略為multistep,gamma為0.1,沖量為0.9,權重衰減率為0.0005,迭代次數為100 000次。為了加快模型收斂和損失下降,分別在迭代次數為50 000次和80 000次時對學習率進行了更新。訓練輸入圖像大小為224×224像素,損失函數采用softmax,輸出結果為66種農業害蟲。
最后,使用初始化的參數對訓練圖像進行前向傳播操作計算誤差,再使用反向傳播算法調整權值參數,通過不斷的迭代使損失函數收斂到最小值,將此時訓練出的權值參數作為農業害蟲識別模型的最終權值參數。
1.4.3 其他深度學習模型 為了驗證基于 DenseNet的農業害蟲識別模型的有效性,本文選擇了應用較廣泛的 CaffeNet、VGG19、GoogleNet和 ResNet101 4個模型與DenseNet121進行比較。這4個模型初始學習速率均為0.001,迭代次數為100 000,學習策略除了ResNet101采用multistep,其余均采用step,具體細節分別參考文獻[42-45]。5個模型在同一個測試集進行測試,并通過識別率和虛警率來評價某類害蟲的識別情況。

1.4.4 模型運行環境 本文所有模型是在裝有Caffe深度學習框架下,CPU為i5-4590@3.30GHz,GPU為NVIDIA GeForce GTX 1080Ti,主機內存為16.00GB的臺式機上進行訓練和測試。
1.5.1 Android客戶端的開發 在Windows 7平臺搭建Android集成開發環境(Android Studio IDE),用于安卓平臺應用程序的開發。使用Okhttp網絡傳輸框架與服務器進行數據交換,下載第三方 jar開發包,放置在lib目錄下,同步之后解析為so文件,然后進行第三方api的調用。
1.5.2 農業害蟲智能識別系統的APP設計與實現APP的UI界面采用底部導航欄樣式。APP界面中包括用戶登錄模塊、害蟲信息查詢模塊、害蟲智能識別模塊、害蟲地圖記錄模塊和害蟲專家鑒定模塊。
用戶登錄模塊通過發送post請求并攜帶用戶名,密碼等信息參數訪問服務器,服務器接受請求后返回回調信息onSuccess()/onFailure(),顯示登錄成功/失敗狀態。
害蟲信息查詢模塊使用ViewPager組件切換不同的View界面,使用SearchView控件和ListView控件相結合的方式編寫實現害蟲介紹界面,通過 Filter實現害蟲界面的搜索功能。
害蟲智能識別模塊中提供了相機拍照和圖庫選擇2種圖像獲取方式,采用HTTP協議進行手機與服務器的信息交互,服務器端接收到圖像后調用害蟲識別模型進行識別,最后將識別結果按Json數據格式反饋回客戶端。
害蟲地圖記錄模塊利用百度的Android地圖SDK接口,通過GPS定位功能獲取到設備當前位置,服務器會將附近的害蟲信息以Json數據格式返回,客戶端解析后結合 Glide圖像加載庫在地圖上顯示識別過的害蟲分布地點和距離。
害蟲專家鑒定模塊主要利用MySQL數據庫,只有身份信息為“專家”的用戶才可進行害蟲的鑒定。服務器會將用戶不滿意的識別記錄存儲至MySQL數據庫中,專家用戶可對記錄的識別圖片所屬種類進行鑒定,鑒定結果將反饋給用戶。
1.5.3 服務器端識別模型的部署 將農業害蟲識別模型的程序打包部署在阿里云遠程服務器上,同時添加了模型訓練過程中的均值文件、權值文件和標簽文件,將調用模型和輸出識別結果的程序編譯成 dll動態鏈接庫。當服務器端接收到移動端傳輸的害蟲圖像時,運行 dll動態鏈接庫文件,調用害蟲識別模型對上傳的圖像進行識別,服務器將識別結果反饋給客戶端的同時將上傳的圖像和識別結果保存在數據庫中,便于未來對害蟲圖像的追溯。
2.1.1 損失曲線分析 迭代次數是訓練CNN模型的主要參數之一,將迭代過程中的損失值繪制成損失曲線,用來評估訓練過程中模型的學習狀態。圖5給出了5種CNN模型訓練時的損失曲線。從圖中可以看出,隨著迭代次數的增加,5種模型的損失曲線均逐漸下降;在迭代到8萬次時,曲線波動較小,表明模型趨于收斂。DenseNet121的損失曲線相比于其他模型的曲線波動更小,損失值更小,訓練損失更穩定,模型學習情況與收斂情況良好。
2.1.2 特征圖可視化 卷積神經網絡具有自動提取特征的能力,特別是淺層網絡具有提取更多的特征和關鍵特征的能力。為了觀察模型在前向傳播過程中卷積層的響應結果,使用反卷積的方法可以將各層提取的特征可視化。圖6-(a)為2種害蟲的原圖,圖6-(b)為第一個卷積層獲得的可視化特征圖,圖6-(c)為第一個池化層的可視化特征圖。從圖中可以看出在復雜背景下,害蟲的輪廓特征被提取出來了。

圖5 5種CNN模型的損失曲線Fig.5 Loss curves of five CNN models

圖6 害蟲特征圖可視化Fig.6 Visualization of pest feature map
2.1.3 識別結果與分析 如果以相似度第 1作為識別結果,5種CNN模型在測試集上的識別率和虛警率見表2。從表2中可以看出,5種CNN模型均獲得了超過85%的識別率,特別是DenseNet121模型獲得了最高的識別率,為 93.9%,表明利用卷積神經網絡可以實現自然環境下多類農業害蟲的自動識別,具有較高的識別率。
從平均虛警率來看,相比其他模型,DenseNet121獲得了最低的虛警率,說明了DenseNet121模型在測試圖片中對害蟲種類誤判較少,識別效果較為出色。最終選擇DenseNet121作為農業害蟲的識別模型。
圖7給出了DenseNet121模型在訓練過程中的準確率曲線,從圖中可以看出,在訓練過程中準確率曲線穩步上升,在迭代80 000次后準確率曲線逐漸趨于平穩,本文選取了迭代100 000次時的模型。
在誤判的害蟲中,主要是外形相似的害蟲容易被誤判。圖8給出了部分外觀相似的害蟲之間出現誤判的圖例。圖8-(a,b,c)害蟲分別被誤判為圖8-(d,e,f)的害蟲。

圖7 DenseNet121準確率曲線Fig.7 Densenet121 accuracy curve

圖8 部分誤判的害蟲圖像Fig.8 Some images from misidentified pests

表2 不同CNN模型對66種農業害蟲的識別結果Table 2 Identification results of 66 species of agricultural pests by different CNN models
圖8-(a)的東亞飛蝗被誤判為圖8-(d)的中華稻蝗,2種害蟲同屬蝗亞目,體型、外觀較為接近,頭部以及腿部都極為相似。圖 8-(b)隱紋谷弄蝶被誤判為直紋稻弄蝶,這2種害蟲外形相似,主要靠前翅上的白色斑點進行區分,隱紋谷弄蝶前翅和后翅上共有8個半透明的白斑,排成不整齊環狀,而直紋稻弄蝶后翅中間具4個白色透明斑,呈直線或近直線排列。圖8-(c)大螟被誤判為勞氏粘蟲,2種害蟲同屬夜蛾科,外形極為相似,大螟前翅中間具小黑點4個排成四角形,勞氏粘蟲前翅從基部中央到翅長約 2/3處有一暗黑色帶狀紋,中室下角有一明顯的小白斑。對于這些外形相似的害蟲,需要更多的訓練樣本來降低虛警率。
移動終端APP可以安裝在具有Android系統的手機或Pad上。圖9顯示了手機移動終端APP界面截圖,包括用戶登錄、害蟲信息查詢、害蟲圖像采集、害蟲識別結果、害蟲地圖記錄和害蟲專家診斷界面。

圖9 基于安卓手機移動終端的農業害蟲識別APP的界面Fig.9 APP interface of agricultural pest identification based on Android mobile phone
用戶打開害蟲智能識別系統APP,顯示用戶登錄界面圖9-(a),新用戶需要點擊下方的注冊賬號進行注冊。用戶分為普通用戶和專家,當用戶注冊專家時,需要經過后臺管理人員進行審核,審核通過后,方可行使專家鑒定的權利。注冊專家一般為有經驗的基層植保人員、農業害蟲研究人員或昆蟲分類學家。當普通用戶登錄后將進入圖 9-(b)的界面,顯示用戶采集害蟲圖像的地理位置,點擊相機,進入害蟲圖像采集界面9-(c),可以利用相機拍攝或打開相冊選取某幅圖像,將圖像上傳至服務器端,服務器端的害蟲識別模型運行并將識別結果與待識別圖像中害蟲的相似度從高到低前 5種害蟲依次顯示在移動終端的屏幕上,識別界面如圖9-(d)。圖9-(e)為害蟲信息查詢界面,用戶可通過左側滑動條查看農業害蟲的相關信息,或者使用關鍵字查找的方式找到想要了解的害蟲。圖9-(f)為害蟲詳細信息,主要包括害蟲的形態特征、發生地區分布、生物防治和藥劑防治等。若用戶對智能識別結果有異議,可以請求專家進行鑒定。用戶為專家時,可進入鑒定界面對用戶提交的圖像進行鑒定,如圖9-(g)。圖9-(h)顯示了用戶使用該系統APP識別害蟲的歷史。
當用戶將一張待識別的害蟲圖像發送到服務器,服務器調用害蟲識別模型并反饋結果,所需要花費的時間約為1—2 s,可以滿足用戶的實時需求。
深度學習方法和智能移動工具為田間農業害蟲的實時智能識別提供了很好的技術和載體。眾所周知,大量的訓練樣本是獲得高魯棒性和強泛化能力的卷積神經網絡模型的前提。本文在部分害蟲的訓練樣本量不足的前提下,通過圖像增強的方法來提高模型的識別能力。后續通過本系統的推廣和應用,利用用戶上傳的害蟲圖像收集更多的訓練樣本,增加模型的魯棒性和泛化能力。
本文識別的農業害蟲種類數為66種,雖然比已有的文獻中識別種類更多,但實際上田間的害蟲種類遠遠超過此數。要收集每種害蟲多幅圖像則需要更多農業昆蟲愛好者或研究者或相關組織發動大家一起完成。
本文通過不同CNN模型比較,獲得基于DenseNet模型的農業害蟲的平均識別率最高,以相似度第1作為識別結果,則該模型識別率達到 93.9%,如果以相似度前3作為識別結果,則該模型識別率達到96.8%。未來可以通過訓練樣本的積累,進一步增加農業害蟲的識別種類,提高農業害蟲的識別率和識別模型的泛化能力。
通過廣大用戶使用該系統APP,實現了害蟲發生地的定位,這有利于農業害蟲測報人員發現不同害蟲發生的時間、地點和范圍等信息,便于做出更合理的防治策略。
面向移動終端的農業害蟲智能識別系統包括安卓客戶端APP、服務器和基于DenseNet121農業害蟲識別模型。該系統APP包含農業害蟲圖像智能識別、害蟲生物與防治信息查詢、專家鑒定和害蟲發生點的定位等功能。用戶在農田遇到不認識的害蟲時,可通過該系統APP拍攝害蟲圖像,并上傳到服務器,識別結果在1—2 s內反饋到用戶移動終端的屏幕上,對識別結果不滿意還可提請專家進行鑒定。該系統對66種常見農業害蟲的識別率為93.9%,虛警率為8.2%。
面向移動終端的農業害蟲智能識別系統為廣大農戶和基層植保人員提供了一個快捷的害蟲智能識別工具,實現了農戶“一對一”的防治指導,輔助基層測報人員識別田間害蟲種類,通過專家遠程鑒定,大大節約經濟和時間的成本。