肖德琴 黃一桂 張遠琴 劉又夫 林思聰 楊文濤
(華南農業大學數學與信息學院, 廣州 510642)
廣東省四季溫度變化不大、降雨充沛,氣候條件非常適合蔬菜害蟲的生長繁殖,這導致蔬菜在生長過程中極易受到害蟲的危害,蔬菜害蟲的爆發降低了蔬菜產量從而造成巨大的經濟損失[1-2]。對害蟲進行預測是防治害蟲的重要前提。目前,我國蔬菜害蟲預測方法主要利用人工對黃板上的害蟲進行分類和計數,但該方法存在缺乏客觀性、效率低下、誤差大等問題。因此,亟需一種快速、智能的黃板害蟲檢測方法。
近年來,國內外針對農田害蟲圖像檢測算法已經取得顯著成果[3-6]。然而,這些研究均使用傳統圖像檢測算法,存在對圖像環境背景要求較高、擴展性不強、數據預處理復雜以及遷移性低等問題,使農田害蟲圖像檢測算法無法大面積應用。
近年來,由于Fast R-CNN、Faster R-CNN、YOLO和SSD等深度學習算法具有良好的檢測性能,因此應用深度學習算法進行農業害蟲識別逐漸成為研究熱點[7-9]。已有算法[10-13]對害蟲檢測精度都很高,但是這些算法均針對特定群體的害蟲而設計,并未結合體積小、數量多和分布不均勻的特點對黃板誘捕的蔬菜害蟲進行設計。同時,黃板害蟲圖像是像素較大的手機圖像,而上述算法處理的是其他設備拍攝的圖像,難以遷移使用。目前,在農業病害識別系統[14-22]中缺乏關于黃板害蟲檢測的研究,而黃板誘捕害蟲的應用卻非常廣泛。手機是一種可普遍應用的移動智能設備,是需要一種基于黃板誘捕害蟲的便攜式智能識別算法,從而實現利用手機對害蟲進行檢測和識別。
本文在用高清攝像機和傳統圖像處理技術對黃板害蟲研究的基礎上[23],利用現有的深度學習技術[24-27],提出一種基于改進Faster R-CNN[28]的田間黃板害蟲檢測算法(Mobile terminal pest Faster R-CNN,MPF R-CNN),并在移動端中進行測試與應用。
本實驗圖像采集于廣東省廣州市南沙區東升農場,采集設備為小米7手機。攝像頭為1 600萬像素,拍攝距離為35 cm,拍攝角度為0°~10°之間,等效焦距為35 mm。圖像尺寸為3 120像素×4 128像素,圖像存儲格式為JPG,圖像采集時間為2017年6月1日到2017年9月30日,拍攝時間段為08:00—09:00。為了讓實驗更貼近真實的農場環境,所有的圖像都是在自然條件下拍攝的,并且每月1日使用人工對黃板上粘連的害蟲進行清理。本次實驗一共制作了20張黃板,所有黃板的長均為35 cm,寬為25 cm。這20張黃板分別固定在東升農場面積為1.3 hm2的蔬菜種植土地上,如圖1所示。本次實驗一共采集了2 440幅黃板害蟲圖像,其中晴天采集圖像1 708幅,雨天采集圖像732幅。黃板害蟲圖像如圖2所示。
黃板圖像中的主要害蟲種類為3種,分別是小菜蛾、黃曲條跳甲和煙粉虱。因此本次實驗標簽主要分為4類,分別是小菜蛾(YL)、黃曲條跳甲(TJ)、煙粉虱(YL)和其他大型害蟲(OT,體長大于5 mm)。將其他大型害蟲歸為一類的主要目的是探究潛在的害蟲爆發可能性,因為大型害蟲的遷移能力強,在實際生產中容易出現大型害蟲入侵的情況,這樣可以增加算法在實際應用中的抗壓能力。由于黃板圖像中害蟲的樣本數量巨大,發生害蟲黏連導致分不清的情況遠遠低于害蟲處于獨立的情況,并且在實際生產中去掉黏連害蟲的數量對于整體黃板害蟲預警不產生影響,所以本文對害蟲進行標注時只對獨立的害蟲進行標注。使用LabelImg對數據進行標注,標注圖像數量為2 440幅,其中小菜蛾樣本數量為267 435,黃曲條跳甲樣本數量為332 861,煙粉虱樣本數量為938 215,其他大型害蟲樣本數量為100 751。各種害蟲采集樣本如圖3所示。
為了提高MPF R-CNN害蟲檢測算法的準確率和檢測速度,需要對數據集進行處理。由于原始圖像尺寸為3 120像素×4 128像素,遠遠大于正常深度學習訓練圖像。如果直接對該圖像進行訓練會因為圖像縮放而導致圖像特征丟失,也會因為尺寸過大而導致GPU內存溢出,因此需要將原來的圖像裁剪為16份,裁剪后的圖像尺寸為780像素×1 032像素,裁剪后的圖像如圖4a所示。同時,為了讓算法可以更好地識別復雜的自然環境,需要將數據集分成晴天和雨天數據集,然后將裁剪后的圖像根據晴天和雨天數據集分別按照8∶1∶1的比例隨機劃分訓練集、驗證集和測試集。數據集劃分完成后還需要將雨天和晴天對應的訓練集、測試集和驗證集分別進行混合,使訓練集、測試集和驗證集都存在雨天和晴天的數據。最后對訓練集圖像進行順時針90°、180°、270°旋轉,以及水平翻轉和Mosaic增廣。Mosaic增廣的思想來源于CutMix數據增強的方式并在YOLOv4模型中應用。Mosaic的原理是每次隨機選取4幅圖像并且隨機對圖像進行縮放、水平翻轉、垂直翻轉和色域變化后按照一定的比例對4幅圖像進行截取后拼接出新的訓練圖像。因為黃板中存在很多不是檢測目標的害蟲和雜物作為檢測背景,它們會嚴重影響算法檢測的準確率,所以要使用Mosaic增廣豐富檢測物體的背景,這有利于訓練算法對不同害蟲的不同特征之間的權重分配。Mosaic增廣效果如圖4b所示。
Faster R-CNN是目標檢測領域中的經典算法之一。針對誘捕黃板害蟲的識別和計數,本文提出的基于Faster R-CNN改進的MPF R-CNN害蟲檢測算法結構包括特征提取網絡、區域建議網絡(RPN)和檢測網絡3部分,算法結構如圖5所示,其中特征提取網絡使用了ResNet101+FPN網絡對圖像進行卷積提取特征, RPN網絡經過設計后使用了多種不同尺寸的錨點(anchors)對圖像區域進行前景和背景判斷,并進行邊框回歸,檢測網絡則使用ROIAlign方法對害蟲進行檢測和分類。此外,還設計雙損失函數加速算法的收斂速度。
FPN網絡是LIN等[29]在2017年提出的,該網絡通過對特征提取網絡中的每一個相連特征層的特征圖進行疊加連接的方法,解決了小物體特征在多次卷積和池化操作后模糊甚至丟失的情況。因為Faster R-CNN原本的特征提取網絡結構比較單一,難以處理不同害蟲之間的體積、紋理和尸體完整度保留性(不同的害蟲死亡后身體存在不同部分或部位容易出現脫落或者被風吹走情況)等差異問題,而具有多層次特征提取能力的FPN網絡能更好地解決該問題。本文以ResNet101[30]為主干網絡加上FPN網絡設計,該網絡結構如圖6所示,可以分為3個路線:
(1)自底向上的路線:ResNet101網絡自底向上卷積,該過程有{C1,C2,C3,C4,C5}5個卷積層。
(2)自頂向下的路線:在FPN網絡中自頂向下對{M4,M3,M2,M1}特征信息進行上采樣操作,讓低維度的特征信息更加突出。
(3)橫向連接路線:使用1×1的卷積核對ResNet101網絡與FPN網絡的每一層圖像特征進行卷積融合。
ResNet101與FPN網絡融合之后,需使用卷積核進行卷積從而讓混疊效應消失。為了保證高維度特征信息不丟失,以及更加突出低維度特征,必須控制實現高維度的卷積核相對較小,而低維度的卷積核需相對較大,并且低維度卷積核需盡量防止多個目標特征信息融合在一起的情況,因此本文分別使用了2×2、2×2、3×3、3×3、5×5共5個不同卷積核分別對FPN不同維度的特征進行卷積。最后將5種不同尺寸的特征圖像{p1,p2,p3,p4,p5}輸入到RPN網絡,其中p1、p2、p3、p4、p5對應的原圖像像素尺寸為364×524、181×261、89×129、42×64、23×33。
2.2 基于多滑動窗口的MPF R-CNN區域建議網絡設計
區域建議網絡(RPN)是一個全卷積網絡,其過程是對特征圖像使用滑動窗口產生錨點,并對錨點區域進行前景和背景判斷以及邊框回歸。在本實驗中體積最小的害蟲煙粉虱為23像素×25像素到35像素×35像素之間,而體積最大的其他常見大型害蟲在90像素×100像素到130像素×140像素之間。為了產生多種不同維度特征和不同尺寸的錨點以覆蓋不同尺寸的害蟲,本文RPN網絡滑動窗口過程如圖7所示,在RPN網絡中設計了3種不同的滑動窗口:
(1)3×3滑動窗口:對{p1,p2,p3,p4,p5} 5種特征圖進行全卷積,產生 5種尺寸的錨點,這5種錨點對應的尺寸(映射到黃板圖像的尺寸)分別為{30像素×30像素,36像素×36像素,72像素×72像素,96像素×96像素,192像素×192像素}。
(2)5×5滑動窗口:對p1和p2特征圖進行滑動,產生2種錨點,它們尺寸分別為50像素×50像素和60像素×60像素。
(3)1×1的滑動窗口:對p4和p5特征圖進行滑動,產生2種錨點,它們尺寸分別為32像素×32像素和64像素×64像素。
同時每種錨點都使用3種長寬比例{1∶1,1∶2,2∶1},因此一共有21種不同比例的錨點產生特征框,對害蟲圖像中的目標進行前景和背景判斷。雖然對p1特征圖使用3×3滑動窗口產生尺寸為30像素×30像素的錨點和對p5特征圖使用1×1滑動窗口產生32像素×32像素的錨點之間相差不大,但是它們對應的特征維度不一樣導致它們對目標檢測的判斷參數也不一樣,因此本文RPN網絡可以針對不同尺寸的害蟲有不同尺寸和不同維度的錨點進行對應。
在檢測區域中,需要對特征圖進行一定比例的特征映射操作。ROIPooling是Faster R-CNN原本的特征映射方法,如果使用該方法進行特征映射,就難以避免會出現因取整操作造成如圖8所示的特征偏差,這對黃板害蟲檢測影響非常大。因為害蟲體積小,所對應的特征像素少,一旦發生特征偏差就容易出現重要特征像素消失的情況。為了解決該問題,在MPF R-CNN中使用ROIAlign[31]代替ROIPooling。
ROIAlign特征映射過程如圖8所示,其主要步驟為:
(1)先遍歷每一個特征建議區域并保持浮點數邊界不做量化。
(2)進一步根據候選區域分割成K×K的不作量化的單元。為了適應特征提取網絡產生的不同尺寸的特征圖,本算法K的計算公式為
(1)
式中l——輸入圖像長
w——輸入圖像寬
c——特征圖像建議區域產生過程中錨點所對應的正方形的原圖像的邊值(如,使用1×1的滑動窗口對p4特征圖進行滑動產生32像素×32像素的錨點,c便為32)
(3)對每個單元使用雙線性插值法將該單元分成4個具有浮點值的像素點。
(4)對每個單元進行最大池化操作,將4個浮點數合并成為一個浮點數。
本文使用ROIAlign在對特征圖進行映射時使用了雙線性插值法和浮點運算,這樣 ROIAlign特征映射的結果不會出現ROIPooling特征偏差的情況,因此更符合黃板害蟲的檢測需求。
2.4 基于雙損失函數的MPF R-CNN算法回歸與分類優化
由于黃板上存在大量的害蟲,如果只使用單函數做回歸和分類任務,參數收斂的時間就相對較長,因此本文使用2種損失函數分別作用于RPN網絡和檢測網絡。RPN網絡損失函數(RPN loss)為
(2)
其中
(3)
(4)
(5)
式中Ncls——分類樣本數(本網絡中為4)
Nreg——網絡回歸樣本總數(本網絡為4 000)
pi——第i個候選框區域目標的預測概率
ti——第i個預測邊框的坐標
Lcls——分類損失函數
Lreg——邊框回歸損失函數
λ——回歸和分類比重的權值參數(在訓練中設置為2 000)
本文使用上述設置的目的是使RPN網絡進行分類和回歸權重比為2∶1,從而使RPN網絡稍微側重于分類任務。雖然使用Lreg損失函數可以減弱損失函數在定值期間的波動情況和訓練初期不穩定的情況,但是在檢測網絡部分并不適合運用Lreg函數來執行回歸任務。因為Lreg函數要求獨立計算出4個邊框點損失并假設這4個點相互獨立。實際上,這4個邊框點有聯系,這導致了最終的回歸不夠準確并且時間較長。因此本文在檢測網絡區域使用CIoU loss損失函數[32],計算式為
(6)
(7)
(8)
式中α——權重參數p——歐氏距離
b——預測框中心bgt——真實框中心
d——預測框和真實框的最小包圍的對角線長度
v——長寬比相似性衡量值
wr——邊框寬度lr——邊框長度
wgt——預測邊框寬度
lgt——預測邊框長度
IoU——預測的邊框和真實的邊框交集和并集的比值
式(6)優點在于能夠對檢測框的覆蓋面積、中心點距離和長寬比例3方面進行調整,加速模型收斂。
本文實驗算法操作平臺為臺式計算機,計算機處理器為Intel Core i7-9700,默認頻率為3.0 GHz,硬盤容量8 TB,內存16 GB,顯卡NVIDIA 2080TI。開發環境為:ubuntu 16.04,Python 3.6,anaconda 1.9.12,CUDA 版本為10.0。本文的目標檢測網絡在訓練前,先在ImageNet數據集上進行預訓練,作為ResNet101+FPN初始訓練參數,這樣可以大大減少ResNet101+FPN網絡的訓練時間。ResNet101+FPN初始化參數如表1所示。

