關(guān)鍵詞:YOLOv8;車輛檢測;霧天環(huán)境;注意力機(jī)制
0 引言(Introduction)
車輛檢測是先進(jìn)駕駛員輔助系統(tǒng)和自動駕駛汽車的關(guān)鍵技術(shù)之一,然而在霧天條件下,視覺圖像的質(zhì)量會受到嚴(yán)重影響,表現(xiàn)為圖像模糊泛白、缺乏細(xì)節(jié)信息,車輛信息顯著大幅度降低,直接導(dǎo)致了交通車輛檢測質(zhì)量的下降[1]。
目前,越來越多基于卷積神經(jīng)網(wǎng)絡(luò)的圖像處理算法被提出[2],例如目標(biāo)檢測[3]。解宇虹等[4]探討了有霧場景下目標(biāo)檢測數(shù)據(jù)集的構(gòu)建和目標(biāo)檢測的解決方案。汪昱東等[5]在檢測網(wǎng)絡(luò)Faster R-CNN(Faster Region based Convolutional NeuralNetwork)中加入霧濃度判別模塊和注意力機(jī)制,并且引入可變形卷積。劉志濤等[6]使用單尺度的Retinex去霧算法結(jié)合改進(jìn)的YOLO-SSR。陳瓊紅等[7]提出結(jié)合AOD-Net(All-in-OneDehazing Network)去霧算法和SSD(Single Shot MultiBoxDetector)目標(biāo)檢測算法。院老虎等[8]通過暗通道先驗算法檢測圖像進(jìn)行霧氣生成,再基于Faster R-CNN對數(shù)據(jù)集進(jìn)行目標(biāo)識別。王啟明等[9]提出了基于改進(jìn)YOLOv3的霧天行人車輛檢測方法。
分析上述文獻(xiàn)可知,針對霧天車輛檢測目前主要采用以下方法:①采用圖像模擬,收集足夠的樣本數(shù)量;②改進(jìn)算法,提高算法在霧天環(huán)境下的魯棒性?;谝陨涎芯?,本文提出了一種改進(jìn)YOLOv8 的霧天環(huán)境下車輛檢測算法,即CSMYOLOv8。
1 YOLOv8算法(YOLOv8 algorithm)
YOLOv8算法與YOLOv3算法和YOLOv5算法一樣,都是由Glenn Jocher提出的。相較于其前身,YOLOv8算法在網(wǎng)絡(luò)主干結(jié)構(gòu)和特征提取方式上進(jìn)行了改進(jìn),具有較高的檢測精度和較低的時間復(fù)雜度,其網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示。
1.1Input
從YOLOv4 開始,YOLO 算法加入了馬賽克增強(qiáng)(Mosaic)、混合增強(qiáng)(Mixup)、空間擾動(randomperspective)以及顏色擾動(HSV augment)等技術(shù),旨在增加目標(biāo)個數(shù),豐富圖像背景。
1.2Backbone網(wǎng)絡(luò)
在Backbone部分,YOLOv8和YOLOv5秉持了一定的相似性,但YOLOv8將原有的C3模塊替換成C2f模塊。C2f模塊參考了C3模塊和YOLOv7的ELAN模塊,其結(jié)構(gòu)圖如圖2所示。
C2f模塊主要由殘差塊Bottleneck和Conv模塊構(gòu)成。從圖1中可以看出,C2f模塊使用了2個卷積塊,并加入了更多的分支,其目的是在保證輕量化的同時,獲得更加豐富的梯度流信息;而Bottleneck通過使用更小的卷積核代替大卷積核,以此加深網(wǎng)絡(luò)深度和減少網(wǎng)絡(luò)的參數(shù)量。
1.3 Neck結(jié)構(gòu)
在Neck部分,YOLOv8采用與YOLOv5相同的結(jié)構(gòu),同時使用性能更優(yōu)越的C2f模塊替換了原有的C3模塊。同時,修改了FPN+PAN模塊的結(jié)構(gòu),刪除了PAN-FPN中執(zhí)行上采樣操作前的卷積模塊,將不同階段的特征圖直接輸入上采樣,進(jìn)一步提高了網(wǎng)絡(luò)的特征提取能力。
1.4 Head網(wǎng)絡(luò)
在Head網(wǎng)絡(luò)中,與YOLOv5相比,YOLOv8有兩處明顯的修改。一處修改是采用解耦頭的結(jié)構(gòu),即兩條并行的分支分別提取類別特征和位置特征,然后各用一層1×1卷積完成分類和定位任務(wù)。另一處修改則是從有錨框變更為無錨框。YOLOv5是采用基于錨框方法提供先驗信息,對目標(biāo)物體進(jìn)行位置回歸預(yù)測。這種方法需要先確定長寬比等參數(shù),影響了檢測的效率。因此,YOLOv8變更為無錨框預(yù)測,減少了預(yù)測所產(chǎn)生的邊界數(shù)量,簡化了模型的結(jié)構(gòu)。
2 方法(Method)
為了解決網(wǎng)絡(luò)模型的精度較低的問題,對YOLOv8的Backbone層進(jìn)行重新設(shè)計,引入了輕量級的注意力機(jī)制模塊———SEAttention。該模塊憑借其高效的計算速度和極低的計算開銷,容易集成到現(xiàn)代網(wǎng)絡(luò)架構(gòu)。此外,為了使模型可以從不同角度學(xué)習(xí)語義信息,在SPPF(Spatial Pyramid Pooling-Fast)前增加了MHSA模塊,以提高目標(biāo)的特征提取能力,使模型能獲得更多的車輛特征信息。在此基礎(chǔ)上,修改了C2f模塊,引入SA-Net(Shuffle Attention)模塊,按照通道分組,針對不同位置設(shè)計了專門的注意力掩碼。CSM-YOLOv8的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖3所示。
2.1SA-Net
引入高效的注意力機(jī)制ShuffleAttention[10]可以解決模型訓(xùn)練速度過慢的問題。SA-Net模塊將輸入劃分為多個通道組,對每組子特征使用Shuffle Unit構(gòu)建通道注意力和空間注意力。每個注意力模塊設(shè)計了位置特定的注意力掩碼,用來抑制噪聲,增強(qiáng)有效語義信息,在不增加計算成本的情況下提升模型的性能。SA-Net由4個部分構(gòu)成,其結(jié)構(gòu)圖如圖4所示。
2.1.1 特征分組
首先給定特征圖X ∈RC×W ×H ,其中C 代表通道數(shù),H 和W 分別代表高度和寬度。其次按通道維度分組為g 組X =[X1,X2,X3,…,Xg],Xk=R(C/G)×W ×H 。最后將Xk 沿著通道維度分割為兩個部分,每個部分的通道數(shù)就是原通道數(shù)的一半,即C/2G。一個分支基于通道間關(guān)系生成通道注意力圖,另一個分支通過空間關(guān)系生成空間注意力圖。
2.1.2 通道注意力
首先對這一分支進(jìn)行自適應(yīng)平均池化,將每個通道上的特征圖大小降為1×1,獲得通道統(tǒng)計信息。其次對平均池化后的特征進(jìn)行線性變換,增強(qiáng)特征表示。最后將經(jīng)過線性變換后的特征圖與通過Sigmoid激活函數(shù)處理后的權(quán)重相乘,實現(xiàn)通道注意力的加權(quán),從而獲得包含通道注意力權(quán)重X'k1 的類別表示,其計算公式如下:
2.1.3 空間注意力
首先對這一分支進(jìn)行組歸一化,以此獲得空間統(tǒng)計信息,對歸一化后的特征進(jìn)行線性變換。其次將經(jīng)過線性變換后的特征圖與通過Sigmoid激活函數(shù)處理后的權(quán)重相乘嵌入全局信息,獲得空間注意力權(quán)重X'k2,實現(xiàn)空間注意力的加權(quán),其計算公式如下:
其中:W2 和b2 是通過訓(xùn)練得到的,W2,b2∈R(C/2G)×1×1;GN表示組歸一化函數(shù)。
2.1.4 聚合
首先將通道注意力和空間注意力加權(quán)后的特征X'k1、X'k2沿著通道維度進(jìn)行拼接,聚合所有子特征。其次對拼接后的特征進(jìn)行通道混洗操作,使不同分組的特征在通道維度上交錯排列,保證各個子特征的信息交互。將C2f模塊的第一個卷積替換為SA-Net模塊,修改后的C2f模塊重命名為C2f_S結(jié)構(gòu),其結(jié)構(gòu)圖如圖5所示。
通過上述方法,可以使模型更加關(guān)注圖像的空間信息,增強(qiáng)特征圖中的重要區(qū)域,從而提升模型對目標(biāo)的識別能力,特別是在霧天環(huán)境下,模型對車輛信息的提取更準(zhǔn)確、高效。
2.2SEAttention注意力機(jī)制
HU等[11]提出了通道注意力模塊SEAttention,通過對不同通道賦予不同的權(quán)重獲取每個特征通道的重要程度。SE注意力機(jī)制主要由壓縮、激勵和縮放3個部分組成,其工作機(jī)制如下。
2.2.1 壓縮
采用全局平均池化的操作,將特征圖為H ×W ×C 的通道維度降為1,即得到一個尺寸為1×1×C 的全局特征。
其中:H 、W 分別為輸入特征圖的高和寬;Zc 為平均池化層的輸出特征;Fsq(·)為壓縮操作;uc 為輸入特征圖;i 和j 均為特征圖尺寸變量。
2.2.2 激勵
通過兩層全連接網(wǎng)絡(luò)將壓縮后的特征張量進(jìn)行非線性變換,捕捉通道的內(nèi)部依賴程度參數(shù),以此得到特征通道的裁剪系數(shù)。第一層全連接網(wǎng)絡(luò)的作用是降低維度,使用ReLU函數(shù)進(jìn)行激活;第二層全連接網(wǎng)絡(luò)使降維后的維度恢復(fù)到初始的維度。通過Sigmoid激活函數(shù)預(yù)測每個通道的重要性。實質(zhì)上,通過全局特征進(jìn)行激勵操作有利于學(xué)習(xí)各通道之間的關(guān)系。將得到的權(quán)重乘以每個通道,以此增強(qiáng)網(wǎng)絡(luò)對重要通道的學(xué)習(xí)能力,進(jìn)而提高識別率。
s=Fex(z,W )=σ(g(z,W ))=σ(W2δ(W1z)) (4)其中:s 代表每個通道對應(yīng)的權(quán)重,z 是經(jīng)過squeeze操作后獲得的全局特征描述符向量,σ 代指ReLU函數(shù),δ 是Sigmoid函數(shù),F(xiàn)ex(·)是激勵函數(shù),W1 代表第一層全連接層參數(shù),W2 代表第二層全連接層參數(shù)。
2.2.3 縮放
將激勵階段輸出的每一通道的權(quán)重與原始輸入特征張量進(jìn)行通道維度上的加權(quán),這樣可以增強(qiáng)模型對重要通道的關(guān)注度,減少不重要通道的干擾。
其中:x~c 為特征映射和標(biāo)量之間對應(yīng)通道乘積;Fscale(·)為特征映射和標(biāo)量之間對應(yīng)通道乘積;sc 為壓縮操作后的權(quán)重系數(shù),即Fex(·,W )。特征壓縮與激發(fā)模塊結(jié)構(gòu)如圖6所示。
圖6中,F(xiàn)tr 表示傳統(tǒng)卷積操作;X 表示輸入;U 表示輸出;C 表示圖像通道數(shù);W 和H 分別表示圖像的寬度和高度;C'、H'、W'則分別是卷積操作Ftr 之前的圖像的通道數(shù)、高度和寬度。Fsq()代表對U 進(jìn)行全局平均池化,得到1×1×C。將輸出數(shù)據(jù)經(jīng)過Fex()操作,也就是兩級全連接;使用Sigmoid歸一化,將結(jié)果固定為0~1;將得到的值作為權(quán)重乘每個通道,作為下一級的輸入數(shù)據(jù)。
SEAttention模塊是一種輕量級的注意力機(jī)制模塊,能集成到各種網(wǎng)絡(luò)模型中,僅增加少量的模型復(fù)雜度和計算開銷。在檢測任務(wù)中,隨著網(wǎng)絡(luò)的不斷加深,模型容易忽略某些目標(biāo)特征,進(jìn)而造成目標(biāo)的漏檢。因此,通過在網(wǎng)絡(luò)中的適當(dāng)位置嵌入SE注意力模塊,給予重要的目標(biāo)特征更多的關(guān)注,從而使得提取的特征指向性更強(qiáng)且特征利用更充分。
2.3 MHSA
SRINIVAS等[12]提出了一種新的BoTNet(Bottleneck TransformerNetwork)網(wǎng)絡(luò),將卷積操作替換為多頭自注意力機(jī)制,即MHSA。該模塊的核心是多頭自注意力機(jī)制,它首先對輸入張量進(jìn)行查詢、鍵和值的轉(zhuǎn)換,其次計算注意力權(quán)重并將值向量與之相乘。如果選擇了位置編碼,模塊會在計算注意力權(quán)重時考慮位置信息。MHSA模塊結(jié)果如圖7所示。
首先,獲取輸入張量的批量大小、通道數(shù)、寬度和高度;創(chuàng)建3個1×1的卷積層,用于轉(zhuǎn)換輸入張量為查詢向量、鍵向量和值向量;對輸入張量進(jìn)行查詢向量轉(zhuǎn)換,并重塑形狀以匹配多頭注意力的要求。其次,計算查詢向量和鍵向量之間的點積,得到代表輸入序列的特征向量,即內(nèi)容矩陣;考慮到圖像和位置編碼都是二維的信息,利用h 和w 代表垂直和水平方向上的相對信息,將兩者相加得到相對位置編碼矩陣;將q 和相對位置編碼矩陣相乘得到位置矩陣,表示各個位置之間的相對的位置信息。最后,使用softmax函數(shù)計算注意力權(quán)重,將值向量與注意力權(quán)重進(jìn)行加權(quán)求和,得到最終的輸出結(jié)果。
自注意機(jī)制可以引導(dǎo)模型從不同角度學(xué)習(xí)不同的語義信息,并且優(yōu)化器中隨著模型訓(xùn)練同步更新,從而學(xué)習(xí)到更合適的相對位置編碼信息。
3 實驗(Experiment)
3.1 數(shù)據(jù)集
在霧天場景下,由于環(huán)境干擾導(dǎo)致圖像質(zhì)量差,給目標(biāo)檢測的任務(wù)帶來了較大的挑戰(zhàn)。常見的車輛檢測數(shù)據(jù)集包括UADETRAC(UA Detection and Tracking Dataset)車輛檢測數(shù)據(jù)集和BIT-Vehicle(Beijing Institute of Technology Vehicle Dataset數(shù)據(jù)集。UA-DETRAC車輛檢測數(shù)據(jù)集包含4類車輛類別,即小汽車(car)、公共汽車(bus)、貨車(van)和其他(others)。BITVehicle數(shù)據(jù)集是一個專注于車輛檢測的高質(zhì)量中國本土數(shù)據(jù)集,涵蓋了9 850張車輛圖像。這些圖像展現(xiàn)了多樣化的場景,包括不同的照明條件、車輛比例、表面顏色以及拍攝視點。
由于針對霧天場景的數(shù)據(jù)集圖片較少,無法滿足深度學(xué)習(xí)模型訓(xùn)練需求,因此本文結(jié)合UA-DETRAC車輛檢測數(shù)據(jù)集與BIT-Vehicle數(shù)據(jù)集,從中挑選4 500張作為訓(xùn)練集,另外700張作為驗證集。為細(xì)化檢測粒度,研究人員將車輛類別劃分為3 類,分別是小汽車(car)、公共汽車(bus)和其他(others)。為了提升YOLOv8在霧天環(huán)境下的車輛檢測性能,采用了一種基于大氣散射模型的數(shù)據(jù)擴(kuò)充策略。該策略通過模擬霧天的視覺效果,能增強(qiáng)模型的泛化能力,具體方法是在圖像上覆蓋一層透明度逐漸增加的白色圖層,模擬霧從地面升起的自然現(xiàn)象。通過調(diào)整參數(shù),研究人員能夠模擬不同程度的霧天效果。
通過這種方法,生成一批模擬霧天環(huán)境下車輛的圖像,并將其加入YOLOv8模型的訓(xùn)練集中。這一舉措不僅極大地豐富了訓(xùn)練數(shù)據(jù)的多樣性,還增強(qiáng)了模型在霧天環(huán)境下的魯棒性和準(zhǔn)確性。經(jīng)過霧天視覺模擬訓(xùn)練,YOLOv8模型在識別和定位霧中車輛方面的能力得到顯著提升,進(jìn)一步拓寬了其在自動駕駛和智能交通系統(tǒng)等領(lǐng)域的應(yīng)用前景。
3.2 訓(xùn)練環(huán)境
實驗在配備NVIDIA A10的服務(wù)器上進(jìn)行,實驗環(huán)境包括Python 3.9、Pytorch 1.11.0。學(xué)習(xí)率初始化設(shè)置為0.01,學(xué)習(xí)率動量設(shè)置為0.937,權(quán)重衰減設(shè)置為0.000 5,訓(xùn)練時間設(shè)置為200輪。實驗圖像的分辨率設(shè)置為640×640,批次大小設(shè)置為16。為了確保研究的可重復(fù)性和清晰度,實驗軟硬件環(huán)境如表1所示。
3.3 評價標(biāo)準(zhǔn)
為了驗證所提出模型的性能,本文使用實驗中的評價指標(biāo)主要為精度P、召回率R、平均精度AP、平均精度均值mAP和FPS。精度是正確分類的檢測到的陽性樣本的比例,而召回率是檢測到的陽性樣本的比例。精度和召回率定義如下:
其中:n 表示類別的總數(shù),在本研究中,數(shù)據(jù)集只包含一個類別的車,因此n=1。檢測速度用FPS(每秒幀數(shù))衡量,F(xiàn)PS 定義為幀速率,表示每秒可檢測的圖像數(shù)量,其定義如下:
其中:δ 表示圖像預(yù)處理時間,β 表示推理速度,NMS 表示后處理時間。
3.4 實驗結(jié)果分析
本文設(shè)計了兩組實驗,即不同改進(jìn)部分的消融實驗和與不同版本算法的對比實驗。
3.4.1 消融實驗
為了更好地驗證本研究所提出的改進(jìn)方法的有效性,對所提出的改進(jìn)方法進(jìn)行一系列的消融實驗,在實驗中使用相同的數(shù)據(jù)集進(jìn)行測試,實驗結(jié)果如表2所示。其中,C-YOLO是修改YOLOv8中C2f模塊的第一個卷積為SA-Net模塊。SYOLO是在YOLOv8的骨干網(wǎng)絡(luò)中插入了可以增強(qiáng)模型對重要特征關(guān)注程度的SEAttention注意力機(jī)制。M-YOLO模型加入了MHSA模塊。CSM-YOLOv8是本文提出的算法,包含SA-Net、SEAttention和MHSA。模型經(jīng)修改后,其網(wǎng)絡(luò)平均精度會有一定程度的提升,表2中的數(shù)據(jù)表明,本研究提出的改進(jìn)方法有效。
3.4.2 對比分析
為進(jìn)一步評估本文提出的改進(jìn)網(wǎng)絡(luò)CSM-YOLOv8的有效性和先進(jìn)性,在相同條件下與各種先進(jìn)算法進(jìn)行了對比研究。所有實驗?zāi)P褪窃跊]有預(yù)訓(xùn)練權(quán)重的情況下進(jìn)行訓(xùn)練的模型的批次大小設(shè)置為16,epochs為200。改進(jìn)后的CSMYOLOv8得到的mAP 值高于其他版本,以此驗證本研究提出的改進(jìn)方法的有效性,對比實驗結(jié)果如表3所示。
將本文網(wǎng)絡(luò)與YOLOv8原始網(wǎng)絡(luò)在自制數(shù)據(jù)下進(jìn)行可視化檢測,結(jié)果如圖8(a)至圖8(f)所示。圖8(a)、圖8(c)和圖8(e)是原始YOLOv8檢測的結(jié)果。圖8(b)、圖8(d)和圖8(f)是改進(jìn)后的模型檢測的結(jié)果。在圖8(a)和圖8(b)中,在對霧天環(huán)境下近距離車輛的檢測過程中,YOLOv8出現(xiàn)了漏檢的情況。在圖8(c)和圖8(d)中可以看到,原始的YOLOv8網(wǎng)絡(luò)檢測遠(yuǎn)距離的小目標(biāo)車輛時,會出現(xiàn)檢測精度低及漏檢的現(xiàn)象。在圖8(e)和圖8(f)中,當(dāng)出現(xiàn)多個目標(biāo)車輛時,易發(fā)生漏檢或者錯檢現(xiàn)象。改進(jìn)后的模型在對霧天遠(yuǎn)距離多目標(biāo)車輛進(jìn)行檢測時,出現(xiàn)的漏檢個數(shù)小于原始的YOLOv8網(wǎng)絡(luò)。同時,本文提出的網(wǎng)絡(luò)對霧氣濃重環(huán)境下展現(xiàn)出較好的車輛檢測魯棒性,能夠有效應(yīng)對由于車輛的特征不明顯而產(chǎn)生漏檢和錯檢的問題??偠灾?,本研究基于YOLOv8改進(jìn)的網(wǎng)絡(luò)在霧天車輛檢測任務(wù)中,特別是對于遠(yuǎn)處小目標(biāo)車輛的識別,展現(xiàn)出了顯著優(yōu)勢。與原始網(wǎng)絡(luò)相比,該改進(jìn)網(wǎng)絡(luò)有效降低了漏檢率,大幅提升了檢測效果,充分驗證了其在復(fù)雜氣象條件下的優(yōu)越性能和實用性。
4 結(jié)論(Conclusion)
為應(yīng)對霧天環(huán)境下車輛檢測精度下降的問題,本文提出了一種基于YOLOv8的改進(jìn)算法,即CSM-YOLOv8。在所提方法中,將選擇性核網(wǎng)絡(luò)SA-Net與YOLOv8模型的C2f模塊相結(jié)合作為基本框架。這一設(shè)計通過通道分組策略,并構(gòu)建通道注意力和空間注意力,有效增強(qiáng)了有效的語義信息的提取能力,從而提高了目標(biāo)識別的效率和有效性。引入了通道注意力模塊SEAttention和自注意力機(jī)制MHSA。其中,SEAttention通過對不同通道賦予不同的權(quán)重,獲取每個特征通道的重要程度,進(jìn)而提高重要特征的權(quán)重;自注意力機(jī)制MHSA能引導(dǎo)模型從不同角度學(xué)習(xí)不同的語義信息,使其更適合霧天場景下的車輛檢測。實驗結(jié)果表明,CSM-YOLOv8具有更高的檢測精度與準(zhǔn)確性,展現(xiàn)了其在霧天車輛檢測領(lǐng)域的優(yōu)越性能。未來,將繼續(xù)增加行人的數(shù)據(jù)集圖片數(shù)量,并引入更多樣化的霧天場景,以進(jìn)一步提升CSM-YOLOv8在復(fù)雜道路條件和惡劣天氣條件下的目標(biāo)檢測能力,為實現(xiàn)更廣泛、更可靠的道路目標(biāo)檢測奠定堅實的基礎(chǔ)。