陶 治 孔建磊,2 金學波,2 白玉廷,2 蘇婷立,2
1(北京工商大學計算機與信息工程學院 北京 100048)2(北京工商大學食品安全大數據技術北京市重點實驗室 北京 100048)
據中國統計年鑒,2016年我國農業生產總值達5.93萬億元,占GDP的8%;但由農業病害等災害造成的直接損失達0.503萬億元,占農業生產總值的8.48%,其中,病蟲害是農作物最大的威脅[1]。隨著物聯網與圖像識別技術的快速發展,將圖像識別技術應用于農業相關領域尤其是病蟲害的識別是相關領域的研究熱點,如將圖像識別技術應用在椪柑病蟲害[2]、番茄葉部病害[3]、蘋果病蟲害[4-5]等。此外,隨著智能終端的快速發展,將相關圖像識別技術應用到手機等終端上,可以有效、便捷地解決農業生產中的問題[6-7];本研究利用目前計算機視覺中高效的圖像識別技術,設計了基于Android的農作物病蟲害圖像識別App系統,以期能為相關領域研究提供參考。
農作物一旦發生病害或蟲害,若初期或關鍵時期沒有發現,或者識別錯誤,將導致不當的處理措施以至于造成作物產量下降,甚至形成作物的糧食安全問題。因此,對于作物的病蟲害實現精確的識別是農業工程中十分實際的問題。而隨著智能手機的廣泛普及,農戶人員或者相關病蟲害研究人員使用手機軟件隨手拍攝圖片,通過系統軟件進行快速高效的識別,是指導農業病蟲害研究預防的有效手段。
整體系統功能分為三個部分,分別是用戶功能、管理員功能以及科研人員功能,如圖1所示。

圖1 功能劃分示意圖
對于不同的用戶,對其功能權限進行了劃分。在用戶層面,用戶可以實時對上傳的病蟲害圖像進行識別以及當地天氣查詢等功能;在管理員層面上,管理員還可以進行更多樣本的收集標注以及訓練模型、數據篩選等權限操作;此外,對于研究人員,支持其進行數據查詢、數據下載分析等研究功能。
如圖2所示,系統共采集、收集了來自蘋果、櫻桃、玉米、葡萄、柑桔、桃、辣椒、馬鈴薯等多個對象的病害與蟲害圖片,病蟲害種類共計181類,各類數量達到400幅及以上,單幅照片至少含有1個目標樣本,同時,為保證各類病蟲害總體樣本數據相近,各類之間相差不超過50個樣本,確保分布平衡。

圖2 病蟲害數據集樣本
數據準備與預處理的優劣程度,對模型最大準確率有直接的影響,數據分布不均、噪聲過大、各類別樣本不均衡等因素,均會造成模型難以收斂或產生虛假訓練結果,影響模型性能。因此將合格照片進行處理,并統一批量重命名為規定格式,以采集時間、采集數量、采集種類進行編碼,自動形成統一命名的批量數據后,本研究進行了一系列去除模糊、抖動、曝光過度圖片的預處理操作以及數據增強的手段,如隨機旋轉角度(設置為60°)、水平偏移(幅度選為0.2)、垂直偏移(幅度選為0.2)、重縮放(縮放因子選為1/255)、垂直水平180°翻轉等。
在上述處理以及增強操作的基礎上,開展每張照片的標定工作,對每幅照片存在的多種害蟲分別進行標注及定位,以下述標注原則進行標注:
(1) 當圖片包含多個對象時,標記出每個目標。
(2) 當圖片中有兩個重疊的目標對象時,應在可見部分周圍用方框畫出被遮擋的部分并以規定編碼形式進行存儲,每幅照片對應一個標注文件,形成用于本系統識別及檢測模型的病蟲害基礎訓練數據庫。

圖3 圖片標注示例
識別模型的設計分為兩個主要方面:訓練過程和識別過程。模型訓練過程通過大量的有標記樣本進行監督學習,讓模型能夠學習到特定的語義特征,通過不斷地前向傳播與反向傳播,進行迭代訓練,逐漸提高模型識別精度與準確性。模型識別只有前向傳播過程,利用訓練過程中所學習到的參數,對輸入圖片進行卷積運算,經過特定的計算方式輸出識別結果和置信度。
識別過程中,其基礎的是圖像分類模型,主要用于去除無效圖像和圖像粗略分類,在分類網絡中如VGG16[8]、Resnet[9]、GoogLeNet[10]等都具有不錯的分類效果。由于本研究采用的是yolo檢測模型,其基本的分類網絡采用的是與其他分類網絡具有同等性能的Darknet網絡,其網絡結構如圖4所示。

圖4 Darknet53分類網絡結構
該網絡主要是由一系列的1×1和3×3的卷積層組成,其中每個卷積層后都會跟一個正則化BN層和一個LeakyReLU激活層,共同構成了最小組件。其中,結構圖中resn組件代表含有n個res單元;作為yolo_v3的大組件,通過借鑒了ResNet的殘差結構,res單元結構可以讓網絡結構更深。
在上述darknet53模型上,病蟲害的整體檢測網絡采用yolo_v3[11]檢測網絡,用于識別圖像中病蟲害的位置以及種類,其網絡結構如圖5所示。