表1 初始化參數
采用平均精度(Average precision,AP)作為每一種害蟲檢測的評價指標,同時采用平均精度均值(Mean average precision,mAP)作為算法整體性能評價指標。
此外,當害蟲大爆發時,對不計其數的害蟲進行計數并無實際生產意義,應在害蟲爆發前進行預警并做出相應的害蟲防治措施。本文通過咨詢農學專家,當黃板害蟲數量達到960只時預示害蟲數量已經非常多,應及時預警。因此在害蟲實際數量大于1 600只時,按照1 600只計算,也就是分割后的圖像上害蟲數量大于100只按照100只計算,并且當算法檢測害蟲數超過60只時就會發出害蟲爆發預警,讓人工及時地采取相應的害蟲防治措施并清理黃板。同時,害蟲數量在60~100只之間,每增加10只算法都會發出一次嚴重預警。因此在本文算法中的平均精度(AP)的參數(FP)范圍設定在0~100只害蟲。
本實驗采用不同的圖像特征提取網絡(VGG-16、ResNet50、ResNet101、ResNet152、ResNet50+FPN、ResNet101+FPN、ResNet152+FPN)對黃板害蟲進行目標檢測。網絡訓練完成后使用平均精度作為每種害蟲的目標檢測評價指標并使用平均精度均值作為整個網絡對所有害蟲識別性能的評價指標。不同網絡的對比結果如表2所示。

