余國豪,賈瑋迪,余鵬飛,李海燕,李紅松
(云南大學(xué) 信息學(xué)院,云南 昆明 650500)
傳統(tǒng)的燈光檢測儀是通過追蹤光強(qiáng)來移動支架從而定位前照燈的位置,該過程不僅耗時久,而且不夠準(zhǔn)確。為了解決此問題,本文基于相機(jī)成像并結(jié)合深度學(xué)習(xí)的方法,來定位前照燈的位置,以測量前照燈基準(zhǔn)中的高度,同時,還可以利用圖像中的車標(biāo)、車身顏色等信息進(jìn)一步防止車輛代檢情況的發(fā)生。
基于深度學(xué)習(xí)的目標(biāo)檢測算法在車輛檢測領(lǐng)域一直是熱點研究方向。例如:Xu等[1]提出了基于SSD的車輛檢測算法,引入注意力機(jī)制和殘差連接,將其部署到樹莓派上進(jìn)行使用;Wei等[2]提出了基于PF-Net的車輛檢測算法,多個通道共同表達(dá)一個局部信息,在相關(guān)數(shù)據(jù)集上取得了較好的效果;GUO等[3]提出了基于YOLOv4的車輛檢測算法,引入注意力機(jī)制,使用GhostNet作為Backbone,不僅檢測精度高,而且檢測速度快。由于以上車輛檢測算法主要應(yīng)用于智能交通系統(tǒng)場景,與車檢站車輛檢測場景的應(yīng)用需求區(qū)別較大,上述算法無法直接應(yīng)用于車檢站的車輛檢測領(lǐng)域。查閱文獻(xiàn)后未發(fā)現(xiàn)有前人研究過用機(jī)器學(xué)習(xí)或深度學(xué)習(xí)的方法來解決基于圖像的車檢站車輛檢測問題,需要針對這一應(yīng)用場景做有針對性的研究。
因此,本文針對車輛前照燈檢測的實際需求,提出了一種改進(jìn)YOLOv5s的輕量級網(wǎng)絡(luò)模型,滿足了對車輛前照燈檢測的實時性與準(zhǔn)確性的要求。實驗結(jié)果表明,本文檢測算法的綜合性能最好,能夠滿足車檢站中車輛檢測工作的應(yīng)用需求。
YOLOv5是One-stage目標(biāo)檢測算法的代表模型,是在YOLOv1~YOLOv4[4-7]等眾多模型基礎(chǔ)上的又一扛鼎之作。該模型共有4種版本:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,模型的性能隨著網(wǎng)絡(luò)復(fù)雜度的增加而提升。為了取得較好的檢測精度和檢測速度,本文采用YOLOv5s模型來進(jìn)行車臉(車輛正面,簡稱車臉)檢測。
改進(jìn)的YOLOv5s由輸入端(Input)、主干特征提取網(wǎng)絡(luò)(Backbone)、多尺度特征融合網(wǎng)絡(luò)(Neck)和預(yù)測器(YOLO Head)4部分組成,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

圖1 改進(jìn)后的YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)以ShuffleNetV2[8]作為Backbone提取特征,并引入STA注意力模塊,不僅能加快模型的檢測速度,還能減少模型的參數(shù)量;刪除原有的部分Concat模塊,在下采樣階段,使用跨層特征融合模塊STA-FF來代替,將Backbone的輸出特征通過Sigmoid操作變?yōu)榭蓪W(xué)習(xí)的權(quán)重,然后與對應(yīng)特征進(jìn)行Element-wise product操作,增強(qiáng)了模型的特征提取能力,提高了不同尺寸特征的融合效率。下面分別介紹改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)中重要的組成部分。
原YOLOv5s檢測算法的Backbone由Focus、CSPNet[9]和SPP[10]等結(jié)構(gòu)組成,其網(wǎng)絡(luò)層數(shù)較深且模型參數(shù)量較多。為了在保證檢測精度的同時,具有較少的模型參數(shù)量,并且還具有較快的檢測速度,本文引入輕量級的ShuffleNetV2網(wǎng)絡(luò)作為YOLOv5s的Backbone。為了彌補(bǔ)模型輕量化造成的精度損失,在ShuffleNetV2網(wǎng)絡(luò)中的Stage結(jié)構(gòu)后添加STA注意力機(jī)制,提高模型對有效特征的捕獲能力。
輸入圖像首先經(jīng)過CBS結(jié)構(gòu)(卷積Conv、批量歸一化BN、激活函數(shù)SiLU)處理,調(diào)整特征矩陣的通道數(shù)并縮小尺寸;然后經(jīng)過最大池化(Maxpool)操作進(jìn)行下采樣處理,目的是減少參數(shù)的數(shù)量;最后由Stage結(jié)構(gòu)和STA注意力模塊交替處理3次,輸出不同尺寸的特征。為了讓Backbone的輸出特征維度能與Neck匹配,本文調(diào)整CBS、Stage2、Stage3、Stage4等結(jié)構(gòu)的輸出通道數(shù)分別為64、128、256、512。ShuffleNetV2網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。