圖5 檢測網絡結構
相比較初代的yolo_v1[12]和yolo_v2[13],yolo_v3進一步采用了3個不同尺度的特征圖來進行對象檢測,能夠檢測到多維度特征信息;yolo_v3網絡在三個特征圖中分別通過(4+1+c)·k個大小為1×1的卷積核進行卷積預測,其中k為預設邊界框的個數(k默認取3),c為預測目標的類別數,其中4k個參數負責預測目標邊界框的偏移量,k個參數負責預測目標邊界框內包含目標的概率,ck個參數負責預測該k個預設邊界框對應c個目標類別的概率。
與此同時,為了提升病蟲害目標檢測準確率,本研究使用的提升方法:
(1) 批量正則化(Batch Normalization)[14]:對網絡的每個卷積層之后添加批量標準化,有助于對模型進行規范化,并且在優化中途退出后仍然不用擔心過系統出現擬合問題,提升整個識別算法穩定性。
(2) 維度聚類(dimension cluster):K-means聚類是聚類算法中最為簡單、高效的,核心思想是由用戶指定k個初始質心(initial centroids)以作為聚類的類別(cluster),重復迭代直至算法收斂。通過采用K-means[15]聚類方法訓練邊界框,可以自動找到較好的框的寬高維度。
(3) 遷移學習(transfer learning):為了獲得一個泛化能力強、精度高的模型,本研究使用遷移學習的思路,將在imagenet數據庫預訓練好的模型遷移過來,在此遷移基礎上實現模型的高效運行。
基于上述的算法模型,隨機挑選收集數據的65%作為訓練集,挑選20%作為驗證集,15%為綜合測試集,將數據集擴展為五個訓練批次和一個測試批次,每個批次有400幅圖像。測試批次包含來自每個類別的隨機選擇的圖像。在具有四個NVIDIA Tesla p40 GPU和256 GB RAM的Intel Core i7 3.6 GHz處理器上進行了訓練和測試,為了比較模型之間的性能差異,本研究對多個檢測模型進行了實驗比較,結果如表1所示。

表1 實驗檢測結果檢測框架
正如結果所示,以Darknrt-53為特征提取器的yolo-v3具有更高精度的檢測結果,以此為模型實現的病蟲害識別系統具有較高的精度效果。
系統采用C/S(App)技術架構,搭建數據服務、移動終端服務等。其中,在物理架構上,使用ubuntu16.04的操作系統以及MySQL數據庫系統,在intel E5-2600及以上的CPU、NVIDIA GTX1080Ti及以上的GPU上搭建Android4.0的移動終端。具體開發工具分為App開發工具與模型開發工具,其中App開發工具包括Ubuntu 16.4、MySQL 5.6.37、go1.8.linux-amd64、Vs code、Android studio、Navicat、jdk-8u101-linux-x64,模型開發工具包括Anacoda2、Tensorflow-GPU-1.4、Cuda 8.0、CUDNN 6.0、Pytorch 0.4、Pycharm 3、Jupyter 2.9、TensorBoard、LabelImg。
在上述開發工具與基本架構的基礎上設計本系統的整體架構如圖6所示。

圖6 系統架構
經過需求分析、系統設計、軟件實現、測試與試運行、功能調整等過程,最終病蟲害識別系統實現了如下功能:(1) 實時天氣查看;(2) 注冊登錄,包括管理員和普通用戶;(3) 病蟲害實時動態識別;(4) 管理員標記目標;(5) 根據標記數據自主學習;(6) 在地圖上顯示病蟲害查詢位置;(7) 自動收集所有數據和信息,為后續大數據分析提供數據來源。
系統有普通用戶和管理員兩個級別的使用權限,用戶輸入用戶名、密碼及權限等級進行登錄。新用戶則可以點擊右上角的“注冊”按鈕,進入賬號注冊界面,完成新用戶注冊,見圖7。

圖7 App注冊界面
普通用戶登錄賬號后,進入主界面,如圖8所示。主界面頂部具備用戶所在地址、天氣實時等信息,中間區域則滾動呈現用戶歷史圖像及相應識別結果。

圖8 App主界面與數據上傳界面
用戶從相冊或拍照獲得需要檢測的圖片后,進入數據上傳界面,該界面會根據用戶網絡狀態、傳輸速率進行呈現。
在完成數據傳輸后,進入“識別效果反饋界面”,如圖9所示。該界面會根據獲取圖像的識別情況進行智能化反饋:(1) 當上傳圖像中不存在病蟲害或尺寸過小、被遮擋等情況,又或出現網絡中斷、傳輸終止等狀況,以及上傳圖像質量差、抖動模糊、徑切向畸變、拍攝環境過亮或過暗等情況,識別系統會反饋給用戶的“無法識別”提示,并告知查看“幫助說明”,建議“重新拍照”。(2) 當圖像中存在目標對象,且網絡傳輸正常、上傳圖像質量優良,則根據模型算法給出相應的識別效果,提示用戶“識別到病害蟲”,并在圖像中框出害蟲所在位置,說明其種類、數量、辨識等信息,給出相應防控建議。

圖9 數據標注界面
用戶為管理員登錄賬號后,在主界面點擊“相冊”或“拍照”按鈕后,進入管理員專用的“標注操作界面”,底部的“選擇”按鈕對應普通用戶的上傳識別功能,點擊則進入“識別效果反饋界面”。在此基礎上,管理員多出“圖像標注”和“數據上傳”按鈕,可以實現完成標記并上傳病蟲害數據的功能。
本系統針對病蟲害對象,基于Android開發建設專用作物的病蟲害識別系統,采用主動采集與網絡數據抓取方式,經過智能篩選及異構數據融合等技術手段,實現數據有效獲取并保證其真實可靠。實現病蟲害識別、病蟲害情況上報、病蟲害預警等功能,為科研機構、政府、企業、農用品經銷商以及消費者提供決策支持和信息服務。受限于樣本與技術,針對算法模型的進一步優化升級,提升識別檢測準確度,將應用范圍進一步擴大是未來工作的研究方向。