表2 不同特征提取網絡的模型性能結果對比
從表2可以看出,使用ResNet101+FPN網絡時,本模型檢測效果最好,達87.14%。當本模型以VGG-16作為特征提取網絡時,檢測平均精度都低于70%且最后檢測結果非常容易出現一個區域建議框內有多個目標的情況。造成此種情況最主要的原因是害蟲的體積過小導致有一些特征無法通過多次卷積進行特征提取。當本模型以ResNet50為特征提取網絡時,整體的平均精度均值比VGG-16提高了10.87個百分點,是因為殘差網絡可以解決深度卷積網絡梯度消失的問題。此外,ResNet50、ResNet101和ResNet152都存在每種害蟲檢測平均檢測精度相差較大的情況,是由于不同尺寸的害蟲在不同深度的卷積下特征表達的清晰度不一樣,有的特征可能更加明顯,有的特征可能已經丟失。當殘差網絡加入FPN網絡后,檢測平均精度均值均有所提高,但是模型的整體訓練時間和檢測時間都增加了。造成這一現象的主要原因是參數的增加導致計算的復雜度增加。此外,其他大型害蟲檢測的平均精度在ResNet50+FPN、ResNet101+FPN和ResNet152+FPN網絡中均比小菜蛾、黃曲條跳甲和煙粉虱檢測的平均精度低。導致上述結果的原因,一方面是大型害蟲樣本數量較少,并且樣本集合由食蠅蜜蜂、瓢蟲和金龜子多種害蟲樣本組成,所以單一大型害蟲樣本數量則更少;另一方面,由于大型害蟲都是體積較大,特征相對豐富,因此平均精度相差并不是很大,在ResNet101+FPN中與平均精度最高的煙粉虱相差只有1.46個百分點。
雖然本算法在采用ResNet101+FPN作為特征提取網絡時,平均精度均值達到87.14%。但是分析檢測結果時發現,不同分割圖像之間的檢測結果存在較大差異,其中害蟲密度和天氣是造成差異的主要因素。為了更易分析不同密度對本算法檢測結果的影響,本文根據害蟲的數量將測試集圖像分為低、中、高3種密度層次,根據農事專家建議,最終確定每54.68 cm2內(按16等份分割后圖像對應的實際尺寸)害蟲數量在0~30之間為低密度,害蟲數量在30~60之間為中密度,害蟲數量大于60為高密度。按照以上標準將3 904幅分割后的測試圖像進行低、中、高密度劃分后,結果如表3所示。
從表3可以看出,本算法在低密度下平均精度均值可達96.34%,但隨著害蟲密度上升算法平均精度均值有所下降。因為隨著害蟲密度的上升,害蟲出現堆疊和黏連的情況越多,并且害蟲密度高的圖像中害蟲由于死亡時間過長尸體完整度保留性相對較低,所以本算法在高密度下平均精度均值只有85.79%。然而,本算法在低密度下召回率較低,是因為低密度區域害蟲總數少,然而漏檢的害蟲數量雖然少,但是其所占的比重比較大。此外,由于害蟲具有分布不均勻特點,因此分割前的圖像會包含不同密度等級的分割圖像,為了分析算法合并后的效果,所以本文按照害蟲總數在0~480之間為低密度、480~960之間為高密度和大于960為高密度的標準對分割前的圖像進行劃分。將3 904幅分割后測試圖像檢測完成后合并成244幅圖像,結果如表4所示。通過對比表3和表4表明,雖然本算法是對分割后的圖像進行檢測,但是合并后的檢測結果依舊能反映原來的圖像情況。

