鄧天民,譚思奇,蒲龍忠
(重慶交通大學交通運輸學院,重慶 400074)
近年來,無人駕駛技術迎來了快速的發展,對無人駕駛場景中行人[1]、交通標志[2]等目標進行檢測與識別的研究逐漸增多。交通信號燈在無人駕駛場景中扮演著極其重要的角色,因此,交通信號燈的檢測與識別研究具有重要意義。目前基于深度學習的相關研究較少,主要運用兩階段檢測和一階段檢測這兩類方法。在兩階段檢測中,具有代表性的算法有RCNN[3]、Fast-RCNN[4]、Faster R-CNN[5]等。文獻[6]設計了一種基于CIFAR-10 的多任務卷積神經網絡來對復雜環境下的交通信號燈進行檢測,但是網絡模型的泛化性和魯棒性不足。兩階段算法需要進行多次的檢測和分類流程,檢測速度相對較慢,因而研究者提出了一階段檢測方法,其中具有代表性的算法有YOLO[7-9]、SSD[10-11]、SqueezeDet[12]等。一階段檢測方法的特點是候選框的產生和分類同時進行,一步到位,檢測速度相對較快。文獻[13]提出了Split-CS-Yolo 算法對交通信號燈進行快速檢測與識別,該方法魯棒性較好但是對黃色信號燈和數字信號燈的檢測精度還有待提高。文獻[14]對YOLOv3 進行改進,通過在Darknet53 的第2 個殘差塊中增加2 個殘差單元來提高網絡對小目標的檢測性能,所提出的改進網絡能夠達到較高的檢測精度,但不滿足實時性的要求??梢?,以上改進方法對交通信號燈的檢測效果都不能滿足實際需求,在檢測速度和檢測精度之間難以達到較好的平衡。
本文通過改進YOLOv5s 算法,提升對交通信號燈的識別精度和檢測速度。設計一種基于密集連接的CSP 殘差模塊來替換原網絡模型主干網絡中的殘差結構,使得主干網絡能更準確地對信號燈的特征進行提取,進而提高網絡的檢測精度。同時,設計一種基于多層次的跨連接CSP 殘差模塊來替換頸部網絡中的殘差結構,增強網絡的特征融合能力。為加快網絡模型的檢測速度,對檢測尺度進行改進,考慮交通信號燈屬于小目標的屬性,只保留小目標檢測尺度。在此基礎上,采用巴黎交通信號燈LaRA 數據集進行實驗,驗證本文方法的有效性。
YOLOv5 網絡共有4 個版本,分別為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。YOLOv5s 是該系列檢測網絡中深度和特征圖寬度最小的網絡,其他幾個版本的網絡都是在此基礎上進行加深和加寬的。相比于其他系列的YOLO 檢測網絡,YOLOv5的權重文件相對較小,權重最小的YOLOv5s 僅27 MB,權重最大的YOLOv5x 也只有170 MB。因此,基于體積小的優勢,YOLOv5 非常適合部署到嵌入式的設備中。實現對交通信號燈的檢測是無人駕駛的重要環節,而YOLOv5 非常適合應用在交通場景下對交通信號燈進行檢測[15]?;趯嘀匚募笮?、識別精度和檢測速度的綜合考慮,本文選擇檢測速度較快、識別精度較高的YOLOv5s 進行研究,對其網絡結構進行改進。
YOLOv5s 網絡結構如圖1 所示,其中的主干網絡對輸入的圖像進行了5 次下采樣來提取圖像的特征,主干網絡包含Focus、CBH、CSP1-x、SPP[16]4 種模塊。

