劉瑞峰,孟利清
(西南林業(yè)大學(xué) 機械與交通學(xué)院,昆明 650224)
近年來,隨著經(jīng)濟和社會的發(fā)展,機動車作為一種方便的交通工具得到大規(guī)模的使用,截至2022 年3 月底,全國機動車保有量達(dá)4.02 億輛。然而眾所周知的是,機動車輛事故也可能會給社會及個人帶來嚴(yán)重危害?;诖?,無人駕駛汽車的開發(fā)和推廣對保障行車安全、提高通行效率發(fā)揮著重要作用[1]。自動駕駛?cè)找媸艿綇V泛關(guān)注。目標(biāo)檢測作為自動駕駛環(huán)境感知中圖像方面的關(guān)鍵技術(shù),也吸引了眾多學(xué)者參與研究[2]。丁樂樂[3]提出了一種深度學(xué)習(xí)與強化學(xué)習(xí)相結(jié)合的方法來對大巴車、轎車和貨車進(jìn)行分類。然而,由于缺乏有效訓(xùn)練數(shù)據(jù)集,即需進(jìn)一步證明模型的適應(yīng)性。余勝等人[4]提出了復(fù)雜場景下車輛識別方法,對漏標(biāo)注、誤標(biāo)注的車輛進(jìn)行重新標(biāo)注,但是卻沒有關(guān)注到自動駕駛場景下的遮擋問題。在自動駕駛視角下,車輛目標(biāo)往往會存在如目標(biāo)間遮擋、環(huán)境背景遮擋等現(xiàn)實問題[5],會直接影響目標(biāo)檢測的準(zhǔn)確度。在真實環(huán)境下對車輛檢測的錯誤,會對自動駕駛造成不小的干擾,甚至引發(fā)后續(xù)安全問題。
因此,對于真實場景下因車輛間遮擋、環(huán)境背景遮擋而導(dǎo)致的車輛檢測中產(chǎn)生的誤檢、漏檢等問題,亟需研發(fā)能夠在復(fù)雜場景中對車輛進(jìn)行較為準(zhǔn)確檢測的車輛檢測算法。研究可知,YOLOv4 算法有著檢測準(zhǔn)確率高和檢測速度快的優(yōu)點,能滿足車輛檢測對實時性和準(zhǔn)確度的要求[6]。但是YOLOv4 算法應(yīng)用于車輛檢測時,也存在因復(fù)雜場景下車輛重疊遮擋和環(huán)境背景遮擋問題導(dǎo)致的誤檢和漏檢問題[7]。
因此,本文提出了一個改進(jìn)的YOLOv4 算法,在YOLOv4 網(wǎng)絡(luò)的Neck 部分添加了CBAM 通道和空間注意力機制。并采用k-means 均值算法,生成合適的錨框應(yīng)用于該網(wǎng)絡(luò),提升算法對真實環(huán)境下不同尺寸車輛的識別率。以期為自動駕駛車輛識別提供一個有效的方法。
YOLOv4 的輸入為固定大小。主干網(wǎng)絡(luò)(Backbone)與YOLOv3算法相比,使用了CSPDarkNet 網(wǎng)絡(luò)。CSPDarkNet 網(wǎng)絡(luò)的整體CSP 結(jié)構(gòu)是將原來的網(wǎng)絡(luò)分為2 部分。一部分是原來的殘差結(jié)構(gòu)、另一部分通過運算后直接與前一部分的運算結(jié)果結(jié)合,有效提升了網(wǎng)絡(luò)的學(xué)習(xí)能力。YOLOv4網(wǎng)絡(luò)在保持一定輕量化的同時,擁有較高的識別精度。主干網(wǎng)絡(luò)與頸部網(wǎng)絡(luò)通過3 個尺寸的通道頭進(jìn)行連接。3 種尺度用以檢測大、中、小型的物體。網(wǎng)絡(luò)的頸部(Neck)采用了PANet 結(jié)構(gòu),用來進(jìn)行特征融合。為YOLOv4 網(wǎng)絡(luò)還提出了moasic 數(shù)據(jù)增強方法,使網(wǎng)絡(luò)能夠在有限的數(shù)據(jù)集上得到更好的效果。
CBAM 注意力機制包括通道注意力機制(Channel Attention Module,CAM)和空間注意力機制(Spartial Attention Module,SAM)[8]。CBAM 模塊中,通道注意力模塊的輸出作為空間注意力模塊的輸入。CAM 模塊中,輸入特征圖先經(jīng)過一個全局平均池化和全局最大池化層,再經(jīng)過Sigmoid激活操作,生成通道注意力特征Mc,再與該模塊的輸入相乘,得到空間注意力模塊需要的特征圖。通道注意力特征Mc計算公式可表示為:
其中,“σ” 為Sigmoid操作。
SAM 空間注意力模塊中,輸入特征圖同時進(jìn)入全局平均池化和全局最大池化,通過2 個池化層進(jìn)行通道拼接,經(jīng)過7*7 卷積層卷積操作后輸入Sigmoid層,由此得到的空間注意力特征Ms與該子模塊的輸入做乘法,得到最終生成的特征。空間注意力特征計算Ms可由式(2)進(jìn)行描述:
聚類算法是能夠通過數(shù)據(jù)的特點,將具有相似特征的數(shù)據(jù)分為同類的算法[9]。k-means 算法是通過選定K個中心點,再計算數(shù)據(jù)中每個例子到中心點的歐氏距離,將距離相近的數(shù)據(jù)劃分到一類。分類后,重新計算同類數(shù)據(jù)的中心點,得到K個新的中心點后重復(fù)上述過程。當(dāng)各類別中的數(shù)據(jù)劃分不再變化時,最終確定K個中心點。k-means 聚類算法的損失函數(shù)具體如下:
將K-means 聚類算法引入到錨框的選定上,可以提高檢測的準(zhǔn)確率[10]。通過k-means 算法計算錨框時,需要引入新的損失函數(shù)來評價錨框。采用IoU的損失函數(shù)見式(4):
其中,i為目標(biāo)真實框的長寬;c為中心點的長寬;IoU是計算聚類中心與真實框交并比的過程。交并比是2 個框在圖像上的交集與并集之比,交并比越接近1,說明2 個框的重合程度越高。因此,用1 減去交并比的差來作為本文聚類算法的損失函數(shù),能夠較為合理地評價錨框?qū)τ谥付〝?shù)據(jù)集的優(yōu)劣。本文由BBD100K 數(shù)據(jù)集生成的anchor box 尺寸大小 為[6,2],[7,5],[10,4],[11,7],[17,6],[23,11],[42,17],[78,31],[165,72]。
本文主要對YOLOv4 算法的網(wǎng)絡(luò)結(jié)構(gòu)、錨框生成進(jìn)行改進(jìn)。網(wǎng)絡(luò)結(jié)構(gòu)上,本文將CBAM 注意力模塊分別添加在PANet 的3 個輸入后面,再分別添加4 個CBAM 注意力模塊到2 個上采樣和2 個下采樣模塊上的輸出上。注意力模塊對輸入的通道和空間位置進(jìn)行加權(quán)后輸出,不改變特征圖的維度。改進(jìn)后的YOLOv4 模塊如圖1 所示。同時,網(wǎng)絡(luò)采用了由k-means 聚類算法在數(shù)據(jù)集上計算出的錨框,可以使錨框尺寸適合數(shù)據(jù)集中的物體。
圖1 改進(jìn)的YOLOv4 目標(biāo)檢測網(wǎng)絡(luò)Fig. 1 Improved YOLOv4 target detection network
數(shù)據(jù)集選用由加州大學(xué)伯克利分校發(fā)布的BBD100k 數(shù)據(jù)集,這是自動駕駛領(lǐng)域規(guī)模最大,場景最多樣的駕駛視頻數(shù)據(jù)集之一。數(shù)據(jù)集中包含晴天、陰雨天、夜晚等各種車輛行駛中采集的圖像數(shù)據(jù)。本文從中選取了10 000 張圖片作為數(shù)據(jù)集,其中2 000 張為測試集,1 600 張為驗證集,6 400 張為訓(xùn)練集。本文刪去原數(shù)據(jù)集的pedestrian、rider、train、motorcycle、bicycle、traffic light、traffic sign、trailer 類,將car、truck、bus 合并為vehicle 類。
實驗平臺為Windows10,GPU 為RTX3070,顯存為8 G;CPU 為R9 5900hx,內(nèi)存為16 G。
消融實驗中,優(yōu)化器種類為Adam,初始學(xué)習(xí)率設(shè)為0.001,最小學(xué)習(xí)率為0.000 01,momentum設(shè)為0.937,學(xué)習(xí)率下降方式設(shè)為cos。epoch設(shè)為100,使用主干網(wǎng)絡(luò)預(yù)訓(xùn)練權(quán)重,前50 個epoch凍結(jié)Backbone 訓(xùn)練,凍結(jié)時batch_size設(shè)為8,解凍階段batch_size設(shè)為4。輸入圖片尺寸設(shè)為416×416,使用mosaic 數(shù)據(jù)增強方法。
對比實驗中,優(yōu)化器為Adam,學(xué)習(xí)率下降方式設(shè)為cos,epoch設(shè)為100,凍結(jié)訓(xùn)練50 個epoch后進(jìn)行解凍訓(xùn)練。其他參數(shù)因各算法網(wǎng)絡(luò)結(jié)構(gòu)不同,選擇各模型推薦參數(shù)進(jìn)行訓(xùn)練。
為驗證改進(jìn)網(wǎng)絡(luò)的效果,進(jìn)行消融實驗。改進(jìn)前后網(wǎng)絡(luò)在測試集上的表現(xiàn)見表1。由表1 可知,添加了注意力機制后的網(wǎng)絡(luò)在數(shù)據(jù)集上的準(zhǔn)確率Precision達(dá)到了82.23%,比基線網(wǎng)絡(luò)提高了4%。添加了k-means 算法生成的錨框后,準(zhǔn)確率達(dá)到了83.24,比基線網(wǎng)絡(luò)提高了5.3%。添加了注意力機制并采用k-means 算法生成錨框的模型與基線網(wǎng)絡(luò)相比,準(zhǔn)確率達(dá)到了82.62%,提升了4.54%;召回率達(dá)到了61.07%,提升了0.9%;AP值達(dá)到了70.52,提高了4.8%。
表1 消融實驗Tab.1 Ablation experiments
為檢驗方法的有效性,本文選取了YOLOv3、Faster R-CNN、GhostNet-YOLOv4、YOLOv5s_6.1 進(jìn)行對比實驗。首先使用上述網(wǎng)絡(luò)分別在數(shù)據(jù)集中訓(xùn)練,然后使用測試集對上述訓(xùn)練過的網(wǎng)絡(luò)進(jìn)行測試,測試結(jié)果見表2。更直觀的實驗結(jié)果如圖2 所示。具體來說,圖2(a)為車輛行駛數(shù)據(jù)原圖,圖2(b)為Faster R-CNN 算法檢測結(jié)果、圖2(c)為GhostNet-YOLOv4 算法檢測結(jié)果,圖2(d)為YOLOv5s_v6.1算法檢測結(jié)果,圖2(e)為YOLOv3 算法的檢測結(jié)果,圖2(f)為YOLOv4 算法的檢測結(jié)果,圖2(f)為改進(jìn)YOLOv4 算法的檢測結(jié)果。
圖2 不同目標(biāo)檢測算法與改進(jìn)算法實驗結(jié)果Fig. 2 Experimental results of different target detection algorithms and improved algorithms
表2 多種模型對比評價Tab.2 Comparative evaluation of multiple models %
從表2 中可以看到,YOLOv5s 和本文的模型準(zhǔn)確率最高,分別達(dá)到了92.54%和82.62%;Faster RCNN 和本文模型召回率最高,分別達(dá)到了66.84%和61.07%;本文算法的AP高于其他算法,達(dá)到了70.52%。
圖2 中,圖2(g)的第一張圖片表明,只有本文模型檢測到了被樹木遮擋的車輛,其他模型均出現(xiàn)了漏檢的情況;對于圖2 的第4 張夜晚的情景,圖2(e)和圖2(g)中均檢測到了左方的車輛,而圖2(c)和圖2(d)均未能檢測出左方車輛,圖2(b)雖然檢測到了左方車輛,但是卻出現(xiàn)了誤檢情況。從圖2中可以看出,改進(jìn)算法能夠適應(yīng)不同光照條件,與文中的其他參照算法相比,不易出現(xiàn)漏檢和誤檢情況。由圖2(f)和圖2(g)可看到,YOLOv4 算法對被環(huán)境遮擋的車輛無法進(jìn)行準(zhǔn)確識別,而改進(jìn)算法在車輛被嚴(yán)重遮擋的情況下,依然能夠準(zhǔn)確識別出車輛。
復(fù)雜外部環(huán)境下的車輛檢測算法對于自動駕駛車輛的安全和實時控制至關(guān)重要。雖然已經(jīng)取得了一些研究成果,然而這些研究對于車輛拍攝角度下的車輛遮擋、環(huán)境遮擋問題還未能提供有效解決方案。針對這種情況,本文對自動駕駛汽車行駛過程中的車輛圖像檢測問題展開研究,選用了對于主流目標(biāo)檢測算法具有很大的挑戰(zhàn)性的數(shù)據(jù)集BBD100k,數(shù)據(jù)集是由車輛在實際路面中采集而來,其中包含了晴天、夜晚等各種行駛場景下的圖像。從該數(shù)據(jù)集中選取10 000 張圖片作為實驗的數(shù)據(jù)集,并對原數(shù)據(jù)集中的類別進(jìn)行合并和調(diào)整,刪去了和車輛無關(guān)的類別。本文選擇YOLOv4 網(wǎng)絡(luò)作為基線網(wǎng)絡(luò)進(jìn)行改進(jìn),在網(wǎng)絡(luò)的7 個位置添加了CBAM注意力機制,添加通道注意力機制使網(wǎng)絡(luò)忽略不重要的通道,添加空間注意力機制使得網(wǎng)絡(luò)忽略遮擋部分的特征,提升網(wǎng)絡(luò)對被遮擋車輛識別準(zhǔn)確率。利用k-means 聚類算法生成適合該數(shù)據(jù)集的錨框,提升對不同尺寸大小車輛的檢測能力,并通過實驗進(jìn)行驗證。實驗證明,改進(jìn)的YOLOv4 網(wǎng)絡(luò)在該數(shù)據(jù)集上的AP值達(dá)到了70.64%,比基線網(wǎng)絡(luò)提高了5%,證明改進(jìn)的YOLOv4 算法在自動駕駛中對車輛檢測具有更高的精度,該方法適用于復(fù)雜條件下的自動駕駛場景。