郭華玲, 劉佳帥, 鄭賓, 殷云華, 趙棣宇
(1.中北大學(xué)電氣與控制工程學(xué)院, 太原 030051; 2.瞬態(tài)沖擊技術(shù)重點實驗室, 北京 102202)
近些年,伴隨著自動駕駛與高級駕駛輔助系統(tǒng)的蓬勃發(fā)展,交通場景的目標(biāo)精確檢測也成為其中的重要一環(huán)。其中,交通標(biāo)志作為交通運輸系統(tǒng)中不可或缺的組件之一,其為駕駛者或行人提供了豐富的道路狀況以及實時的交通條件,提供了利于自動駕駛的指導(dǎo)性或提示信息[1]。目前,交通標(biāo)志的檢測算法可分為傳統(tǒng)的交通標(biāo)志檢測算法和基于深度學(xué)習(xí)的交通標(biāo)志檢測算法。傳統(tǒng)檢測算法的核心是特征的提取與分類?;诮煌?biāo)志的色彩與形狀,結(jié)合特征提取方法對其進(jìn)行提取,利用分類器來識別交通標(biāo)志。孫曉艷等[2]采用自適應(yīng)伽馬變換的顏色增強方式,采用最大穩(wěn)定極值區(qū)域提取感興趣區(qū)域(region of interest,ROI),并基于方向梯度直方圖,利用支持向量機完成交通標(biāo)志識別,提高了分類精確度,但誤檢率過高。Xiao等[3]融合定向梯度直方圖(histograms of oriented gradients,HOG)與布爾卷積神經(jīng)網(wǎng)絡(luò)(Boolean convolutional neural network,BCNN),針對德國交通標(biāo)志檢測數(shù)據(jù)庫(German traffic sign detection benchmark,GTSDB)[4]進(jìn)行交通標(biāo)志識別,取得了不錯的效果,但識別速度無法滿足實時需求。韓偉等[5]提出基于極坐標(biāo)分區(qū)的局部二值模式特征提取法,實現(xiàn)交通標(biāo)志的識別。傳統(tǒng)交通標(biāo)志的檢測算法雖在不斷的改進(jìn)中提升了檢測性能,但傳統(tǒng)交通標(biāo)志檢測算法仍存在計算復(fù)雜、泛化性差、操作煩瑣等問題。
隨著圖形處理器(graphics processing unit,GPU)性能與芯片工藝的提升以及大數(shù)據(jù)的不斷發(fā)展,基于深度學(xué)習(xí)的檢測開始在目標(biāo)檢測領(lǐng)域嶄露頭角。依照檢測步驟可將深度學(xué)習(xí)的目標(biāo)檢測算法分為兩個類別,一類是以Fast-RCNN(fast regions with convolutional neural network features)[6]、Mask-RCNN(mask region-based convolutional neural network)[7]為代表的two-stage法,該類算法通常先產(chǎn)生候選框,隨后進(jìn)行分類與定位。另一類算法則是以YOLO(you only look once)[8]與SSD(single shot multibox detector)[9]為代表的one-stage法,該類算法無需進(jìn)行候選框的產(chǎn)生,直接進(jìn)行物體類別的分類與定位。在交通標(biāo)志的識別中,郭璠等[10]基于YOLOv3算法并融入通道注意力和空間注意力機制,使得小目標(biāo)的檢測性能得以提升。但訓(xùn)練得到的模型較大,不適合用于實際的項目中。袁小平等[11]使用多種卷積構(gòu)建多尺度特征提取模塊,并設(shè)計了輕量混合注意力模塊,檢測精度得以提高,但檢測速度僅49幀/s,實時性較差。林軼等[12]將批量歸一化操作與卷積合并,同時引入空間金字塔池化模塊和CIoU(complete-IoU)損失函數(shù),在CTSDB數(shù)據(jù)集上取得很高的檢測精度,但對于小目標(biāo)的檢測效果不佳。
綜上所述,現(xiàn)選用檢測速度更快、檢測精度更高、模型占用內(nèi)存更小的YOLOv5算法。并對其主干特征提取網(wǎng)絡(luò)與Neck層中的CBS模塊進(jìn)行RepVGG模塊的替換,提高模型的特征提取能力的同時提高檢測精度。而后將通道注意力模塊(channel block attention module,CBAM)融合到Neck層中,提高模型對小目標(biāo)的魯棒性,最后使用EIoU(efficient-IoU)損失函數(shù)來代替GIoU(generalized-IoU)損失函數(shù),提升模型的迭代速度與檢測精度。將模型運用于CCTSDB數(shù)據(jù)集中,驗證改進(jìn)算法的可行性與實用性。
2015年,YOLO算法的提出將目標(biāo)檢測問題劃分為了回歸問題,YOLO把圖片細(xì)劃為網(wǎng)格,再由網(wǎng)格預(yù)測檢測目標(biāo)。而YOLOv2提出Darknet-19,利用錨框提高算法的召回率。2018年,YOLOv3提出Darknet-53網(wǎng)絡(luò),強化其檢測速度與精度。到了2020年,Bochkovskiy等[13]在YOLOv3的基礎(chǔ)上,融合多通道網(wǎng)絡(luò)(cross-stage partial network,CSPNet)與Darknet-53作為主干特征提取網(wǎng)絡(luò),在主干網(wǎng)絡(luò)末端添加金字塔空間池化結(jié)構(gòu)(spatial pyramid pooling,SPP)來擴大模型的感受野并結(jié)合路徑聚合網(wǎng)絡(luò)(path aggregation network,PANet)形成YOLOv4網(wǎng)絡(luò)。CSPNet可以實現(xiàn)多樣的梯度組合,而SPP模塊通過4種池化核對特征圖進(jìn)行處理實現(xiàn)更好的特征提取效果。
圖1為YOLOv5的結(jié)構(gòu)圖。YOLOv5相較于YOLOv4,除了繼續(xù)在主干網(wǎng)絡(luò)中沿用C3結(jié)構(gòu),也在Neck層中添加了C3結(jié)構(gòu),增強了網(wǎng)絡(luò)的特征融合能力。
h×w×c表示模塊右側(cè)數(shù)字為對應(yīng)特征圖的尺寸參數(shù),h、w、c分別對應(yīng)特征圖的高度(high)、寬度(weight)和通道數(shù)(channel);k(kernel)為卷積核的尺寸;s(stride)為卷積步幅;p(padding)為填充像素行/列數(shù)圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 YOLOv5 network architecture
綜上所述,得益于YOLOv5模型小、訓(xùn)練時間短、推理速度快、更易部署等特點,YOLOv5更加適用于自動駕駛中的交通標(biāo)志識別。
RepVGG[14]在VGG網(wǎng)絡(luò)中引入identity殘差分支,利用結(jié)構(gòu)重參數(shù)化實現(xiàn)模型在訓(xùn)練階段與推理階段的解耦。
RepVGG的訓(xùn)練模塊如圖2(a)所示,由3×3卷積、1×1卷積、殘差結(jié)構(gòu)構(gòu)成多分支網(wǎng)絡(luò)。引入的殘差結(jié)構(gòu),可以有效針對梯度消失的情況,促使模型更快收斂。
圖2 RepVGG訓(xùn)練模型和推理模型結(jié)構(gòu)Fig.2 RepVGG training model and inference model structure
推理模塊如圖2(b)所示,由3×3卷積和激活函數(shù)ReLU組成的類VGG結(jié)構(gòu),因結(jié)構(gòu)簡單,能夠極大加速模型的推理。RepVGG采用重參數(shù)化將訓(xùn)練模型轉(zhuǎn)化為推理模型,融合CONV與BN層,將處理后的卷積層都轉(zhuǎn)換成為3×3卷積,最后合并分支中的3×3卷積,疊加所有分支的權(quán)重W和偏置b,從而得到最終的3×3卷積進(jìn)行推理。為了滿足交通標(biāo)志檢測模型精度高、速度快的需求,引入RepVGG模塊,提高主干網(wǎng)絡(luò)的特征提取能力,減少特征信息丟失,在提高網(wǎng)絡(luò)特征取能力的同時兼顧速度。
注意力機制可以幫助卷積神經(jīng)網(wǎng)絡(luò)將特征的權(quán)重從特征圖中提取出來,再將權(quán)重進(jìn)行重分配從而抑制無效特征增強有效特征,使得網(wǎng)絡(luò)能夠更好地關(guān)注到圖像中的重點區(qū)域。
如圖3所示,CBAM包括通道注意力模塊(channel attention module,CAM)與空間注意力模塊(spatial attention module,SAM)兩部分,特征圖經(jīng)由通道注意力模塊,消除空間維度的影響,使網(wǎng)絡(luò)更專注于關(guān)鍵特征,再經(jīng)由空間注意力模塊,使網(wǎng)絡(luò)學(xué)習(xí)到關(guān)鍵特征的具體位置。
圖3 CBAM注意力機制Fig.3 CBAM attention mechanism
在CAM中,先對輸入特征圖進(jìn)行平均池化和最大池化,消除空間維度的影響,得到兩個一維特征。再將兩個一維特征輸入到兩層共享神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元個數(shù)分別為c/r和c。然后,將各元素進(jìn)行相加合并,并通過Sigmoid激活函數(shù)進(jìn)行非線性處理,生成通道注意力特征Mc(F)∈Rc×1×1。最后通過通道注意力特征Mc(F)和輸入特征圖F進(jìn)行元素相乘的方式,重新分配通道權(quán)重,得到新的通道特征圖F′。通道關(guān)注度Mc(F)∈Rc×1×1的計算公式為
Mc(F)=σ{MLP[AvgPool(F)]+
MLP[MaxPool(F)]}
(1)
式(1)中:σ為Sigmoid函數(shù)。
空間注意力模塊將通道特征圖F′作為輸入,為了加強對待檢測目標(biāo)的關(guān)鍵區(qū)域的關(guān)注,依次對通道特征圖F′進(jìn)行基于通道的全局最大池化和全局平均池化,從而得到兩個特征圖。再合并兩個特征圖的通道數(shù),獲得尺寸為2×h×w的空間特征圖。之后利用7×7的卷積核與Sigmoid函數(shù)對其進(jìn)行卷積與非線性處理,得到特征圖的空間關(guān)注度Ms(F)∈RH×W,最后將經(jīng)由通道注意力模塊所得的特征圖F′與空間注意度Ms(F)∈RH×W逐元素相乘得到最終特征圖F″。此時網(wǎng)絡(luò)不僅學(xué)習(xí)到了該特征包含什么關(guān)鍵特征,還學(xué)習(xí)到了關(guān)鍵特征所在位置??臻g關(guān)注度Ms(F)∈RH×W的計算公式為
Ms(F)=σ(f7×7{[AvgPool(F);MaxPool(F)]})
(2)
式(2)中:f7×7為7×7的卷積核。
選擇合適的損失函數(shù)有利于獲得針對該數(shù)據(jù)集表現(xiàn)優(yōu)異的模型,并且在訓(xùn)練過程中達(dá)到更快收斂[15]。
YOLOv5使用GIoU損失函數(shù),引入預(yù)測框與真實框的最小外接矩形。GIoU損失函數(shù)為
(3)
式(3)中:A為預(yù)測框的面積;B為真實框的面積;C為A,B的最小外接矩形的面積。引入最小外接矩形,即使A,B不相交仍可以實現(xiàn)梯度下降。但其也存在一定的缺陷。如圖4所示,當(dāng)A,B為包含狀態(tài)時,此時GIoU損失函數(shù)便無法確定兩個框的位置關(guān)系。
圖4 預(yù)測框與真實框互為包含F(xiàn)ig.4 The prediction box and the real box are mutually inclusive
為了解決這一問題,CIoU[16]損失函數(shù)通過增加多種判別因素,使真實框的擬合更加趨向平穩(wěn)。為CIoU損失函數(shù)表達(dá)式為
(4)
式(4)中:ρ2(A,B)為預(yù)測框與真實框中心的歐式距離;c為兩框的最小閉包區(qū)域的對角線長度;α為平衡比例的參數(shù);v用于判斷預(yù)測框與真實框的長寬比統(tǒng)一性;Aw、Ah、Bw、Bh為預(yù)測框與真實框的寬高。但CIoU損失函數(shù)未考慮長寬邊長真實差,縱橫比描述的是相對值,存在一定的模糊。
故采用EIoU[17]損失函數(shù)來替代CIoU損失函數(shù)。EIoU損失函數(shù)表達(dá)式為
(5)
式(5)中:b和bgt為預(yù)測框與真實框的中心點;ρ為兩點的歐式距離;d為兩框的最小外接矩形的對角線長;ω、ωgt、h、hgt分別為預(yù)測框與真實框的寬度與長度;cω、ch分別為覆蓋兩個框的最小外接矩形的寬度和長度。
EIoU損失函數(shù)不僅考慮了預(yù)測框與真實框的重疊面積、中心點距離以及長寬邊長真實差,相較于CIoU損失函數(shù)還對縱橫比的模糊定義提出了解決方法,能有效幫助模型更好地收斂,從而獲得更加出色的模型。
改進(jìn)后的YOLOv5結(jié)構(gòu)如圖5所示,將主干特征提取網(wǎng)絡(luò)中的CBS模塊替換為RepVGG模塊,加強主干網(wǎng)絡(luò)的特征提取能力。在Neck層將CBS模塊替換為RepVGG模塊,并在圖像特征提取前融合CBAM注意力機制,提升網(wǎng)絡(luò)對于特定目標(biāo)區(qū)域的感知能力,從而實現(xiàn)更高的目標(biāo)檢測精度。最后在網(wǎng)絡(luò)訓(xùn)練過程中使用EIoU損失函數(shù),通過引入目標(biāo)框長度、寬度,解決了GIoU、CIoU損失函數(shù)在水平和垂直方向上誤差較大的問題。
圖5 改進(jìn)YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 Improving YOLOv5 network structure
數(shù)據(jù)集采用由長沙理工大學(xué)制作的CCTSDB[18]交通標(biāo)志數(shù)據(jù)集,其為當(dāng)前中國交通標(biāo)志公認(rèn)的數(shù)據(jù)集之一。從中選取10 000張圖片,該數(shù)據(jù)集標(biāo)注的數(shù)據(jù)共分為指示、禁止、警告3種類型。將標(biāo)注信息通過程序轉(zhuǎn)換為TXT格式,按照9∶1的比例將數(shù)據(jù)劃分為訓(xùn)練集與測試集。訓(xùn)練時,采用Mosaic數(shù)據(jù)增強,將4張圖片拼接為一張圖像,加強圖像的多樣性,降低GPU資源的消耗。
實驗在Windows 10系統(tǒng)下進(jìn)行,實驗設(shè)備為Intel i7CPU,顯卡為GTX3090,24 G顯存。使用Pytorch1.12,CUDA版本為11.3,使用Python語言進(jìn)行代碼編寫。
目標(biāo)檢測的重要性能評價指標(biāo)為準(zhǔn)確率(precision,P)、平均準(zhǔn)確率(mean average precision,mAP)、召回率(recall,R),公式如下。
(6)
(7)
(8)
式中:TP為真正例,即樣本自身的真實標(biāo)簽為A,而預(yù)測的標(biāo)簽也為A;FP為假正例,即樣本自身的真實標(biāo)簽為B,但預(yù)測的標(biāo)簽卻為A;FN為假負(fù)例,即樣本本身的真實標(biāo)簽為A,但預(yù)測的標(biāo)簽為B;AP為所有類別的平均準(zhǔn)確率均值;N為類別數(shù)。
選擇部分從校園以及街道所采集到的圖像對改進(jìn)算法與YOLOv5算法進(jìn)行對比測試。圖6所示為改進(jìn)算法與原算法的檢測結(jié)果對比。
由圖6可知,原始YOLOv5在照片相對比較模糊且交通標(biāo)志比較小的情況下會出現(xiàn)檢測缺失,第二張圖無法檢測出禁止標(biāo)志的現(xiàn)象。而改進(jìn)算法針對第一張圖像的交通標(biāo)志檢測置信度更高,且成功識別第二張模糊圖像中的小目標(biāo)。
圖7所示為改進(jìn)算法與YOLOv5、YOLOv4的評測標(biāo)準(zhǔn)對比,可以看出,在訓(xùn)練初期改進(jìn)算法與YOLOv5算法相較于YOLOv4來講收斂更快,而在迭代10次以后,可以明顯看到改進(jìn)算法在各項指標(biāo)都超越了另外兩種算法,在迭代39次時基本各項數(shù)據(jù)達(dá)到最優(yōu),后續(xù)的迭代評價指標(biāo)也基本維持在最優(yōu)值僅有小幅度波動。
圖7 評測標(biāo)準(zhǔn)對比Fig.7 Comparison of evaluation standards
各算法的最優(yōu)性能指標(biāo)如表1所示??梢钥吹?改進(jìn)的算法相比較于原始YOLOv5在準(zhǔn)確率上提高了4.99%,達(dá)到91.55%,召回率提高了3.62%達(dá)到85.04%。mAP提高了1.73%,達(dá)到了91.71%。
表1 改進(jìn)算法與其他算法的性能對比Table 1 Comparison of performance between improved algorithms and other algorithms
針對傳統(tǒng)交通標(biāo)志檢測算法所存在的精度較低的問題,提出一種融合RepVGG的改進(jìn)YOLOv5算法。通過更替主干特征提取網(wǎng)絡(luò)中CBS模塊為RepVGG模塊,在Neck層融合CBAM注意力機制、RepVGG模塊。改進(jìn)后的YOLOv5得益于重參數(shù)化后的RepVGG模塊,算法在CCTSDB數(shù)據(jù)集的檢測精度、檢測速度得以優(yōu)化,適宜應(yīng)用在實踐中。所以改進(jìn)算法在自動駕駛交通標(biāo)志識別方面有著較高的應(yīng)用價值。但CCTSDB的交通標(biāo)志類型過少,面對復(fù)雜多樣的交通路況與標(biāo)志并不能精確檢測其具體含義,接下來會使用分類更為多樣與精確的TT100K數(shù)據(jù)集來對算法進(jìn)行驗證,實現(xiàn)更加有指導(dǎo)意義的交通標(biāo)志檢測。