圖1 YOLOv5s 網絡結構Fig.1 YOLOv5s network structure
輸入YOLOv5s 網絡的圖像通過Focus 模塊進行自我復制,然后進行切片操作,以此來減少網絡的計算量,加快對候選區域特征提取的速度。切片的圖像通過CBH 模塊進行卷積、歸一化和激活操作,然后進行特征提取。在特征提取的過程中,CSP1-x 殘差結構用于優化網絡中的梯度信息,減少推理計算量,加快計算速度。最后,SPP 模塊將不同尺寸的輸入轉換為相同大小的輸出,解決輸入圖像尺寸不統一的問題。YOLOv5 的Neck 網絡使用了ReLU 激活函數,采用FPN[17]+PAN[18]網絡結構,其中FPN 層通過自頂向下對圖像進行上采樣,將提取到的特征與主干網絡中提取到的特征進行融合。在FPN 層之后,還添加了一個自底向上的特征金字塔結構,用于對圖像進行降采樣,將提取到的特征和FPN 層提取到的特征進行融合。通過FPN+PAN 網絡結構可以對主干網絡和檢測網絡提取的特征進行聚合,增強網絡特征融合的能力。此外,Neck 網絡中還加入了CSP2-x 結構對提取的特征進行融合。輸出端采用CIoU[19]作為Bounding box 的損失函數,并且提供了3 種不同的檢測尺度(20×20、40×40、80×80)。
YOLOv5s 網絡中有3處CSP1-x 結構,該結構借鑒了CSPNet[20]的思路,把基礎層的特征映射為2個部分,然后通過跨階段層次結構進行合并,從而減少計算量和提高運行速度,同時保證精度。CSP1-x 殘差結構如圖2 所示。

圖2 CSP1-x 殘差結構Fig.2 CSP1-x residual structure
CSP1-x殘差組件的設計借鑒了ResNet[21]網絡的設計思想,通過在卷積層之間增加跨連接(Shortcut)方式,減少網絡模型的計算量,加快運行效率。跨連接(Shortcut)和CSP1-x殘差組件結構分別如圖3、圖4所示。

圖3 Shortcut 連接Fig.3 Shortcut connection

圖4 CSP1-x 殘差組件結構Fig.4 CSP1-x residual component structure
為了更好地解決梯度發散的問題,文獻[22]提出了DenseNet 網絡。在DenseNet 中,每兩個卷積層之間都添加了跨連接,密集跨連接的方式使得各卷積層獲取的特征都能向后進行傳遞并且相互融合,因此,提取到的特征也更豐富和多樣化。DenseNet核心表達式如式(1)所示:

其中:xk表示第k層網絡的輸出;[x0,x1,…,xk-1]表示將第0 層到第k-1 層網絡提取的特征進行合并;Hk表示包括卷積層、歸一化層和ReLu 激活函數層的組合方式。DenseNet 結構如圖5 所示。

圖5 DenseNet 網絡結構Fig.5 DenseNet network structure
基于DenseNet 網絡結構,本文設計了新的unit組件D-unit(Dense-unit)。D-unit依舊采用1×1 和3×3兩種大小的卷積核、歸一化層和Hardwish 激活函數層。通過在原來的基礎上對每個CBH 模塊之間都添加跨連接,使得各個模塊緊密連接,從而更好地解決深度網絡模型退化問題。D-unit 殘差組件結構如圖6 所示。

圖6 D-unit 殘差組件結構Fig.6 D-unit residual component structure
首先,輸入的特征信息經過第1 個CBH 模塊,該模塊含有1×1 大小的卷積核;然后,將卷積后得到的特征信息與輸入的信息進行融合輸出到第2 個CBH模塊進行卷積,第2 個CBH 模塊采用3×3 大小的卷積核,能得到與第1 個CBH 模塊不同的特征信息;最后,將最開始輸入到D-unit 的特征信息與第1 個CBH 模塊和第2 個CBH 模塊得到的特征信息進行融合,將融合后的特征信息輸入到下一個特征提取結構中。
改進后CSPD-x 的殘差組件以跨連接的方式將各卷積層進行密集連接,主要是為了防止模型的退化,使得模型可以更快地收斂到最優解。密集連接能夠對特征進行重利用,使特征相互融合,而對融合后的特征進行提取能夠獲得更多的目標信息,提高識別的精度。CSPD-x 結構如圖7 所示。

圖7 CSPD-x 殘差結構Fig.7 CSPD-x residual structure
YOLOv5s 網絡中還使用了另一種殘差結構——CSP2-x。與CSP1-x 結構不同,CSP2-x 結構主要是對輸入的特征圖進行卷積,并對所提取到的特征信息進行融合。在CSP2-x 結構中,殘差組件的作用僅僅是對輸入圖像的特征信息進行提取。CSP2-x 殘差結構如圖8 所示。