圖2 ShuffleNetV2網(wǎng)絡(luò)結(jié)構(gòu)
當(dāng)Stage結(jié)構(gòu)中的步長(stride)取不同的值時,Stage結(jié)構(gòu)也隨之不同。當(dāng)stride=1時,Stage結(jié)構(gòu)中的左分支不做任何處理,右分支依次經(jīng)過CBR(卷積Conv、批量歸一化BN、激活函數(shù)ReLU)、DWConv(深度可分離卷積)和CBR處理,左分支的輸出結(jié)果與右分支的輸出結(jié)果進(jìn)行Concat處理;當(dāng)stride=2時,Stage結(jié)構(gòu)中的左分支會先依次經(jīng)過DWConv和CBR處理,右分支依次經(jīng)過CBR、DWConv和CBR處理,左分支的輸出結(jié)果再與右分支的輸出結(jié)果進(jìn)行Concat處理。
ShuffleNetV2網(wǎng)絡(luò)結(jié)構(gòu)及參數(shù)列表見表1。Layer表示每個特征層所經(jīng)歷的模塊;Kernel size表示當(dāng)前Layer層所采用的卷積核尺寸;stride表示步長;Repeat表示當(dāng)前Layer重復(fù)堆疊的次數(shù);Output表示當(dāng)前Layer層的輸出特征尺寸。當(dāng)Repeat取不同值時,當(dāng)前Layer層中不同結(jié)構(gòu)的stride、Kernel size取值也不同。

表1 ShuffleNetV2網(wǎng)絡(luò)結(jié)構(gòu)
隨著YOLOv5s的網(wǎng)絡(luò)層數(shù)不斷加深,Backbone在對輸入圖像不斷卷積提取特征的過程中,圖像分辨率不斷降低,使得圖像中分辨率較小的小目標(biāo)物體的特征信息丟失,從而導(dǎo)致檢測精度不高。為了有效改善該問題,將通道-空間注意力SA-Net[11]與跨通道注意力Triplet[12]相結(jié)合,改進(jìn)SA-Net的空間注意力和Triplet的通道注意力,提出一種跨通道-空間注意力模塊STA,有效捕獲不同維度間的特征映射關(guān)系,在不增加計算開銷的情況下提高模型的檢測精度,本文在Backbone中引入STA注意力模塊。STA注意力模塊如圖3所示。

