郭陽, 許貝貝, 陳桂鵬, 丁建, 嚴志雁, 梁華, 吳昌華*
(1.江西省農業科學院農業經濟與信息研究所,江西省農業信息化工程技術研究中心,南昌 330200;2.中國農業科學院農業信息研究所,北京 10086)
水稻是中國主要糧食作物之一,2020年種植面積超過3 000萬hm2,產量超過21 000萬t[1]。生物災害影響水稻高產穩產,每年因害蟲爆發造成我國水稻產業損失超過10%[2]。全國農業技術推廣服務中心預計2021年水稻蟲害將呈偏重發生態勢,發生面積9 520萬 hm2,將對經濟造成巨大損失[3]。高效識別水稻蟲害是做好預測的關鍵,對有效防控水稻蟲害意義重大。傳統的方法是通過人工識別方法調查、監測水稻蟲害,這種方式勞動強度大、效率低,難以滿足生產上防控的需要。
快速準確地識別水稻蟲害對防控意義重大。但復雜真實環境下快速檢測水稻蟲害存在諸多挑戰:葉片對害蟲遮擋、多害蟲之間也會存在遮擋、水稻顏色和害蟲類似難以識別。隨著機器視覺技術發展,國內外學者對蟲害識別算法做了很多研究,利用信息化手段完善水稻蟲害識別預測,對蟲害防控有重要實踐價值[4]。早期學者采用機器學習和經典神經網絡等方法開始農業蟲害識別,主要思路為:建立基于蟲害數據庫,提取顏色、紋理和形狀三大圖像特征,采用典型的機器學習方法支持向量機和K近鄰分類方法、典型的神經網絡方法BP神經網絡進行特征分類,從而實現蟲害識別。周正[5]采用BP神經網絡算法結合紋理、顏色、形狀3種特征識別番茄早疫病、晚疫病和葉霉病等病蟲害,識別速度優于最近鄰域法。王樹文等[6]提出一種基于圖像處理技術的黃瓜葉片病害識別,利用二次分割以及形態學濾波得到病蟲害區域,提取22個特征參數,采用BP神經網絡算法對黃瓜病蟲害識別。胡越浪[7]采用神經網絡BP算法對水稻紋枯病圖像檢測,通過調整不同參數訓練出最優識別效果。傳統的機器學習方法適合小數據樣本訓練,但需要人工提取特征,費時耗力,且病蟲害識別精度取決于特征參數提取,通過少量幾種典型特征實現蟲害識別效果不佳。
近年來,基于卷積神經網絡(convolution neural network,CNN)的深度學習模型在目標檢測任務中取得良好的效果。卷積神經網絡模型方法可以分為兩類:一類是基于區域建議的算法,先生成候選區域,再實現候選區域目標分類,列如R-CNN[8]、Fast R-CNN[9]、Faster R-CNN[10]等模型都屬于該類檢測方法,也稱為二階段檢測算法。二是基于回歸算法,直接完成候選區生成和目標識別,代表有SSD[11]和YOLO(you only look once)[12]等,也稱為一階段檢測算法。這些深度學習模型已經被證明優于傳統機器學習的方法,部分學者嘗試將卷積神經網絡應用于水稻蟲害圖片識別[13-17]。陳國特[18]對飛虱蟲的識別做了針對性研究,構建了基于CNN的四層檢測識別算法,測試了超過2萬多幅樣本圖像。梁萬杰等[19]提出一種卷積神經網絡的方法識別水稻二化螟蟲,基于Torch框架加快CNN的訓練速度。雖然CNN識別率高,但CNN的參數量多,導致訓練CNN需要大量的樣本,訓練時間太長。R-CNN算法將輸入圖像劃分為多個不同種類的候選區,利用CNN提取特征向量,通過SVM實現特征向量分類,提高了目標檢測效率。蘇鴻等[20]采用R-CNN模型識別廣西柑橘病蟲害,識別效果高于傳統機器學習算法(SVM),R-CNN通過Selective Search算法篩選出2 000個左右的候選區域,解決了CNN無法基于卷積特征實現滑動窗口,但R-CNN候選區域多且尺寸不一致,導致訓練速度慢。為解決候選區域多且尺寸不一致導致的訓練速度慢問題,許多研究者提出了改進方法以加快檢測速度。Girshick[9]通過R-CNN結合SPP-Net,提出Fast R-CNN算法,減少檢測過程時間,提升檢測速度,解決了尋找候選區域的問題,并且通過神經網絡直接獲取候選區域。魏楊等[21]使用Fast R-CNN模型對農業害蟲進行識別,結合區域提取網絡,對農業害蟲進行訓練和測試,但是識別精度和速度都有待提高。姜敏等[22]采用深度學習方法對水稻病蟲害進行識別,對比SSD模型,Faster-RCNN模型識別精度更高。李衡霞等[23]改進一種深度學習油菜蟲害識別方法,利用VGG-16網絡模型提取圖像特征,RPN算法搜索到候選區域提取蟲害目標的候選框,完成害蟲目標定位和識別。R-CNN系列算法生成候選區域和回歸分類兩個階段,稱為二階段檢測算法,雖然算法改進提高了檢測的速度和精度,但無法滿足現實時、實場景的需求。
基于回歸的算法首先需要根據特征提取生成感興趣區域,然后對每個區域進行分類,直接實現區域生成和預測目標分類,是一個端到端的過程。SSD與YOLO算法最大的區別是SSD采用卷積核直接進行檢測。SSD使用多個卷積層的輸出預測,實現各個卷積層回歸和分類。俞佩仕[24]改進一種SSD算法,采用ResNet50替換VGG16網絡完成水稻紋枯病病斑識別。李善軍等[25]提出一種改進SSD對柑橘進行檢測,以ResNet18作為特征提取網絡比原SSD模型精度更高,速度更快。佘顥等[26]采用FPN模型替換SSD網絡模型,改進算法提高了對小目標的識別效率,比Faster R-CNN算法、SSD算法識別效果好,且訓練耗時也最少。SSD在識別速度和精度上取得了不錯的效果,但是對于田間復雜情況如遮擋目標、背景類似等情況下識別效果并不理想。
YOLO系列屬于一階段檢測算法,YOLO由Redmon等[12]提出,直接實現區域生成和預測目標分類,預測時特征圖以網格的方式進行劃分,使檢測速度大大提高;針對YOLOv1算法定位不夠精確、檢測精度低等缺點,他們又提出YOLOv2算法[27],采用Darknet-19模型,利用高分辨率訓練分類網絡,提高目標識別精度,然而每個單元格只負責預測一個目標,對于小目標、遮擋目標識別效果不好。YOLOv3算法[28]采用Darknet-53網絡,引入多尺度融合,提高檢測精度高,滿足復雜環境下小目標、遮擋目標、背景類似等情況下識別。王文周[29]提出一種改進YOLOv3水稻蟲害識別方法,通過增加檢測尺寸數量,優化邊框選擇來提高對小目標水稻病蟲害提取速度和準確率,改進的算法在水田復雜環境下提高了識別效果。武星等[30]提出一種輕量化的YOLOv3蘋果檢測方法,采用隨機梯度下降和自適應矩估計優化YOLOv3模型,提高了蘋果檢測速度和準確率。劉芳等[31]提出一種改進的YOLO模型實現番茄圖像檢測,采用darknet-20主干網絡,融合多尺度檢測模型,提高番茄圖像的檢測精度,同時加快了檢測時間。呂石磊等[32]提出一種YOLO-LITE輕量級神經網絡模型對柑橘進行識別,采用MobileNet-v2主干網絡,對柑橘識別加快柑橘識別速度。劉君等[33]提出一種YOLO的番茄病蟲害識別算法,對8種番茄病蟲害圖片進行識別,識別精度高,檢測速度快。
隨著農情檢測對實時性與精確性要求的提出,R-CNN系列、SSD檢測模型難以滿足要求,YOLOv3滿足復雜環境下小目標、遮擋目標、背景類似等情況下識別,廣泛應用于農業各個領域。為此,本文采用YOLOv3模型直接預測水稻蟲害位置及類別,提高目標檢測速度;引入Darknet-53網絡和多尺度融合,對小目標、遮擋目標檢測效果好,實現水稻蟲害實時精準識別。
從1.8萬張水稻蟲害圖片(由安徽省農業科學院農業經濟與信息研究所提供)選取蟲害紅袖蠟蟬(DiostrombupolitusUhler)、稻綠蝽(Nezaraviridula)、稻螟蛉(NarangaaenescensMoore)、點蜂緣蝽(Riptortuspedestris)、大螟(Sesamiainferens)5種共2 500張圖片,按照VOC2007格式創建數據集,圖片格式統一命名,對所有圖片格式化為512像素×512像素。使用LabelImg軟件標注目標位置和類別,生成XML類型的標注文件。按照1∶4的比例隨機選取500個樣本作為測試集,剩下2 000張圖片按照9∶1比例劃分為訓練集和驗證集。訓練集完成模型參數訓練,在驗證集上來確定網絡結構以及模型參數,測試集檢驗最終選擇最優的模型的性能,并對實驗結果進行對比。
YOLOv3網絡結構如圖1所示,特征提取由Darknet-53網絡和多尺度融合來完成。Darknet-53網絡有53個卷積層,采用ResNet的殘差結構(residual)[34],使得模型容易優化且網絡結構更深。YOLOv3卷積層負責輸出檢測結果,包含目標的中心坐標、邊界框寬高、置信度、類別。輸入一張蟲害圖片,經過卷積層多層運算后輸出52×52、26×26、13×13尺度(尺度1、尺度2、尺度3)的特征圖片。為了包含更多的特征信息,26×26特征圖通過2倍上采樣,與主干網絡8倍下采樣得到的52×52特征圖進行融合,13×13特征圖通過2倍上采樣,與主干網絡16倍下采樣得到的26×26特征圖進行融合,實現深層特征和淺層特征尺度融合,提升小目標檢測精度。針對上述過程中生成的3個尺度特征圖,通過YOLO卷積層生成含有水稻蟲害預測框中心坐標、邊界框寬高4個位置信息,1個置信度和5個類別的特征圖,從而得到水稻蟲害的預測框和蟲害類別。采用3個尺度檢測,在不同分辨率進行預測,能夠更好地提取出小目標、遮擋目標、相似背景等水稻蟲害特征,從而提高了檢測精度。
圖1 YOLOv3網絡結構
損失函數用于描述蟲害圖像預測框與真實框的誤差,定義為邊界框中心坐標損失Lossxy、邊界框寬高損失Losswh、有無目標IOU損失Lossconf和類別損失Losscls,計算公式如下。
Loss=Lossxy+Losswh+Lossconf+Losscls
(1)
中心坐標損失Lossxy表示邊框的中心點坐標(x,y),使用均方誤差損失函數預測。
(2)
寬高損失Losswh表示對邊界框的寬w和高h損失,使用均方誤差損失函數預測。
(3)
置信度損失Lossconf表示使用交叉熵損失函數對水稻蟲害對象的邊框的置信度進行預測。
(4)
類別損失Losscls表示使用交叉熵損失函數對水稻蟲害對象的類別進行預測。
(5)
公式(1)表示單個尺度上的損失函數,本文采用的YOVOv3模型是在3個尺度上實現蟲害預測,最終的損失函數值為3個尺度計算的損失值之和,如公式(6)所示。
Loss=Loss13×13+Loss26×26+Loss52×52
(6)
式中,Loss13×13、Loss26×26、Loss52×52分別表示輸出13×13尺度、26×26尺度、52×52尺度計算到的損失值。
本研究硬件環境配置為Intel至強Xeon4114處理器,NVIDIA GeForce GTX 1080Ti顯卡的GPU圖像工作站,軟件環境為Window10系統,搭建深度學習tensorflow1.8框架及keras2.24框架,安裝了并行計算框架Cuda 10.0、cuDNNv7.4。
處理完訓練數據后,將訓練數據輸入到YOLO模型進行微調。訓練采用隨機梯度下降法[35],設置批大小(batch_size)為8,初始學習率(lr)設置為 0.001,學習率調度器為階層性下降,每次減少學習率的因子(factor)值為0.5,設置訓練100個大循環(epoch),每隔1代保存一次模型權重文件,每代迭代225次,一共迭代12.6萬次,訓練時長2 h 24 min,卷積神經網絡訓練過程如圖2所示。
圖2 卷積神經網絡訓練過程
本文使用機器視覺中常用的評價指標準確率(precision,P)、召回率(recall,R)、平均準確率(average precision,AP)、五類水稻蟲害平均準確率的均值(mean average precision,mAP)來評估訓練出來Faster-RCNN、SSD、YOLOv3模型檢測精度。
(7)
(8)
式中,TP表示成功檢測到的水稻蟲害圖片數量,FP表示檢測錯誤的蟲害圖片數量,FN表示沒有檢測到的蟲害圖片數量。
F1系數是基于準確率和召回率調和平均定義的,綜合考慮準確率和召回率。
(9)
以準確率為縱坐標,召回率為橫坐標,繪制出準確率-召回率曲線(RP曲線),AP是對該曲線積分所得,表示RP曲線面積,用來衡量在某類水稻蟲害性能的優劣,AP值越高,模型性能越好。mAP表示5類蟲害AP的平均值,用來衡量多目標模型在5類水稻蟲害上綜合性能。
(10)
(11)
式中,N為蟲害類別的數量,k為閾值,AP(k)為檢測到第k類蟲害的AP值。模型檢測一幅圖片中蟲害所耗費的平均時間作為速度評估指標,單位為ms。
2.1.1迭代次數分析 訓練完成后,從log文件中讀取每次迭代對應的損失值,并繪制損失值迭代次數曲線,結果如圖3所示。由圖3可以看出,損失值在前20 000次迭代過程中迅速減小直到穩定,后面迭代過程中損失值在小范圍內震蕩。
圖3 損失與迭代次數曲線
2.1.2評價指標分析 根據日志文件繪制訓練過程中評價指標的訓練代數變化曲線,如圖4所示。在0~45代訓練過程中,F1系數、召回率、準確率、mAP值震蕩比較大,但總體趨勢一直增長;由于第二階段學習率等參數設置不同,各項指標在50次時變小,但在51~76代訓練過程中總體趨勢是平穩增長,且在一定范圍內震蕩。紅袖蠟蟬、稻綠蝽、稻螟蛉、點蜂緣蝽、大螟的F1最大值分別是97%、90%、83%、95%、95%,對應第61代、第68代、第76代、第70代、第63代。mAP最大值為92.06%,對應第73代。選擇F1和mAP對訓練結果進行評價,最終選擇第76代作為最終的訓練網絡權重文件,具有較高的F1值、mAP值,以及較高的召回率和準確率。
圖4 各項指標訓練變化曲線
用訓練模型對測試集中的500張圖片進行測試,結果如表1所示。與Faster R-CNN、SSD算法相比,YOLOv3模型中都表現出理想的檢測效果,對水稻5類蟲害F1系數、召回率、精準率均大于83%、79.37%和87.20%。首先,五類害蟲準確率YOLOv3模型均高于其他兩種算法,準確率均值為93.87%,高于Faster R-CNN的75.74%和SSD的90.52%,且對紅袖蠟蟬類準確率最高達到99.54%,這是由于借鑒ResNet的殘差結構(residual),采用多尺度特征實現5類水稻蟲害進行檢測,提高水稻蟲害分類的精度。其次,在召回率方面,雖然平均召回率低于Faster R-CNN模型2.18個百分點,但在比較難識別的稻綠蝽、稻螟蛉等水稻蟲害,YOLOv3分別高于SSD算法14.88%、22.8%,保持79%以上的召回率。第三,在F1系數方面,YOLOv3算法均值分別高于Faster R-CNN模型和SSD模型9個百分點、6個百分點,這是由于F1系數受到水稻蟲害訓練數量影響,在相同訓練集下,訓練圖片包含水稻蟲害數量越多,F1系數也越大。YOLOv3算法針對不同大小物體,輸出不同大小的3類特征圖,對多目標檢測效果好,提高了檢測F1系數。
表1 不同算法對水稻蟲害識別結果
由表2可知,Faster R-CNN處理速度達到1.10幅·s-1,SSD達到12.77幅·s-1,本文算法達到13.26幅·s-1。所以針對數據規模不多的情況,Faster R-CNN能完全勝任目標的實時檢測,而本文算法不僅檢測精度高于前兩種算法,檢測速度也是最快,能大規模實時檢測水稻蟲害數據。
表2 各算法對各類蟲害的檢測速度
從500張水稻蟲害測試數據集選擇5類具有代表性的圖片,分別為小目標、多目標、背景類似目標、遮擋目標、幼蟲圖像,如圖5~9所示,分別采用Faster R-CNN、SSD、YOLOv3算法進行測試。從圖5可以看出,對于小目標圖像,3種算法檢測精確度分別為99%、99%、100%,其中YOLOv3算法精度最高,能夠準確檢測出紅袖蠟蟬,并且邊界矩形框位置非常準確。對于包含不同大小的多目標圖片(圖6),3種算法對小尺寸稻綠蝽的識別精確度分別為91%、84%、94%,YOLOv3仍具有較高的準確率。從圖7可以看出,因為稻螟蛉與水稻葉片顏色相似,稻螟蛉容易被漏檢,3種算法對該類蟲害檢測精確度分別為98%、73%、100%,YOLOv3算法仍然準確檢測出稻螟蛉。圖8中,Faster R-CNN算法雖然測出遮擋的點蜂緣蝽目標,但檢測精確度最低僅為86%,也存在錯檢。SSD算法雖然成功檢測出遮擋的點蜂緣蝽,但是精確度為90%,低于本文采用的YOLOv3算法8個百分點。圖9所示,識別大螟幼蟲時,Faster R-CNN算法檢測精確度最高,但存在錯檢,如誤將水稻莖稈識別成稻螟蛉。而YOLOv3算法成功檢測精確度為98%,檢測精度能滿足蟲害檢測需要同時未發生錯檢。
圖5 紅袖蠟蟬小目標檢測結果
圖6 稻綠蝽多目標檢測結果
圖8 點蜂緣蝽遮擋檢測結果
圖9 大螟幼蟲檢測結果
綜上,基于YOLOv3的水稻蟲害檢測模型對5類水稻蟲害測試圖片表現出較高的精確率,反映了該模型具有較強的泛化能力,同時,對于葉片遮擋目標和相似背景等情況,識別準確率大于98%,表明YOLOv3算法有較好的魯棒性。再者,對于Faster R-CNN檢測速度慢,本文采用的YOLOv3算法平均每幅圖片平均耗時75.41 mm,能夠完成水稻蟲害實時檢測。
本文提出了一種基于YOLOv3的水稻蟲害圖像識別方法,選取紅袖蠟蟬、稻綠蝽、稻螟蛉、點蜂緣蝽、大螟圖片建立數據庫,并基于卷積神經網絡模型對5種水稻蟲害進行分析。采用Faster-RCNN、SSD和YOLOv3算法進行對比試驗,結果表明,在訓練過程中,通過采用梯度下降法優化損失函數值,提升預測框置信度以及蟲害類別識別精度。根據各項指隨訓練次數變化曲線,結合F1系數、召回率、準確率、mAP值,選擇76次迭代綜合性能最優,作為最終的權重文件來預測水稻蟲害數據。通過優化訓練結果,提高水稻蟲害識別精度,有助于提高葉片遮擋目標和相似背景等情況識別效果。
在Faster-RCNN、SSD和YOLOv3算法對比研究中,YOLOv3算法的平均準確率最高,對紅袖蠟蟬、稻綠蝽、稻螟蛉、點蜂緣蝽、大螟5種水稻蟲害的AP分別為97.40%、88.76%、85.74%、92.96%、94.78%, mAP為91.93%。與Faster-RCNN算法相比,YOLOv3算法mAP高1.43個百分點,單張圖像檢測耗時減少833.68 ms;與SSD算法相比,YOLOv3算法mAP高5.56個百分點,單張圖像檢測耗時減少2.90 ms。結果表明,該模型兼顧了識別精度與速度,綜合性能最優。
在選擇五類比較具有代表性的水稻蟲害圖片試驗中,對于葉片遮擋目標和相似背景等情況,YOLOv3算法能夠正確識別,未出現漏檢和錯檢,識別準確率大于98%。而Faster R-CNN算法雖然能夠檢測出遮擋的點蜂緣蝽目標,但是存在錯檢。SSD雖然檢測出稻螟蛉,但由于稻螟蛉與水稻葉片顏色相似,識別效果低于YOLOv3算法27個百分點。將YOLOv3算法引入田間復雜情況下的水稻蟲害識別是可行的,具有較高的平均準確率以及較快的檢測速度,能夠準確識別水稻蟲害,這對于水稻蟲害防治和田間噴藥等方面具有重要意義。本文仍需要從多尺度預測和增加特征提取網絡方面改進算法,進一步提高模型預測精度,滿足自然條件下環境要求苛刻,如陰天或者晚上等光照強度弱等惡劣天氣情況。同時,精簡模型網絡,減少模型網絡權重、計算量,滿足檢測精度的提高識別速度,為后期部署到嵌入式設備中奠定基礎。