表3 不同密度下檢測結果

表4 合并后圖像不同密度下檢測結果
為了分析本算法在不同天氣下的檢測效果,本文將已經按低、中、高密度圖像劃分后的測試圖像根據晴天和雨天進一步劃分。晴天和雨天不同密度害蟲檢測結果如圖9、10所示。通過對圖9a和圖10a進行分析,可以發現在低密度區域下晴天和雨天檢測結果相差不大,這是因為雨天相機的曝光率低,所以雨天害蟲特征比較清晰。通過對圖9b和圖10b進行分析,可以看出在中密度區域晴天和雨天檢測結果相差不大的情況下,均出現了將2個黏連一起的小菜蛾識別為同一個體情況,這是因為數據標注時未將黏連的害蟲進行標注。通過對圖9c和圖10c進行分析,可以發現在高密度區域下雨天相比晴天出現更多害蟲漏檢的情況。中低密度不會出現以上情況是因為雨水會降低黃板的粘性導致害蟲出現位移、堆疊或掉落的情況,而在高密度下的圖像中因害蟲的數量多以及黃板放置的時間長,所以更容易出現漏檢情況。總體而言,雖然本算法在高密度下雨天的檢測召回率會低一些,但是在高、中、低密度下晴天和雨天的檢測準確率差距不大。
害蟲數量是非常重要的農業信息,因此本文將244幅測試圖像中的害蟲數量與本算法計數結果進行統計分析。從圖11中可知,算法害蟲計數結果與害蟲實際數量的決定系數為0.925 5。當害蟲實際數量低于480時,算法計算結果處于相關性函數上方,側面說明本算法在害蟲低密度時計數準確率較高并且害蟲密度是影響本算法的重要因素。
同時,從圖12可以看出不同害蟲在計數差值之間存在一定差異。煙粉虱的差值相對其他害蟲較大,主要是因為煙粉虱體積小且數量最多,導致算法更加容易出現漏檢的情況。黃曲條跳甲計數結果的平均差值和最小差值比小菜蛾低,但最大差值比小菜蛾高,是因為黃板在環境復雜的田間,偶爾會出現黃曲條跳甲害蟲因為環境變化突然增多的情況,導致算法出現較大的計數差,而這是實際生產中一定會出現的情況但偏差仍然在可接受的范圍內。總體而言,本算法對害蟲的計數結果能一定程度反映害蟲真實的數量情況,并且計數結果與害蟲實際數量的平均差值較小。
為了測試算法在實際應用中的情況,本文在以“微信小程序+云存儲服務器+算法服務器”為架構的黃板害蟲檢測系統上,使用了4臺算法服務器并利用小米7手機對測試集進行測試。如圖13a所示對圖像進行上傳操作,并如圖13b所示使用微信小程序后臺測試工具進行測試。結果表明,黃板害蟲檢測系統能正常完成黃板害蟲圖像上傳、圖像分割、圖像檢測、圖像合并以及圖像檢測任務,平均每次檢測時間為1.7 s,對于每次檢測任務僅需要3%的CPU資源消耗和228 MB的內存占用。由于圖像被分割成16份,所以平均每幅分割圖像檢測時間為0.425 s,與原本每幅分割圖像檢測時間0.36 s相差不大,造成時間差距的原因是圖像傳輸過程中需要一定的時間。同時,手機上傳晴天和雨天黃板害蟲圖像檢測結果如圖13c、13d所示,表明本文算法對于晴天和雨天黃板害蟲的檢測結果差距不大,因此本文算法在移動端應用具有可行性。
(1)用智能手機作為載體,將基于Faster R-CNN改進的害蟲檢測算法MPF R-CNN應用于黃板害蟲的識別。通過對ResNet101+FPN特征提取網絡、RPN網絡進行設計,使用ROIAlign替代ROIPooling,以及使用雙損失函數進行算法優化和控制,在真實復雜的自然環境下對煙粉虱、黃曲條跳甲、小菜蛾和其他大型害蟲(體長大于5 mm)檢測的平均精度分別為87.84%、86.94%、87.42%和86.38%。
(2)進一步實驗表明,MPF R-CNN在35 cm×25 cm黃板上不超過480只的低密度下平均精度均值高達93.41%,并且計數結果與害蟲計數決定系數為0.925 5。
(3)通過“微信小程序+云存儲服務器+算法服務器”為架構的系統對算法進行應用測試,結果表明,該算法能支持當前便攜式應用,且該系統平均每次檢測時間為1.7 s。隨著未來樣本數的提升、手機拍攝技術的升級以及對合并邊緣極少數害蟲進行去重優化,該算法的檢測精度會進一步提升。