圖3 STA結(jié)構(gòu)
STA注意力模塊分為3個分支:
(1)第一分支是通道注意力分支,輸入特征C×H×W(C、H、W分別表示特征的深度、高度、寬度)首先經(jīng)過Split操作將輸入特征的通道數(shù)均分,得到2組特征矩陣C/2×H×W,再分別經(jīng)過均值池化(AvgPool)和最大池化(MaxPool)變?yōu)?×H×W,然后分別依次經(jīng)過F(x)處理和Sigmoid激活函數(shù)生成權(quán)值,再分別將權(quán)值與特征矩陣C/2×H×W進(jìn)行Element-wise product操作,最后通過Concat操作和Channel Shuffle操作得到第一個分支的輸出特征C×H×W;
(2)第二分支是空間注意力分支,通道C維度和空間W維度交互處理特征信息,輸入特征C×H×W首先經(jīng)過Permute操作變?yōu)镠×C×W,再經(jīng)過Z-Pool操作(將最大池化和均值池化的結(jié)果在通道方向上拼接起來)變?yōu)?×C×W,然后經(jīng)過CBR處理變?yōu)?×C×W,再經(jīng)過Sigmoid激活函數(shù)生成權(quán)值,最后將權(quán)值與輸入特征H×C×W進(jìn)行Element-wise product操作,通過Permute操作得到第二個分支的輸出特征C×H×W;
(3)第三分支也是空間注意力分支,通道C維度和空間H維度交互處理特征信息,輸入特征C×H×W首先經(jīng)過Permute操作變?yōu)閃×H×C,再經(jīng)過Z-Pool操作變?yōu)?×H×C,然后經(jīng)過CBR處理變?yōu)?×H×C,再經(jīng)過Sigmoid激活函數(shù)生成權(quán)值,最后將權(quán)值與輸入特征W×H×C進(jìn)行Element-wise product操作,通過Permute操作得到第三個分支的輸出特征C×H×W。
STA注意力模塊是對以上3個分支的輸出特征進(jìn)行相加求均值的操作。
圖3中,F(xiàn)(x) 表示矩陣的乘法與加法操作,目的是增強(qiáng)特征的表達(dá)能力,從而捕獲到更有效的特征信息,其計算公式如下
F(x)=wx+b
(1)
式中:w表示權(quán)值矩陣,b表示偏置向量。
淺層特征具有較多的細(xì)節(jié)信息,如紋理信息、位置信息等,而深層特征具有較多的語義信息。目標(biāo)檢測任務(wù)不僅需要提取語義信息用于分類識別,還需要提取位置信息用于回歸。原YOLOv5s采用PANet[13]結(jié)構(gòu)的多尺度特征融合方法,同時考慮淺層特征的位置信息和深層特征的語義信息。然而,簡單求和或拼接的特征融合方式會使得模型對不同尺寸的特征分配固定的權(quán)重,從而忽視了不同尺寸特征之間的差異,導(dǎo)致特征在融合的過程中丟失部分細(xì)節(jié)信息。因此,本文提出了一種基于STA的跨層特征融合(STA-FF)模塊,其核心思想是在特征融合過程中引入注意力機(jī)制,在通道域和空間域上對不同尺寸的特征引入一個可學(xué)習(xí)的權(quán)值,使模型自行學(xué)習(xí)不同尺寸特征的重要性來實現(xiàn)加權(quán)特征融合,動態(tài)地改變原有固定特征權(quán)值分配方式。STA-FF模塊的結(jié)構(gòu)如圖4所示。

圖4 跨層特征融合(STA-FF)模塊
STA-FF模塊的計算公式如下
Z=Concat(X,Y)⊙Sigmoid(STA(A))
(2)
式中:X與Y表示待融合的特征,XY表示經(jīng)過Concat操作后得到的初步融合特征;A表示Backbone輸出的特征,A′表示經(jīng)過STA注意力模塊和Sigmoid激活函數(shù)后得到的注意力權(quán)值矩陣;⊙表示Element-wise product操作;Z表示最終融合后的特征。
為了更加合理地分配權(quán)值,本文通過一種基于STA注意力機(jī)制的自適應(yīng)權(quán)值分配方法來動態(tài)地分配權(quán)值。首先,將待融合特征X與Y通過Concat操作融合,得到初步的融合特征XY;然后,特征A經(jīng)過STA注意力模塊后得到的注意力權(quán)值矩陣A′,再經(jīng)過Sigmoid激活函數(shù)處理后A′的值域范圍為0~1;最后將初步融合后的特征XY與權(quán)值矩陣A′進(jìn)行Element-wise product操作,得到最終的融合特征Z。
由于現(xiàn)有的公開車輛數(shù)據(jù)集主要用于車型檢測,大部分是對車身進(jìn)行標(biāo)注,用于區(qū)分小車(car)、公交車(bus)、出租車(taxi)、卡車(truck)等車型,導(dǎo)致數(shù)據(jù)集中車輛類別不多、車輛圖片單一,外形相差無幾,缺少車臉的信息,不適用于車輛前照燈檢測的需求,所以本文構(gòu)建了一個車臉數(shù)據(jù)集Car-Data,對汽車的車臉部分進(jìn)行標(biāo)注,即對車燈(carlight)、車標(biāo)(logo)、車身顏色(color)進(jìn)行人工標(biāo)注。其中,車標(biāo)尺寸小于32像素,車燈尺寸介于32像素與96像素之間,車身顏色尺寸大于96像素,根據(jù)MS COCO數(shù)據(jù)集[14]的定義,它們依次為小、中、大目標(biāo)。


