錢 伍,王國中,李國平
上海工程技術大學 電子電氣工程學院,上海201620
交通燈檢測是指對交通燈定位和識別,作為自動駕駛和輔助駕駛中的核心算法之一,直接關系到智能汽車的行駛決策。對交通燈準確定位和類別檢測能夠為行駛中的車輛提供交通信號信息,保障車輛行駛安全。顯然,實時和魯棒的交通燈檢測算法可以幫助智能汽車提前獲取交通信號信息,避免交通事故的發(fā)生,提高汽車的安全性能。
隨著計算機視覺和深度學習的快速發(fā)展,從視覺方面對交通燈檢測取得重大突破。但是,基于計算機視覺的交通燈檢測算法也面臨諸多困難,總結為以下幾個方面:(1)交通燈在圖像中具有較小的尺度,算法定位困難;(2)行駛中的車輛抖動,采集到的圖像模糊,交通燈的邊緣信息難以確定;(3)交通燈的顏色和幾何特征易與環(huán)境中其他物體混淆,算法產生誤檢測;(4)交通燈處于復雜多變的戶外,算法難以泛化,魯棒性差;(5)檢測信息需要及時回傳到汽車的控制系統,算法要有可靠的實時性。
傳統的交通燈檢測算法往往只考慮單一環(huán)境,關注交通燈的顏色和幾何特征,使用特征提取、模板匹配和分類算法對交通燈進行識別。其中Sobel 邊緣檢測、Hough 變換和支持向量機(support vector machine,SVM)等算法被組合應用到交通燈的檢測中。Omachi等人在交通燈顏色特征下,提出歸一化輸入圖像的RGB 空間的方法提取候選區(qū)域,在候選區(qū)域上使用Hough 變換檢測交通燈。Li 等人將形態(tài)學濾波和統計方法結合在一起,首先使用Top-Hat 變換將輸入圖像變換為二值圖像,再使用閾值分割法提取明亮區(qū)域,結合形態(tài)學處理該區(qū)域,最后使用統計分析方法識別交通燈。這些算法不可避免地使用了大量人工提取的特征,魯棒性差,只能在特定的場景中實現,實時性難以達到要求。
近年來,以卷積神經網絡為核心的目標檢測算法取得了發(fā)展。這些算法可分為一階段和二階段算法,一階段的代表算法包括:OverFeat、SSD(single shot multibox detector)系列、YOLO(you only look once)家族和EfficientDet等。二階段的代表算法有R-CNN(region-based convolutional neural networks)家族和SPPNet等。
Manana 等人使用一種提前預處理的Faster RCNN對車道線進行檢測,相比沒有預處理,縮短了訓練的時間。Wang 等人使用HSV(hue saturation value)空間提取交通燈的候選區(qū)域,結合6 層卷積神經網絡對這些區(qū)域進行分類,實現了較高的速度和精度。Liu 等人在自建的交通數據集上,提出改進YOLOv3 模型,模型檢測速度達到了59 frame/s,精度高達91.12%。Thipsanthia 等人在泰國交通數據集下使用YOLOv3 和YOLOv3-tiny 對50 類路標進行檢測,檢測精度分別達到了88.10%和80.84%。Choi 等人基于YOLOv3,設計了高斯損失函數,增加了模型對交通燈的召回率,在BDD100K數據集上,最好獲得了20.8%的mAP。
基于深度學習的目標檢測算法彌補了傳統算法中人工提取特征的不足,但是在特征提取過程中對原始圖像進行多次下采樣,對小目標檢測能力差。并且,這些算法不僅網絡結構復雜,而且模型規(guī)模大,訓練代價高。
YOLO 算法將目標檢測問題轉化為回歸問題,有著快速檢測的能力。YOLOv5 延續(xù)網格檢測方法,每個網格預測3 個bboxes(bounding box),每個bbox 包含4 個坐標、1 個置信度和個條件類別概率。
如圖1,為了增加感受野且不影響模型推理速度,YOLOv5 在骨干網絡增加Focus 層,將圖像的寬度和高度信息轉化為通道信息。為了減少冗余信息,YOLOv5借鑒了CSPNet,設計兩種不同的BottleneckCSP 結構,分別記作CSP1 和CSP2。其中CSP1 用特征提取部分,CSP2 用于特征融合部分。YOLOv5 有著四種不同規(guī)模的模型,分別記為YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x,模型參數依次增加,目標檢測能力逐漸提升。盡管YOLOv5 有著快速識別和自適應錨框等優(yōu)點,但是對目標特征提取能力不足,并且特征融合網絡僅僅關注高級語義信息。因此,在此基礎上提出改進方法,增加模型對類似交通燈這樣小且環(huán)境復雜目標的檢測能力。
圖1 YOLOv5 的網絡結構Fig.1 YOLOv5 network structure
本文分別從三方面改進YOLOv5:(1)改進模型的輸入尺度,使其能夠盡可能輸入較多的目標特征;(2)設計了ACBlock(asymmetric convolution block)、SoftPool和DSConv(depthwise separable convolution),旨在增加主干網絡的特征提取能力,減少模型參數;(3)設計記憶性特征融合網絡,增加模型對底層特征的學習能力。改進YOLOv5 的網絡結構如圖2 所示。
圖2 I-YOLOv5 的網絡結構Fig.2 I-YOLOv5 network structure
為了與YOLOv5 的四種模型對應,改進后的模型分別記作I-YOLOv5s、I-YOLOv5m、I-YOLOv5l 和I-YOLOv5x。
YOLOv5 以640×640 的尺度作為模型輸入,特征提取過程對目標進行了8 倍、16 倍和32 倍下采樣。此過程會使小目標丟失顯著特征,因此本節(jié)探究模型輸入,盡可能多地保留目標的顯著特征。
本文定義可見標簽的概念:標簽的GT(ground truth)經過主干網絡的特征提取后,尺度大于1×1,稱這個標簽為可見標簽,其對應的特征圖包含著目標的顯著特征。不可見標簽則會與周圍環(huán)境融合,生成弱信息特征圖,給檢測帶來了難度。由此,計算一個可見標簽閾值,控制模型輸入,使采樣后的特征有更多的顯著特征。以8 倍下采樣作為模型最低的下采樣值,推導模型輸入與可見標簽閾值之間的關系如下:
式中,是計算得到的模型輸入大??;=max{,},、分別是原始圖像的寬和高;是可見標簽閾值。
可見標簽比指的是尺度≥的標簽個數與總標簽數目的比值,可以確定可見標簽閾值,控制模型輸入??梢姌撕灡仍酱?,特征圖中目標的顯著特征越多。表1 以BDD100K 為數據集,給出了可見標簽閾值、可見標簽比、模型輸入尺寸、模型檢測能力、模型運行速度和模型訓練占用顯存之間的關系。如表1,隨模型輸入尺度的增加,模型的AP(average precision)也隨之增加。但是,相應的計算量會隨之增加。為了均衡AP 值和模型顯存占用,使用手肘法確定=13。此時模型的效益最高,相應的模型輸入為800×800。
表1 可見標簽比與模型性能關系Table 1 Relationship between visible label ratio and model performance
為了提高主干網絡對目標的特征提取能力,本文借鑒ACNet,設計了ACBlock作為CSP(cross stage partial)結構的基礎卷積。
如圖3,設計的ACBlock 由3 個卷積核3×3×、3×1×和1×3×組成。其中3×3×卷積核是一個正則卷積,可以提取圖像的基礎特征;3×1×和1×3×分別是豎形和橫形卷積核,二者可以提取圖像的縱向和橫向特征,以及目標的位置和旋轉特征。因此,ACBlock 比原卷積核能夠提取到更多的特征信息,提高了主干網絡的特征提取能力。
圖3 ACBlock 結構Fig.3 ACBlock structure
因為卷積滿足疊加原理(式(2)),所以ACBlock可以直接替換CSP 中的卷積核。ACBlock 提取特征后,依據式(2)進行特征疊加。
式中,是輸入,和是兩個兼容大小的卷積核,*是卷積運算。
在訓練階段,ACBlock 中的3 個卷積核被單獨訓練,疊加后再前向傳播。在推理階段,3個卷積核的權重被提前融合成一個正則卷積形式,再進行推理計算,因此不會增加額外的推理時間。融合公式如下:
ACBlock 可以直接替換原始卷積核,使主干網絡獲取到更多的特征信息。ACBlock 由三種卷積核實現,勢必也會增加模型參數,又因為ACBlock 中的每個卷積核被單獨訓練,所以模型訓練時間被延長。
池化是卷積神經網絡中一種至關重要的方法,它降低了網絡的計算,實現了空間不變性,更重要的是增加了后續(xù)卷積的感受野。YOLOv5 使用正則卷積實現模型下采樣,這不僅增加了計算量,而且還產生了較多的采樣損失。為此,本文提出在激活特征圖的池化區(qū)域內使用Softmax 方式實現池化,對特征圖進行2 倍下采樣。
在池化區(qū)域內,使用Softmax 計算每個元素激活的權重,將指數加權累加激活作為池化鄰域的激活輸出,指數加權權重和鄰域激活公式如下:
如圖4,類似卷積核,本文使用一個3×3 步長為2 的掩膜來對特征圖進行池化。在激活后的特征圖中,較高激活(圖中高亮塊)包含特征圖的主要特征信息,較低激活則包含次要信息。下采樣時,掩膜會覆蓋在特征圖的3×3 區(qū)域上,在此區(qū)域內計算每一個激活的Softmax 權重,較高的激活會獲得更高的權重。對此區(qū)域內的激活加權累加后,作為池化結果傳遞到下一個特征圖。這個過程中,池化區(qū)域內的所有激活都參與累加,較高的激活攜帶主要特征占據池化結果的主導地位,較低的激活也能將自己的次要特征信息傳遞到池化結果中。
圖4 SoftPool下采樣過程Fig.4 SoftPool down sampling process
因此,SoftPool 以加權求和保留了激活信息,對不同激活的關注度不同,很大程度上保留輸入的屬性,實現下采樣的同時能夠減少信息損失。
分析模型規(guī)模時,發(fā)現ACBlock 的引入,將模型參數增加了約70%。因此本文設計了DSConv 卷積核代替主干網絡中的部分正則卷積,旨在確保精度不變條件下減少模型參數。
如圖5(a)所示,YOLOv5 的正則卷積是由一個3×3×的卷積核實現,DSConv 則是由3×3×1 和1×1×兩個卷積核組成,卷積的過程也是兩步進行。先由3×3×1 的卷積核對特征圖進行逐通道卷積,得到結果;再由1×1×對進行逐點卷積,得到作為DSConv 結果輸出。
圖5 正則卷積與DSConv 對比Fig.5 Regular convolution compared with DSConv
將主干網絡中第二層卷積核(圖1backbone 部分)替換成DSConv(圖2backbone 部分),可以減少模型參數,對模型性能幾乎沒有任何影響。
對小目標檢測而言,底層特征比高級語義信息更重要。如圖6(a),YOLOv5 借鑒了PANet,采用自上而下和自下而上的順序融合方式生成三種高級語義信息,來計算損失。顯然,用于計算損失的只有高級信息,底層特征沒有被使用,丟失了較多小尺度信息,模型對目標邊緣學習能力也被局限。
因此本文提出一種記憶性特征融合網絡,旨在將高級語義信息和底層特征結合,讓模型同時學習底層特征和高級語義信息,增加模型對小目標的學習能力,提高模型對目標的定位和回歸能力。
如圖6(b),設計的記憶性融合網絡沒有邊緣融合節(jié)點,使用遠跳鏈接將底層特征直接傳遞到語義生成節(jié)點。因此,網絡末端可以將原始底層特征和高級語義信息再次融合。最終送入損失函數的特征既包含高級語義信息,又有底層特征。模型在學習高級語義信息的同時也能夠學習到底層信息,有助于模型檢測小尺度目標。
圖6 PANet與本文特征融合網絡結構Fig.6 PANet and proposed feature fusion network structure
由于融合的信息中包含了較多的底層信息,模型對目標的定位將更加精確,同時回歸框的精度也得到提高。如圖7,從特征融合的熱力圖中可以分析網絡對圖像的關注點。相比于PANet,記憶性特征融合網絡關注中心更集中在目標中心,給檢測頭提供了準確的位置中心,有助于模型的定位。因此,記憶性特征融合網絡可以提高定位精度。
圖7 特征融合后的熱力圖Fig.7 Heatmap of fused features
另外,熱力圖中目標邊緣處較多的熱點會增加模型對邊緣信息的判別難度。通過計算預測框和真實框的IOU(intersection over union)可以評估預測框回歸的精準度。表2 在BDD100K 驗證集上計算了改進方法的預測框與真實框的平均IOU。YOLOv5 模型預測框與真實框之間的平均IOU 是0.528,使用記憶性特征融合網絡后的平均IOU提高到了0.591,提高了0.063。記憶性特征融合網絡能夠克服目標邊緣問題,回歸精度增加了6.3 個百分點。
表2 預測框與真實框的平均IOUTable 2 Average IOU of predict and ground truth boxes
本文在BDDTL(BDD100K traffic light)和Bosch數據集上訓練模型,并測試改進方法的有效性。相比于Bosch,BDDTL 不僅有著更大的數據量,而且還具有更多的數據屬性,能夠充分測試模型的泛化能力。因此,本文在BDDTL 數據集上建立消融實驗和測試模型泛化能力。模型的訓練是在Nvidia Tesla V100 PCIE 32 GB GPU 上進行,測試是在Nvidia RTX2080 Super 8 GB GPU 上進行。
YOLOv5 的訓練參數見文獻[12],采用余弦退火的衰減方式。在參數一致的前提下,訓練了I-YOLOv5,并對模型輸入進行增強。
實驗內容如下:
(1)在BDDTL 數據集上建立改進方法的消融實驗來分析改進方法的可行性和必要性;
(2)在BDDTL 和Bosch 數據集上,通過對比多種算法、改進前后的算法,來測試改進的效果;
(3)在BDDTL 數據集上測試模型的魯棒性,評估模型的泛化能力;
(4)在BDDTL 數據集上建立模型魯棒性消融實驗,驗證改進方法對魯棒性的影響。
本文采用AP.50 作為評估模型性能的指標,因此需要計算模型的和,具體公式如下:
式中,是準確預測標簽的個數;是不存在目標的誤檢測,或已存在目標的誤檢測;是目標的漏檢測。
如圖8(a),在訓練過程中,YOLOv5 收斂速度慢,其 中YOLOv5s 和YOLOv5m 在 第250 個epoch 附 近開始收斂。I-YOLOv5 在第50 個epoch 附近開始收斂,有著更快的收斂速度。從圖8(b)可以看出:YOLOv5 在驗證集上的AP 先增后降,出現了嚴重的過擬合;隨著模型收斂,I-YOLOv5 的驗證AP 穩(wěn)定上升,沒有出現過擬合現象。
圖8 模型訓練過程Fig.8 Model training process
為了充分驗證改進方法行之有效,通過構建消融實驗(見表3),逐步探究改進方法對YOLOv5 影響。消融實驗以YOLOv5l為基礎模型,輸入大小統一為640×640,評估指標為AP和模型計算量(FLPOS)。
表3 以YOLOv5l為基礎模型的消融實驗Table 3 Ablation experiments based on YOLOv5l
從表3中可知,ACBlock、SoftPool 和Our FPN(feature pyramid network)對模型檢測能力有較大的提升。ACBlock 使模型的AP 上升了5.4 個百分點,因此ACBlock 可以提取到更多的特征信息,但也增加了69.2%的計算量。
SoftPool 池化使模型的AP 增加了2.8 個百分點,參數量減少了1.7%,這種池化方式實現了下采樣的同時可以減少信息丟失。
DSConv直接減少了4.3%的計算量,將模型的AP降低了0.2個百分點,對模型的精度幾乎沒有任何影響。
記憶性融合網絡將模型的檢測能力提高了5.6個百分點,模型參數減少了21.4%。因此,使用遠跳連接使底層特征與高級語義信息重新再融合可以增加模型的特征學習能力。
在消融實驗逐步進行的過程中可以發(fā)現:改進方法疊加,模型的性能并不是直接疊加,而是在上一個改進的基礎上的小幅度提升。通過逐步改進YOLOv5 的主干網絡和特征融合網絡,模型的檢測能力也隨之逐步提升。
模型在BDDTL 和Bosch 數據集上的測試結果列在表4 和表5 中。
如表4,在BDDTL數據集上,YOLOv5x作為YOLOv5 最優(yōu)秀的模型,在55 frame/s 的檢測速度下獲得了63.30%的AP。EfficientDet-D2 的AP 只有45.50%,檢測速度只有24 frame/s。I-YOLOv5s 的AP達到了72.30%,比YOLOv5x 提升了9 個百分點,推理速度也達到了111 frame/s。I-YOLOv5x 取得了所有實驗中最優(yōu)的結果,模型的AP高達74.30%,比YOLOv5x提高了11 個百分點,檢測速度保持在40 frame/s。
表4 不同模型在BDDTL 數據集上的測試結果Table 4 Test results of different models on BDDTL
如表5,在Bosch 數據集上,YOLOv5 的AP 達到了75.1%,檢測速度最快達到130 frame/s。相比之下,I-YOLOv5 檢測速度平均下降了約7 frame/s,但檢測平均能力提高了12.03個百分點。其中,I-YOLOv5s在82.8%的AP 下檢測速度達到了126 frame/s;IYOLOv5x在84.4%的AP下,檢測速度也有46 frame/s。
表5 不同模型在Bosch 數據集上的測試結果Table 5 Test results of different models on Bosch
圖9 展示了改進前后的檢測效果,其中(a)、(c)、(e)和(g)是YOLOv5 檢測效果,(b)、(d)、(f)和(h)是I-YOLOv5 檢測效果。從(a)和(b)可知,改進后的算法緩解了YOLOv5 的漏檢測問題,模型對小尺度交通燈的檢測能力也得到提高;如(c)和(d),在夜晚場景下,改進后的模型修正了檢測框的位置,提升了定位精度;從(e)和(f)可知,由于大尺度訓練樣本少,YOLOv5 對大尺度交通燈的檢測能力也同樣不足,而改進后的方法彌補了這個問題;由(g)和(h)可知,改進后的模型對小尺度交通燈的檢測能力顯著上升。
圖9 模型檢測效果Fig.9 Model detection effect
如表6,測試不同的環(huán)境條件下的模型性能,可以評估改進前后模型的魯棒性是否有所提高。
表6 改進YOLOv5 和YOLOv5 魯棒性測試結果Table 6 Improved YOLOv5 and YOLOv5 robustness test results %
(1)在不同尺度檢測能力的測試中,I-YOLOv5在small 尺度中取得了71.9%的AP,在large 尺度中提高了40%??梢园l(fā)現,所有模型在large 尺度中的檢測能力都小于small 尺度下。這是因為BDDTL 數據集中大尺度標簽僅僅只有119個,小尺度標簽有164 333個,樣本不均衡,模型對大尺度目標學習能力不足。
(2)在不同時間條件下的測試結果表明,IYOLOv5 的AP 顯著提高,在黎明和黃昏條件下,提升了20.7%的AP,在夜晚AP 也有8.3 個百分點的增加。
(3)通過在不同場景下測試,I-YOLOv5 幾乎都有較高的提升,其中在parking lot 場景中,I-YOLOv5l將AP 值直接提高了21.1 個百分點。但是在tunnel場景,I-YOLOv5 表現出較差的檢測性能。因為該場景中的測試圖片只有3 張,共9 個目標,測試結果偏差大。
(4)在不同天氣條件下,I-YOLOv5 對YOLOv5的AP 提升都在10 個百分點之上。在foggy 場景中,I-YOLOv5 提升了25.4 個百分點,達到了75.2%。
為驗證改進方法對模型泛化能力的影響,以YOLOv5l 模型為基礎,在輸入統一為640×640 的條件下,逐步引入提出的方法,通過測試不同場景下的mAP(mean average precision)來衡量模型性能,研究改進方法對模型魯棒性能的影響。此外增加A mAP I(average mAP increase)指標,用于衡量mAP 的平均增加量。
模型魯棒性消融實驗結果見表7。設計的ACBlock 結構在size、time 和weather 場景下的mAP都增加了5.0 個百分點以上,在scene 場景下,mAP 僅增加了5.2%。SoftPool 對不同場景下模型的mAP 提升了2.5 個百分點~3.0 個百分點,其中在scene 場景下對模型的貢獻最少。DSConv 的使用對模型檢測能力的影響較小,在不同size 條件使模型的mAP 降低了1.0%。本文的特征融合網絡的設計對模型的貢獻最大,在weather 場景下提高模型5.9 個百分點,平均給模型性能增加5.0 個百分點。
表7 以YOLOv5l為基礎模型的魯棒性消融實驗Table 7 Robust ablation experiment based on YOLOv5l
與3.4 節(jié)內容相似的是,改進方法對模型魯棒性的提高不是具體到某一種方法的改進,而是模型整體特征提取能力的增加,特征融合的優(yōu)化使模型的檢測能力增加。
針對目前基于視覺的交通燈檢測算法存在的難點,本文以BDD100K 為數據集,以YOLOv5 為基礎,使用可見標簽比確定模型輸入,引入ACBlock 增加主干網路的特征提取能力,設計SoftPool 減少模型采樣損失,使用DSConv 減少模型參數,設計一種記憶性特征融合網絡充分利用特征信息。
實驗結果證明,改進后的方法在BDD100K 和Bosch 數據集上使AP 分別提高了11.0 個百分點和9.3個百分點,檢測速度最慢也在40 frame/s。在不同的尺度、場景、天氣和時間條件下,改進后的模型均有較大的提升,最多提升了25.4 個百分點,有效增加了模型的魯棒性和小目標提取能力。本文通過改進YOLOv5 模型,增加了模型的檢測能力,提高了模型的魯棒性,做到了準確和實時的交通燈檢測。