周 慶 任明武
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 南京 210094)
車(chē)路協(xié)同是指通過(guò)車(chē)輛與其他車(chē)輛、路側(cè)感知設(shè)備進(jìn)行通訊,以實(shí)現(xiàn)汽車(chē)與道路之間的信息交互。車(chē)路協(xié)同系統(tǒng)在感知層面主要分為兩類(lèi):車(chē)端感知和路端感知。路端感知一般采用相機(jī)、激光雷達(dá)、毫米波雷達(dá)和各類(lèi)環(huán)境傳感器來(lái)實(shí)現(xiàn)信息采集,同時(shí)還有信號(hào)燈、交通標(biāo)識(shí)線等交通設(shè)施輔助。路端感知的主要設(shè)備之一是激光雷達(dá),能夠提供目標(biāo)的距離信息,缺點(diǎn)是成本較高且可靠性較低,在雨雪等惡劣天氣條件下使用受限。另一設(shè)備是相機(jī),優(yōu)點(diǎn)是成本較低且傳感器的分辨率較高,相較于激光雷達(dá)能提供更多有效信息,缺點(diǎn)是無(wú)法提供目標(biāo)距離等3D信息。
基于以上原因,本文使用路側(cè)相機(jī)設(shè)備采集的可見(jiàn)光圖像,檢測(cè)行人車(chē)輛等目標(biāo),對(duì)行車(chē)環(huán)境進(jìn)行智能感知,具有十分廣泛的應(yīng)用前景和重要的研究意義。近年來(lái)由于深度學(xué)習(xí)技術(shù)的發(fā)展,主流的圖像目標(biāo)檢測(cè)由基于手工特征的傳統(tǒng)方法轉(zhuǎn)變?yōu)榛诰矸e特征的深度方法。因此本文主要研究基于深度學(xué)習(xí)技術(shù)的目標(biāo)檢測(cè)方法。
根據(jù)是否有預(yù)先定義的錨框,深度學(xué)習(xí)目標(biāo)檢測(cè)可以分為anchor-based 方法和anchor-free 方法。Anchor-based 方法會(huì)在圖像上平鋪大量的錨框,預(yù)測(cè)目標(biāo)框和這些先驗(yàn)框的偏差。anchor-free 方法沒(méi)有預(yù)設(shè)的錨框,可分為基于關(guān)鍵點(diǎn)[1]和基于中心點(diǎn)[2]兩種方式。Anchor-base 方法存在許多與錨框相關(guān)的超參數(shù)不易優(yōu)化,且大量的錨框會(huì)導(dǎo)致計(jì)算復(fù)雜度增加;anchor-free 方法則不需要調(diào)優(yōu)相關(guān)超參數(shù),且避免了IOU 計(jì)算,使得訓(xùn)練過(guò)程內(nèi)存占用更低。綜上,本文選擇了最新的anchor-free目標(biāo)檢測(cè)方法YOLOX[3]作為基準(zhǔn)模型。
人類(lèi)的注意力機(jī)制是從直覺(jué)中得到,是一種利用有限的注意力資源從大量信息中快速篩選出高價(jià)值信息的手段。深度學(xué)習(xí)中的注意力機(jī)制借鑒了人類(lèi)的注意力思維方式,被廣泛地應(yīng)用在自然語(yǔ)言處理[4]和圖像識(shí)別[5]等任務(wù)中。YOLOX 模型中并沒(méi)有使用attention 模型,因此本文使用了注意力機(jī)制對(duì)其主干網(wǎng)絡(luò)特性進(jìn)行加強(qiáng)。
YOLOX 模型中對(duì)于判斷前背景的物體分支,是直接對(duì)所有預(yù)測(cè)樣本進(jìn)行計(jì)算,可能存在正負(fù)樣本不平衡的問(wèn)題。論文RetinaNet[6]提出了一種新的損失函數(shù)focal loss,對(duì)容易分類(lèi)的大量負(fù)樣本降低其損失權(quán)重,可以克服正負(fù)樣本不平衡的問(wèn)題。因此本文使用了focal loss對(duì)YOLOX 模型的物體損失函數(shù)進(jìn)行改進(jìn)。
YOLOX 是由曠視科技于2021 年提出的目標(biāo)檢測(cè)方法,將近年來(lái)目標(biāo)檢測(cè)領(lǐng)域的最新進(jìn)展與YOLO 系列進(jìn)行了集成組合,性能得到了大幅提升,同時(shí)保持了較高的檢測(cè)速度。YOLOX 基于YOLOv3 模型[7],提出了解耦頭、數(shù)據(jù)增強(qiáng)、anchorfree和SimOTA這四項(xiàng)改進(jìn)。
由于YOLOv4[8]模型對(duì)于anchor-based 方法可能有一些過(guò)度優(yōu)化,作者選擇了YOLOv3 作為基準(zhǔn)模型,并在backbone 后面添加了一個(gè)SPP 模塊[9],即空間金字塔池化,整體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。SPP模塊使用{1*1,5*5,9*9,13*13}的最大池化,與直接使用最大池化相比,有效地增加了backbone特征的接收范圍,顯著地分離了最重要的上下文特征。
圖1 YOLOX網(wǎng)絡(luò)結(jié)構(gòu)圖
模型的損失函數(shù)由三部分構(gòu)成,如下式所示:
其中λ為平衡系數(shù),Lreg為用于邊界框回歸的IOU損失,Lobj為用于判斷物體概率的BCE 損失,Lcls為用于目標(biāo)分類(lèi)的BCE損失。
在目標(biāo)檢測(cè)中,分類(lèi)與回歸任務(wù)經(jīng)常會(huì)產(chǎn)生沖突,因此檢測(cè)頭的解耦已被廣泛使用。然而,YOLOv3 的檢測(cè)頭仍處于耦合狀態(tài),如圖2 上方所示。作者通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),將檢測(cè)頭解耦會(huì)顯著改善模型的收斂速度,因此將檢測(cè)頭替換為輕量解耦頭。解耦頭包含一個(gè)1×1 卷積,用于通道降維,后接兩個(gè)3×3 卷積的并行分支,分別用于分類(lèi)和回歸以及物體,如圖2所示。
圖2 YOLOv3與YOLOX檢測(cè)頭結(jié)構(gòu)圖
作者使用了Mosaic 與Mixup[10]兩種數(shù)據(jù)增強(qiáng)策略以進(jìn)一步增強(qiáng)性能。Mosaic 數(shù)據(jù)增強(qiáng)參考自CutMix[11],選擇四張圖片,通過(guò)隨機(jī)縮放、隨機(jī)裁剪和隨機(jī)排布的方式進(jìn)行拼接,有助于小目標(biāo)的檢測(cè)。Mixup 數(shù)據(jù)增強(qiáng)是在一張圖片做了Mosaic 之后,隨機(jī)選擇另一張圖片,將兩張圖以一定的比例對(duì)RGB 值進(jìn)行混合,模型需要檢測(cè)出兩張圖中所有的目標(biāo)。該方法可以在幾乎不增加計(jì)算開(kāi)銷(xiāo)的情況下,穩(wěn)定提升檢測(cè)精度。
作者使用了anchor-free機(jī)制,特征圖中的每個(gè)點(diǎn)只預(yù)測(cè)一個(gè)目標(biāo)框且直接輸出四個(gè)值,即中心點(diǎn)相較于左上角的偏移和框的長(zhǎng)寬。anchor-free 機(jī)制減少了模型的參數(shù)量,節(jié)省了計(jì)算資源,使其速度更快性能更好。參考FCOS[12],作者將落入真實(shí)框范圍內(nèi)的點(diǎn)定為正樣本,這樣一個(gè)真實(shí)框通常只有一個(gè)正樣本,忽略了臨近的其他可能的正樣本。因此作者還將落入真實(shí)框中心點(diǎn)一定區(qū)域范圍(根據(jù)下采樣倍數(shù)而定)內(nèi)的點(diǎn)定為正樣本,使得一個(gè)真實(shí)框可以有多個(gè)正樣本。
通過(guò)以上步驟獲得初步的正樣本后,作者使用SimOTA 方法進(jìn)行了精細(xì)化篩選,為每個(gè)真實(shí)框分配全局最優(yōu)的正樣本。OTA是一種標(biāo)簽分配策略[13],從全局角度分析標(biāo)簽分配并將其轉(zhuǎn)化為最優(yōu)運(yùn)輸問(wèn)題。然而最優(yōu)運(yùn)輸問(wèn)題求解會(huì)增加25%的訓(xùn)練時(shí)間,因此作者將其簡(jiǎn)化為動(dòng)態(tài)top-k 問(wèn)題,稱(chēng)為SimOTA,得到近似解。相比于OTA,SimOTA 可以縮短訓(xùn)練時(shí)間,避免額外的超參數(shù)優(yōu)化,并在大多數(shù)情況下不影響精度。
Attention,即注意力機(jī)制,已經(jīng)被廣泛應(yīng)用于計(jì)算機(jī)視覺(jué)領(lǐng)域中。它用于高效地關(guān)注圖像中的重要區(qū)域,可以看作是基于輸入特征的動(dòng)態(tài)權(quán)重調(diào)整過(guò)程。本文使用了SENet[14]和CBAM[15]兩種Attention,對(duì)YOLOX 特征金字塔中的特征進(jìn)行關(guān)注與加強(qiáng)。
SENet 首先提出了通道注意力機(jī)制,核心是一個(gè)SE(squeeze and excitation)模塊,用于收集全局信息、捕獲通道關(guān)系并提升表征能力,其結(jié)構(gòu)如圖3所示。
圖3 SE模塊結(jié)構(gòu)圖
SE 模塊分為兩部分:壓縮(squeeze)操作和激勵(lì)(excitation)操作。首先,壓縮操作通過(guò)全局平局池化收集全局空間信息;然后,激勵(lì)操作通過(guò)使用全連接層和非線性層(ReLU 和sigmoid)捕獲通道關(guān)系并輸出一個(gè)注意力向量;最后,將輸入特征的每個(gè)通道乘以注意力向量中對(duì)應(yīng)的元素來(lái)進(jìn)行縮放。給定一個(gè)輸入特征X,通道數(shù)為C,使用下式計(jì)算其輸出Y:
其中zc表示經(jīng)過(guò)壓縮操作后第c 個(gè)通道的值,s表示經(jīng)過(guò)激勵(lì)操作后的注意力向量,δ表示ReLU 函數(shù),σ表示sigmoid 函數(shù)。為了降低模型復(fù)雜度以及提升泛化能力,激勵(lì)操作使用了兩個(gè)全連接層的bottleneck結(jié)構(gòu),第一層用于降維,r為降維系數(shù)。
為了增強(qiáng)信息通道和重要區(qū)域,Woo等提出了卷積注意力CBAM 模塊。該模塊將通道注意力和空間注意力串聯(lián)起來(lái),解耦通道注意力圖和空間注意力圖以提高計(jì)算效率,使用全局池化來(lái)聚合空間全局信息,其結(jié)構(gòu)如圖4所示。
圖4 CBAM模塊結(jié)構(gòu)圖
CBAM 模塊分為兩個(gè)子模塊:通道和空間。給定輸入特征圖X??H×W×C,依次計(jì)算出一維的通道注意力向量sc?RC和二維的空間注意力圖ss??H×W。通道子模塊類(lèi)似于SE 模塊,不同之處在于它使用了不止一種池化操作來(lái)聚合全局信息。具體來(lái)說(shuō),它使用了兩個(gè)平行分支,分別為平均池化和最大池化,如下式所示:
其中GAPs和GMPs分別表示空間域中的全局平局池化和全局最大池化??臻g子模塊對(duì)特征的空間關(guān)系進(jìn)行建模,是對(duì)通道注意力的補(bǔ)充。與通道注意力不同,它使用大核的卷積層來(lái)生成注意力圖,如下式所示:
其中GAPc和GMPc表示通道域中的全局池化,Conv表示卷積操作,[]表示通道上的串聯(lián)。整個(gè)注意力過(guò)程由下式所示:
Focal loss 是一種動(dòng)態(tài)縮放的交叉熵(cross entropy)損失,其核心在于降低簡(jiǎn)單樣本的損失權(quán)重,以目標(biāo)檢測(cè)為例,就是那些落在背景且比較容易分類(lèi)的大量樣本??s放的調(diào)節(jié)系數(shù)隨著正確分類(lèi)的置信度增加而減小,可以在訓(xùn)練期間自動(dòng)降低簡(jiǎn)單樣本的貢獻(xiàn),使得模型更加專(zhuān)注于困難樣本。為了控制簡(jiǎn)單樣本和困難樣本的權(quán)重,為交叉熵?fù)p失加上一個(gè)調(diào)節(jié)系數(shù),得到focal loss,定義如下:
其中γ≥0 為專(zhuān)注超參數(shù),(1 -pt)γ為調(diào)節(jié)系數(shù)。當(dāng)γ=0 時(shí),focal loss就等于交叉熵?fù)p失。
該損失具有兩個(gè)重要性質(zhì):1)當(dāng)樣本被錯(cuò)誤分類(lèi)時(shí)pt較小,調(diào)節(jié)系數(shù)接近于1,損失不受影響;而當(dāng)樣本被正確分類(lèi)時(shí)pt較大,調(diào)節(jié)系數(shù)接近于0,這樣簡(jiǎn)單樣本的損失權(quán)重就被降低了。2)專(zhuān)注參數(shù)γ平滑地調(diào)節(jié)了簡(jiǎn)單樣本降低權(quán)重的比例,其值越大調(diào)節(jié)系數(shù)的影響就越大,等于0 時(shí)就是交叉熵?fù)p失。直觀地說(shuō),調(diào)節(jié)系數(shù)減少了簡(jiǎn)單樣本的損失貢獻(xiàn),同時(shí)拓寬了得到小損失樣本的范圍。
YOLOX 模型中沒(méi)有使用attention,因此本文引入SE 模塊和CBAM 模塊對(duì)其進(jìn)行改進(jìn)。模型中的neck 特征金字塔用于接收來(lái)自主干網(wǎng)絡(luò)淺層的位置特征和深層的語(yǔ)義特征,只使用了上采樣和級(jí)聯(lián)操作進(jìn)行融合,存在改進(jìn)空間。此外,由于物體損失是對(duì)所有預(yù)測(cè)框進(jìn)行計(jì)算的,使用原始的交叉熵?fù)p失可能會(huì)造成大量的簡(jiǎn)單背景樣本損失疊加,超過(guò)少量的困難前景樣本,使得模型偏向于背景樣本,訓(xùn)練困難。
基于以上信息,本文修改了YOLOX 模型的特征金字塔部分,經(jīng)過(guò)組合實(shí)驗(yàn),在上采樣前的特征圖后面加入SE 模塊,以加強(qiáng)其通道關(guān)系;在送入檢測(cè)頭的的特征圖前面加入CBAM 模塊,以同時(shí)加強(qiáng)其通道關(guān)系和空間關(guān)系;修改后的特征金字塔結(jié)構(gòu)如圖5 所示。本文將物體分支的損失函數(shù)由交叉熵?fù)p失替換為了focal loss,以解決前景和背景樣本比例不平衡,造成訓(xùn)練困難的問(wèn)題。
圖5 修改后的YOLOX特征金字塔結(jié)構(gòu)圖
為了盡可能貼近真實(shí)的車(chē)路協(xié)同的應(yīng)用場(chǎng)景,本文在兩處城市結(jié)構(gòu)化道路場(chǎng)景進(jìn)行路側(cè)視頻數(shù)據(jù)的采集。一處場(chǎng)景為學(xué)校大門(mén)口一條東西向道路,雙向四車(chē)道,路寬約15m,兩側(cè)有人行道和非機(jī)動(dòng)車(chē)道,校門(mén)口左右兩邊分別有一條南北向斑馬線,如圖6(a)所示。另一處場(chǎng)景為一條丁字型路口,左二右三共五車(chē)道,路寬約18m,兩側(cè)有人行道和非機(jī)動(dòng)車(chē)道,有一條南北向和一條東西向斑馬線,如圖6(b)所示。
圖6 路側(cè)數(shù)據(jù)采集場(chǎng)景
采集設(shè)備為可見(jiàn)光相機(jī)設(shè)備,1200 萬(wàn)像素,f/1.8 光圈。將設(shè)備放置在可移動(dòng)支架上,架設(shè)高度符合路側(cè)數(shù)據(jù)需求,鏡頭對(duì)準(zhǔn)道路區(qū)域,模擬路側(cè)感知場(chǎng)景。在上述兩處場(chǎng)景各采集兩段視頻,時(shí)間均為4min,幀率為30fps,圖像大小為1920*1080,總共四條視頻序列。采集時(shí)間為下午14 點(diǎn)到17 點(diǎn),天氣為多云、正常光線。
使用上述方案采集路側(cè)可見(jiàn)光圖像數(shù)據(jù)后,本文使用CVAT 標(biāo)注工具進(jìn)行了路側(cè)目標(biāo)的標(biāo)注。本文標(biāo)注了行人、自行車(chē)、電動(dòng)自行車(chē)和汽車(chē)這四類(lèi)目標(biāo),總計(jì)1500張圖像和14218個(gè)邊界框。各類(lèi)別具體的邊界框數(shù)目如表1 所示。為了驗(yàn)證目標(biāo)檢測(cè)模型的泛化性能,選擇視頻序列1、2、4 為訓(xùn)練集,視頻序列3為測(cè)試集。
表1 路側(cè)目標(biāo)檢測(cè)數(shù)據(jù)集統(tǒng)計(jì)信息
本文在自建的路側(cè)數(shù)據(jù)集上評(píng)估改進(jìn)后的YOLOX 目標(biāo)檢測(cè)方法,其中訓(xùn)練集共1200 張,訓(xùn)練集共300 張。模型的backbone 為DarkNet-53,超參數(shù)均使用默認(rèn)設(shè)置。模型使用SGD 訓(xùn)練300 個(gè)epoch,采用Cosine 學(xué)習(xí)率機(jī)制。輸入圖像縮放大小為640*640,使用mosaic 和mixup 數(shù)據(jù)增強(qiáng),并在最后15個(gè)epoch關(guān)掉。模型未改動(dòng)的部分使用COCO 數(shù)據(jù)集[16]預(yù)訓(xùn)練過(guò)的權(quán)重進(jìn)行初始化,新增的attention 模塊使用默認(rèn)初始化。訓(xùn)練時(shí)使用兩張TITAN V顯卡,batch大小為16。
為了驗(yàn)證兩種模塊組合的檢測(cè)性能,本文在特征金字塔的不同部分增加不同的attention 模塊,SE_CBAM 表示先在上采樣前增加SE 模塊,然后在融合特征圖后增加CBAM 模塊,CBAM_SE 與之相反。模型在測(cè)試集上的檢測(cè)結(jié)果如表2所示。
表2 attention模塊組合的檢測(cè)結(jié)果
從表中可以看出,兩種模塊組合的性能提升比較明顯,參數(shù)量和計(jì)算量略微增加,但幅度不大。具體來(lái)說(shuō),SE_CBAM 提升了5.4%,CBAM_SE 提升了4.3%;得益于上采樣前的SE 模塊,SE_CBAM 在小目標(biāo)上的性能損失較小,而特征圖后的CBAM 模塊又進(jìn)一步提升了大目標(biāo)的檢測(cè),綜合性能比CBAM_SE要好。
為了獲得最優(yōu)的focal loss超參數(shù),本文在不增加attention 模塊的情況下,僅改變物體損失為focal loss。實(shí)驗(yàn)選取了幾個(gè)不同的專(zhuān)注參數(shù)γ,取值范圍為[0 .2,4]。模型在測(cè)試集上的檢測(cè)結(jié)果如表3所示。
表3 不同專(zhuān)注參數(shù)下的檢測(cè)結(jié)果
從表中可以看出,當(dāng)專(zhuān)注參數(shù)小于1 時(shí),檢測(cè)指標(biāo)急劇下降,原因可能是損失過(guò)小,模型陷入局部最優(yōu);當(dāng)專(zhuān)注參數(shù)大于等于1 時(shí),因?yàn)楹?jiǎn)單樣本的損失被降權(quán),困難樣本損失占據(jù)主導(dǎo)地位,使得模型優(yōu)化更好,檢測(cè)指標(biāo)有所提升,其中最優(yōu)參數(shù)為γ=2,較baseline提升了2.2%。
通過(guò)上述實(shí)驗(yàn)選擇了最優(yōu)的attention 組合和focal loss 超參數(shù)之后,本實(shí)驗(yàn)將兩種改進(jìn)結(jié)合起來(lái),稱(chēng)為YOLOX-A模型,其檢測(cè)結(jié)果如表4所示。
表4 改進(jìn)YOLOX-A模型的檢測(cè)結(jié)果
從表中可以看出,改進(jìn)后的YOLOX-A 模型除小目標(biāo)外的檢測(cè)指標(biāo)都高于原始模型,其中mAP指標(biāo)提升了5.6%,驗(yàn)證了本文改進(jìn)的有效性。
本文提出了一種改進(jìn)的YOLOX模型用于路側(cè)目標(biāo)檢測(cè),使用SE 模塊和CBAM 模塊對(duì)模型的主干特征進(jìn)行加強(qiáng),并將物體分支的損失替換為focal loss 以消除正負(fù)樣本不平衡的影響。本文構(gòu)建了一個(gè)小規(guī)模的路側(cè)可見(jiàn)光圖像數(shù)據(jù)集,經(jīng)過(guò)訓(xùn)練改進(jìn)YOLOX-A 模型在測(cè)試集上的檢測(cè)指標(biāo)優(yōu)于原始模型。本文只使用了單幀的路側(cè)圖像進(jìn)行檢測(cè),沒(méi)有利用多幀的圖像信息,后續(xù)工作可以在這一方面進(jìn)行提升。