圖5 數(shù)據(jù)集部分圖片
由于是自建數(shù)據(jù)集,故YOLOv5網(wǎng)絡(luò)中原anchor參數(shù)不再適用于本文的數(shù)據(jù)集。因此,使用K-means聚類[15]算法獲取合適目標(biāo)的邊界框,以便能使算法更快收斂。先驗錨框的尺寸見表2。

表2 先驗錨框尺寸
本實驗的深度學(xué)習(xí)框架為Pytorch1.9.0,CUDA版本為11.4,編程語言為Python3.8,集成開發(fā)環(huán)境為PyCharm,程序運(yùn)行平臺為Windows10操作系統(tǒng),CPU為11th Gen Intel(R) Core(TM) i7-11700 @2.50 GHz,GPU為GeForce RTX 3060,顯存為12 G。
網(wǎng)絡(luò)的超參數(shù)配置如下:在模型訓(xùn)練中,通過Adam優(yōu)化器對參數(shù)進(jìn)行調(diào)優(yōu),初始學(xué)習(xí)率為0.001,學(xué)習(xí)率動量為0.937,權(quán)重衰減系數(shù)為0.0005,使用余弦退火算法動態(tài)調(diào)整學(xué)習(xí)率,以防止模型過擬合;batch-size設(shè)置為32,提高訓(xùn)練速度;訓(xùn)練總次數(shù)為100個Epoch。
YOLOv5模型的損失函數(shù)Loss由分類損失Lclass、定位損失Lloc和置信度損失Lconf這3部分加權(quán)求和組成,計算公式如下
Loss=λ1Lclass+λ2Lloc+λ3Lconf
(3)
式中:λ1、λ2和λ3為平衡系數(shù)。
分類損失Lclass的計算公式如下


(4)

定位損失Lloc的計算公式如下
Lloc=1-CIoU



(5)
式中:IoU表示預(yù)測框與真實框的交并比;ρ(b,bgt) 表示預(yù)測框與真實框中心點坐標(biāo)的歐氏距離;c表示能夠同時包含預(yù)測框與真實框的最小閉包區(qū)域的對角線距離;α為權(quán)重參數(shù);v為度量長寬比一致性的參數(shù);wgt、hgt分別表示真實框的寬和高;w和h分別表示預(yù)測框的寬和高。
置信度損失Lconf的計算公式如下


(6)

訓(xùn)練過程中的損失函數(shù)迭代過程如圖6所示。

圖6 訓(xùn)練損失
本文采用平均精準(zhǔn)率(mean average precision,mAP)、模型參數(shù)量(Parameters)和檢測速度(frame per second,F(xiàn)PS)作為算法性能評價指標(biāo)。mAP是針對多類別目標(biāo)檢測精度的情況,它是多類別目標(biāo)平均精度(AP)的平均值;Parameters表示模型的參數(shù)量,其值越小則模型越輕量化;FPS用來評價檢測速度,其數(shù)值表示檢測模型每秒檢測圖像的幀數(shù),該指標(biāo)用于衡量模型的實時性。
召回率Recall、精度Precision的計算公式如下
(7)
(8)
其中,TP(True Positive)表示模型檢測為真的正樣本個數(shù);FN(False Negative)表示模型預(yù)測為非真的正樣本個數(shù);FP(False Positive)表示模型檢測為真的負(fù)樣本個數(shù)。
AP是指在所有召回率的可能取值情況下得到的所有精度的平均值,計算公式如下

