鐘 斌,楊 珺,劉 毅,任錦濤
(江西農(nóng)業(yè)大學(xué) 軟件學(xué)院,江西 南昌 330045)
雜草會(huì)與農(nóng)作物爭奪水分、養(yǎng)分、光照和空間,從而影響到農(nóng)作物的生長發(fā)育,造成農(nóng)作物產(chǎn)量降低和品質(zhì)下降。因此,清除雜草是保護(hù)農(nóng)作物的一個(gè)重要措施。目前費(fèi)力耗時(shí)的人工化學(xué)除草仍然是國內(nèi)主要的除草方式。隨著智慧農(nóng)業(yè)的不斷發(fā)展,使用深度學(xué)習(xí)的方法精準(zhǔn)識別雜草,實(shí)現(xiàn)安全和高效地保護(hù)農(nóng)作物成為主流趨勢[1-3]。
在精準(zhǔn)識別領(lǐng)域,國內(nèi)外的研究已經(jīng)取得了一定進(jìn)展。ZHANG 等[4]通過傳統(tǒng)的機(jī)器學(xué)習(xí)方法對圖像紋理的信息進(jìn)行處理,使用LBP 作為特征提取器和二次支持向量機(jī)作為分類器的方法提高了對闊葉雜草的識別精度,但此類基于紋理顏色的傳統(tǒng)方法泛化能力較弱。尚文卿等[5]則使用目標(biāo)檢測框架Faster R-CNN 結(jié)合遷移學(xué)習(xí)來進(jìn)行農(nóng)田雜草的識別,將改進(jìn)的雙閾值非極大抑制運(yùn)用在Faster RCNN 上,提升精度的同時(shí)并有很好的泛化能力,但會(huì)產(chǎn)生大量額外的候選框、增加運(yùn)算量。李兆旭等[6]提出的輕量化雜草檢測模型更是讓實(shí)用性大大增強(qiáng)。
隨著Transformer[7]在計(jì)算機(jī)視覺領(lǐng)域越來越流行,Transformer 和計(jì)算機(jī)視覺兩者結(jié)合應(yīng)用的次數(shù)也越來越多,其中以Detection Transformer(DETR)[8]為目標(biāo)檢測領(lǐng)域的代表。它采用了Transformer 和神經(jīng)網(wǎng)絡(luò)的混合結(jié)構(gòu),將目標(biāo)檢測視為集合預(yù)測問題,解耦了位置和預(yù)測之間的綁定關(guān)系,簡化了目標(biāo)檢測的整體流程,刪除了NMS[9]等其他影響檢測性能的操作,并且有著與高度優(yōu)化的Faster R-CNN相當(dāng)?shù)男阅埽諗克俣缺容^慢。后來孫艷霞等[10]使用可變形卷積良好的稀疏空間采樣能力改善了DETR 收斂速度慢的問題,因此結(jié)合兩者優(yōu)點(diǎn)的Deformable DETR 更有利于精確檢測。ZHANG 等[11]基于Deformable DETR 提出了DINO(DETR with improved denoising anchor boxes for end-to-end object detection)模型。該模型為查詢提供位置先驗(yàn)并提出帶有數(shù)量一致的正負(fù)樣本的去噪訓(xùn)練,可以加快模型的收斂速度。劉珩等[12]將DETR 應(yīng)用在了識別迷彩偽裝上,實(shí)現(xiàn)了DETR 在不同領(lǐng)域的多樣應(yīng)用。以上研究極大提高了精準(zhǔn)識別領(lǐng)域的精度,但在面對目標(biāo)和背景屬于類似種類的情況下仍存在精度下降的問題。因此提出一種改進(jìn)DINO 的目標(biāo)檢測算法,該算法將改進(jìn)后的CBAM[13-14]模塊添加進(jìn)特征提取網(wǎng)絡(luò),加強(qiáng)捕捉特征信息的能力,幫助分辨相似種類的目標(biāo)和背景,在頸部采用改進(jìn)后的特征金字塔SFPN(Simple feature pyramid networks)[15-16],融合更深層的特征后能夠更準(zhǔn)確地完成識別,從而實(shí)現(xiàn)對牧場雜草的精確識別。
數(shù)據(jù)集來自Kaggle 提供的Weed detection on pastures雜草數(shù)據(jù)集,主要是分辨率為640像素×480像素的雜草圖像,包含著圖像對應(yīng)的像素級標(biāo)簽。該數(shù)據(jù)集共有2 500張圖片,按照8∶2的比例劃分訓(xùn)練集2 000張圖片,測試集500張圖片。為了提高模型的魯棒性和泛化能力,對圖片進(jìn)行隨機(jī)裁剪和尺度變化,可以隨機(jī)調(diào)整輸入圖像的尺寸,使其寬調(diào)整在480~800像素,長最大調(diào)整至1 333像素。
試驗(yàn)是在Windows 10 64bit 操作系統(tǒng)下進(jìn)行的,CPU 采 用12 核Intel(R)Xeon(R)Platinum 8255C CPU @ 2.50 GHz,GPU 采用NVIDIA GeForce RTX3090,顯存為24 GB。使用的cuda 版本為11.1,Python 3.7,pytorch 1.9.0,開發(fā)工具為pycharm。
試驗(yàn)中原模型和改進(jìn)版模型均使用相同超參數(shù),綜合考慮訓(xùn)練效果和設(shè)備性能,設(shè)置批處理大?。˙atch size)為1,學(xué)習(xí)率(lr)為0.000 1,且采用lr調(diào)度器,使用6 層Transformer 編碼器和6 層Transformer 解碼器,256 作為隱藏特征維度(Hidden dim),選用權(quán)重衰減率(Weight decay)設(shè)置為0.000 1的AdamW 優(yōu)化器,訓(xùn)練迭代次數(shù)(Epoch)為24。此外,試驗(yàn)中利用遷移學(xué)習(xí)思想在訓(xùn)練前先載入主干網(wǎng)絡(luò)ResNet 的新預(yù)訓(xùn)練模型權(quán)重,將預(yù)訓(xùn)練參數(shù)更新至改進(jìn)網(wǎng)絡(luò)中訓(xùn)練,使得模型能夠加速收斂。
改進(jìn)的DINO方法總體框架如圖1所示,它是一個(gè)類似于DETR 的模型,由一個(gè)主干網(wǎng)絡(luò)、頸部、一個(gè)多層Transformer 編碼器、一個(gè)多層Transformer 解碼器和多個(gè)預(yù)測頭組成。輸入的圖片經(jīng)過改進(jìn)后的ResNet[17]主干網(wǎng)絡(luò)提取特征,該主干網(wǎng)絡(luò)增加了深度并添加了CBAM-G(Convolutional block attention module-gaussian)注意力機(jī)制模塊和預(yù)訓(xùn)練權(quán)重[18],主干網(wǎng)絡(luò)提取到的4 個(gè)不同尺度的特征圖被輸入進(jìn)頸部特征融合模塊SFPN,經(jīng)過改進(jìn)的SFPN 模塊通過對特征圖的兩兩融合獲得更準(zhǔn)確的語義信息。然后將融合后的特征圖和位置信息輸入進(jìn)可變形Transformer 的編碼器(Encoder)和解碼器(Decoder),最后把在參考點(diǎn)附近提取到的圖像特征送入多個(gè)預(yù)測頭(Prediction heads),完成整個(gè)端到端的精確識別。
1.3.1 CBAM-G 注意力機(jī)制模塊 ResNet 網(wǎng)絡(luò)在識別和分類領(lǐng)域都有很好的效果,但對于和背景類似的雜草而言,較小差異的特征使得網(wǎng)絡(luò)難以提取更深層次的像素信息,這樣會(huì)降低主干網(wǎng)絡(luò)的性能。此外,DINO 使用的是x、y、w、h4 個(gè)維度的可學(xué)習(xí)向量[19],更加注重空間的信息,而ResNet 網(wǎng)絡(luò)的卷積操作僅在平面上從而丟失了空間特征信息。為了解決以上2 個(gè)問題,本研究在該網(wǎng)絡(luò)的Bottleneck block 中加入了基于CBAM 改進(jìn)的CBAM-G 注意力模塊。注意力機(jī)制主要通過圖像中整體位置和局部位置的依賴關(guān)系,達(dá)到模仿人類視覺的效果。在擁有更準(zhǔn)確語義信息的深層特征里需要進(jìn)一步減少次要信息和背景信息的干擾,自動(dòng)關(guān)注更重要更有用的信息,提高模型的識別精度。因此,在該注意力模塊中添加一個(gè)檢測機(jī)制,使其僅在深層特征中使用注意力機(jī)制,有針對地提取需要的像素信息。但在加入注意力機(jī)制模塊后,特征提取網(wǎng)絡(luò)和Transformer 之間較為不穩(wěn)定,精確度有所浮動(dòng)。因此在CBAM 注意力模塊中使用高斯誤差線性單元(Gaussian error linear units)[20],這樣可以更好地平衡空間特征信息,增加非線性和統(tǒng)計(jì)特性,在提升特征提取網(wǎng)絡(luò)獲取目標(biāo)特征性能的同時(shí),保持特征提取網(wǎng)絡(luò)和Transformer之間的穩(wěn)定性。
CBAM-G 主要包括2 個(gè)子模塊,分別是CAM-G(Channel attention module-gaussian)和 SAM-G(Spatial attention module-gaussian)。CAM-G 的結(jié)構(gòu)如圖2所示。特征圖的每一個(gè)通道都可以起到對關(guān)鍵信息的檢測作用,因此利用好特征圖的通道關(guān)系至關(guān)重要。在該模塊中使用最大池化和平均池化的并行連接可以提取到更豐富的高層次特征,并行連接讓2 個(gè)池化的過程互相不干擾,同時(shí)全局最大池化可以保留數(shù)據(jù)的局部特征,而全局平均池化則對數(shù)據(jù)的整體特征有更好的提取效果。然后通過2個(gè)具有非線性的完全連接層Fc1 和Fc2 來捕捉通道之間的交互信息,在完全連接層Fc1 和Fc2 中間插入了高斯誤差線性單元,給模塊加入非線性因子,提高模塊泛化能力和穩(wěn)定性。最后通過Sigmoid[21]函數(shù)生成權(quán)重值,該模塊增加了對重要信息的關(guān)注度,加強(qiáng)了目標(biāo)信息的提取能力。
圖2 CAM-G結(jié)構(gòu)圖Fig.2 CAM-G structure diagram
另一個(gè)子模塊SAM-G 的結(jié)構(gòu)如圖3 所示。該模塊首先將特征分別進(jìn)行平均池化和最大池化,再將池化后的2 個(gè)特征圖進(jìn)行拼接操作,然后對拼接后的特征圖進(jìn)行一次7×7 的卷積操作,最后利用Sigmoid 函數(shù)生成空間權(quán)重值。該模塊通過保持特征空間維度的一致性,增強(qiáng)了特征對空間信息和位置信息的關(guān)注度。
1.3.2 SFPN 特征融合 DINO 的編碼器使用的是Deformable transformer,它對主干網(wǎng)絡(luò)產(chǎn)生的4 種不同尺度大小的特征圖僅使用了步長為1 的1×1 的卷積操作將通道統(tǒng)一降成256,這種不同尺度的特征圖往往包含更多的信息,其中淺層的特征包含更加細(xì)粒度的特征,擁有像素級的定位精度,而深層特征帶有更準(zhǔn)確的上下文信息和語義信息。因此充分融合底層特征和高層特征可以獲得更有用的特征表達(dá),也能減少無用信息的干擾。另外由于批處理的大小較小,使用Group normalization[22]替換了原本的Batch normalization,從而提高網(wǎng)絡(luò)對雜草精準(zhǔn)識別的精度并減少模型計(jì)算開銷。因此,本研究使用一種簡單的輕量化的特征金字塔SFPN,與算法中原有的特征融合模塊相對比,減少了計(jì)算開銷,它是在FPN 的基礎(chǔ)上進(jìn)行的改進(jìn)(圖4)。對主干網(wǎng)絡(luò)生產(chǎn)的特征圖進(jìn)行融合操作,將原圖1/2 大小的特征圖F1、原圖1/4 大小的特征圖F2 和原圖1/8 大小的特征圖F3 作為輸入。對F1 進(jìn)行步長為8 的3×3 的卷積操作,對F2 進(jìn)行步長為4 的3×3 的卷積操作,對F3進(jìn)行步長為2的3×3的卷積操作,同時(shí)使特征通道數(shù)都為256,然后使用一次組數(shù)為32 的組歸一化(Group normalization)層對F1、F2 和F3 做標(biāo)準(zhǔn)化,最后特征F1 與特征F3 相加,特征F2 與特征F3相加,分別經(jīng)過激活函數(shù)Relu 后得到融合特征P1和P2。
圖4 SFPN 結(jié)構(gòu)圖Fig.4 SFPN structure diagram
1.3.3 ResNet 網(wǎng)絡(luò) 主干網(wǎng)絡(luò)ResNet 被廣泛應(yīng)用于特征提取,其殘差模塊可以有效地緩解梯度消失和梯度爆炸等問題,同時(shí)它有很好的分類性能。原始模型DINO 使用的ResNet 網(wǎng)絡(luò)一共有4 個(gè)Block,分別有3、4、6、3 個(gè)Bottleneck。由于前2 個(gè)Block 分辨率較高,增加深度會(huì)使計(jì)算量增加,因此將第3個(gè)Block 的數(shù)量增加至23 個(gè),可以提高ResNet 特征提取的能力,同時(shí)只會(huì)增加極少的計(jì)算量。圖5 顯示的是第3個(gè)Block的結(jié)構(gòu)圖。
獲得之前2個(gè)Block處理后的特征圖,先經(jīng)過一次1×1 的卷積操作,使用尺度歸一化[23]對特征進(jìn)行標(biāo)準(zhǔn)化,穩(wěn)定網(wǎng)絡(luò),再使用高斯誤差線性單元進(jìn)行激活,增加各層非線性關(guān)系,同時(shí)防止出現(xiàn)過擬合的現(xiàn)象,提高與Transformer 之間的匹配度和穩(wěn)定性,然后再經(jīng)過一次3×3的卷積操作,重復(fù)歸一化和激活函數(shù)后再進(jìn)行1×1 的卷積操作,再一次使用尺度歸一化,最后與Identity 相加,一起被激活函數(shù)激活。
在目標(biāo)檢測領(lǐng)域里,為了更好地驗(yàn)證改進(jìn)后DINO 模型的識別性能并進(jìn)行對比,采用目前常用的AP50、AP75和平均像素精度(mAP0.50:0.95)作為性能評估指標(biāo)。其中,AP50和AP75分別表示交并比(IOU)閾值為0.50 和0.75 情況下的檢測精度。mAP0.50:0.95表示的是交并比閾值0.50 和0.95 之間每0.05 情況下檢測精度的平均值。通過計(jì)算mAP0.50:0.95的高低,來衡量該模型的性能。
如表1 所示,組別1 表示原DINO 模型不使用預(yù)訓(xùn) 練 權(quán) 重 的 結(jié) 果,mAP0.50:0.95為78.16%,AP50為92.85%,AP75為85.53%。組別2 表示在原主干網(wǎng)絡(luò)ResNet 的基礎(chǔ)上增加深度并使用改良的預(yù)訓(xùn)練權(quán)重,mAP0.50:0.95、AP50、AP75分別提升了4.35、2.70、3.59個(gè)百分點(diǎn),增加深度可以讓主干網(wǎng)絡(luò)提取到更深層的特征。組別3 是在組別2 的基礎(chǔ)上使用SFPN 模塊改進(jìn)原本的特征融合模塊,對更深層的特征與原有淺層特征進(jìn)行融合,同樣在IOU 比較低時(shí)的精度方面有一定的提升。組別4 是在組別2 的基礎(chǔ)上在主干網(wǎng)絡(luò)中引入了CBAM-G 注意力機(jī)制模塊,該模塊在減少負(fù)面特征的影響后,能夠提升提取關(guān)鍵特征的性能,相較于組別2 的mAP0.50:0.95提升0.98 個(gè)百分點(diǎn),但I(xiàn)OU 比較低時(shí)提升較小。由此可見,組別3和組別4分別提升模型在IOU 閾值低和高時(shí)的識別精度,兩者互補(bǔ)互利。因此,組別5 在組別2 的基礎(chǔ)上同時(shí)使用SFPN 模塊和CBAM-G 模塊,mAP0.50:0.95、AP50和AP75都有一個(gè)大的提升,驗(yàn)證了本研究引用的特征融合和注意力機(jī)制對精確識別起到了一定效果。
表1 消融試驗(yàn)結(jié)果Tab.1 Ablation experiment results %
在牧場雜草數(shù)據(jù)集上驗(yàn)證CBAM-G 注意力機(jī)制和SFPN 融合的有效性,并與原DINO 算法進(jìn)行比較,如圖6所示,虛線為改進(jìn)后DINO算法,實(shí)線為原DINO 算法,兩者在0 輪到1 輪左右精度差距較小,第3 輪的時(shí)候精度差距最大,隨后就保持10 個(gè)百分點(diǎn)左右的精度差距不變,證明了CBAM-G 和SFPN對提升檢測精度有一定作用。圖6 和圖7 曲線都較為平穩(wěn),說明模型比較穩(wěn)定。
圖6 平均像素精度對比圖Fig.6 mAP0.50:0.95 comparison chart
圖7 像素精度mAP50對比圖Fig.7 mAP50 comparsion chart
為了驗(yàn)證本研究算法改進(jìn)的有效性,將其與EfficientDet[24]、DETR 和DINO 不同網(wǎng)絡(luò)的版本進(jìn)行對比試驗(yàn),如表2所示,不同的模型均使用相同的數(shù)據(jù)集和參數(shù),DETR 由于收斂速度較慢,在相同的24輪情況下mAP0.50:0.95僅有41.10%,輪數(shù)到500 輪時(shí)主干mAP0.50:0.95可以達(dá)到66.21%,EfficientDet 則比DETR 略高2.49 個(gè)百分點(diǎn),EfficientDet 在IOU 閾值為50 的情況下表現(xiàn)較好,在24 輪的情況下依舊可以達(dá)到86.41%。DINO 因?yàn)槭褂玫闹鞲删W(wǎng)絡(luò)不同,因此性能有一定的差距,在不使用數(shù)據(jù)集專屬預(yù)訓(xùn)練權(quán)重的情況下,改進(jìn)后DINO 模型的主干網(wǎng)絡(luò)ResNet+比原DINO 的ResNet50 在mAP0.50:0.95上提升5.36 個(gè)百分點(diǎn),由此可見,不同主干網(wǎng)絡(luò)和相同主干網(wǎng)絡(luò)不同的深度對精確度都有很大的影響。通過對比試驗(yàn)可知,本研究改進(jìn)的算法無論是在mAP0.50:0.95還是AP50和AP75上都有很好的表現(xiàn),實(shí)現(xiàn)了對雜草識別精度的提升。
表2 不同網(wǎng)絡(luò)的對比結(jié)果Tab.2 Comparative experiment of different networks %
改進(jìn)前DINO 和改進(jìn)后DINO 的目標(biāo)檢測效果對比如圖8—9 所示,改進(jìn)前DINO 模型的目標(biāo)框準(zhǔn)確率僅為78.1%,通過對比圖中不同模型所畫出的目標(biāo)檢測框,可以發(fā)現(xiàn),改進(jìn)前DINO 模型在對牧場里雜草進(jìn)行精確識別時(shí)不能準(zhǔn)確地找到雜草邊緣,有10%左右的誤差偏移。這是因?yàn)樵镜腄INO模型在編碼和解碼過程中直接使用主干網(wǎng)絡(luò)提取的深層語義信息和淺層語義信息,未能充分將兩者結(jié)合并利用輸入特征的其他細(xì)節(jié)信息,從而在相似環(huán)境下的識別效果不佳,而改進(jìn)后DINO 模型使用了輕量化和實(shí)用的SFPN 模塊,讓深層語義信息和淺層語義信息充分融合,加強(qiáng)了上下文語義信息的聯(lián)系,對于雜草邊緣的識別更加清晰,更能找出環(huán)境和目標(biāo)之間的差異。從最后一行識別效果可以看出,改進(jìn)前DINO 模型對于小目標(biāo)的識別精度不高,未能準(zhǔn)確地框出小目標(biāo)的邊緣,而本方法效果更好。綜上所述,本研究方法在相似環(huán)境下的牧場雜草圖像數(shù)據(jù)集上的識別更加精細(xì)和準(zhǔn)確,效果更優(yōu),但是也存在小目標(biāo)邊界不夠準(zhǔn)確的問題。
圖8 改進(jìn)前DINO效果圖Fig.8 Rendering of DINO before improvement
圖9 改進(jìn)后DINO效果圖Fig.9 Rendering of DINO after improvement
針對DINO 模型應(yīng)用于背景和目標(biāo)較為相似的雜草精確識別時(shí)出現(xiàn)的精確度下降和穩(wěn)定性較差的問題,本研究在DINO 模型的基礎(chǔ)上進(jìn)行改進(jìn)。為了保持特征提取網(wǎng)絡(luò)和Transformer 之間的穩(wěn)定性,減少次要特征信息的影響和提高對重要特征信息的把握,在特征提取主干網(wǎng)絡(luò)ResNet 中增加改進(jìn)后的CBAM-G 模塊,同時(shí)引入輕量化特征融合SFPN 模塊,增強(qiáng)底層特征信息和高層特征信息的聯(lián)系,實(shí)現(xiàn)對多尺度特征信息的有效利用,從而提高模型的精確識別性能。在牧場雜草數(shù)據(jù)集上通過消融試驗(yàn)以及與其他經(jīng)典算法的對比試驗(yàn)證明了改進(jìn)后的模型各方面都優(yōu)于原模型,有較好的精確識別效果,其中mAP50達(dá)到了95.89%。
在農(nóng)業(yè)雜草防除的研究中,如何精確識別雜草是保護(hù)農(nóng)作物的基礎(chǔ),同時(shí)也是雜草防除的大前提,對于推動(dòng)雜草的研究有很大的發(fā)展意義。因此,考慮如何增加方法的實(shí)用性,提高識別雜草的類別數(shù)量并拓寬應(yīng)用環(huán)境會(huì)成為未來試驗(yàn)和工作的重點(diǎn),并且在不降低雜草識別準(zhǔn)確率的情況下,往模型中引入掩碼機(jī)制,生成掩碼矩陣過濾無用特征,提升模型效率和準(zhǔn)確率。此外還需要豐富模型的識別種類,深入研究雜草在水田和蔬菜園等復(fù)雜場景下的精確識別,進(jìn)一步提升模型的實(shí)際應(yīng)用價(jià)值和性能。