錢 伍,王國中,李國平
(上海工程技術(shù)大學(xué)電子電氣工程學(xué)院,上海 201620)
近年來,計算機視覺和深度學(xué)習(xí)的快速發(fā)展使很多領(lǐng)域都取得了重大突破,其中自動駕駛領(lǐng)域也發(fā)展十分迅猛?;谝曈X的交通燈檢測、行人檢測和車輛檢測作為自動駕駛的核心技術(shù)受到眾多學(xué)者關(guān)注。對交通燈的準(zhǔn)確定位與類別識別能夠獲取路口信息,為自動駕駛汽車的決策提供重要的數(shù)據(jù)支持,減少了汽車行駛的安全隱患。因此,一個具有可靠性與實時性的交通燈檢測算法能夠保障自動駕駛汽車的行駛安全,避免交通事故發(fā)生。
傳統(tǒng)交通燈檢測算法通常從顏色特征出發(fā),并結(jié)合機器學(xué)習(xí)、圖像處理等方法,其中Hough[1]、SVM(Support Vector Machine)[2]和Tophat[3]等方法被廣泛使用。如田謹(jǐn)?shù)龋?]提出一種箭頭形交通信號燈識別方法,將多種機器學(xué)習(xí)方法相結(jié)合,在模板匹配下實現(xiàn)對箭頭形交通信號燈的識別。
隨著深度學(xué)習(xí)的發(fā)展,基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法被提出。葉飛等[5]通過改進(jìn)YOLOv3[6]實現(xiàn)了對行人的檢測,且精度提高了5%;嚴(yán)廣宇等[7]將Faster R-CNN[8]與Deeplab v3+網(wǎng)絡(luò)相結(jié)合,實現(xiàn)了對共享單車類別與違停的檢測,其中類別檢測mAP(mean Average Precision)達(dá)到72.36%,違停檢測的平均準(zhǔn)確率為89.11%;Zhu 等[9]從10萬張街景圖中構(gòu)建交通標(biāo)志數(shù)據(jù)集TT100K,使用6 層卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)了交通標(biāo)志檢測;Kim 等[10]將交通燈的顏色部分與R-CNN[11]和R-FCN[12]相結(jié)合,把交通燈檢測應(yīng)用于汽車輔助駕駛系統(tǒng)中;Liu 等[13]建立了自己的數(shù)據(jù)集,提出基于改進(jìn)YOLOv3 的檢測交通燈,改進(jìn)后模型的檢測速度達(dá)到59FPS,mAP 達(dá)到91.12%?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法能夠自動提取特征,且對顏色信息不敏感。但這些方法在特征提取過程中不可避免地會對圖像進(jìn)行下采樣,且對小目標(biāo)的檢測能力差。
以交通燈尺度小、環(huán)境復(fù)雜為研究重點,本文采集現(xiàn)實場景中的交通燈圖像建立數(shù)據(jù)集。基于YOLOv5[14]模型,提出多尺度訓(xùn)練與多尺度融合輸出的方法,增加了模型對小目標(biāo)的檢測能力。多尺度YOLOv5檢測速度最快可達(dá)到9.5ms,mAP 最高可達(dá)到99.8%。在Bosch 數(shù)據(jù)集[15]上,改進(jìn)方法直接提高了6.5%的檢測性能,最后以消融實驗驗證改進(jìn)方法的有效性。
在自動駕駛和輔助駕駛?cè)蝿?wù)中,BDD100K[16]、KITTI[17]和Cityscapes[18]數(shù)據(jù)集是首選的公共數(shù)據(jù)集。由于其均采集自于國外,與國內(nèi)交通環(huán)境具有很大差異,且沒有對交通燈進(jìn)行類別標(biāo)注,因此以這些數(shù)據(jù)集為研究背景的模型很難適用于國內(nèi)的交通環(huán)境。清華大學(xué)發(fā)布的TT100K[9]以交通標(biāo)志為主,而沒有對交通燈進(jìn)行標(biāo)注,不能作為交通燈檢測的數(shù)據(jù)集。長沙理工大學(xué)發(fā)布的CCTSDB[19]將常見的交通標(biāo)志標(biāo)注為3種,也沒有對交通燈進(jìn)行標(biāo)注。
針對國內(nèi)交通環(huán)境,本文采集了10 萬張現(xiàn)實中的交通燈影像,從中篩選出16 333 張圖像,并使用Labelme 工具進(jìn)行標(biāo)注,制作成交通燈檢測數(shù)據(jù)集,以8:2 的比例劃分為訓(xùn)練集和測試集,部分樣本數(shù)據(jù)如圖1 所示。數(shù)據(jù)集包含時間、類別和尺度屬性。在時間分布上,白天、夜晚、黎明/黃昏的圖像個數(shù)分別是9 548、5 620 和1 165;在標(biāo)簽類別分布上,紅燈有24 937 個標(biāo)簽,黃燈有787 個,綠燈有12 433 個,None 有12 450 個;在標(biāo)簽尺度分布上,小中大3種尺度的比例為29 875:19 602:1 130。
Fig.1 Sample images of traffic light data set圖1 交通燈數(shù)據(jù)集樣本
YOLOv5 延續(xù)了網(wǎng)格預(yù)測方法,將圖像劃分為S×S的網(wǎng)格,每個網(wǎng)格負(fù)責(zé)預(yù)測B個邊界框和C個條件類別概率,在輸出結(jié)果中還要計算預(yù)測框的置信度值。在正負(fù)樣本選擇上,YOLOv5 拋棄了基于最大IOU(Intersection Over Union)的匹配規(guī)則,而是直接通過寬高比選取正負(fù)樣本,相比于YOLOv3/v4[20],正樣本至少增加了3倍。
如圖2(a)所示,YOLOv5 將圖像固定為640*640 尺度輸入網(wǎng)絡(luò),經(jīng)過Focus 層將圖像的寬高信息轉(zhuǎn)化為通道信息,既減少了計算量,又增加了感受野。經(jīng)過多個正則卷積層和BottleneckCSP 層提取特征,將8 倍、16 倍和32 倍下采樣后的特征圖送入PANet[21]網(wǎng)絡(luò)進(jìn)行特征融合。最后,檢測頭對融合后的高級語義信息進(jìn)行分類與回歸,給出置信度值。圖2 中的Conv 用于下采樣和改變通道數(shù)目,BottleneckCSP 是參考CSPNet[22]設(shè)計的特征提取層。
YOLOv5擁有4種規(guī)模,分別記為YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x。隨著模型的深度和寬度逐漸增加,特征提取與檢測能力也隨之提高。因為YOLOv5具有推理速度快、自適應(yīng)錨框和高召回率等特點,十分適合交通燈檢測任務(wù),所以本文以YOLOv5 的4 種模型為基礎(chǔ),針對YOLOv5 的不足進(jìn)行改進(jìn)。針對YOLOv5 模型泛化能力差,容易出現(xiàn)過擬合,且采集的數(shù)據(jù)集規(guī)模不大的問題,本文提出復(fù)合數(shù)據(jù)增強策略;針對YOLOv5 的輸入是固定尺度,提取到的特征信息有限的問題,本文提出多尺度代替固定尺度的訓(xùn)練方式;針對YOLOv5 將3 種尺度語義信息送入檢測頭,對小目標(biāo)的檢測能力不足的問題,本文提出多尺度特征融合的改進(jìn)方式,并引入遠(yuǎn)跳連接傳輸語義信息。
YOLOv5 使用mosaic[20]方法對圖像進(jìn)行增強處理??紤]到本文制作數(shù)據(jù)集的規(guī)模不大,且環(huán)境復(fù)雜多樣,因此在mosaic 基礎(chǔ)上提出復(fù)合數(shù)據(jù)增強方式對模型的輸入進(jìn)行增強,以提高模型輸入的復(fù)雜性、增加訓(xùn)練難度,從而提升模型的泛化能力。使用mosaic、透視變換與顏色變換相結(jié)合的方式對輸入進(jìn)行增強,復(fù)合數(shù)據(jù)增強流程如圖3 所示。具體步驟如下:①讀取當(dāng)前需要增強的圖像f,長寬分別是l和d;②從數(shù)據(jù)集中隨機讀取3 張不同于f的圖像f1、f2和f3;③以2l為邊生成矩形畫布,將4 副圖像拼接得到mosaic 結(jié)果g1;④使用透視變換對g1隨機進(jìn)行旋轉(zhuǎn)、平移和縮放,得到g2;⑤從g2中隨機截取與模型輸入尺度相同的圖像,對其進(jìn)行顏色變換,隨機調(diào)整圖片的色調(diào)、飽和度和明度得到g3;⑥以0.5 和0.3 的概率對g3進(jìn)行水平翻轉(zhuǎn)與垂直翻轉(zhuǎn),得到g4;⑦將g4作為復(fù)合數(shù)據(jù)增強結(jié)果輸入模型。
Fig.2 Network structure of YOLOv5 and MS-YOLOv5圖2 YOLOv5與MS-YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
Fig.3 Composite data augmentation process圖3 復(fù)合數(shù)據(jù)增強流程
經(jīng)過復(fù)合數(shù)據(jù)增強后,模型的輸入由一幅固定圖像變成多幅圖像的隨機組合。與mosaic 相比,增強后的圖像更為復(fù)雜,模型能夠?qū)W習(xí)到更多復(fù)雜特征,提升了模型對不同場景的適應(yīng)能力。消融實驗結(jié)果證明,復(fù)合數(shù)據(jù)增強方法的mAP 提高了5.2%,相比mosaic 增加了0.8%。
在卷積神經(jīng)網(wǎng)絡(luò)中,通常通過增加模型輸入尺寸以提高模型對小目標(biāo)的檢測能力。但是該方法會帶來新問題:①模型計算量隨輸入的增加而成倍增加,使訓(xùn)練和推理速度變慢;②模型感受野隨之變小,對大尺度目標(biāo)的檢測能力下降。
針對YOLOv5 的固定尺度訓(xùn)練,本文提出多尺度訓(xùn)練方法,將目標(biāo)可能出現(xiàn)的不同尺度送入網(wǎng)絡(luò)進(jìn)行訓(xùn)練學(xué)習(xí)。在多尺度訓(xùn)練過程中,模型不會側(cè)重于學(xué)習(xí)小尺度或大尺度,而是較均衡地學(xué)習(xí)不同尺度的信息,對不同尺度的目標(biāo)都具有檢測能力。
在訓(xùn)練階段,將數(shù)據(jù)分批次送入模型。在當(dāng)前的batch 下,按照公式(1)選擇圖像尺度作為訓(xùn)練尺度,圖像被縮放到訓(xùn)練尺度后進(jìn)行前向推理和反向?qū)W習(xí)。在測試階段,以固定尺度作為模型輸入尺度,對模型進(jìn)行測試。消融實驗結(jié)果表明,多尺度訓(xùn)練可顯著提高模型的特征提取能力,在沒有數(shù)據(jù)增強的情況下,mAP 可提高5.8%。
其中,input是模型固定尺度,λ是隨機數(shù),out是模型輸入尺度。
YOLOv5 借鑒PANet 的思想對主干網(wǎng)絡(luò)提取到的基礎(chǔ)特征進(jìn)行融合(見圖4(a)),生成高層特征信息送入檢測器計算損失。由于交通燈尺度集中于小尺度,較多信息分布在基礎(chǔ)特征中,所以YOLOv5 會出現(xiàn)較多漏檢測的情況。針對小尺度目標(biāo)檢測,本文受BiFPN[23]啟發(fā),設(shè)計了多尺度的特征融合(見圖2(b))代替YOLOv5 的PANet。將4倍、8 倍、16 倍和32 倍采樣信息作為輸入,生成4 種不同尺度的語義信息用于分類與回歸,其中4 倍采樣和8 倍采樣結(jié)果用于檢測小尺度目標(biāo),16 倍采樣結(jié)果用于檢測中尺度目標(biāo),32倍采樣結(jié)果用于檢測大尺度目標(biāo)。
Fig.4 Feature fusion network圖4 特征融合網(wǎng)絡(luò)
多尺度特征融合網(wǎng)絡(luò)結(jié)構(gòu)如圖4(b)所示,在融合過程中通過自上而下傳遞信息以強化中間兩層特征。最后生成多尺度高級語義信息,引入遠(yuǎn)跳連接方式傳遞原始基礎(chǔ)特征,并將低級特征與高級語義信息再次融合,以強化高級語義信息中的低級特征。
多尺度融合輸出后,生成的高級語義信息被送入檢測器,按照4 種尺度的方式重新計算回歸損失LCIOU、分類損失Lcls和置信度損失Lobj。其中,分類損失使用交叉熵函數(shù)作為損失函數(shù),回歸損失使用CIOU 損失作為損失函數(shù)。計算方法如下:
其中,IOU是預(yù)測框與真實框的交并比;ρ2(b,bgt)表示預(yù)測框與真實框中心點之間的歐式距離;D 表示同時包含預(yù)測框和真實框的最小閉合矩形區(qū)域?qū)蔷€距離;L是檢測層個數(shù);w、h是預(yù)測框的寬和高;wgt、hgt是真實框的寬和高;n是預(yù)測框個數(shù);nc是一個錨框下的預(yù)測框個數(shù);C是預(yù)測類別是目標(biāo)真實類別;M、N分別是網(wǎng)格的寬和高;表示網(wǎng)格位置(M,N)是否負(fù)責(zé)預(yù)測該目標(biāo),取0 或者1;P是預(yù)測概率;hbox、hcls和hobj分別是回歸損失、分類損失與置信度損失系數(shù);s是檢測層的輸出尺度系數(shù);bs是批量大小。
如圖2(b)所示,多尺度YOLOv5 流程如下:①使用提出的復(fù)合數(shù)據(jù)增強對模型輸入進(jìn)行增強;②使用多尺度訓(xùn)練方法隨機為增強結(jié)果選擇尺度,并輸入模型;③主干網(wǎng)絡(luò)提取特征信息,將4 倍、8 倍、16 倍和32 倍采樣提取的信息作為基礎(chǔ)特征;④將4 種不同尺度特征送入設(shè)計的特征融合網(wǎng)絡(luò),生成多尺度的高級語義信息;⑤對多尺度高級語義信息計算損失,通過反向傳播訓(xùn)練模型權(quán)重。
模型的訓(xùn)練在Ubuntu18.04 操作系統(tǒng)、Pytorch 框架下完成,硬件平臺為:Nvidia Tesla V100 PCIE 32GB GPU,處理器為:Intel(R)Xeon(R)Silver 4214R CPU 2.4GHz,軟件環(huán)境為:CUDA10.1,Python3.8。實驗訓(xùn)練300 個epochs,初始學(xué)習(xí)率為0.001,學(xué)習(xí)率衰減系數(shù)為0.2,采用余弦退火衰減方式,設(shè)置動量常數(shù)為0.937,batch 大小為32,回歸損失系數(shù)為0.05,分類損失系數(shù)為0.5,置信度損失系數(shù)為1.0。實驗訓(xùn)練了數(shù)據(jù)集中的13 066 張圖像,測試了3 267張圖像,在訓(xùn)練過程中對每個epoch 的訓(xùn)練結(jié)果進(jìn)行驗證。為驗證模型的有效性,本文還在Bosch 小尺度交通燈數(shù)據(jù)集上測試模型性能。
為客觀評估模型性能,本文計算了模型的混淆矩陣,并通過混淆矩陣計算常用的算法評估指標(biāo)——召回率(Recall)和mAP(IOU=0.5),計算公式如下:
其中,QTP是正確檢測的目標(biāo),QFP是模型誤檢測的目標(biāo),QFN是模型漏檢測的目標(biāo)。
如圖5(a)所示,MS-YOLOv5l 在訓(xùn)練開始的前20 個epochs,訓(xùn)練損失快速下降到0.045。從第40 個epoch 開始,模型損失下降逐漸變緩,模型開始趨于收斂,損失值在0.02 附近浮動。改進(jìn)后模型的損失穩(wěn)步下降,其中前期下降速度較快。訓(xùn)練過程中,MS-YOLOv5l 的驗證結(jié)果如圖5(b)所示。驗證集的mAP 在前20 個epochs 快速上升,達(dá)到0.96。隨著模型的收斂,mAP 的上升速度也逐漸變慢,最后趨于穩(wěn)定。通過驗證mAP 曲線,可知模型未發(fā)生過擬合。
Fig.5 Model training process圖5 模型訓(xùn)練過程
在不同場景下分別對YOLOv5 和MS-YOLOv5 進(jìn)行測試。如圖6 所示,在逆光場景下,YOLOv5 漏檢嚴(yán)重,對被遮擋住的目標(biāo)沒有檢測能力。而MS-YOLOv5 不僅檢測出紅燈的位置和類別,而且,當(dāng)目標(biāo)被大范圍遮擋時,也能夠正確檢測其位置。如圖7 所示,在夜晚場景下,受到汽車尾燈影響,YOLOv5 很難識別交通燈,因此漏檢了兩個交通燈。MS-YOLOv5 則準(zhǔn)確檢測出每一個交通燈的類別,對交通燈的定位也沒有受到干擾。在圖8 中,兩種算法都能夠正確檢測交通燈,但是MS-YOLOv5 對每個交通燈的置信度更高,對預(yù)測坐標(biāo)框和類別有更高的確信度。由圖9可知,在交通燈尺度極小的場景下,YOLOv5 的檢測性能驟降,而MS-YOLOv5 不僅能準(zhǔn)確識別每一個交通燈,而且提高了置信度分?jǐn)?shù)。
表1 量化了本文數(shù)據(jù)集上的模型檢測性能,通過計算模型在測試集上的召回率、mAP 和檢測速度來評估模型性能。YOLOv5x 作為YOLOv5 最好的模型,召回率為0.809,mAP 為0.828,檢測速度為18.1ms。相比之下,MS-YOLOv5s在9.5ms的檢測速度下,召回率達(dá)到0.989,mAP 達(dá)到0.998,相比YOLOv5 提高了17%。改進(jìn)后的方法相比YOLOv5 在召回率和mAP 上有大幅提升,召回率最多提升了27.8%,mAP 最多提升了28.2%。
表2 給出了模型改進(jìn)前后在Bosch 數(shù)據(jù)集上的測試結(jié)果,并與其他方法進(jìn)行對比。YOLOv5 算法作為較新的目標(biāo)檢測算法,相比Faster RCNN 和SSD 的改進(jìn)方法具有更好的檢測能力、更快的檢測速度。MS-YOLOv5 與YOLOv5同級別模型相比,檢測性能均有所提高,mAP 最少增加了6.5%,達(dá)到0.673,擁有對比算法中最高的檢測能力。改進(jìn)方法在大幅提高模型檢測能力的同時,對速度的影響僅約為2ms。Bosch 數(shù)據(jù)集的測試結(jié)果表明,改進(jìn)模型在其他交通燈數(shù)據(jù)集上同樣適用,并優(yōu)于其他模型。
Fig.6 Detection results of YOLOv5 and MS-YOLOv5 in backlitscenes圖6 YOLOv5與MS-YOLOv5在逆光場景下的檢測結(jié)果
Fig.7 Detection results of YOLOv5 and MS-YOLOv5 in night scenes圖7 YOLOv5與MS-YOLOv5在夜晚場景下的檢測結(jié)果
Fig.8 Detection results of YOLOv5 and MS-YOLOv5 in dusk scenes圖8 YOLOv5與MS-YOLOv5在黃昏場景下的檢測結(jié)果
Fig.9 Detection results of YOLOv5 and MS-YOLOv5 for small objects圖9 YOLOv5與MS-YOLOv5對小目標(biāo)的檢測結(jié)果
Table 1 Results of model on our dataset表1 本文數(shù)據(jù)集上模型測試結(jié)果
Table 2 Results of model on Bosch dataset表2 Bosch數(shù)據(jù)集上模型測試結(jié)果
為探究模型對不同類別交通燈的檢測能力,本文測試了不同類別的AP 值(見表1),并繪制了YOLOv5 和MSYOLOv5 的PR 圖。從表1 中可知,YOLOv5s 對黃燈的AP值僅有0.462,YOLOv5x 對黃燈的AP 也僅有0.635。改進(jìn)后模型對所有類別的檢測能力都有顯著提高,其中AP 值最低也可達(dá)到0.983,最高為0.994。如圖10(a)所示,YOLOv5l 對紅燈和綠燈的檢測能力一般,對黃燈和None 的檢測能力嚴(yán)重不足。如圖10(b)所示,MS-YOLOv5l 對所有類都有很好的檢測能力,PR 曲線逼近右上方。
Fig.10 PR curve of Yolov5l and MS-YOLOv5l on the test set圖10 YOLOv5與MS-YOLOv5在測試集上的PR曲線圖
通過構(gòu)建消融實驗,可逐步探究改進(jìn)方法對模型的有效性。實驗以YOLOv5l 為基礎(chǔ)模型,逐步引入改進(jìn)方法,并在本文數(shù)據(jù)集上測試模型召回率和mAP,將結(jié)果記錄在表3中。
Table 3 Ablation experiments based on YOLOv5l表3 以YOLOv5l 為基礎(chǔ)模型的消融實驗
沒有進(jìn)行數(shù)據(jù)增強的YOLOv5 對交通燈檢測的mAP只有0.808,在使用YOLOv5 自帶的mosaic 數(shù)據(jù)增強條件下,mAP 提升了4.4%。在使用本文提出的數(shù)據(jù)增強方法后,mAP 提升了5.2%,召回率更是提升了7.1%。因此,數(shù)據(jù)增強對于YOLOv5 十分關(guān)鍵,可大幅提高模型召回率。引入多尺度訓(xùn)練后,模型的mAP 和召回率都有所改善,其中mAP 提升了5.8%,達(dá)到0.866。使用多尺度特征融合后,模型檢測能力提升不夠顯著,mAP 提升了4%。相比與其他幾種改進(jìn)方法,mAP 和召回率的提升幅度較小。
通過逐步引入改進(jìn)方法,模型檢測能力也隨之得到提升,最終mAP 達(dá)到0.991,召回率達(dá)到0.994。可發(fā)現(xiàn)在經(jīng)過數(shù)據(jù)增強和多尺度訓(xùn)練后,多尺度特征融合效果顯著增加,召回率提升了8.3%,mAP 提升了8.4%,相比單獨使用多尺度特征融合的效益更高。
由于國內(nèi)缺乏交通燈數(shù)據(jù)集,本文采集了現(xiàn)實場景中的交通燈圖像,制作了交通燈數(shù)據(jù)集。針對交通燈檢測存在的尺度小、環(huán)境復(fù)雜等難點,提出多尺度YOLOv5 的交通燈檢測方法:首先使用數(shù)據(jù)增強方式對模型輸入增強,增加圖像的復(fù)雜度,提高模型的魯棒性;然后針對模型輸入尺度提出多尺度訓(xùn)練方式,增加模型對不同尺度的檢測能力;最后提出一種多尺度輸出的特征融合方式,并使用遠(yuǎn)跳傳遞低級特征信息,有效提升了模型對小目標(biāo)的檢測能力。實驗結(jié)果表明,多尺度YOLOv5 增加了少量推理時間,大幅提升了模型的召回率和mAP,模型的魯棒性也得到提高,實現(xiàn)了對國內(nèi)交通環(huán)境中交通燈的實時、準(zhǔn)確檢測。本文下一步工作是將該算法與行人檢測、車輛檢測與車道線檢測算法相結(jié)合,構(gòu)建自動駕駛汽車周圍環(huán)境快速檢測系統(tǒng)。