(9)
式中:P表示Precision,R表示Recall,以Recall為橫軸,Precision為縱軸,并將每次的值連線,繪制得到PR曲線。使用積分的方法來計算PR曲線與坐標(biāo)軸圍成的面積,得到AP。
mAP表示所有類別的平均準(zhǔn)確率AP均值,計算公式如下
(10)
式中:n為總的類別數(shù)量。
對輕量化模型、注意力機(jī)制以及跨層特征融合的有效性分別進(jìn)行實驗,選擇Ultralytics5.0版本的YOLOv5s作為實驗的基準(zhǔn)模型。
2.4.1 不同Backbone對比
通過消融實驗來驗證本文使用ShuffleNetV2作為Backbone是否能夠在保證模型檢測精度的同時實現(xiàn)模型的輕量化和實時性,實驗結(jié)果見表3。

表3 不同Backbone對檢測性能的影響
從表3中結(jié)果可以看出,在YOLOv5s網(wǎng)絡(luò)的基礎(chǔ)上將Backbone替換為ShuffleNetV2,mAP降低了0.7個百分點,F(xiàn)PS提升了20.98 frame/s(23%),Parameters降低了14.20 M(53%)。實驗結(jié)果表明,在mAP略微降低的同時,能夠極大降低模型參數(shù)量,并能有效提升模型的檢測速度,這驗證了替換Backbone對減小模型參數(shù)量和加快圖像推理速度的有效性。
2.4.2 注意力機(jī)制對比
注意力機(jī)制并不是在網(wǎng)絡(luò)中的任何位置均有作用,通過多次實驗發(fā)現(xiàn),相比于將STA注意力模塊添加到Neck和YOLO Head中,將其添加在Backbone中,取得了最好的檢測效果,實驗結(jié)果見表4。本文認(rèn)為將STA注意力模塊嵌入到模型的不同位置之所以導(dǎo)致不同的檢測效果,是因為Backbone中的特征含有豐富的輪廓信息和紋理信息,能夠更好地捕獲細(xì)節(jié)特征信息;而在更深層次的Neck和YOLO Head中,由于特征含有更豐富的語義信息和更大的感受野,導(dǎo)致STA注意力模塊難以區(qū)分特征間的重要性。

表4 不同注意力模塊對檢測性能的影響
YOLOv5s-Backbone表示在Backbone中的每個Stage結(jié)構(gòu)后面引入一個STA注意力模塊;YOLOv5s-Neck表示在Neck中的每個CSP結(jié)構(gòu)后面引入一個STA注意力模塊;YOLOv5s-Head表示在YOLO Head中的每個Head結(jié)構(gòu)前面引入一個STA注意力模塊。
從表4中結(jié)果可以看出,以ShuffleNetV2作為Backbone,在YOLOv5s模型的不同位置分別嵌入STA注意力模塊后,Parameters保持不變。在Backbone中嵌入STA注意力模塊后,mAP提升了0.8個百分點,F(xiàn)PS降低了2.24 frame/s;而在Neck和YOLO Head中分別嵌入STA注意力模塊后,mAP分別降低了0.2個百分點和0.9個百分點,F(xiàn)PS分別降低了1.81 frame/s和3.02 frame/s。
實驗結(jié)果表明,在Backbone中嵌入STA注意力模塊雖然使得模型的檢測速度有一定程度的降低,但卻能捕獲到更為完整的特征信息,增強(qiáng)了模型對特征信息的捕獲能力,從而提高了模型的檢測精度,并且不會額外增加模型參數(shù)量,即不會造成額外的計算開銷,這驗證了STA注意力模塊對提高模型檢測精度的有效性。
2.4.3 特征融合方法對比
為驗證改進(jìn)的特征融合方法STA-FF模塊的有效性,本文對不同的特征融合方法進(jìn)行消融實驗,實驗結(jié)果見表5。

