李旭東 張建明 謝志鵬 王 進
(長沙理工大學(xué)計算機與通信工程學(xué)院 長沙 410114)(綜合交通運輸大數(shù)據(jù)智能處理湖南省重點實驗室(長沙理工大學(xué)) 長沙 410114)
近年來,依靠計算機視覺與人工智能等相關(guān)技術(shù)的發(fā)展,自動駕駛呈現(xiàn)出接近實用化的趨勢.利用前端相機采集的圖像進行交通標(biāo)志、車道線、信號燈的檢測與識別是自動駕駛的重要研究內(nèi)容.交通標(biāo)志檢測屬于特定目標(biāo)的檢測,不僅具有通用目標(biāo)檢測的難點,同時還會因特殊環(huán)境造成交通標(biāo)志的遮擋、污損、模糊、褪色、變形等;同一類的交通標(biāo)志在不同時間、天氣、角度、光照以及分辨率的情況下會呈現(xiàn)不同的檢測效果.實時的交通標(biāo)志檢測作為自動駕駛的重要組成部分,是難度較大的實景目標(biāo)檢測,同時對于準(zhǔn)確性和穩(wěn)定性也有很高要求.
目前按照不同的檢測手段,將交通標(biāo)志檢測主要分為傳統(tǒng)方法和基于深度學(xué)習(xí)的方法.傳統(tǒng)方法中,以顏色、形狀等特征以及多種特征相結(jié)合的檢測為主;基于深度學(xué)習(xí)的方法分為2階段檢測方法R-CNN(region-convolutional neural networks)系列檢測算法和1階段檢測方法YOLO(you only look once)系列檢測算法,SSD(single shot multibox detector)系列檢測算法.現(xiàn)有的針對真實場景下交通標(biāo)志的檢測算法大多只注重于準(zhǔn)確率的提升,而忽略了應(yīng)用場景中算法所需要具備的高實時性.實時性越高,檢測速度越快,能為駕駛者及自動駕駛系統(tǒng)提供更好的預(yù)警.YOLO系列檢測算法以速度為首要標(biāo)準(zhǔn),其中YOLOv3檢測算法中利用多個尺度預(yù)測大幅提高小目標(biāo)的檢測能力,而YOLOv3-tiny檢測算法則是以其更快的檢測速度著稱.因此,我們以YOLOv3-tiny檢測算法為基礎(chǔ)網(wǎng)絡(luò),在不影響檢測速度的條件下,設(shè)計嵌套殘差結(jié)構(gòu)和多尺度預(yù)測機制,構(gòu)建了一個改進的YOLOv3-tiny檢測算法,從而訓(xùn)練出一個高實時性和高魯棒性的交通標(biāo)志檢測模型.
本文的主要貢獻有4個方面:
1) 在YOLOv3-tiny檢測算法的基礎(chǔ)網(wǎng)絡(luò)Darknet-19中,將中間層特征采用逐像素相加方式進行跨層連接,不會增加特征圖通道數(shù),形成1個較小的殘差結(jié)構(gòu);
2) 將淺層特征跨層連接至深層特征進行逐像素相加,構(gòu)成1個較大的殘差結(jié)構(gòu),并設(shè)計增加1層輸出預(yù)測層,使得該層能包含更豐富的空間細節(jié)信息,提高模型對小目標(biāo)的檢測能力;
3) 將小殘差和大殘差結(jié)構(gòu)進行嵌套,形成三尺度嵌套殘差結(jié)構(gòu),使得Tiny檢測算法的部分主網(wǎng)絡(luò)位于這2個殘差結(jié)構(gòu)中,其作用是在訓(xùn)練過程中能對其進行3次調(diào)參,進一步提高了模型的泛化能力;
4) 在2個不同國家的交通標(biāo)志檢測數(shù)據(jù)集德國交通標(biāo)志檢測數(shù)據(jù)集(German traffic sign detection benchmark, GTSDB)和長沙理工大學(xué)中國交通標(biāo)志檢測數(shù)據(jù)集(CSUST Chinese traffic sign detection benchmark, CCTSDB)上,我們對提出算法的每個創(chuàng)新點進行驗證,并與當(dāng)前主流的交通標(biāo)志檢測算法進行了全面的對比.實驗效果表明:提出的方法不僅具有較高的檢測魯棒性,更具有高效的計算能力,單張圖像的檢測時間僅為5 ms.
傳統(tǒng)的交通標(biāo)志檢測算法:交通標(biāo)志具有鮮明的顏色特征,通常在諸如RGB,HIS,HSV等不同顏色空間中獲取交通標(biāo)志信息.Le等人[1]對RGB設(shè)置閾值,篩選出交通標(biāo)志的紅色和藍色區(qū)域,對2×2的像素塊采用SVM進行分類,得到1個較為準(zhǔn)確的快速交通標(biāo)志檢測系統(tǒng).Zhang等人[2]通過歸一化RGB到RGBY顏色空間,并針對不同顏色提出了一種新的顏色閾值約束方案,提高了檢測效果.同時交通標(biāo)志也具有顯著的形狀特征,谷明琴等人[3]根據(jù)直線間頂點處的曲率關(guān)系,利用轉(zhuǎn)向角對頂點進行分類,并提出無參數(shù)形狀檢測子,使用該算子來檢測圖像中的警告、禁令和指示標(biāo)志.但是,單一的顏色或形狀特征無法滿足真實場景中的高精度檢測,將兩者相結(jié)合的方法精度相比于單一特征會有較大提升.Xu等人[4]結(jié)合自適應(yīng)顏色閾值分割和形狀對稱性假設(shè)檢驗可以有效提取交通標(biāo)志候選框.張靜等人[5]使用HSI空間特征與形狀特征結(jié)合,很大程度上解決了其他顏色分量對檢測目標(biāo)的影響,提高了檢測精度.
基于深度學(xué)習(xí)的2階段檢測方法:2014年,Girshick等人[6]提出了R-CNN目標(biāo)檢測算法,使用從選擇性搜索和邊緣框中生成的建議區(qū)域來訓(xùn)練卷積網(wǎng)絡(luò),生成了基于區(qū)域的特征,并采用SVM(support vector machine)進行分類.隨后,SPPNet[7]引入空間金字塔池化層,在不考慮輸入圖像分辨率大小的情況下,允許分類模塊重用卷積特征.Fast R-CNN[8]檢測算法結(jié)合SPPNet并利用分類和位置回歸損失值進行端到端的訓(xùn)練.Faster R-CNN[9]檢測算法則是用區(qū)域建議網(wǎng)絡(luò)(region proposal network, RPN)替代選擇性搜索,RPN用于生成候選邊界框并過濾背景區(qū)域,此外還利用了另一個小網(wǎng)絡(luò)進行分類和位置的回歸.Yang等人[10]基于Faster R-CNN檢測算法進行改進,使用注意力網(wǎng)絡(luò)代替RPN網(wǎng)絡(luò)用于交通標(biāo)志建議區(qū)域的生成,其模型在TT100K[11]數(shù)據(jù)集以及BTSD[12]數(shù)據(jù)集上分別取得96.05%和98.31%的準(zhǔn)確率.
基于深度學(xué)習(xí)的1階段的檢測方法:為了克服2階段檢測方法實時性差的問題,YOLO[13]檢測算法將輸入圖像劃分為若干網(wǎng)格,并對每個網(wǎng)絡(luò)進行定位和分類,大幅提升了目標(biāo)檢測的速度,但精度卻不夠理想.YOLOv2[14]檢測算法是基于YOLO檢測算法的增強版本,通過移除全連接層來改進YOLO檢測算法.我們針對中國交通標(biāo)志的特征,改進了YOLOv2檢測算法,并且公布了中國交通標(biāo)志數(shù)據(jù)集CCTSDB,該改進方法在CCTSDB和GTSDB[15]兩個數(shù)據(jù)集上分別獲得很高的準(zhǔn)確率[16].YOLOv3[17]檢測算法對YOLOv2檢測算法進行改進,增加了網(wǎng)絡(luò)層數(shù),在Darknet-53基礎(chǔ)網(wǎng)絡(luò)上引入多尺度預(yù)測實現(xiàn)了更好的分類和檢測效果.YOLOv3檢測算法在Titan XP上的處理速度能達到20f/s,在COCO測試集上分類精度達到57.9%.YOLOv3檢測算法的模型較于原先的模型提高了復(fù)雜度,可以通過改變模型結(jié)構(gòu)的大小權(quán)衡速度與精度.
SSD[18]檢測算法是另一種典型的1階段目標(biāo)檢測方法.SSD檢測算法通過2個卷積層來分別預(yù)測邊界框的類別置信度和位置偏移量.為了檢測不同尺度的目標(biāo),SSD檢測算法增加了一系列逐漸變小的卷積層生成金字塔特征圖,根據(jù)各層的感受野大小設(shè)置相應(yīng)的錨點,并利用非極大值抑制對最終檢測結(jié)果進行處理.為了提高精度,DSSD[19]檢測算法提出了將反卷積層來增強淺層的大尺度背景,其模型較為復(fù)雜,檢測速度較慢.Tian等人[20]基于DSSD檢測算法加入了注意力網(wǎng)絡(luò),將相鄰層的相關(guān)上下文細節(jié)結(jié)合到檢測體系結(jié)構(gòu)中,其提出的檢測模型在GTSDB檢測數(shù)據(jù)集上取得了很高的精度.RSSD[21]檢測算法通過引入彩虹連接,充分利用了特征金字塔中的各層之間的關(guān)系,盡管提升了精度,但損失了部分的計算時間.
YOLOv3[17]檢測算法是當(dāng)前速度和精度比較均衡的目標(biāo)檢測算法之一.YOLO系列檢測算法算法每個版本都有對應(yīng)的Tiny版本.Tiny版本以原始算法為主框架,通過精簡得到快速檢測網(wǎng)絡(luò),速度是原始算法的3倍以上,但由于過于精簡卷積操作,其精度并不理想.真實場景的交通標(biāo)志檢測中更加注重實時性能,因此我們以YOLOv3-tiny檢測算法為基礎(chǔ)網(wǎng)絡(luò),在不影響檢測速度的條件下,結(jié)合殘差結(jié)構(gòu)與多尺度預(yù)測的思想,構(gòu)建一個改進的YOLOv3-tiny檢測算法,從而訓(xùn)練出一個高實時性和高魯棒性的交通標(biāo)志檢測模型.
YOLOv3檢測算法采用全新的網(wǎng)絡(luò)來實現(xiàn)特征提取,通過殘差塊來加深網(wǎng)絡(luò),達到106層,在多個尺度的特征圖上進行檢測,能顯著提升小目標(biāo)的檢測效果.
YOLOv3-tiny檢測算法是一個在YOLOv3檢測算法基礎(chǔ)上精簡而來的輕量級網(wǎng)絡(luò)模型,具有23層網(wǎng)絡(luò),只包含卷積層和最大池化層,相比于YOLOv3檢測算法大大減少了網(wǎng)絡(luò)層數(shù),這使得它的檢測速度是YOLOv3檢測算法的3倍之多.在YOLOv3-tiny檢測算法主干網(wǎng)特征提取部分,一共有16層,其中卷積層有10個,最大池化層6個.在YOLOv3-tiny檢測算法主干網(wǎng)檢測部分,只使用了2個尺度的特征圖進行檢測框回歸和分類,分別是13×13的特征圖,以及它經(jīng)過上采樣后與26×26的特征圖通過通道串接形成的特征圖.相比YOLOv3檢測算法少了一個尺度預(yù)測,其每一個網(wǎng)格的預(yù)測框數(shù)量也從9個變成6個.YOLOv3-tiny檢測算法中的檢測框回歸和分類任務(wù)與YOLOv3檢測算法保持一致,且損失值計算的原理相同.
深度神經(jīng)網(wǎng)絡(luò)中隨著網(wǎng)絡(luò)深度的增加,訓(xùn)練會變得愈加困難.這主要是由于在使用隨機梯度下降的網(wǎng)絡(luò)訓(xùn)練過程中,誤差信號的多層反向傳播極易引發(fā)梯度消失或梯度爆炸.針對這個問題,He等人[22]在網(wǎng)絡(luò)中構(gòu)建了恒等映射,可以在增加網(wǎng)絡(luò)層數(shù)的同時不增加訓(xùn)練誤差.
如圖1(a)所示,假設(shè)網(wǎng)絡(luò)輸入為X,輸出為H(X):
H(X)=F(X)+X,
(1)
殘差是實際觀察值減去擬合的預(yù)測值.網(wǎng)絡(luò)只需要在訓(xùn)練的時候不斷調(diào)整F(X)的參數(shù)來學(xué)習(xí)殘差F(X),這會比直接學(xué)習(xí)H(X)更簡單.
F(X)=H(X)-X,
(2)
Fig. 1 Residual module圖1 殘差模塊
例如當(dāng)期望輸出H(X)就是輸入X時:對于沒有跨層連接的結(jié)構(gòu),需要將其優(yōu)化成H(X)=X;對于殘差結(jié)構(gòu),只需將F(X)=H(X)-X優(yōu)化為0即可.
這里是使用特征圖逐像素相加的方式來得到的H(X).在ResNet結(jié)構(gòu)中會用到2種殘差模塊,圖1(b)所示的是常規(guī)殘差模塊,由2個3×3卷積堆疊而成.圖1(c)的結(jié)構(gòu)稱為“瓶頸殘差模塊”,依次由1×1,3×3,1×1這3個卷積層構(gòu)成,其中每層之間均有線性整流函數(shù)(rectified linear unit, ReLU)進行激活連接.
YOLOv3-tiny檢測算法的網(wǎng)絡(luò)結(jié)構(gòu)與YOLOv2-tiny檢測算法類似,增加了1層多尺度預(yù)測輸出,而其和YOLOv3檢測算法的結(jié)構(gòu)又有差別,沒有采用YOLOv3檢測算法中的殘差塊來加深網(wǎng)絡(luò).Tiny版本更加注重檢測時間,增加網(wǎng)絡(luò)層的數(shù)量會提高檢測精度,但過多的增加層數(shù)又會導(dǎo)致更多的時間損耗,因此不能僅僅依靠增加網(wǎng)絡(luò)深度來提高Tiny版本的檢測精度.首先,我們結(jié)合殘差網(wǎng)絡(luò)中特征圖逐像素相加的跨層連接思想,在Tiny網(wǎng)絡(luò)中構(gòu)建1個小殘差結(jié)構(gòu),即二尺度殘差結(jié)構(gòu);在此基礎(chǔ)上,將淺層特征跨層連接至深層特征進行逐像素相加,構(gòu)成1個較大的殘差結(jié)構(gòu),并設(shè)計增加1層輸出預(yù)測層;最后,將以上2個殘差結(jié)構(gòu)進行嵌套,形成了三尺度嵌套殘差結(jié)構(gòu).
本文中所涉及的定義和操作說明有5項:
1) 第m層.文中描述所涉及的“第m層”為表1算法檢測流程中操作的序號,并非圖2中所對應(yīng)的層數(shù),圖2中的層數(shù)只用作結(jié)構(gòu)展示.
2)Route1(m).Darknet框架中用函數(shù)Route進行跳轉(zhuǎn)操作.Route1(m)表示從當(dāng)前層跳轉(zhuǎn)至第m層.
3)Route2(m,n).Darknet框架中用函數(shù)Route還可以進行通道串接操作.Route2(m,n)表示將第m層和第n層特征圖進行通道串接,輸出1個與輸入特征圖寬高相同、通道維度更高的新特征圖,此操作要求第m層與第n層特征圖的對應(yīng)寬、高必須相等,而通道數(shù)可以不相等.
4)Shortcut(m).函數(shù)Shortcut在Darknet框架中是進行逐像素相加操作.其表示當(dāng)前操作層的輸入(即上一層輸出特征圖)與第m層的特征圖進行逐像素相加,輸出1個與輸入特征圖空間尺度完全一致的全新特征圖.此操作要求當(dāng)前層的輸入與第m層特征圖對應(yīng)的寬、高以及通道數(shù)必須相等.
Table 1 The Process of Our Rroposed Algorithm表1 我們的算法流程
Fig. 2 Framework of our proposed algorithm圖2 本文算法的結(jié)構(gòu)圖
5) 嵌套.與普通殘差網(wǎng)絡(luò)中殘差塊相互串聯(lián)或并聯(lián)不同,嵌套殘差由小殘差結(jié)構(gòu)與大殘差結(jié)構(gòu)共同組成,小殘差結(jié)構(gòu)嵌套于大殘差結(jié)構(gòu)中,且小殘差結(jié)構(gòu)是大殘差結(jié)構(gòu)的一部分,大殘差結(jié)構(gòu)是主網(wǎng)絡(luò)的一部分.
3.1.1 二尺度殘差結(jié)構(gòu)
如圖2所示,黑色實線和虛線部分為YOLOv3-tiny檢測算法的結(jié)構(gòu)圖,黑色虛線部分為Tiny原有的通道串接操作.與YOLOv3系列檢測算法中的跨層連接操作不同,殘差塊結(jié)構(gòu)中采用的是對應(yīng)像素相加的方式來實現(xiàn)F(X)+X.
我們將YOLOv3-tiny檢測算法中的跨層連接操作進行改進,采用逐像素相加操作代替通道串接操作.如圖2所示,紅色實線部分為改進的跨層連接方式.將跨層連接的輸入向后移1層,雖然使用原黑色虛線部分的操作可以減少1次卷積從而直接進行逐像素相加,但在后期增加三尺度模塊時發(fā)現(xiàn),藍色逐像素相加操作與黑色虛線相隔太近,兩層之間僅進行了最大池化操作,這導(dǎo)致2個特征圖之間的差異性不夠大.因此我們使用后一層經(jīng)過卷積的特征圖,這與之前的特征圖在尺寸以及通道數(shù)上不同,使輸出更加豐富.但由于逐像素相加操作要求輸入空間尺度完全一致的特征圖,因此還需要先進行1次降維操作.此時,相加后輸出的特征圖大小為26×26×128,相比于改進前的輸出特征圖(26×26×256)在通道維度上減少了128維,將這128維的信息通過對應(yīng)像素相加的方式融合到了新的輸出特征圖中.由于通道維度的降低,使得下一個卷積層中卷積操作的時間消耗減少了一半.同時,圖2中粉紅色區(qū)域塊形成了小殘差結(jié)構(gòu).當(dāng)采用逐像素相加進行連接后,按照殘差網(wǎng)絡(luò)的基本原理,我們將把Tiny主網(wǎng)絡(luò)中被跨層區(qū)域作為殘差網(wǎng)絡(luò)中的F(X)部分,紅色實線則是引入了淺層更具有細節(jié)信息的特征圖,最后將深層與淺層的特征圖進行融合,達到提高檢測精度的效果.在網(wǎng)絡(luò)訓(xùn)練時,整個網(wǎng)絡(luò)會按照YOLO系列檢測算法進行訓(xùn)練調(diào)參,同時也會按照殘差網(wǎng)絡(luò)的方法不斷調(diào)整F(X)區(qū)域中各個卷積層的參數(shù),實現(xiàn)2次優(yōu)化調(diào)參.在圖2中黑色實線與紅色實線部分組成了二尺度殘差結(jié)構(gòu).
3.1.2 三尺度嵌套殘差結(jié)構(gòu)
為了進一步提高對小尺寸目標(biāo)的檢測精度,我們設(shè)計并輸出了多層特征圖,這些特征圖在空間細節(jié)和語義上具有互補性,算法可以在不同尺度大小的特征圖上進行預(yù)測.由于已經(jīng)通過減少1層卷積層操作數(shù)量降低了時間消耗,我們對Tiny版本增加1層尺度的預(yù)測輸出,檢測時間變化不大.如圖2所示,藍色實線部分為增加的預(yù)測層,增加的預(yù)測層輸出大小為52×52×24,這一層較其他2個預(yù)測層的空間分辨率更高,特征圖中包含的空間細節(jié)信息越多,就有助于算法對小目標(biāo)的檢測.同時,將增加的這一預(yù)測層也采用逐像素相加的跨層連接,融合淺層中的豐富細節(jié)信息.與之前的小殘差結(jié)構(gòu)類似,圖2中粉藍色區(qū)域塊組成了大殘差結(jié)構(gòu).將小殘差和大殘差結(jié)構(gòu)進行嵌套,形成三尺度嵌套殘差結(jié)構(gòu),此時小殘差結(jié)構(gòu)位于大殘差結(jié)構(gòu)中的F(X)部分,在訓(xùn)練過程中,處于主干網(wǎng)絡(luò)的小殘差結(jié)構(gòu)F(X)部分將會進行第3次優(yōu)化調(diào)參.在圖2中除黑色虛線部分,其他結(jié)構(gòu)所構(gòu)成的就是三尺度嵌套殘差的YOLOv3-tiny檢測算法.
基于三尺度嵌套殘差結(jié)構(gòu)的YOLOv3-tiny檢測算法流程如表1所示.網(wǎng)絡(luò)可以接受任意尺寸的RGB彩色圖像輸入,然后將大小重置為416×416進行操作.整個網(wǎng)絡(luò)共16個卷積層、6個最大池化層、2次上采樣和3個預(yù)測輸出層.網(wǎng)絡(luò)層0~11為卷積層與最大池化層組合,是為了進行快速的下采樣降低特征圖尺寸;網(wǎng)絡(luò)層12~15為卷積層,是為了增加網(wǎng)絡(luò)擬合能力,同時最后一個卷積層可以降低特征圖維度;網(wǎng)絡(luò)層8~22構(gòu)成了圖2中粉紅色區(qū)域的小殘差結(jié)構(gòu),網(wǎng)絡(luò)層6~29構(gòu)成了粉藍色區(qū)域的大殘差結(jié)構(gòu);層16,26,31為預(yù)測輸出層,其輸出尺度大小分別為13×13×24,26×26×24,52×52×24.
基于三尺度嵌套殘差結(jié)構(gòu)的YOLOv3-tiny檢測算法中的檢測框回歸和分類任務(wù)與YOLOv3-tiny檢測算法保持一致,且損失值計算的原理相同.不同的是,在YOLOv3-tiny檢測算法中只有2個分支預(yù)測,而提出的算法中有3個分支預(yù)測,因此后者需要分別計算3個尺度分支相應(yīng)的定位損失值、IOU損失值以及分類損失值.提出的算法中對每個預(yù)測的包圍框(bounding box)通過邏輯回歸計算一個目標(biāo)的得分,若該預(yù)測的包圍框與真實的包圍框大部分重疊且比其他所有預(yù)測要好,則該值將會被保存,若重疊比例沒有達到IOU閾值,則該預(yù)測包圍框?qū)缓雎?YOLOv3系列檢測算法只為每個目標(biāo)選取一個IOU值最高的預(yù)測包圍框,結(jié)合真實(ground truth)的包圍框,計算該預(yù)測包圍框的損失.總損失函數(shù)計算:
LN=Lcoord+LIOU+Lclasses,
(3)
其中,N表示YOLO預(yù)測分支所在的主網(wǎng)絡(luò)輸出的層數(shù)位置,LN代表不同尺度的預(yù)測輸出的損失值.在原版YOLOv3中N∈{82,94,106};在原版YOLOv3-tiny中N∈{16,23};我們提出的改進算法中N∈{16,25,31}.
Lcoord為定位損失值,計算的是預(yù)測包圍框的坐標(biāo)誤差,即左上角點坐標(biāo)與寬高的誤差值:
(4)
LIOU為IOU損失值,計算的是IOU值最大的預(yù)測包圍框與真實包圍框的誤差:
(5)
式(5)等號右邊第1項表示包含目標(biāo)的預(yù)測包圍框的置信度預(yù)測值,第2項表示不包含目標(biāo)的預(yù)測包圍框的置信度預(yù)測值.其中Ci為目標(biāo)類別,λnoobj是未含目標(biāo)的預(yù)測包圍框的約束系數(shù).
Lclasses為分類損失,計算的是預(yù)測類別與真實類別間的誤差:
(6)
本實驗的訓(xùn)練環(huán)境與測試環(huán)境硬件不同.訓(xùn)練需要耗費大量的GPU資源與磁盤空間,因此訓(xùn)練使用的是性能更佳的CPU為Intel Xeon E5-2670 v3,GPU為TITAN X,顯存為12 GB的服務(wù)器.測試選取的環(huán)境是CPU為Intel Core i7-6700K,GPU為GTX980Ti,顯存6 GB的普通主機.所有的訓(xùn)練以及測試模型使用的均在Linux環(huán)境下.
我們在GTSDB和CCTSDB兩大數(shù)據(jù)集上進行了多組對照實驗.GTSDB是德國交通標(biāo)志圖像檢測數(shù)據(jù)集,也是交通標(biāo)志檢測中最廣泛應(yīng)用的數(shù)據(jù)集之一.CCTSDB[16]是我們提出的中國交通標(biāo)志數(shù)據(jù)集,包含圖片近15 000張、交通標(biāo)志近60 000個.目前的標(biāo)注數(shù)據(jù)有三大類:指示標(biāo)志、禁令標(biāo)志、警告標(biāo)志.CCTSDB的測試數(shù)據(jù)集使用的是重新標(biāo)注過的CTSD[23]的400張測試圖像.
我們設(shè)置了模型1與模型2為對照實驗中的實驗組,其中模型1是二尺度殘差的Tiny檢測算法,共25層,主網(wǎng)絡(luò)結(jié)構(gòu)與YOLOv3-tinys檢測算法相同,跨層連接中采用特征圖對應(yīng)像素相加代替YOLOv3-tiny檢測算法的特征圖通道串接,一共有2個預(yù)測層,分別在第16,25層輸出大小為26×26,52×52的預(yù)測特征圖;模型2是三尺度嵌套殘差結(jié)構(gòu)的Tiny檢測算法,共31層,網(wǎng)絡(luò)結(jié)構(gòu)與模型1相似,在模型1的基礎(chǔ)上增加了1個YOLO預(yù)測輸出層,一共3個預(yù)測層,分別在第16,25,31層輸出大小為13×13,26×26,52×52的預(yù)測特征圖.對比實驗將選取對照實驗中性能最佳的模型與現(xiàn)有的主流交通標(biāo)志檢測算法進行對比.
我們使用了多個標(biāo)準(zhǔn)來評價不同算法的性能,包括精確率(precision,P)、召回率(recall,R)、F1值、平均絕對誤差DMAD等.精確率是被預(yù)測成正的樣本中預(yù)測正確的比例;召回率是正樣本中被正確預(yù)測的比例;F1值是精確率和召回率的調(diào)和均值.為了衡量模型在不同IOU閾值下的穩(wěn)定程度,我們引入了平均絕對誤差,平均絕對誤差是所有單個觀測值與算術(shù)平均值偏差的絕對值的平均值,它可以避免誤差相互抵消的問題,因而可以準(zhǔn)確反映實際預(yù)測誤差的大小,通常該值越小表示模型越穩(wěn)定.
我們對以上變量進行定義:將正樣本預(yù)測正確,記該類樣本數(shù)為TP;將正樣本預(yù)測錯誤,記該類樣本數(shù)為FN;將負樣本預(yù)測為正樣本,記該類樣本數(shù)為FP;n表示在不同IOU閾值下P或R的數(shù)量;xk表示第k個P或R的值;m(x)表示該組P或R的平均值,計算這些度量標(biāo)準(zhǔn):
(7)
(8)
(9)
(10)
各模型實驗中具有較多的預(yù)設(shè)參數(shù),這些參數(shù)在訓(xùn)練時會極大程度影響實驗效果.為了保證變量的單一性,我們固定其他參數(shù),只改變網(wǎng)絡(luò)層相關(guān)參數(shù),來證明每個創(chuàng)新點加入網(wǎng)絡(luò)中的效果.所有對照實驗中輸入網(wǎng)絡(luò)的圖像大小為416×416、學(xué)習(xí)率為0.001、每批次樣本數(shù)為64、每次送入訓(xùn)練器的樣本數(shù)為8、迭代次數(shù)為200 000、每1 000次迭代輸出一個網(wǎng)絡(luò)模型.選定初始IOU閾值θ=0.5時,使用均值平均精度mAP來篩選出200個結(jié)果中最佳的模型作為此網(wǎng)絡(luò)結(jié)構(gòu)的訓(xùn)練結(jié)果.
4.3.1 GTSDB數(shù)據(jù)集上的評估
首先,我們將對照實驗的3個模型在GTSDB數(shù)據(jù)集上一起進行評估,德國交通標(biāo)志檢測數(shù)據(jù)集是目前應(yīng)用最廣泛的檢測標(biāo)準(zhǔn)之一,在此標(biāo)準(zhǔn)下我們會選取一個最優(yōu)的檢測模型.
表2列出了3個模型在GTSDB數(shù)據(jù)集上使用不同IOU閾值的三大類交通標(biāo)志P,R值,其中我們設(shè)定IOU閾值的范圍是0.1~0.9,閾值間隔為0.1.從表2中可知,對于每一個模型來說,當(dāng)IOU閾值增加時,模型的精確率會增加,而召回率會隨之降低.這是由于增大的IOU閾值會使得模型篩選出來的預(yù)測框更加少,從而極大程度上保留了正確的預(yù)測框,但同時也會剔除一些正確的預(yù)測框.從表2可以看出,對于每一類標(biāo)志來說,模型1的指示標(biāo)志與禁令標(biāo)志的精確率可以達到91.43%和100.00%,模型2上禁令標(biāo)志精確率及三大類mAP達到了98.68%和90.94%;模型2的指示標(biāo)志、警告標(biāo)志以及Tiny檢測算法的禁令標(biāo)志的召回率分別可以達到87.76%,93.65%,96.89%.
Table 2 P,R Values of Three Models Using Different IOU Thresholds in Three Kind of Traffic Signs on GTSDB表2 3個模型在GTSDB數(shù)據(jù)集上使用不同IOU閾值的三大類交通標(biāo)志P,R值
Continued(Table 2)
Note: Boldface indicates the best performance of the corresponding classification; Underscores indicate that the optimal performance of the corresponding algorithm is initially selected by threshold.
Fig. 3 Total P,R,and F1 values of model 2 using different IOU thresholds on GTSDB圖3 GTSDB數(shù)據(jù)集上模型2在不同IOU閾值下的總P,R,F(xiàn)1值
根據(jù)各模型的mAP值、細分類別中P,R值不小于70%以及各模型取得峰值數(shù)量最多等原則綜合考慮,模型2在IOU閾值θ=0.4時可以獲得單類別的精確率以及召回率總體相對較高的性能.但這僅僅是初步篩選閾值,接下來會進行細化區(qū)間篩選.
分析各模型在不同閾值下P,R值的波動情況,模型2的DMAD值并不是最小,甚至比Tiny原版的穩(wěn)定性還要低,我們猜測這是由于GTSDB數(shù)據(jù)集樣本數(shù)量偏少造成的,當(dāng)數(shù)據(jù)集數(shù)量偏少時模型1更加穩(wěn)定,當(dāng)數(shù)據(jù)集數(shù)量增加后,模型2更加穩(wěn)定.我們將在4.3.2節(jié)中使用更大數(shù)量的訓(xùn)練集驗證這個猜想.
圖3為模型2在GTSDB數(shù)據(jù)集上不同IOU閾值下的總P,R值和F1值.由表2可知,模型2在θ=0.4附近可取得單類別最佳性能,所以在測量總P,R值時,我們在0.4~0.6之間細化區(qū)域,以找到檢測性能最好的區(qū)域.從圖3我們可以看出,在θ=0.55時,F(xiàn)1取得了91.77%.這代表著此時的P,R值可以達到較高且相對平衡的狀態(tài).
在GTSDB數(shù)據(jù)集上的對比實驗中,我們選取了10個算法進行對比.如表3所示,精確率、召回率和F1值最好的是ConvNet算法[24],雖然模型2以上指標(biāo)不是最高的,但排名靠前,其精確度、召回率和F1值分別排在第3位、第2位和第2位.模型2比文獻[24]稍差主要是因為我們是以檢測速度為首要指標(biāo),在不影響檢測速度的情況下盡可能地提高算法的精確率和召回率.所以我們的網(wǎng)絡(luò)沒有構(gòu)建得很深,這會使得檢測速度很快,也會給算法帶來檢測精確率上的瓶頸.模型2的F1值相較于文獻[24]下降了6.39%,但檢測速度卻提高了81.48%,模型2的檢測耗時只需要5 ms,在所有對比算法中是最快的.值得一提的是,對比算法的P,R值均參考的是原論文實驗中的結(jié)果,對比算法的F1值是根據(jù)其論文中P,R值計算得出的.
Table 3 Comparison of Experimental Results on GTSDB表3 GTSDB數(shù)據(jù)集上對比實驗結(jié)果
Note: Boldface indicates the best performance of the corres-ponding classification; * Indicates that the algorithm does not disclose code, and we do not have the same hardware environment, so the detection time comparison is only for reference. The hardware environment of the algorithm is GeForce GTX Titan XP with better performance, while we use NVIDIA GTX980ti.
圖4為模型2和原版Tiny模型在GTSDB數(shù)據(jù)集上的檢測效果圖,綠色框為模型2檢測結(jié)果,紅色框為YOLOv3-tiny檢測結(jié)果.從圖4(a)(b)中可以看出,模型2在圖像背光整體偏暗時還能夠檢測出較小、較偏的交通標(biāo)志.圖4(c)中Tiny算法把穿著藍色雨衣騎自習(xí)車的人誤檢成交通標(biāo)志.如圖4(d)所示,模型2能夠更加準(zhǔn)確地定位交通標(biāo)志的邊緣.
Fig. 4 The detection examples on GTSDB圖4 GTSDB數(shù)據(jù)集檢測效果圖
4.3.2 CCTSDB數(shù)據(jù)集上的評估
由于GTSDB數(shù)據(jù)集僅僅只有600張訓(xùn)練圖片、300張測試圖片,且還存在少量負樣本數(shù)據(jù),數(shù)據(jù)偏少,這對于深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是非常不利的.因此我們還在CCTSDB這種大型數(shù)據(jù)集上進行了評估,同時驗證4.3.1節(jié)最后的猜想是否正確.
在CCTSDB數(shù)據(jù)集上的實驗方法及流程與GTSDB數(shù)據(jù)集上相同,表4是3個模型在CCTSDB數(shù)據(jù)集上使用不同IOU閾值的三大類交通標(biāo)志P,R值.由于算法相同,P,R值、mAP值與θ之間的變化規(guī)律和在GTSDB數(shù)據(jù)集上相同.加粗字體為各類別的較高值,下劃線代表初步篩選的閾值及較佳性能.
Table 4 P,R Values of Three Models Using Different IOU Thresholds in Three Kind of Traffic Signs on CCTSDB表4 3個模型在CCTSDB數(shù)據(jù)集上使用不同IOU閾值的三大類交通標(biāo)志P,R值
Note: Boldface indicates the best performance of the corresponding classification; Underscores indicate that the optimal performance of the corresponding algorithm is initially selected by threshold.
值得一提的是,由于CCTSDB數(shù)據(jù)集中訓(xùn)練數(shù)據(jù)數(shù)量高達15 000張,這使得模型2的穩(wěn)定性得以突顯出來.模型2在各IOU閾值下的單類別最穩(wěn)定數(shù)量最多,且總體模型DMAD值最小,這表明在具有大型數(shù)據(jù)集的情況下,模型2結(jié)合殘差思想與多尺度預(yù)測思想不僅具有較高的檢測精確率和召回率,同時在不同IOU閾值下的預(yù)測框相對一致,更加穩(wěn)定,因此模型2具有更高的魯棒性.
圖5所展示的是模型2在CCTSDB數(shù)據(jù)集上使用不同IOU閾值的總P,R值與F1值.從圖5我們可以看出,模型2的精確率在各個閾值下都不是很高,但是召回率高達97%.這是因為我們在模型2上增加了一個預(yù)測輸出層,使得預(yù)測框更多,從而增加了召回率.經(jīng)過細化區(qū)間實驗證明,在θ=0.6時,模型2在CCTSDB數(shù)據(jù)集上的精確率、召回率及F1值取得最高值.
Fig. 5 Total P,R,and F1 values of model 2 using different IOU thresholds on CCTSDB圖5 CCTSDB數(shù)據(jù)集上模型2在不同IOU閾值下的總P,R,F(xiàn)1值
我們將在CCTSDB數(shù)據(jù)集上與文獻[16]中所提出的模型進行每一類別的詳細比較,結(jié)果如表5所示.表5中Model-A,Model-B,Model-C為文獻[16]中提出的各種改進模型,模型2為本文提出的最佳模型.由表5可知,對于準(zhǔn)確率來說,YOLOv2的指示標(biāo)志、Model-A的禁令與警告標(biāo)志有最高值,這是因為文獻16的基礎(chǔ)網(wǎng)絡(luò)是YOLOv2,而我們使用的是精簡版的YOLOv3-tiny檢測算法,在YOLOv3系列中Tiny算法均是以減少卷積層、犧牲精確率來提高檢測速度;但是對于召回率來說,我們的模型2均取得最高值,相比文獻[16]中最佳模型Model-B的三大類召回率分別提高了18.56%,24.38%,2.21%,這是因為文獻[16]中的算法都是基于YOLOv2檢測算法實現(xiàn)的,該算法有且只有一個預(yù)測輸出層,而我們的模型2具有3個預(yù)測輸出層,這能提高算法的召回率.但是準(zhǔn)確率與召回率往往相互對立,無法同時取得最高值.因此,為了綜合評估算法的水平,所以我們在P,R值的基礎(chǔ)上計算了F1值.
Table 5 Comparison of Experimental Results on CCTSDB表5 CCTSDB數(shù)據(jù)集上對比實驗結(jié)果
Note: Boldface indicates the best performance of the corresponding classification.
我們的模型2在指示標(biāo)志與禁令標(biāo)志的F1值分別取得了最高的92.41%和93.91%,同時檢測單張圖片速度是文獻[16]檢測算法的4~8倍.模型2的檢測時間略低于YOLOv3-tiny檢測算法,是因為我們在模型2上增加1個尺度預(yù)測以及嵌套殘差結(jié)構(gòu),這會使得檢測時間略有增加,不過僅僅是增加了1 ms,最終檢測時間與原版算法處于同一數(shù)量級,所以我們認為模型2算法是基本上不影響檢測時間的情況下提高了魯棒性.
圖6為模型2和原版Tiny模型在CCTSDB數(shù)據(jù)集上的檢測效果圖,綠色框為模型2檢測結(jié)果,紅色框為YOLOv3-tiny檢測算法結(jié)果.圖6(a)(b)為小目標(biāo)檢測對比,Tiny檢測算法均未檢測出真實場景中距離較遠、尺寸較小的交通標(biāo)志;圖6(c)(d)為預(yù)測框位置對比,模型2的檢測框可以很好地外切交通標(biāo)志四周,在有相近顏色的背景干擾時也能夠準(zhǔn)確地定位交通標(biāo)志.
Fig. 6 The detection examples on CCTSDB圖6 CCTSDB檢測效果圖
現(xiàn)實場景中交通標(biāo)志的實時檢測一直是研究者重點關(guān)注的話題.本文對此進行了研究,綜述了目前交通標(biāo)志檢測的方法,并在YOLOv3-tiny檢測算法的網(wǎng)絡(luò)基礎(chǔ)上提出了一種基于三尺度嵌套殘差結(jié)構(gòu)的交通標(biāo)志快速檢測算法.
首先,我們在Tiny檢測算法上采用逐像素相加的跨層連接改進通道串接的跨層連接,使得連接操作輸出的特征圖大小相比之前在通道數(shù)上大大減少,同時由于采用改進的連接方式,使得網(wǎng)絡(luò)內(nèi)部形成了1個小殘差結(jié)構(gòu),這可以讓主干網(wǎng)絡(luò)參數(shù)進行二次調(diào)參,這就是二尺度預(yù)測的殘差結(jié)構(gòu).然后,我們在此基礎(chǔ)上增加了1層更大尺度的預(yù)測輸出,更高空間分辨率的特征圖包含更多的空間細節(jié)信息,有利于小目標(biāo)的檢測,同時我們在這一層預(yù)測輸出上也采用了與之前相同的跨層連接方式,形成了1個大殘差結(jié)構(gòu).最后,將2個殘差結(jié)構(gòu)進行嵌套,使得最終網(wǎng)絡(luò)形成了1個三尺度嵌套殘差結(jié)構(gòu)的交通標(biāo)志快速檢測算法.相對于YOLOv3-tiny檢測算法來說,我們不但沒有增加過多檢測時間,而且還提高了算法的檢測精確率與召回率.
在GTSDB與CCTSDB數(shù)據(jù)集上的實驗也證明了我們的三尺度嵌套殘差結(jié)構(gòu)的交通標(biāo)志快速檢測算法可以在大部分對比算法中取得較高成績,同時檢測速度也是最快的.由于我們結(jié)合了殘差塊與多尺度預(yù)測的思想,在IOU閾值發(fā)生變化時,我們的模型也是最穩(wěn)定的.事實上,許多場景中的目標(biāo)檢測都能用到本文提出的檢測算法,特別是在計算能力受限且實時性要求極高的環(huán)境下,本算法可以確保實時、穩(wěn)定、高效、魯棒的檢測效果.我們新版的CCTSDB數(shù)據(jù)集目前正在制作中,下一步將公開發(fā)布.