圖8 CSP2-x 殘差結構Fig.8 CSP2-x residual structure
通過對原殘差組件的分析,本文設計了一種新的殘差組件S-unit(Shortcut-unit)。該結構由4 個CBH 模塊組成,卷積核的大小分別對應為1×1、3×3、1×1、3×3。各個模塊之間通過多個跨連接方式相互連接。分別在第1 個和第2 個、第3 個和第4 個CBH模塊間加入跨連接,然后再將第2 個和第4 個CBH模塊之間進行跨連接。原始輸入的特征信息通過第1 個卷積核大小為1×1 的CBH 模塊,提取后的特征信息輸入到第2 個卷積核大小為3×3 的CBH 模塊,將原始輸入的特征信息和第2 個CBH 模塊所提取到的信息進行融合再輸入到第3 個卷積核大小為1×1 的CBH 模塊,得到的特征信息和第1 個CBH 模塊所提取到的信息融合后輸入到第4 個卷積核大小為3×3 的CBH 模塊,第4 個CBH 模塊輸出的結果和第1 個CBH 模塊所得到的特征信息融合后再輸入到后面的卷積網絡層。S-unit 殘差組件與原網絡殘差組件對比如圖9 所示。

圖9 S-unit 殘差組件和原網絡殘差組件結構Fig.9 S-unit residual component structure and the original network residual component structure
在原結構中,CSP2-x 殘差組件的作用主要是對特征圖的特征信息進行提取,各卷積層之間的特征信息并沒有相互融合,這樣會導致隨著卷積層層數增加提取到的特征信息部分丟失。此外,原結構直接將各卷積層連接起來,會導致訓練時網絡模型的退化,且梯度容易發散,難以收斂到最優的結果。CSPS-x 殘差結構通過跨連接的方式對各層提取到的特征信息進行融合,有效地解決了特征信息丟失的問題,而且還能防止模型的退化,使得對網絡的訓練更容易進行。CSPS-x 殘差結構如圖10 所示。

圖10 CSPS-x 殘差結構Fig.10 CSPS-x residual structure
原YOLOv5s 網絡共有3 種規格的檢測尺度,分別為20×20、40×40、80×80。20×20 檢測尺度的感受野為32×32 大小的像素區域,主要用于檢測大型物體;40×40檢測尺度的感受野為16×16 大小的像素區域,主要用于檢測中等大小的物體;80×80檢測尺度的感受野為8×8大小的像素區域,主要用于檢測小型物體。
由于交通信號燈在交通場景下屬于較小的目標,因此本文對原YOLOv5s 的3 種檢測尺度進行改進,保留40×40 和80×80 這兩種針對中小型目標的檢測尺度,去除20×20 這一針對大型目標的檢測尺度,從而使網絡能夠更好地處理待檢測目標,同時加快網絡的運行速度。改進后的網絡命名為TL-YOLOv5s,結構如圖11所示。

圖11 TL-YOLOv5s 網絡結構Fig.11 TL-YOLOv5s network structure
法國巴黎LaRA 信號燈數據集適用于目標檢測研究,且只標注了交通信號燈這一種類別,數據量大,包含的交通場景也非常豐富,因此,本文選用LaRA 信號燈數據集對所提出的方法進行評估。對于實驗部分使用的硬件平臺,CPU 采用Intel i7-9750H,GPU 采用NVIDAI GTX1660Ti,操作系統為Window10,訓練框架采用Pytorch1.6。
法國巴黎LaRA 信號燈數據集包含9 168 張圖片,圖片尺寸為640×480像素,包含green(通行)、orange(警示)、red(停止)、ambiguous(模糊)4 種不同類別的標簽,數量分別為3 381、58、5 280、449 張。其中,模糊的圖片是由于在拍攝的過程中車輛出現抖動所導致。各信號燈種類及標簽數量如表1 所示。

表1 LaRA 信號燈數據集中各類目標的數量Table 1 The number of various targets in LaRA signal light dataset
由于數據集中包含的模糊變形的圖片會對實驗的結果產生較大影響,因此本文對LaRA數據集進行處理,剔除掉449 張模糊變形的圖片,使用剩余的8 719 張圖片進行實驗。數據集圖片樣本如圖12 所示。

圖12 LaRA 數據集圖片樣本Fig.12 Image samples of LaRA dataset
對原YOLOv5s 模型和改進后的YOLOv5s 模型分別進行訓練。剔除LaRA 信號燈數據集中模糊的449 張圖片和標簽,將剩余的圖片和標簽按8∶1∶1 的比例分為訓練集、測試集和驗證集,訓練階段初始學習率調整為0.01,訓練迭代次數epoch 設定為200 次。在此基礎上,通過GPU 對原YOLOv5s 和改進后的YOLOv5s 網絡模型進行訓練。
本文選取精確率(Precision)、召回率(Recall)、平均精度(Average Precision,AP)、平均精度均值(mean Average Precision,mAP)、幀率(Frames Per Second,FPS)等評價指標[23]對模型性能進行評價。
1)準確率Pprecision和召回率Rrecall的計算公式如下:

其中:TP表示正確檢測出的目標數量;FP表示被誤檢的目標數量;FN表示未被檢測出的樣本數量。
2)平均精度AAP和平均精度均值mmAP的計算公式如下:

其中:Nc表示類別個數;PA表示不同類別的平均精度。實驗結束后利用實驗數據可以繪制出網絡模型的PR 曲線,該曲線所圍成的面積即被定義為AP,用于評估模型在單個檢測類別上的表現。計算出每一類的AP 值之后,進行平均即得到mAP。通常來說,mAP 值越高,表示網絡模型性能越好。
3)檢測速度一般用FPS 來衡量,表示目標檢測網絡每秒能處理圖片的數量,FPS 值越大,表示網絡模型處理圖像的速度越快。
3.4.1 主干網絡殘差結構改進實驗
原YOLOv5s 主干網絡中共有3 處CSP1-x 結構,對其進行替換加入新的結構CSPD-x,然后再對改進后的網絡模型和原網絡模型分別進行訓練,在LaRA數據集上比較2 種網絡的檢測結果。對改進后模型訓練200 個epoch 后損失曲線變化如圖13 所示,其中cls_loss、obj_loss 和box_loss 分別代表分類損失、置信度損失和邊界框回歸損失,由該圖可以看出曲線走勢基本趨于平穩。

圖13 模型改進后的訓練損失曲線Fig.13 Training loss curve after model improvement
原網絡和改進網絡(以CSPD-x 表示)識別各類別的平均精度和平均精度均值如表2 所示。

表2 主干網絡殘差結構改進前后實驗結果對比Table 2 Comparison of experimental results before and after improvement of residual structure in backbone network %
由表2 可以看出:改進后的網絡相比于原網絡對各類目標的識別精度都有提升,其中綠色信號燈的識別精度相比于原網絡提升了7.2 個百分點,由于數據集中黃色信號燈數量較少且圖片較為清楚,因此黃色信號燈的識別精度較高,而紅色信號燈的識別精度提升不是特別明顯,僅提升了0.3 個百分點,但是總體上改進網絡mAP 值較原網絡提升了2.5 個百分點。
3.4.2 特征融合網絡殘差結構改進實驗
為驗證不同跨連接方式的效果,設計另外2 種不同的殘差組件來進行對比實驗(以CSPS1-x 和CSPS2-x 表示),驗證CSPS-x 結構的有效性,各殘差組件結構如圖14 所示。最后通過比較和分析選擇出最優的連接方案對原CSP2-x 結構進行替換。

圖14 3 種殘差組件結構對比Fig.14 Comparison of three residual component structures
根據3 種不同的改進方案,分別對原CSP2-x 結構進行替換和訓練,訓練完成后進行測試,實驗結果如表3 所示。

表3 特征融合網絡殘差結構改進前后實驗結果對比Table 3 Comparison of experimental results before and after improvement of residual structure in feature fusion network %
由表3 可以看出:相較于原網絡,3 種改進網絡識別效果都有所提升。在對綠色信號燈的識別上,CSPS-x 性能最好(AP 為66.8%),相比于原網絡提升10.8 個百分點;在對黃色信號燈的識別上,由于各網絡的識別效果都較好(AP 均為99.5%),因此3 種改進網絡的AP 值沒有提升;在對紅色信號燈的識別上,各網絡的效果都較差,3 種改進網絡的AP 只有小幅提升,CSPR1-x 相比于原網絡提升0.1 個百分點(AP 為36%),CSPR2-x 和CSPS-x 都提升0.2 個百分點(AP 為36.1%)??傮w來看,3 種改進方案對交通信號燈識別的mAP 值都有較大的提升,其中第3 種方案提升最大(mAP 為67.5%),相較于原網絡提升3.7 個百分點。由此可見,CSPS-x 結構所帶來的優化效果優于CSPS1-x 和CSPS2-x。因此,選擇CSPS-x結構對原網絡進行改進,替換原網絡中的CSP2-x結構。
3.4.3 檢測尺度改進實驗
本文對原網絡進行了檢測尺度的改進。原YOLOv5s 共有3 種檢測尺度,分別為20×20、40×40、80×80。本實驗通過增加或減少檢測尺度的種類來尋找出最適合交通信號燈檢測的尺度種類。
為驗證本文對于檢測尺度改進的合理性和有效性,在原網絡的基礎上去除20×20、40×40 規格的檢測尺度,保留80×80 的檢測尺度,得到只具有一個檢測尺度的網絡來增加實驗的可對比性。然后再根據之前的改進思路在原網絡的基礎上去掉20×20 的檢測尺度,保留40×40、80×80 這2 個規格檢測尺度。最后對原網絡和檢測尺度改進后的網絡模型分別進行訓練,得到的檢測結果如表4 所示

