張 博,張苗輝,2※,陳運忠
(1.河南省大數(shù)據(jù)分析與處理重點實驗室,開封475004;2.河南大學地理學博士后科研流動站,開封475004)
農(nóng)業(yè)是一個國家經(jīng)濟發(fā)展的基礎(chǔ),糧食生產(chǎn)更是關(guān)系到國計民生。糧食生產(chǎn)受到諸多條件的影響,其中,病蟲害是影響作物產(chǎn)量的重要原因之一。農(nóng)業(yè)病蟲害造成的作物減產(chǎn)覆蓋了水稻、玉米和小麥等數(shù)十種農(nóng)作物。因此,作物害蟲的識別是科學防治病蟲害的重要依據(jù)[1-4]。傳統(tǒng)的作物害蟲分類方法是專家通過觀察害蟲的外部特征,結(jié)合已知的害蟲圖鑒對害蟲的種類進行判別,并對當季的各類害蟲數(shù)量進行統(tǒng)計分析。該方法依賴于專家的經(jīng)驗水平和主觀意識,識別效率較低。
近年來,借助于計算機視覺技術(shù)與模式識別的發(fā)展,農(nóng)作物害蟲的分類識別方法也得到了廣泛的研究。傳統(tǒng)的害蟲識別技術(shù)大多基于顏色、紋理、形狀等特征,通過稀疏表示的方法,學習獲得害蟲的過完備字典,從而對害蟲進行分類[5-14]。這一類方法在本質(zhì)上使用人工預先設(shè)計好的特征進行識別,在一定程度上實現(xiàn)了智能化,但在實際使用中容易受到害蟲形態(tài)、背景干擾等限制。伴隨深度學習與神經(jīng)網(wǎng)絡(luò)的發(fā)展,對害蟲的識別研究轉(zhuǎn)向以卷積特征為核心的深度學習框架,并在準確率和魯棒性上獲得了顯著的提升[15-18]。上述圖像分類的方法對樣本的輸入有嚴格的要求,依賴于人工對每個害蟲樣本進行選取和分離,分類精度受背景干擾較大。為了進一步對害蟲進行自動的精準定位和準確分類,基于目標檢測的害蟲分類算法成為最優(yōu)的解決方案。以Fast R-CNN(fast regions with CNN)和SSD(single shot multiBox detector)在害蟲分類技術(shù)中的應用為例,根據(jù)卷積層提取到的特征向量,分別通過窗口分類和窗口回歸,得到每個候選區(qū)域中害蟲的類別以及原始坐標。此類方法有效地提升了害蟲種類判別的準確率,并且能夠?qū)οx目標進行定位[19-23]。由于害蟲目標的體型差異較大,種類繁多,淺層的卷積神經(jīng)網(wǎng)絡(luò)提取到的有效特征信息較少,對多尺度輸入的害蟲樣本泛化能力較差。
隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展,基于深度卷積神經(jīng)網(wǎng)絡(luò)的分類識別技術(shù)展示出了超越人類視覺水平的表現(xiàn)[24-31]。但對于作物害蟲的分類識別問題,傳統(tǒng)的作物害蟲分類算法[7-8,15]通常基于害蟲的顏色、形態(tài)和紋理等表觀特征,通過淺層神經(jīng)網(wǎng)絡(luò)或者支持向量機(support vector machine,SVM)等分類器進行分類。這些算法除受害蟲姿態(tài)多樣性的因素影響外,還受到尺度多樣性的影響,如體型較小的害蟲樣本在圖片中所占像素較少,使得傳統(tǒng)的卷積結(jié)構(gòu)難以提取樣本的底層特征。本文基于ResNet的殘差網(wǎng)絡(luò)思想,使用更深層的基礎(chǔ)網(wǎng)絡(luò),通過上采樣與卷積操作相結(jié)合的方法,在YOLOv3(you only look once version 3)[32]網(wǎng)絡(luò)中加入反卷積結(jié)構(gòu),用于檢測出體型較小的害蟲目標并分類;進一步將空間金字塔池化[33]與改進后的YOLOv3相結(jié)合,使網(wǎng)絡(luò)模型能夠適應多尺度的樣本輸入,從而減小害蟲體型差異較大對分類精度造成的影響。
為了保證該算法在實際環(huán)境中識別害蟲的準確率,本文圖像數(shù)據(jù)的采集依托河南省鶴壁市佳多集團在全國各地設(shè)置的JDXC-1 型智能蟲情測報儀。這些測報儀設(shè)置在田間或者林地,誘捕到的昆蟲都是當?shù)匾装l(fā)生病蟲害的昆蟲,可以根據(jù)捕捉到的害蟲數(shù)量來預測接下來的一段時間內(nèi)發(fā)生哪種病蟲害的可能性最大,以便盡早做好預防措施。頂部的攝像頭每間隔10 min采集1張害蟲圖像,通過4G 網(wǎng)絡(luò)信號傳輸至后臺服務器,能夠更真實的反應蟲情動態(tài)。
由于不同種類的害蟲分布具有季節(jié)性,本次害蟲樣本的圖像采集工作自2015 年5 月11 日起至2016 年9 月30 日,分時段進行,主要集中在河南、山東和湖北等地。本次共采集到害蟲樣本圖片976 張,每張圖片的分辨率為2 592×1 944,害蟲共124 類,如圖1 所示。專家借助害蟲圖鑒和LabelImg 數(shù)據(jù)集標注腳本,共計標注害蟲樣本25 425個。害蟲數(shù)量分布如表1所示,表中的第1列為每個種類的害蟲所標注的樣本數(shù)量范圍,第3 列為樣本量在該范圍內(nèi)的害蟲種類編號,第2列為滿足第1列樣本數(shù)量的所有種類害蟲的標注樣本總數(shù)。其中,害蟲種類編號為害蟲圖鑒中每一類害蟲固定的編號值,如樣本采集過程中1號、4號、9號等部分種類害蟲并未出現(xiàn)。
圖1 害蟲樣本示例Fig.1 Examples of pest samples
為了有效地提取到圖像的細粒度特征,本文對YOLOv3 作進一步改進。原始的YOLOv3 由106 層網(wǎng)絡(luò)層組成,共使用步長為2大小為3×3的卷積核進行5次下采樣操作,輸出3 種不同尺度的特征向量,每種尺度預測3個回歸框的位置信息,如圖2a 所示。由于害蟲目標在原始圖像中所占比例較小,多次下采樣會引起訓練過程中卷積層提取到的小目標特征信息丟失,導致體型較小的害蟲無法識別。因此,將網(wǎng)絡(luò)輸入尺度設(shè)定為608×608,下采樣次數(shù)減少為4 次,同時,使用上采樣與卷積結(jié)合的方法,達到反卷積的效果。將網(wǎng)絡(luò)首個全連接層的輸出尺度提升至38×38,并與下采樣之前的網(wǎng)絡(luò)輸出相結(jié)合,盡可能提取出原始圖片中體型較小的害蟲特征,以提高小目標害蟲檢測的準確率,如圖2b 所示。本文使用雙線性插值方法進行圖像的上采樣計算:
表1 害蟲樣本數(shù)量分布Table 1 Quantity distribution of pests
式(1)~(3)中,P 為上采樣圖像中x,y 坐標的像素值,按采樣比例對應至原圖中P'的坐標為(i+u,j+v),其中i,j 為整數(shù)部分,u,v 為小數(shù)部分。P1和P2分別是對應y 方向和x方向的插值,f(x0,y0)和f(x1,y1)為P'左上像素點和右下像素點的像素值。通過卷積與上采樣結(jié)合的方法,實現(xiàn)了反卷積的操作,提升了YOLOv3 輸出特征的尺度,圖2b為改進后的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)。
如圖2c 所示,DBL 結(jié)構(gòu)由卷積層、批標準化(batch normalization,BN)和非線性激活函數(shù)(leaky relu)組成,構(gòu)成YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)的基本組件。傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)在信息傳遞時會存在一定的信息丟失和損耗,造成梯度消失或者梯度爆炸等問題,隨著網(wǎng)絡(luò)的加深,出現(xiàn)訓練過程中準確率下降,甚至無法訓練的現(xiàn)象。本文使用Resblock 殘差結(jié)構(gòu),如圖2d 所示,能夠在避免上述問題的情況下大幅度的加深網(wǎng)絡(luò)層數(shù),使神經(jīng)網(wǎng)絡(luò)提取到更深層次的目標信息,提升目標定位和分類的準確率。在圖2a 和 圖2b 中,Res2 表 示 由2 個Resblock 結(jié) 構(gòu) 疊 加 組成。本文對于回歸框的預測采用logistic回歸方法:
式中cx,cy是坐標偏移量,pw,ph是預設(shè)的候選框邊長。最終得到的邊框坐標值是bx,y,w,h,網(wǎng)絡(luò)的學習目標是tx,y,w,h。在3 種不同尺度生成的9 個先驗框中確定出目標存在可能性得分最高的候選框,從而對該候選框中的目標進行分類。該方法確定了待檢測圖像中先驗框的數(shù)量,檢測速度快、背景誤檢率低、對于非自然圖像物體的檢測和分類的準確率遠遠高于傳統(tǒng)R-CNN(regions with CNN)等系列的目標檢測方法[32]。
圖2 YOLOv3 spp與YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)對比Fig.2 Comparison of YOLOv3-SPP and YOLOv3 network structure
空間金字塔池化(spatial pyramid pooling,SPP)是一種將局部特征映射到不同維度空間并將其融合的池化方法,可以產(chǎn)生固定大小的特征向量并且使卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)適應不同比例、多尺寸的圖像輸入,并且可以有效地提取到害蟲的多尺度特征信息。空間金字塔池化的原理如圖3a所示。
在YOLOv3 的首個全連接輸出之前加入SPP 結(jié)構(gòu),該結(jié)構(gòu)的輸入尺度為38×38×512,如圖3b 所示,將3 次最大池化的結(jié)果相融合,得到38×38×512 的固定輸出用于首個全連接層的輸入。該方法將3 種不同尺度的特征進行融合,使卷積核感受的視野范圍更大。在SPP 的結(jié)構(gòu)中,從上一個卷積層傳遞的特征保留了原始輸入中的害蟲特征,這部分害蟲特征大多為體型適中的害蟲類別,通過下采樣,將體型較大的害蟲進行特征重提取,通過反卷積提取到體型更小的害蟲特征,將3 種特征相互融合,用于消除因害蟲體型差異較大而導致有效特征信息不一致的影響,有助于提升體型差異明顯的害蟲分類準確率。
圖3 SPP原理及網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.3 SPP principle and network structure
為了進一步提取到害蟲圖像的細粒度特征,本文對YOLOv3 進行改進,提升了YOLOv3 網(wǎng)絡(luò)的特征輸出尺度,使用Resnet殘差網(wǎng)絡(luò)結(jié)構(gòu)和反卷積操作,使多尺度卷積特征相融合;為了減小害蟲體型差異較大對分類精度造成的影響,將空間金字塔池化與改進后的YOLOv3 相融合,使網(wǎng)絡(luò)模型能夠適應多尺度的樣本輸入,設(shè)計一種基于端到端的害蟲種類識別網(wǎng)絡(luò)YOLOv3-SPP,用于害蟲定位與害蟲種類識別。
從表1中害蟲樣本數(shù)量分布可以看出,樣本數(shù)在50以下的害蟲種類共有86類,呈現(xiàn)出長尾效應。這是由于害蟲樣本的采集工作集中在5月至9月,且分布在多個地域,導致各類害蟲數(shù)量不均衡,出現(xiàn)長尾效應。為了保證訓練樣本的相對均衡,本次試驗從樣本數(shù)量不低于50的害蟲種類中隨機選取20類,試驗數(shù)據(jù)集分布如表2所示,20類害蟲總共包含10 462個標注樣本,分布在害蟲樣本的976張圖片中。試驗隨機選取196張圖像為驗證集,其余780張為訓練集,訓練集與驗證集均包含選取的20類害蟲。其中,驗證集只用于模型精度的測試,不參與模型的訓練。
本文所有的試驗都是在GeForce GTX Titan X 12GB GPU,Ubuntu16.04 操作平臺上實現(xiàn)的,為了充分利用硬件資源,以GPU 版本的Darknet 深度學習架構(gòu)為實現(xiàn)框架。評價參數(shù)采用每一類的平均精度值(average precision,AP)和總的平均精度均值(mean average precision,mAP),mAP的計算如式(8)~(10)所示。
式(8)~(10)中Pr為準確率,TP 為真實的害蟲正樣本數(shù)量,F(xiàn)P為虛假的正樣本數(shù)量,C為害蟲類別,NC為包含類別C的所有樣本數(shù)量,AP( )i 表示第i 類害蟲的平均精度值,Q為所有害蟲類別數(shù)。mAP 的值越高,表示該方法在數(shù)據(jù)集上預測害蟲的位置和類別越準確。
表2 20類害蟲數(shù)據(jù)集分布Table 2 Sample distribution of 20 species of pests
為了驗證SPP 結(jié)構(gòu)對提高害蟲檢測準確率的有效性,試驗分別采用YOLOv3 和加入SPP 結(jié)構(gòu)的YOLOv3-SPP 網(wǎng)絡(luò),對20 類害蟲進行50 200 次的迭代訓練。模型初始化參數(shù)使用基礎(chǔ)網(wǎng)絡(luò)DarkNet-53 的預訓練模型,設(shè)定初始學習率為0.001,采用隨迭代次數(shù)改變的學習率下降策略,當?shù)螖?shù)到達40 000 次時,損失值基本穩(wěn)定。為了避免學習率過大,網(wǎng)絡(luò)模型在最優(yōu)值附近震蕩,因此設(shè)定steps 為40 000 和45 000,當?shù)螖?shù)達到40 000 次和45 000 次時,學習率下降10 倍,使得網(wǎng)絡(luò)模型能夠逐漸逼近最優(yōu)值,確保訓練能更進一步的收斂。由于GPU的顯存大小和計算能力不同,本次試驗設(shè)定batch 為64,subdivisions 為16,其中batch 表示每批訓練的圖片數(shù)目是64張,分為16個批次,依次送入GPU進行訓練。
表3 為YOLOv3 與YOLOv3-SPP 訓練模型的部分網(wǎng)絡(luò)特征重構(gòu)圖。由圖2a 可知,YOLOv3 的3 個輸出結(jié)果是通過3 次降采樣與2 次上采樣的特征相融合所得到。從表3 中對比YOLOv3 與YOLOv3-SPP 的特征重構(gòu)結(jié)果可以看出,YOLOv3所輸出的特征尺寸較小,特征信息不明顯,難以對小目標害蟲進行準確的檢測與分類。而改進后的YOLOv3-SPP提升了網(wǎng)絡(luò)模型的輸入尺寸,減少了下采樣次數(shù),在特征重構(gòu)的結(jié)果中保留了大量害蟲樣本的原始信息,能夠提高害蟲目標的檢測與分類的準確率。
表3 YOLOv3與YOLOv3-SPP的部分網(wǎng)絡(luò)特征重構(gòu)Table 3 Parts of network feature with YOLOv3 and YOLOv3-SPP
為了驗證本文害蟲識別方法的有效性,在20 類害蟲數(shù)據(jù)集上,分別利用不同的目標檢測方法對害蟲樣本進行訓練并測試識別精度,數(shù)據(jù)集及識別結(jié)果如表4所示。
從表4可以看出,20類害蟲按樣本數(shù)量的大小降序排列。結(jié)合HOG(histogram of oriented gridients)特征與SVM的傳統(tǒng)識別方法,識別率僅為68.46%,明顯低于其余神經(jīng)網(wǎng)絡(luò)的識別方法,且識別速度較慢。由此可以看出,基于神經(jīng)網(wǎng)絡(luò)的目標檢測算法在害蟲識別中更具有優(yōu)勢。
在同一數(shù)據(jù)集下,YOLOv3 和YOLOv3-SPP 獲得較高的平均識別率,分別為85.27%和88.07%,改進后的YOLOv3-SPP 較YOLOv3 的識別率提升2.8 個百分點;Faster R-CNN作為2階段(two stage)的目標檢測算法,雖然在各別害蟲種類上獲得了較好的測試精度,但平均識別率較低,為78.43%。這是由于Faster R-CNN 的網(wǎng)絡(luò)結(jié)構(gòu)不能有效地提取害蟲的多尺度信息,對于體型較小的害蟲目標識別率較差。由此可以看出,融合了空間金字塔池化的深度卷積神經(jīng)網(wǎng)絡(luò)YOLOv3-SPP在保證26幀/s識別速度的同時,具有更好的害蟲識別能力,較HOG+SVM 的傳統(tǒng)識別算法高出19.61 個百分點,較Faster RCNN高出9.64個百分點。
圖4為YOLOv3與YOLOv3-SPP的識別結(jié)果,由圖可以看出,YOLOv3-SPP 比YOLOv3 檢測到的害蟲目標更多,即漏檢率更低,在YOLOv3-SPP 的檢測結(jié)果中,除數(shù)據(jù)集未標注的昆蟲外,其余害蟲全部被識別。對2種方法的識別結(jié)果細節(jié)區(qū)域進行對比,如圖4c 和4d 所示。YOLOv3對于體型較大和體型較小的害蟲目標漏檢較多,對應圖4d中的65號和46號害蟲,而YOLOv3-SPP能夠識別出圖中所有的害蟲目標,且分類精度較高。由此可見,本文提出的YOLOv3-SPP害蟲識別算法對于害蟲體型差異較大,特別是害蟲體型較小的情況下識別效果明顯優(yōu)于YOLOv3。
表4 20類害蟲的測試精度Table 4 Test accuracy of 20 species pest
圖4 不同方法的害蟲種類識別結(jié)果Fig.4 Identification results of pest species by different methods
本文提出了一種基于空間金字塔池化與深度卷積神經(jīng)網(wǎng)絡(luò)的作物害蟲識別算法,試驗表明該算法能夠有效地檢測小目標害蟲,適用于多尺度的害蟲定位以及種類識別,平均識別準確率達到88.07%,檢測速度為26幀/s。
1)為了解決因害蟲尺度多樣性導致其識別精度相對較低的問題,本文使用殘差網(wǎng)絡(luò)結(jié)構(gòu)和反卷積對YOLOv3 網(wǎng)絡(luò)進行改進,同時將空間金字塔與改進后的YOLOv3相結(jié)合,設(shè)計了深度卷積神經(jīng)網(wǎng)絡(luò)模型YOLOv3-SPP,與YOLOv3相比在識別準確率上提升了2.8個百分點。
2)對比了HOG+SVM、Faster R-CNN、YOLOv3 在相同的試驗環(huán)境下害蟲識別的準確率,本文算法較HOG+SVM 的傳統(tǒng)識別算法高出19.61 個百分點,較Faster RCNN高出9.64個百分點。
3)基于神經(jīng)網(wǎng)絡(luò)的識別算法依賴于數(shù)據(jù)集的規(guī)模及標注的準確性,同時較多的網(wǎng)絡(luò)參數(shù)需要大量的計算能力,在將來的研究中應盡可能減少網(wǎng)絡(luò)參數(shù)和訓練模型對數(shù)據(jù)量的依賴。