表5 不同特征融合方法對檢測性能的影響
從表5中結(jié)果可以看出,引入改進(jìn)的特征融合方法STA-FF模塊后,mAP提升了2.1個百分點,F(xiàn)PS降低了4.85 frame/s,Parameters保持不變。實驗結(jié)果表明,與原始特征融合方法Concat相比,改進(jìn)的特征融合方法STA-FF在特征融合過程中基于注意力機(jī)制分配可學(xué)習(xí)權(quán)值,使得模型不僅能夠捕獲特征中更加高級的語義信息,還能保留更多特征融合后的細(xì)節(jié)信息,從而能夠提升模型的檢測精度,這驗證了改進(jìn)的特征融合方法STA-FF模塊對提高模型檢測精度的有效性。
為了檢驗本文模型的性能,選取Faster R-CNN[16]、RetinaNet[17]、YOLOv4和YOLOv5s在相同數(shù)據(jù)集上進(jìn)行訓(xùn)練、驗證和測試。實驗結(jié)果見表6。

表6 不同檢測算法性能對比
從表6中結(jié)果可以看出,本文模型提高了檢測精度,mAP達(dá)到了94.3%,實現(xiàn)了模型的準(zhǔn)確檢測;同時具有較高的檢測速度,F(xiàn)PS達(dá)到了105.60 frame/s,實現(xiàn)了模型的實時檢測;相比原YOLOv5s模型,Parameters減小了14.20 M(53%),實現(xiàn)了模型的輕量化。因此可以得出,與其它主流目標(biāo)檢測模型相比,本文模型在檢測精度、檢測速度和模型輕量化等方面性能更優(yōu),能夠更好地完成車檢站中車輛檢測的任務(wù)。
為了定性比較本文模型與原YOLOv5s模型,從而獲取更直觀的對比效果,本文分別用這兩種模型對測試集的部分車輛圖片進(jìn)行了檢測,部分檢測結(jié)果對比如圖7~圖9所示。
從圖7對比結(jié)果中可以看出,YOLOv5s模型出現(xiàn)了置信度較低的情況:“carlight”標(biāo)簽、“Roewe”標(biāo)簽和“Suzuki”標(biāo)簽的置信度相對較低,均低于0.9;而本文模型的置信度較高,達(dá)到了0.9及以上。
從圖8對比結(jié)果中可以看出,YOLOv5s模型出現(xiàn)了漏檢的情況:未檢測到“Blue”標(biāo)簽、“Subaru”標(biāo)簽和“Peugeot”標(biāo)簽;而本文模型準(zhǔn)確檢測出所有目標(biāo),且置信度較高。

圖8 檢測效果對比(漏檢)
從圖9對比結(jié)果中可以看出,YOLOv5s模型出現(xiàn)了誤檢、漏檢的情況:將正確的“Orange”標(biāo)簽誤檢為“Yellow”標(biāo)簽、未檢測到“JAC”標(biāo)簽;本文模型能夠全部將目標(biāo)正確檢測出來且置信度較高。

圖9 檢測效果對比(誤檢)
由上述多種情況比較可知,相比于原YOLOv5s模型,本文模型的檢測性能更好,對復(fù)雜環(huán)境具有較好的魯棒性,降低了誤檢和漏檢的概率,具有良好的泛化能力。
針對車檢站中車輛檢測的實際需求,本文結(jié)合ShuffleNetV2設(shè)計出一種基于YOLOv5s的輕量化車臉檢測算法。實驗結(jié)果表明,相比于目前幾種主流檢測算法,本文算法在滿足輕量化的同時,也具備較高的檢測精度,并且能更好地滿足目標(biāo)檢測任務(wù)的實時性要求。本文算法的不足之處在于對小目標(biāo)物體檢測的效果不夠理想。后續(xù)工作的研究重點是確保模型輕量化的同時進(jìn)一步提高檢測精度和檢測速度,同時探究雨雪天氣和夜間環(huán)境對車輛目標(biāo)檢測的影響,加強(qiáng)模型對小目標(biāo)物體的檢測能力。