表4 檢測尺度改進前后實驗結果對比Table 4 Comparison of experimental results before and after improvement of detection scale
由表4 可以看出:只有1 個80×80 檢測尺度的網絡速度最快(36.5 frame/s),相比于原網絡提升27.6 個百分點,但mAP 值下降1.4 個百分點;具有2 個檢測尺度的改進網絡檢測速度為32.3 frame/s,相比于原網絡提升12.9 個百分點,而mAP 值只減少0.3 個百分點;1 個檢測尺度的網絡相比于2 個檢測尺度的網絡識別精度減少較大,同時相比于原網絡,改進后的2 個網絡都能達到較高的檢測速率。綜合以上實驗結果,本文選擇保留40×40、80×80 這2 種規格的檢測尺度來對原網絡進行改進。
3.4.4 網絡模型消融實驗
通過以上實驗分析,對原網絡的網絡結構分步驟依次進行改進,對改進后的網絡模型進行訓練并測試,消融實驗結果如表5 所示。其中:●表示應用此方案;○表示不應用此方案。

表5 消融實驗結果對比Table 5 Comparison of results in ablation experiment
由表5可以看出:在采用CSPD-x結構和CSPS-x結構分別替換了CSP1-x 結構和CSP2-x 結構后,各類別識別精度都有較大的提升,mAP 值達到70.5%,但是檢測速度為19.9 frame/s,相比于原網絡下降8.7 frame/s;在去除20×20 檢測尺度后,各類別的識別精度略微下降,mAP 值降低了0.4 個百分點,但檢測速度較未去除之前提升12.6 個百分點,達到22.4 frame/s。由此可見,改進網絡能夠較好地實現對交通信號燈的檢測與識別,并且滿足實時性的要求。
實際環境下的檢測效果對比如圖15 所示,從中可以看出,原網絡存在許多信號燈未被檢測出的情況,而改進網絡對交通信號燈的檢測效果更好,識別精度更高。由此可見,改進網絡更適用于對交通信號燈的檢測與識別。
在LaRA 數據集上將本文方法與使用不同網絡的識別方法進行對比,如表6 所示。

表6 LaRA 數據集上不同方法的實驗結果對比Table 6 Comparison of experimental results by different methods in LaRA dataset %
由 表6 可以看出:TL-YOLOv5s 網絡在LaRA 數據集上相比于其他網絡具有更好的識別性能,對黃色和綠色信號燈的識別精度均為最高,對紅色信號燈的識別精度略低于Faster R-CNN??傮w上,TL-YOLOv5s 網絡模型的mAP 值達到70.1%,相比于RefineDet、Faster R-CNN、R-FCN 等方法有較大幅度提升。
針對傳統交通信號燈識別方法精度低且難以達到實時檢測要求的問題,本文提出一種改進的YOLOv5s 網絡。設計2 種新的殘差模塊替換YOLOv5s 網絡中的殘差模塊,增強主干網絡特征提取能力和融合網絡特征融合能力,提高檢測精度同時防止網絡訓練時模型退化。在此基礎上,對網絡的檢測尺度進行改進,去除大目標檢測尺度而保留中小目標檢測尺度,以此來適應交通信號燈的檢測,進一步提高網絡運行的速度。實驗結果表明,TL-YOLOv5s 在LaRA 數據集上取得了70.10%的平均精度均值和22.38 frame/s 的檢測速度,相比YOLOv5s、R-FCN 等網絡具有更高的識別精度且滿足實時性的要求。下一步將通過增加數據集中交通信號燈的類別擴大模型的識別范圍,提高其在實際環境下的檢測性能。