張劍飛,柯 賽
(黑龍江科技大學(xué) 計算機(jī)與信息工程學(xué)院,黑龍江 哈爾濱 150022)
關(guān)于現(xiàn)代農(nóng)業(yè)害蟲檢測的相關(guān)研究,郭陽等[1]為解決人工識別水稻蟲害難度大、費時費力的問題,提出了一種自動識別水稻蟲害的方法。通過YOLOv3檢測算法解決了田間復(fù)雜情況下的水稻蟲害識別任務(wù)。張善文等[2]提出了一種可形變VGG-16模型的田間作物害蟲檢測方法,引入可形變卷積使網(wǎng)絡(luò)適應(yīng)不同形狀、狀態(tài)和尺寸等幾何形變的害蟲圖像,提高了模型特征表達(dá)能力,在實際田間害蟲圖像數(shù)據(jù)庫上的檢測準(zhǔn)確率達(dá)到91.14%。劉凱旋[3]提出使用R-CNN的小樣本水稻害蟲檢測算法,通過數(shù)據(jù)擴(kuò)增和預(yù)訓(xùn)練加速模型收斂過程,該方法能夠有效地識別和檢測復(fù)雜背景下的水稻害蟲。肖德琴等[4]針對黃板誘捕的害蟲體積小、數(shù)量多和分布不均勻,難以進(jìn)行害蟲識別的問題,提出一種基于改進(jìn)Faster R-CNN的田間黃板害蟲檢測算法,該算法在中等密度下平均精度均值達(dá)到了89.76%。
候瑞環(huán)等[5]針對現(xiàn)有基于深度學(xué)習(xí)的林業(yè)昆蟲圖像檢測方法存在檢測精度低和檢測速度慢的問題,提出了一種基于YOLOv4-TIA的林業(yè)害蟲實時檢測方法。馮晉[6]提出了基于深度學(xué)習(xí)的水稻燈誘害蟲檢測方法,通過對YOLOv3模型主干網(wǎng)絡(luò)以及聚類算法的改進(jìn),檢測效果得到大幅提升。姚青等[7]提出改進(jìn)RetinaNet的水稻冠層害蟲自動檢測模型,模型采用ResNeXt101作為特征提取網(wǎng)絡(luò)以及組歸一化方法,實現(xiàn)了對水稻害蟲的高精度檢測。
盡管上述害蟲檢測方法已經(jīng)具有了良好的檢測性能,但針對該文所要研究的多種類害蟲檢測,仍然存在以下不足:
(1)大部分檢測模型僅使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行搭建,但卷積的局部偏執(zhí)特性會導(dǎo)致模型忽視全局特征信息。
(2)大部分害蟲檢測任務(wù)都是針對單一或少量同類目標(biāo),模型使用范圍較局限,不能覆蓋多種類害蟲檢測情況。
因此,該文提出了ST-YOLOX-s(Swin-Transformer-YOLOX-s)模型來解決上述問題。
YOLOX[8]是基于YOLOv3[9]檢測模型改進(jìn)的無錨框(Anchor Free)單階段目標(biāo)檢測模型,具有由小到大四種規(guī)格(-s、-m、-l、-x)。區(qū)別于以往YOLO系列基于錨框(Anchor Base)的設(shè)計,YOLOX擺脫了先驗框的限制,使模型更易部署到下游任務(wù)當(dāng)中。YOLOX引入解耦預(yù)測頭,將原有預(yù)測任務(wù)進(jìn)行分工,緩解了預(yù)測權(quán)重的壓力。同時YOLOX加入了動態(tài)匹配正樣本(SimOTA)策略,該策略為不同目標(biāo)設(shè)定了不同的正樣本數(shù)量,優(yōu)化了模型正負(fù)樣本的訓(xùn)練比例。
Transformer[10]作為近期具有開創(chuàng)性的第四代神經(jīng)網(wǎng)絡(luò),在CV領(lǐng)域產(chǎn)生了巨大的影響。先是ViT[11](Vision Transformer)將圖片視為文本進(jìn)行處理,在圖像分類任務(wù)中取得了極佳的效果。隨后的Swin-Transformer[12]將類似卷積神經(jīng)網(wǎng)絡(luò)的層次化結(jié)構(gòu)融入Transformer,在降低模型計算量的同時提升了模型預(yù)測精度。
ST-YOLOX-s在原有YOLOX-s模型基礎(chǔ)上對整體網(wǎng)絡(luò)進(jìn)行改進(jìn)。ST-YOLOX-s采用四尺度特征層檢測結(jié)構(gòu)進(jìn)行預(yù)測,通過主干網(wǎng)絡(luò)(BackBone)提取畫面特征,頸部網(wǎng)絡(luò)(Neck)實現(xiàn)特征融合,最后借助解耦預(yù)測頭(Head)對目標(biāo)進(jìn)行分析預(yù)測。ST-YOLOX-s模型具體結(jié)構(gòu)如圖1所示。
圖1 ST-YOLOX-s模型結(jié)構(gòu)
為進(jìn)一步提高ST-YOLOX-s模型的檢測性能,在模型訓(xùn)練前期設(shè)計了數(shù)據(jù)增強(qiáng)策略,借助數(shù)據(jù)增強(qiáng)技術(shù)有效提升數(shù)據(jù)多樣性。與原始YOLOX-s相比,ST-YOLOX-s可以更好地處理多種類害蟲檢測任務(wù),本次的主要工作如下:
(1)為實現(xiàn)模型對多種類害蟲的檢測任務(wù),構(gòu)建了一個包含30類害蟲,共計3 956張標(biāo)注圖片的害蟲數(shù)據(jù)集。
(2)為解決模型對小型害蟲檢測準(zhǔn)確率偏低的問題,通過增添P2特征尺度來提升主干網(wǎng)絡(luò)對微小目標(biāo)的特征捕捉能力。
(3)為解決模型在復(fù)雜環(huán)境下多種類害蟲目標(biāo)檢測效果不佳的問題,通過使用具有通道注意力機(jī)制的CA&CSPLayer以及具有圖屬性的G-Swin-Block,提升卷積網(wǎng)絡(luò)對于通道信息以及全局信息的抓取能力。
(4)為進(jìn)一步實現(xiàn)模型高精度定位,使用α-CIoU損失替換原始的IoU損失。
針對模型對小型害蟲目標(biāo)檢測效果不佳的問題,提出了四尺度特征層檢測結(jié)構(gòu)改進(jìn)方案。原網(wǎng)絡(luò)使用三尺度特征層檢測設(shè)計,對于640×640的輸入圖像,分別利用8倍、16倍、32倍下采樣的特征圖去預(yù)測不同大小尺寸的特征目標(biāo)。但由于本次實驗數(shù)據(jù)中包含較小的害蟲目標(biāo),原有的三層尺度特征層檢測設(shè)計對此類目標(biāo)特征捕獲較不敏感。為此,該文在原網(wǎng)絡(luò)基礎(chǔ)上增添了P2特征尺度層。該特征層受主干網(wǎng)絡(luò)4倍下采樣影響,將大小為160×160的特征圖送入頸部網(wǎng)絡(luò)進(jìn)行特征融合,并將該尺度的預(yù)測信息通過YOLOHead-P2預(yù)測頭進(jìn)行反饋。YOLOHead-P2預(yù)測頭受淺層高分辨率特征信息的影響,對微小目標(biāo)的特征更加敏感。通過對網(wǎng)絡(luò)結(jié)構(gòu)的整體改進(jìn),使得網(wǎng)絡(luò)可以更加全面地捕獲多種尺度的特征信息。
針對卷積神經(jīng)網(wǎng)絡(luò)關(guān)于通道信息關(guān)注薄弱的問題,為CSPLayer(Cross Stage Partial Layer)的殘差邊施加ECANet[13]高效通道注意力,以此來提煉特征圖的通道信息權(quán)重。該方法有助于彌補(bǔ)卷積神經(jīng)網(wǎng)絡(luò)對特征圖通道信息關(guān)注薄弱的缺點。模型在使用具有通道注意力的CA&CSPLayer(Channel Attention &Cross Stage Partial Layer)后,可以有效引導(dǎo)ST-YOLOX-s模型提取關(guān)鍵通道特征信息,提高模型檢測性能。
與原始CSPLayer相比,CA&CSPLayer會對原始的殘差邊額外施加一個通道注意力權(quán)重,以此得到具有通道注意力權(quán)重的X1特征圖。關(guān)于通道注意力權(quán)重的提煉,CA&CSPLayer首先會對輸入的特征圖進(jìn)行全局均值池化(Global Average Pooling,GAP)操作實現(xiàn)對特征圖的維度壓縮,隨后借助一維卷積核(k)來學(xué)習(xí)各相鄰?fù)ǖ乐g的特征映射關(guān)系,算法會假設(shè)一維卷積核k和通道C之間存在以2為底的非線性指數(shù)映射關(guān)系,如公式(1)所示:
C=φ(k)=2(γ*k-b)
(1)
通過在通道維數(shù)C已知的情況下,一維卷積核k可以通過公式(2)計算得到:
(2)
其中,‖odd表示最近奇數(shù),參數(shù)γ和b分別取2和1。
然后借助Sigmoid激活函數(shù)實現(xiàn)對通道特征的整合,最后通過與原輸入特征圖(Input)的結(jié)合,生成帶有通道信息的特征圖X1。生成的特征圖X1會與經(jīng)過殘差瓶頸操作的特征圖X2做拼接操作,最終實現(xiàn)對特征圖的信息整合。CA&CSPLayer整體結(jié)構(gòu)如圖2所示。
圖2 CA&CSPLayer整體結(jié)構(gòu)細(xì)節(jié)
針對卷積神經(jīng)網(wǎng)絡(luò)模型缺乏獲取全局特征信息的問題,通過使用Swin-Transformer模塊來提升模型的全局特征學(xué)習(xí)能力,同時借鑒Vision GNN[14]模型的KNN圖神經(jīng)網(wǎng)絡(luò),進(jìn)一步優(yōu)化Swin-Transformer網(wǎng)絡(luò)對特征圖各局部圖塊(Patch)間的特征學(xué)習(xí)。
Swin-Transformer網(wǎng)絡(luò)模型中使用了Windows Multi-head Self-Attention (W-MSA)以及Shifted-Windows Multi-Head Self-Attention (SW-MSA)兩個概念,并通過與MLP(Multi-Layer Perceptron)的結(jié)合共同組合成Swin-Transformer模塊。而在G-Swin-Block(Group Swin-Transformer Block)模塊當(dāng)中,首先會對輸入特征圖的每個圖塊(Patch)利用最鄰近節(jié)點算法(K-Nearest Neighbor,KNN)進(jìn)行操作,以此來學(xué)習(xí)每個Patch間的相互特征關(guān)系,更好地引導(dǎo)Swin-Transformer模塊關(guān)注重點的Patch。同時在該操作前后施加卷積以及批量歸一化(Batch Normalization,BN)操作防止特征權(quán)重出現(xiàn)過擬合。G-Swin-Block模塊具體細(xì)節(jié)如圖3所示。
當(dāng)特征圖進(jìn)入G-Swin-Block模塊后,Graph-KNN網(wǎng)絡(luò)首先會對特征圖每個Patch之間的特征信息進(jìn)行KNN節(jié)點計算,以此來評估各Patch之間包含目標(biāo)特征信息的權(quán)重比例,并最終將比例權(quán)重附加到每個Patch上面,具體操作如公式(3)所示。
ωpatchi=GraphKNN(patchi)
(3)
圖3 G-Swin-Block模塊整體結(jié)構(gòu)
隨后進(jìn)行Swin-Transformer的層次化全局特征學(xué)習(xí)操作,操作流程如公式(4)所示:
(4)
通過構(gòu)建具有圖屬性的Swin-Transformer,有效解決了卷積神經(jīng)網(wǎng)絡(luò)模型無法獲取特征圖全局信息的能力,使得模型檢測性能得到提高。
YOLOX-s模型使用交并比損失函數(shù)(IoULoss)來計算預(yù)測框和真實框的位置損失。該損失方法如公式(5):
(5)
雖然IoULoss具有良好的尺度不變性,但是也存在著兩個缺點:一方面,IoU(Intersection over Union)無法精確地反映預(yù)測框和真實框的重合程度; 另一方面當(dāng)預(yù)測框和真實框沒有交集時,IoU無法反映二者的實際距離大小。為此,該文采用考慮因素更為全面的α-CIoU[15]作為目標(biāo)檢測任務(wù)的回歸損失函數(shù),該損失函數(shù)兼顧了重疊面積、中心點距離以及長寬比三要素,且實際效果優(yōu)于IoULoss和CIOULoss[16]。α-CIoU回歸損失的計算過程如公式(6)所示:
(6)
其中,α為調(diào)節(jié)參數(shù),β為權(quán)重函數(shù),w為框?qū)?h為框高,b和bgt分別為預(yù)測框和真實框的中心點,ρ為計算兩個中心點的歐氏距離,v表示長寬比的相似性,c表示能夠同時包含預(yù)測框和真實框的最小閉包區(qū)域的對角線距離。
通過使用α-CIoULoss,有效解決了IoULoss存在的不足。使模型回歸框定位更加精準(zhǔn),且檢測性能得到進(jìn)一步提高。
為實現(xiàn)對多種類害蟲的檢測任務(wù),借助LabelImg數(shù)據(jù)標(biāo)注腳本,構(gòu)建了包含:稻縱卷葉螟、稻癭蚊、稻飛虱、稻象蟲、稻葉蟬、蠐螬蟲、螻蛄、金針蟲、黃地老虎、紅蜘蛛、玉米螟、黏蟲、蚜蟲、白星花金龜、桃柱螟、麥圓蜘蛛、跳甲、斑蠅、盲蝽、芫菁、瓢蟲、葡萄天蛾、斑衣蠟蟬、大青葉蟬、吹綿蚧殼蟲、桔小實蠅、枯葉夜蛾、茶樹白蛾蠟蟬、褐邊蛾蠟蟬、脊胸天牛的30類害蟲數(shù)據(jù)集,詳細(xì)數(shù)據(jù)如圖4所示??倲?shù)據(jù)量3 956張,其中單類數(shù)據(jù)最多212張,最少64張,平均每類130張左右。
圖4 害蟲數(shù)據(jù)集詳細(xì)數(shù)據(jù)
數(shù)據(jù)增強(qiáng)可以有效擴(kuò)展樣本多樣性,使模型在不同環(huán)境下都具備較高的魯棒性。本次實驗除了使用光度失真和幾何失真策略外,還使用了Mixup[17]和Mosaic數(shù)據(jù)增強(qiáng)策略,Mixup會從訓(xùn)練圖像中隨機(jī)選取兩個樣本進(jìn)行隨機(jī)加權(quán)求和,該操作可以有效提升檢測模型的泛化能力,具體操作效果如圖5所示。
圖5 Mixup數(shù)據(jù)增強(qiáng)
Mosaic增強(qiáng)操作會將4幅預(yù)處理圖像拼接為1幅大圖,從而極大地豐富了被檢測物體的背景,具體操作效果如圖6所示。
圖6 Mosaic數(shù)據(jù)增強(qiáng)
本次實驗在Python3.8,CUDA11.3,PyTorch 1.10.0環(huán)境下進(jìn)行。所有模型均在NVIDIA RTX A5000 GPU上進(jìn)行訓(xùn)練和測試。數(shù)據(jù)集按照9∶1劃分為訓(xùn)練集和測試集,并從訓(xùn)練集中抽取10%作為驗證集,模型規(guī)格為-s,使用SGD優(yōu)化器以及余弦退火學(xué)習(xí)率,BatchSize大小設(shè)置為8,總共進(jìn)行300次迭代訓(xùn)練(最后30次迭代訓(xùn)練會關(guān)閉Mixup和Mosaic)。ST-YOLOX-s模型經(jīng)過300次迭代訓(xùn)練后趨于收斂。
通過使用Python中的pycocotools工具包來計算COCO評價指標(biāo)。實驗最終結(jié)果如圖7所示,可以看出改進(jìn)后的ST-YOLOX-s模型的AP50以及AP50-95的檢測精度都有明顯提升。
圖7 實驗訓(xùn)練結(jié)果展示
3.5.1 消融實驗
通過消融實驗可以有效反映模型改進(jìn)成效。如表1所示,在將模型特征檢測尺度擴(kuò)展到P2后,AP50的精度提升了0.47百分點;在加入具有通道注意力的CA&CSPLayer后,AP50的精度提升了0.74百分點;在加入具有圖屬性的G-Swin-Block模塊后,AP50的精度提升了0.22百分點;最后在加入高精度α-CIoU回歸定位損失后,AP50的精度提升了0.58百分點。
表1 不同改進(jìn)方法的實驗結(jié)果
3.5.2 對比實驗
選取的對比模型包括:兩階段目標(biāo)檢測模型Faster R-CNN[18],并選取ResNet50[19]作為其主干網(wǎng)絡(luò);無錨框(Anchor Free)的CenterNet[20],同樣選取ResNet50作為其主干網(wǎng)絡(luò);單階段目標(biāo)檢測模型中的YOLOv3、YOLOv4-tiny和基于MobileNetV3[21]主干網(wǎng)絡(luò)的YOLOv4。實驗結(jié)果表明,ST-YOLOX-s模型具有更好的檢測性能,具體實驗數(shù)據(jù)如表2所示。
表2 主流目標(biāo)檢測模型性能對比
針對現(xiàn)有目標(biāo)檢測算法難以應(yīng)對現(xiàn)代農(nóng)業(yè)環(huán)境下多種類害蟲高精度檢測的問題,在YOLOX-s檢測模型基礎(chǔ)上,通過增添P2特征尺度、構(gòu)建具有通道特性的CA&CSPLayer、構(gòu)建具有全局圖屬性的G-Swin-Block以及α-CIoU高精度回歸定位損失,得到ST-YOLOX-s目標(biāo)檢測模型。實驗表明,ST-YOLOX-s檢測性能優(yōu)于常用的目標(biāo)檢測模型,最終AP50結(jié)果達(dá)到92.27%,AP50-95結(jié)果達(dá)到67.32%。該方法為現(xiàn)代農(nóng)業(yè)高效治理提供有益參考,模型測試效果如圖8所示。
圖8 部分害蟲檢測效果