張 鋆,李溫溫
(1.吉林化工學院 信息與控制工程學院,吉林 吉林 132022;2.白城師范學院 機械與控制工程學院,吉林 白城 137000)
除草是農業(yè)生產中十分重要的一環(huán),據統計我國每年因雜草造成的主要糧食作物損失約3 000 千噸[1]。目前廣泛采用的除草方法是大范圍地噴灑除草劑,這不但會造成嚴重的環(huán)境污染,還會使殘留的農藥通過飲食等途徑進入人體。隨著農業(yè)技術的發(fā)展,自動化精準除草成為一種趨勢,針對雜草識別領域的研究也在不斷深入,其關鍵點在于如何對作物幼苗與雜草進行精準且實時地識別與定位[2]。
針對作物的識別定位,傳統機器學習算法通常利用植株的顏色、形狀、紋理等一種或多種特征組合來實現。張小龍[3]等人分析豌豆苗與雜草背景的顏色特征,基于色差分量完成了對作物幼苗與雜草的識別,準確率為83.5%,并使用Canny算子實現了對雜草的定位。李先鋒[4]等人對葉片提取了包括幾何特征與矩特征的17個特征,結合蟻群優(yōu)化和SVM在棉田環(huán)境中的雜草實現了95%的分類準確率。近年來,深度學習開始廣泛應用于計算機視覺領域,強大的計算能力使它可以提取圖像深層次的特征,進而完成目標的識別與定位。國內已有一些學者將深度學習方法應用在農業(yè)目標檢測領域。王根[5]等以YOLOv3為基準,改進模型先驗框的選取方法和損失函數,在茶樹與雜草檢測數據集上的精確率為82.41%。彭明霞[6]等以田間棉花與雜草為研究對象,使用融合了FPN的Faster-RCNN模型完成了目標的識別與定位,通過構建特征金字塔融合來自不同特征層的信息,在該任務上達到95.5%的MAP。亢潔[7]等從多尺度融合與特征增強的角度對SSD算法模型進行了改進,在甜菜與雜草數據集上的MAP為88.84%,并提高了模型的檢測速度。
在上述相關研究中,傳統算法需要人工手動設計特征,難度較高,且田間環(huán)境較為復雜,在不同光照條件、背景等干擾下人工設計的特征往往魯棒性較差,實際應用中檢測精度會有所降低。深度學習方法可以通過建立模型從數據中學習到復雜特征,魯棒性較強,相較于傳統算法具有一定的優(yōu)勢。但已有方法中所使用的模型結構較為復雜,計算量大,由于嵌入式設備通常算力較小,考慮到實時性問題,應使用更為輕量且高效的模型結構來應用于檢測任務,以達到檢測精度與速度的均衡[8]。此外,為提高模型的特征提取能力,上述部分文獻使用了基于注意力的方法,但缺少了對空間局部信息與全局信息的關注以及信息間的交互。文獻中所使用的定位損失函數也存在收斂較慢,定位不準確的缺點,影響了最終的模型精度。
為解決以上問題,本文選擇結構較為輕量的YOLOv5s作為基準網絡并進行改進,提出一種基于CA(坐標注意力)[9]的改進模塊DCA充分利用特征中的空間信息,來提高模型的檢測精度。其次,在定位損失的計算部分將原模型使用的GIOU替換為EIOU[10],從而更精確地指導模型參數的更新。實驗證明,改進后的算法對比原模型檢測能力得到提高,相較于其他主流目標檢測算法也擁有更好的性能。
YOLOv5s是目前較為先進的目標檢測模型,根據模型的寬度和深度不同可分為s、m、x、l四個版本,本文選用速度與精度兼顧的YOLOv5s-5.0作為基礎模型,如圖1所示。整個模型可分為Backbone、Neck、Head三個部分。
圖1 YOLOv5s模型結構圖
Backbone部分負責主要的特征提取工作由CBS、Focus、C3、SPP[11]等多個模塊堆疊而成。其中CBS模塊是Conv(卷積層)、BN(歸一化層)以及SiLU(激活函數)的組合,用來對圖像進行特征的提取、歸一化,并賦予模型非線性的能力。輸入圖像經過Focus模塊會被切片成原圖像一半的高和寬,并在通道維度上進行拼接,然后通過CBS結構進行特征提取,來整合各通道的信息。該模塊可以在不損失原始圖像信息的情況下對圖像進行下采樣。C3模塊則由一系列的CBS結構結合殘差網絡[12]思想構建而成,對進一步增強模型的特征提取能力,優(yōu)化訓練過程中的梯度傳播路徑起到了重要作用。最后的SPP結構通過使用不同大小的池化核,對輸入特征圖進行多尺度的最大池化下采樣,并在通道維度進行拼接,豐富了特征的維度。
Neck部分采用了FPN+PAN的結構,對來自主干網絡的三個不同尺度大小的特征層,首先建立自頂向下連接,使得頂層的強語義信息能夠傳遞給底層的特征圖,再通過自底向上的PAN結構,將底層的細節(jié)信息傳遞給高層特征。通過不同尺度特征圖間的信息流動與特征融合,可以為后續(xù)的多尺度大小目標檢測提供更有效的特征。
YOLOv5s的Head部分負責最后的預測輸出,由三個不同大小的檢測器構成,分別對應了來自Neck部分的三個特征圖。每個檢測器又使用了三種不同大小的錨框在對應特征圖上尋找目標,最終我們會使用9種不同尺度大小的錨框來搜索目標。淺層的特征圖含有更多的細節(jié)信息,有助于小目標的檢測,深層的特征圖語義信息豐富,適合用來檢測較大的目標。檢測器會輸出位置信息,類別信息以及得分情況,再經過非極大值抑制算法過濾掉冗余的預測框,就得到了最終的預測結果。
為提高模型的特征提取能力,同時保證整體具有較低的計算量,需要設計高效的結構來進行特征提取。不同的特征對模型最終預測的貢獻不同,我們希望模型能更加關注關鍵信息。注意力機制可以通過模型訓練得到一組權重作用在輸入特征圖上,從而達到強化關鍵信息的目的。CA注意力(如圖2所示)是2021年被提出的一種輕量化的注意力結構,與通常采用的二維全局池化的方式來提取特征的通道注意力不同,CA注意力使用兩個一維的特征編碼,沿一個方向捕獲遠程依賴關系的同時可以沿另一個方向保留精確的位置信息,并對這組信息進行特征提取。最后作用于輸出特征圖上來強化網絡對感興趣區(qū)域的表示,并抑制噪聲干擾等無關信息。
圖2 CA注意力模型結構圖
CA注意力使用了平均池化的方式來進行一維的特征編碼,我們認為平均池化的采樣方式能夠更好地包含物體的背景信息,有助于模型的分類,但會忽略掉一些細節(jié)。而最大池化的采樣方式,可以關注目標的紋理等細節(jié)信息。在實際生產環(huán)境下,作物與雜草的背景信息是相似的,紋理及邊緣信息對作物與雜草的識別能夠起到重要作用。因此本文為CA注意力添加了一個分支,使用最大池化來提取這部分關鍵特征,并在最后與平均池化的分支合并。兩分支共同作用于輸出特征圖,強化最終的分類和定位效果。本文將其命名為DCA注意力模塊,該模塊是一種輕量的網絡結構,只會略微增加參數量和計算量。DCA注意力結構如圖3所示。
圖3 DCA注意力模型結構圖
對輸入的特征圖,首先使用(1,W),(H,1)兩個一維的平均池化核以及相同大小的兩個最大池化核分別對通道信息進行編碼。以對特征圖的高度信息編碼為例:通過平均池化核,高度為h的第c個通道的輸出如公式(1)所示。
(1)
而通過最大池化核,高度為h的第c個通道的輸出如公式(2)所示。
(2)
(3)
(4)
(5)
(6)
其中σ是sigmoid激活函數。Fh與Fw是兩組不同的卷積層,分別接受來自寬和高的特征信息,并恢復通道數。將得到的兩組特征張量作為學習到的權重作用在特征圖上,完成對特征的強化表示。當輸入的特征圖為xc(i,j)時,通過整個注意力結構的輸出可表示為公式(7)。
(7)
由此,便完成了利用注意力模塊對特征加權的過程,使得模型能夠更為關注重要的特征,同時抑制背景等無關信息。
在目標檢測的相關任務中,常用IOU來判斷預測結果的定位準確程度,它表示預測框與真實框的交集面積與兩框并集面積的比值,如公式(8)所示。
(8)
式中B和Bgt分別指代模型的預測框與標簽給定的真實框。在YOLOv5s中損失函數可分為類別損失,定位損失以及置信度損失三部分,原模型的定位損失使用了GIOU損失函數。相對于IOU,GIOU引入了能夠同時包含預測框與真實框的最小外接矩形的面積,作為衡量預測結果與真實標簽差異的因子,解決了預測框與真實框不相交時梯度為0,訓練過程難以優(yōu)化的問題。但當預測框或真實框在另一框的內部時,該函數無法度量內部位置關系,導致定位精度降低以及模型收斂較慢。
EIOU損失函數是在IOU的基礎上,將兩框的中心點距離,寬和高的比值等因素均作為懲罰項,來度量兩框在任何情況的位置關系,EIOU定位損失計算如公式(9)所示。
(9)
本文以YOLOv5s為基礎模型,將DCA注意力模塊與YOLOv5s進行融合,以強化重要特征的權重,用于后續(xù)Neck部分的特征融合。在YOLOv5s中C3模塊借鑒了CSPnet[13]的設計思想,是主要的特征提取模塊,在主干網絡中有三種不同結構的C3模塊,我們將DCA模塊添加在Backbone中的4組C3模塊之后,構成DCAC3模塊,以達到強化重要特征權重的目的。此外,引入了EIOU損失函數來替換YOLOv5s原有的定位損失,從而更好地量化模型在訓練階段的預測框回歸情況,指導模型梯度更新。改進后的網絡結構如圖4所示。
圖4 改進的YOLOv5s模型結構圖
圖5 部分數據增強方法
本文實驗的操作系統為ubuntu20.04,采用pytorch1.11.0版本深度學習框架。具體的實驗硬件環(huán)境:CPU型號為Intel(R) Xeon(R) CPU E5-2680 v4,顯卡型號為GeForce RTX 3060,顯存大小為12GB,內存大小為20GB。
在數據加載階段,我們將輸入圖像調整為640*640的固定大小以適應模型的輸入,訓練過程使用Adam作為優(yōu)化器,并將初始學習率設置為0.001,采用余弦退火策略來動態(tài)調整學習率。為了加快收斂速度,結合遷移學習的思想,將部分預訓練模型權重加載進模型作為初始化的參數。Batchsize設置為8。為了使初始先驗框能更好地適配數據集,使用Kmeans聚類算法來生成9個大小尺度不同的先驗框。觀察模型在訓練過程中,驗證集損失的下降情況,在模型收斂后保存權重文件,并在測試集進行測試,從而得出實驗結果。
針對多目標檢測任務,本文采用mAP(平均精度),FPS(檢測速度),Params(模型參數量)作為評估指標。平均精度可由Precision(精確率),Recall(召回率)來計算得出。Precision反映了檢測到的目標中有多少是分類正確的,如公式(10)所示。
(10)
Recall表示所有的待檢測目標中有多少被正確地檢測到了,如公式(11)所示。
(11)
式中,P和R分別表示精確率和召回率;TP和FP表示被預測為正類的正樣本數量以及被預測為正類的負樣本數量;FN表示被預測為負類的正樣本數量;N表示了數據集中的樣本類別數,在本文中取N=5。
mAP是目標檢測中最重要的指標,它綜合考慮了精確率和召回率,能夠反映模型檢測效果的整體性能。
其中,單類別平均精度計算過程如公式(12)所示。
(12)
所有類別的平均精度計算如公式(13)所示。
(13)
為了衡量定位性能,在計算mAP時需要指定IOU的閾值,只有當預測的結果框圖與真實值的標簽IOU超過閾值且類別預測正確時,我們才認為模型成功檢測到了目標,一般普遍使用的IOU閾值為0.5。此外,另一種常用的評估方式是將IOU在0.5到0.95這個區(qū)間范圍內,每間隔0.05,做一次mAP計算,并最終在整個區(qū)間內取平均。這種方式能更好地評估模型在更高定位要求下的表現。FPS也是一項重要的參考指標,表示每秒能處理的圖片數量。Params在一定程度上體現了模型的復雜程度,參數量越小越容易移植在移動設備上。
為驗證不同注意力結構對實驗結果的影響,本文將所提方法與常用注意力結構做了對照實驗,在網絡的相同位置添加了不同模塊,結果如表1所示。
表1 YOLOv5s結合不同注意力結構的作用效果對比
在損失函數的選擇上,本文對添加了DCA模塊之后的網絡設置對照實驗,探究多種主流損失函數的作用效果,如表2所示。
表2 基于YOLOv5s+DCA的不同損失函數對照實驗
由于損失函數的選擇不影響推理過程的速度以及模型本身的參數量,因此實驗只取了前兩項評估指標,由表2可知,CIOU,SIOU,EIOU三種損失函數均優(yōu)于原本的GIOU損失。EIOU在實驗中達到了最好的效果,因此本文選擇該損失函數作為模型的定位損失。
各模塊對網絡的作用效果,設置消融實驗,實驗結果如表3所示。
表3 消融實驗
將該方法與其他主流目標檢測模型進行對照實驗,結果如表4所示。
表4 與其他主流目標檢測方法效果對比
模型改進前后檢測效果對比見圖6。
圖6 模型改進前后檢測效果對比
如圖6所示,(a1),(b1),(c1),(d1)為YOLOv5s的檢測結果圖,(a2),(b2),(c2),(d2)為本文所提出模型的檢測結果??梢钥闯?a1)存在對植株類別的誤檢,(a2),(a3)發(fā)生了對圖像邊緣部分目標的漏檢情況,(a4)也存在對小目標的漏檢問題。本文提出的算法在結合了DCA注意力模塊和EIOU損失函數后,增強了模型的特征提取能力以及定位能力,成功檢測到了以上誤檢,漏檢的目標。