鄧天民,周臻浩,方 芳,王 琳
重慶交通大學(xué) 交通運(yùn)輸學(xué)院,重慶 400074
交通標(biāo)志檢測與識別技術(shù)是自動(dòng)駕駛領(lǐng)域的關(guān)鍵技術(shù)之一,被廣泛地應(yīng)用于汽車輔助駕駛系統(tǒng)中,隨著計(jì)算機(jī)性能、人工智能和目標(biāo)檢測技術(shù)快速的發(fā)展,端到端的智能化檢測是自動(dòng)駕駛領(lǐng)域的一個(gè)全新的途徑。因此,本文研究基于YOLOv3的交通標(biāo)志牌檢測與識別方法對于提高自動(dòng)駕駛公路交通規(guī)范具有重要意義。
傳統(tǒng)機(jī)器學(xué)習(xí)應(yīng)用在交通標(biāo)志檢測的方法主要是基于顏色、形狀或者兩者相結(jié)合的方法。Li等[1]將圖像從RGB 顏色空間轉(zhuǎn)換到高斯顏色空間,然后使用kmeans對顏色進(jìn)行聚類并提取出交通標(biāo)志;Berkaya等[2]提出使用形狀檢測算法來檢測圓形交通標(biāo)志。這些方法主要是利用交通標(biāo)志顏色與形狀的特殊特性進(jìn)行特征的提取,通過依據(jù)分類器來實(shí)現(xiàn)分類。但是存在檢測速度慢、檢測精度差、抗環(huán)境干擾能力差等問題,難以在實(shí)際應(yīng)用中實(shí)現(xiàn)精準(zhǔn)的識別效果。
近年來,隨著深度學(xué)習(xí)在圖像分類、目標(biāo)檢測、圖像語義分割等領(lǐng)域取得了一系列突破性的研究成果。John等[3]使用CNN提取特征并檢測道路交通標(biāo)志,繪制出包含交通燈位置的特征圖。Girshick 等[4]提出了一種基于快速區(qū)域的卷積網(wǎng)絡(luò)方法(Fast R-CNN),使用深度卷積網(wǎng)絡(luò)有效地對目標(biāo)進(jìn)行分類。為了執(zhí)行快速準(zhǔn)確的交通標(biāo)志檢測和識別,Zhu 等[5]采用了整體嵌套的邊緣檢測網(wǎng)絡(luò)。Tian等[6]提出了采用多尺度CNN方法,融合了不同網(wǎng)絡(luò)層的特征信息來識別交通標(biāo)志,并將檢測問題看作回歸問題,使用深度卷積神經(jīng)網(wǎng)絡(luò)作為回歸預(yù)測其輸入圖像中目標(biāo)??傮w而言,這些方法中使用的主要方法是首先提取感興趣區(qū)域的特征,然后使用分類器定位位置。因此,這些方法統(tǒng)稱為兩階段目標(biāo)檢測。它們具有較高的檢測精度和較強(qiáng)的泛化能力,但是確定感興趣區(qū)域需要大量的計(jì)算,這就導(dǎo)致實(shí)現(xiàn)實(shí)時(shí)檢測的能力很差。
為了提高檢測效率,Redmon等[7]提出了將目標(biāo)檢測作為回歸問題的YOLOv1(You Only Look Once)網(wǎng)絡(luò),該網(wǎng)絡(luò)是一個(gè)采用深度卷積神經(jīng)網(wǎng)絡(luò)的全新實(shí)時(shí)目標(biāo)檢測方法,它直接利用網(wǎng)格對目標(biāo)位置進(jìn)行回歸。與當(dāng)前的卷積神經(jīng)網(wǎng)絡(luò)相比,YOLO網(wǎng)絡(luò)顯著提高了檢測速度,并在很多領(lǐng)域得到了廣泛的應(yīng)用。與R-CNN 相比,YOLOv1網(wǎng)絡(luò)以較低的準(zhǔn)確性和較低的召回率來定位目標(biāo)物體。為了進(jìn)一步提高檢測精度,YOLOv3[8]使用了增量改進(jìn)技術(shù),大大提高了小目標(biāo)的檢測精度。
綜上,本文針對交通標(biāo)志易受光照、實(shí)際道路場景復(fù)雜等特征影響導(dǎo)致識別準(zhǔn)確率和識別速率不高的問題,采用了Darknet 框架結(jié)合改進(jìn)YOLOv3 算法的交通標(biāo)志檢測方法。最后,通過大量實(shí)驗(yàn)對比改進(jìn)算法和原始算法在復(fù)雜交通標(biāo)志情況下的檢測識別率和魯棒性的差異,驗(yàn)證了該算法的有效實(shí)用性。
網(wǎng)絡(luò)整體框架選用整圖訓(xùn)練的方式將檢測問題看作了回歸問題,可以更好地區(qū)分目標(biāo)和背景區(qū)域;并且接受不同大小尺寸輸入的圖片,由Darknet 網(wǎng)絡(luò)提取圖像的特征,然后將特征圖輸入到后續(xù)的多尺度分類檢測網(wǎng)絡(luò)中,最后YOLOv3 輸出3 個(gè)不同尺度的特征,可以對不同大小的目標(biāo)進(jìn)行檢測,有助于實(shí)現(xiàn)交通標(biāo)志目標(biāo)的檢測要求。
在交通標(biāo)志圖像特征提取方面,YOLOv2[9]采用了Darknet-19網(wǎng)絡(luò)結(jié)構(gòu),由于直筒型網(wǎng)絡(luò)結(jié)構(gòu)層數(shù)過多會造成訓(xùn)練過程中梯度爆炸等問題,因此YOLOv2 所采用的Darknet 網(wǎng)絡(luò)架構(gòu)只有19 層。YOLOv3 采用了稱之為Darknet-53 的網(wǎng)絡(luò)結(jié)構(gòu)(含有53 個(gè)卷積層)結(jié)合了YOLOv2 的基礎(chǔ)特征提取器并借鑒了殘差網(wǎng)絡(luò)的思想[10],如圖1所示。
圖1 Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)
Darknet-53 由5 個(gè)殘差塊組成,每個(gè)殘差塊由殘差單元組成,殘差單元中由DBL單元組成,兩個(gè)DBL單元在殘差塊中進(jìn)行殘差操作,如圖2(a)所示。其中DBL單元包含了卷積層(convolutional)、批歸一化(Batch Normalization)和Leaky Relu激活函數(shù),如圖2(b)所示,通過引入殘差結(jié)構(gòu),可以增加網(wǎng)絡(luò)架構(gòu)的深度并防止訓(xùn)練的過程梯度爆炸和消失等問題。
圖2 結(jié)構(gòu)單元
本文對Darknet53網(wǎng)絡(luò)進(jìn)行了模型簡化。YOLO網(wǎng)絡(luò)中引入了BN[11](Batch Normalization)層,通過對每個(gè)卷積層后添加BN層,可以在網(wǎng)絡(luò)訓(xùn)練時(shí)期加速網(wǎng)絡(luò)收斂以及防止過擬合,并且可以簡化調(diào)參,使網(wǎng)絡(luò)更加穩(wěn)定。雖然BN層在訓(xùn)練時(shí)起到了歸一化作用,但是在網(wǎng)絡(luò)前向推理時(shí)增加了運(yùn)算,影響了模型的性能,且占用了更多的內(nèi)存或者顯存空間,從而降低了網(wǎng)絡(luò)模型的前向推理速度。
卷積層與BN 層都是線性變換,提供了合并的可能性。在YOLOv3中,BN計(jì)算過程如下:
其中,γ為縮放因子,μ為均值,δ2為方差,β為偏置,xout為BN計(jì)算結(jié)果,xconv為卷積計(jì)算結(jié)果。
合并卷積層與BN層,式(2)代入到式(1)得:
即:
合并后權(quán)值參數(shù)變?yōu)椋?/p>
偏置變?yōu)椋?/p>
即合并后的計(jì)算變?yōu)椋?/p>
卷積層與BN 層合并后可以與卷積層共用Blob 數(shù)據(jù),從而可以減少內(nèi)存占用,有利于速度提升。
如圖3 所示,輸入圖片經(jīng)過卷積得到特征圖后,然后輸入到BN 層中進(jìn)行歸一化處理,再經(jīng)過Leaky-Relu函數(shù)激活之后,進(jìn)入網(wǎng)絡(luò)的下一層。本文將DBL 單元結(jié)構(gòu)中的批歸一化層和卷積層合并為一層,通過實(shí)驗(yàn)可知該方法提高了模型的前向推理速度,從而可以提高目標(biāo)檢測的速率。
圖3 合并BN層和CONV層
YOLOv2中引入一種稱為passthrough layer的方法在特征圖中保留一些細(xì)節(jié)信息,為了加強(qiáng)YOLO算法對小目標(biāo)檢測的精度。在YOLOv3 中采用類似FPN 的上采樣(upsample)[12]和尺度融合方法[13],將上采樣后的高語義特征與淺層的定位細(xì)節(jié)特征進(jìn)行融合。如圖4 所示,卷積網(wǎng)絡(luò)在79層后,經(jīng)過下方幾個(gè)卷積層得到一種尺度的檢測結(jié)果。相比輸入圖像,這里用于檢測的特征圖有32倍的下采樣,特征圖就是13×13了。由于下采樣倍數(shù)高,這里特征圖的感受野比較大,因此適合檢測圖像中尺寸較大的目標(biāo)。為了實(shí)現(xiàn)細(xì)粒度的檢測,第79層的特征圖又開始作上采樣,然后與第61 層特征圖融合,這樣得到第91層較細(xì)粒度的特征圖,同樣經(jīng)過幾個(gè)卷積層后得到相對輸入圖像16倍下采樣的特征圖。最后,第91 層特征圖再次上采樣,并與第36 層特征圖融合,得到相對輸入圖像8倍下采樣的特征圖。它的感受野最小,適合檢測小尺寸的目標(biāo)。此方法融合了3個(gè)尺度(13×13、26×26、52×2),通道數(shù)為3,就是說每個(gè)box負(fù)責(zé)對三個(gè)anchor box進(jìn)行回歸,取其中的一個(gè)作為最終檢測結(jié)果,共對9 個(gè)anchor box 進(jìn)行回歸,所以對于一張輸入圖像,最后的輸出尺寸為1×(3×(13×13+26×26+52×52))× (5+m),m代表檢測類別數(shù)。在多個(gè)尺度的融合特征圖上分別做檢測,最終對小目標(biāo)的檢測效果較前幾代的YOLO有了明顯的提升。
圖4 YOLOv3多尺度融合
2.2.1 目標(biāo)邊界框的預(yù)測
YOLOv3 的設(shè)計(jì)理念遵循端到端的訓(xùn)練和實(shí)時(shí)檢測,可將圖片作為輸入,直接輸出目標(biāo)位置和對應(yīng)位置的置信度評分。首先通過特征提取網(wǎng)絡(luò)對輸入圖像提取特征,得到一定大小的特征圖,然后將輸入圖像分成s×s個(gè)單元格,如果真實(shí)框中某個(gè)目標(biāo)的中心坐標(biāo)落在哪個(gè)單元格中,那么就由該單元格來預(yù)測該目標(biāo)。每個(gè)單元格都會預(yù)測3 個(gè)固定數(shù)量的邊界框。每一個(gè)邊界框獲得1個(gè)偏移坐標(biāo)(tx,ty)、1個(gè)真實(shí)寬高坐標(biāo)(tw,th)和一個(gè)置信度評分C。
在YOLOv1 版本中,x、y、w、h是直接預(yù)測物體框的中心坐標(biāo)和預(yù)測框的寬度和高度,預(yù)測值的微小變化都會被放大到整個(gè)圖像的任何范圍,導(dǎo)致坐標(biāo)波動(dòng)較大,預(yù)測不準(zhǔn)確。YOLOv2 和YOLOv3 對其進(jìn)行了改進(jìn),其公式為:
其中,tx、ty為預(yù)測的坐標(biāo)偏移值,σ(tx)、σ(ty)用sigmoid運(yùn)算將tx、ty壓縮到[0,1]區(qū)間內(nèi),可以有效確保目標(biāo)中心處于執(zhí)行預(yù)測的網(wǎng)格單元中,防止偏移過多。tw、th為尺度縮放。cx、cy為grid cell 坐標(biāo),也就是距離左上角頂點(diǎn)的偏移量;pw、ph代表cell 對應(yīng)先驗(yàn)框(anchor box)的寬高,計(jì)算出 bounding box 的位置,如圖5 所示。confidence=pr(Object)×IoUtruthpred,通過對confidence這一項(xiàng)設(shè)定閾值,過濾掉低分的預(yù)測框,然后對剩下的預(yù)測框執(zhí)行非極大抑值(Non Maximum Suppression,NMS)[14]處理,得到網(wǎng)絡(luò)的最終預(yù)測。
圖5 bounding box坐標(biāo)轉(zhuǎn)換公式
2.2.2 目標(biāo)定位損失函數(shù)的改進(jìn)
當(dāng)前很多目標(biāo)檢測算法的坐標(biāo)誤差損失函數(shù)都使用預(yù)測框與真實(shí)框角點(diǎn)坐標(biāo)距離的1-范數(shù)Loss 或者2-范數(shù)Loss,但是評測的時(shí)候卻又采用IoU(Intersection over Union)來判斷是否檢測到目標(biāo)。顯然二者有一個(gè)分歧,即loss低不代表IoU就一定小。由圖6可知,其中紅色框?yàn)檎鎸?shí)框,黑色框?yàn)轭A(yù)測框。第一排,所有物體的2-范數(shù)loss 都一樣,但是第三個(gè)IoU 顯然要高于第一個(gè),主觀來看也是第三個(gè)檢測結(jié)果要好。第二排也是類似,1-范數(shù)都一樣,但是IoU卻不同。
圖6 相同1-范數(shù)或2-范數(shù)對應(yīng)的IoU和GIoU
當(dāng)L1或L2范數(shù)都相同的時(shí)候,發(fā)現(xiàn)IoU和GIoU的值差別都很大,這表明使用L范數(shù)來度量邊界框的距離是不合適的。針對這個(gè)問題會直接采用IoU 當(dāng)作模型的坐標(biāo)誤差損失函數(shù),但是IoU作為損失函數(shù)存在兩個(gè)問題:(1)當(dāng)預(yù)測框和真實(shí)框之間沒有重合時(shí),不管兩者之間的距離有多遠(yuǎn)對應(yīng)的IoU 值都為0,導(dǎo)致優(yōu)化損失函數(shù)時(shí)梯度也為0,意味著無法優(yōu)化,無法進(jìn)行學(xué)習(xí)訓(xùn)練,見圖7。(2)IoU無法辨別不同方式的對齊,比如方向不一致等。如圖7,場景 A 和場景B 的 IoU 值都為 0,但是顯然場景B的預(yù)測效果較A更佳,因?yàn)閮蓚€(gè)邊界框的距離更近(L范數(shù)更?。?/p>
圖7 IoU為0的兩種不同情況的回歸
IoU是目標(biāo)檢測中使用最廣的評價(jià)指標(biāo),然而優(yōu)化回歸bounding box 參數(shù)的距離損失并不等價(jià)于最大化IoU指標(biāo)。對于軸對齊的2D bounding box,IoU可直接用作坐標(biāo)誤差回歸損失,但是IoU 無法優(yōu)化無重疊的bounding box,所以本文使用一種泛化版的GIoU[15](Generalized Intersection over Union)來代替IoU 作為坐標(biāo)誤差損失函數(shù),該改進(jìn)方法加快模型擬合預(yù)測框與真實(shí)框的位置關(guān)系,并提高模型的預(yù)測精度。
對于預(yù)測框A與真實(shí)框B,可以計(jì)算出兩者的最小凸集(包含A、B的最小包圍框)C。通過最小凸集,可以計(jì)算GIoU。IoU和GIoU的計(jì)算公式如下:
公式(9)中分式部分分子為最小凸集中不包含A和B的部分。GIoU與IoU相似,GIoU作為一個(gè)距離度量指標(biāo),其坐標(biāo)誤差損失函數(shù)LGIou計(jì)算公式如式(10)所示:
GIoU 有以下性質(zhì):(1)與 IoU 類似,GIoU 也可以作為一個(gè)距離度量,loss 可以用LGIoU=1-GIoU來計(jì)算。(2)同原始IoU 類似,GIoU 對物體的大小不敏感。(3)GIoU 是 IoU 的下界,GIoU 總是小于等于IoU,對于IoU,有 0 ≤IoU≤ 1 ,GIoU 則是-1 ≤GIoU≤ 1 。在A和B形狀完全重合時(shí),有GIoU=IoU=1;當(dāng)A和B不重合度越高(離得越遠(yuǎn)),GIoU 越趨近于-1。(4)由于GIoU引入了包含A、B兩個(gè)形狀的C,所以當(dāng)A、B不重合時(shí),依然可以進(jìn)行優(yōu)化,保留了IoU 的原始性質(zhì)同時(shí)弱化了它的缺點(diǎn)。
2.2.3 Anchor參數(shù)設(shè)定
Anchor(先驗(yàn)框)機(jī)制起初是由Faster R-CNN 提出,后來被廣泛用于一階段及二階段目標(biāo)檢測框架,如SSD、YOLO、RetinaNet 等。Anchor 主要用來解決目標(biāo)檢測任務(wù)中尺度及寬高比例變化范圍過大的問題,模型訓(xùn)練的時(shí)候真實(shí)標(biāo)簽被編碼為相對于Anchor 的偏移量,模型測試時(shí)根據(jù)模型預(yù)測的相對于Anchor 的偏移量來解碼檢測結(jié)果。通過Anchor 機(jī)制,將尺度和寬高比例的空間劃分為相應(yīng)的幾個(gè)子空間,降低了目標(biāo)檢測任務(wù)的難度,使模型更容易學(xué)習(xí)。但是在Faster R-CNN和SSD 中,先驗(yàn)框的維度(長和寬)都是手動(dòng)設(shè)定的,帶有一定的主觀性,如果一開始選取的先驗(yàn)框維度比較合適,那么模型更容易學(xué)習(xí),從而做出更好的預(yù)測。因此,YOLOv3中采用k-means聚類算法對數(shù)據(jù)集(COCO)中80 類目標(biāo)的標(biāo)注框做了聚類分析。本文針對k-means聚類方法在初始聚類點(diǎn)的選擇上存在較大的隨機(jī)性的問題,使用了隨機(jī)性更小的k-means++[16]聚類算法來代替原始聚類算法對本文數(shù)據(jù)集的標(biāo)注框進(jìn)行聚類計(jì)算,可以有效降低原始算法在初始聚類點(diǎn)所造成的聚類偏差。得到Anchor 較好尺寸并匹配到對應(yīng)的特征圖,從而可以提高檢測準(zhǔn)確度和召回率。
本文實(shí)驗(yàn)在計(jì)算機(jī)環(huán)境配置為Ubuntu16.04、CUD(Compute Unified Device architecture)10.0、CUDNN(CUDA Deep Neural Network library)7.0。硬件配置為Intel-CPU-i7-8750H 處理器,顯卡為Nvidia GeForce GTX 1050Ti,調(diào)用GPU進(jìn)行加速訓(xùn)練。
本文采用的數(shù)據(jù)集為Lisa(加州大學(xué)圣地亞哥分校數(shù)據(jù)集)交通標(biāo)志數(shù)據(jù)集和CQ-data(重慶交通標(biāo)志數(shù)據(jù)集)見圖8和圖9。Lisa數(shù)據(jù)集中圖片拍攝角度以及分類更規(guī)范,因此作為本文算法的主要研究數(shù)據(jù)集。CQ-data數(shù)據(jù)集為個(gè)人制作數(shù)據(jù)集,圖片的獲取來由是百度實(shí)景街道截取,該數(shù)據(jù)集驗(yàn)證本文改進(jìn)算法的實(shí)用性。Lisa數(shù)據(jù)集共包含20類交通標(biāo)志,選取了數(shù)據(jù)集中的4 706張圖片。在Lisa 數(shù)據(jù)集中選取其中數(shù)量最多的4 類交通標(biāo)志作為檢測識別對象,分別為stop、pedestraincrossing、signalahead、speedlimit,共計(jì) 5 373 個(gè)標(biāo)注。CQ-data 數(shù)據(jù)集共制作了1 000張圖片。在CQ-data數(shù)據(jù)集中,選取了5 類交通標(biāo)志作為檢測識別對象,分別為:禁止鳴喇叭、禁止停車、禁止向左轉(zhuǎn)彎、限速、其他禁令標(biāo)志,共計(jì)1 500個(gè)標(biāo)注。將標(biāo)注信息生成與之對應(yīng)的xml格式的目標(biāo)區(qū)域位置的信息,編寫python程序?qū)ml格式的目標(biāo)區(qū)域位置的信息統(tǒng)一轉(zhuǎn)化為txt格式,以便讓YOLOv3讀取圖片標(biāo)注信息位置。最后按照VOC2007數(shù)據(jù)集格式進(jìn)行了整理,分別按3∶1比例將兩個(gè)數(shù)據(jù)集中的圖片分為訓(xùn)練集和測試集兩類。
圖8 Lisa交通標(biāo)志數(shù)據(jù)集
圖9 重慶交通標(biāo)志數(shù)據(jù)集
由于YOLOv3 最原始選定anchor 尺度和寬高比是基于COCO數(shù)據(jù)集(80個(gè)分類)確定的,但是本文的Lisa數(shù)據(jù)集應(yīng)用目標(biāo)是交通路面上的交通標(biāo)志牌,原先設(shè)置的anchor box 尺寸不適合本文研究的環(huán)境中,基于此,本文使用k-means++聚類算法對交通標(biāo)志數(shù)據(jù)集的真實(shí)標(biāo)注框進(jìn)行聚類操作,真實(shí)標(biāo)注框長寬映射到模型輸入大小size下的聚類結(jié)果如圖10所示。
圖10 Grounding truth box長和寬聚類散點(diǎn)圖
由代碼實(shí)現(xiàn)上來看,anchor尺寸是相對于預(yù)測的特征圖大?。?3×13),因此真實(shí)標(biāo)注框長寬映射到模型后輸出的 anchor 尺寸大小為:(12.41,23.50)、(15.96,31.73)、(21.11,34.88)、(21.74,48.11)、(28.83,42.13)、(29.57,63.04)、(37.08,52.16)、(44.06,75.64)、(64.64,103.84),使用自己的數(shù)據(jù)集進(jìn)行維度聚類,得出結(jié)果和原始的參數(shù)相比,自己的聚類結(jié)果更為集中,寬高比更符合交通標(biāo)志數(shù)據(jù)集的特點(diǎn),因此使用k-means++算法聚類得到的anchor 參數(shù)來代替原始的參數(shù)進(jìn)行訓(xùn)練和測試??梢允筧nchor框更容易擬合真實(shí)目標(biāo),從而可以降低模型訓(xùn)練的難度。
訓(xùn)練階段更改YOLOv3 配置文件來對圖片進(jìn)行數(shù)據(jù)增強(qiáng)預(yù)處理以此來提高模型的泛化能力,包括旋轉(zhuǎn)圖片角度、調(diào)整圖片飽和度、調(diào)整圖片曝光量、調(diào)整圖片色調(diào)、裁剪圖片大小、調(diào)整圖片色度扭曲、調(diào)整圖片噪聲來生成更多的訓(xùn)練樣本。之后將增強(qiáng)后的圖片resize 到416×416 送入到網(wǎng)絡(luò)模型中進(jìn)行模型的訓(xùn)練。同時(shí)在訓(xùn)練階段,為了防止Anchor 與真實(shí)框沒有IoU 大于0.5的情況,本實(shí)驗(yàn)設(shè)置當(dāng)出現(xiàn)這種情況時(shí)將與真實(shí)框IoU最高的Anchor作為對應(yīng)類別的正樣本參與訓(xùn)練。
該實(shí)驗(yàn)以Darknet53 為基礎(chǔ)網(wǎng)絡(luò)框架,以YOLOv3為檢測算法框架,基于遷移學(xué)習(xí)的方法,使用預(yù)訓(xùn)練模型作為基礎(chǔ)特征提取網(wǎng)絡(luò),整個(gè)訓(xùn)練過程中共進(jìn)行20 000 次迭代,其中動(dòng)量和權(quán)重衰減分別配置為0.9 和0.000 5,批量大小設(shè)置為64,初始學(xué)習(xí)率為0.001,并在迭代次數(shù)達(dá)到16 000和18 000時(shí),學(xué)習(xí)率分別為0.000 1和0.000 01。由圖11可以看出,到后期的訓(xùn)練損失值基本低于0.030,迭代至17 500次左右,loss值在0.030上下浮動(dòng),即達(dá)到理想效果。訓(xùn)練過程中平均Avg IoU 和Avg GIoU 如圖12 和 13 所示,可以看出 GIoU 整體訓(xùn)練相較于IoU更加密集,性能更優(yōu)。訓(xùn)練過程中精度和召回率如圖14所示。
圖11 平均損失變化曲線
圖12 平均IoU變化曲線
圖13 平均GIoU變化曲線
圖14 precision與recall變化曲線
該實(shí)驗(yàn)分別使用Loss-IoU 和Loss-GIoU 對數(shù)據(jù)集進(jìn)行訓(xùn)練,以IoU和GIoU為度量評價(jià)方式,分別得到權(quán)重文件IoU 和權(quán)重文件GIoU,然后設(shè)定Threshold(閾值)為0.75分別用Loss-IoU和Loss-GIoU對這兩個(gè)權(quán)重文件的性能進(jìn)行測試統(tǒng)計(jì)。結(jié)果如表1,使用Loss-GIoU 作為回歸損失來訓(xùn)練數(shù)據(jù)集相比于使用原來的Loss-IoU作為回歸損失,性能得到了提高。
表1 LIoU和LGIoU對權(quán)重文件的性能測試
實(shí)驗(yàn)中設(shè)置閾值為0.5 時(shí)4 類交通標(biāo)志的AP 值和準(zhǔn)確率的均值(mAP),如表2所示。實(shí)驗(yàn)中的前向推理時(shí)間都是與實(shí)驗(yàn)A進(jìn)行對比,對比結(jié)果如圖15所示。原始的網(wǎng)絡(luò)檢測模型性能較低,前向推理時(shí)間達(dá)到了151 s,由于使用的是原始的Anchor 尺寸及寬高比,因此對于“signalAhead”這類較小的交通標(biāo)志在目標(biāo)定位方面效果不如其他幾類交通標(biāo)志,如圖16(a)所示。
在網(wǎng)絡(luò)結(jié)構(gòu)中融合了BN層和Conv層后,檢測速率以及前向推理速度有21 個(gè)百分點(diǎn)的提高,但是檢測精度基本不變;在原始模型的基礎(chǔ)上加入維度聚類操作后,對于“signalAhead”這類小目標(biāo)交通標(biāo)志AP 提升較明顯,同時(shí)mAP 有3 個(gè)百分點(diǎn)的提高;在原始模型的基礎(chǔ)上把坐標(biāo)誤差回歸的損失函數(shù)改進(jìn)為GIoU-Loss后,“Pedestraincrossing”的AP 值有8 個(gè)百分點(diǎn)的提高;當(dāng)同時(shí)引入維度聚類和GIoU-LOSS 的方法后,mAP 相對于只引入GIoU-LOSS 有3 個(gè)百分點(diǎn)的提高;同時(shí)mAP 相對于只加入維度聚類有6個(gè)百分點(diǎn)的提高,但是前向推理速度略微下降了4個(gè)百分點(diǎn);當(dāng)同時(shí)改變3個(gè)模塊時(shí),mAP 提升8.1 個(gè)百分點(diǎn)同時(shí)前向推理速度也有19 個(gè)百分點(diǎn)的提升,如圖17和18所示。
表2 不同模塊對模型的性能影響對比
圖15 前向推理時(shí)間優(yōu)化
圖16 改進(jìn)后算法在LISA數(shù)據(jù)集的檢測效果
圖16(a)(b)為模型改進(jìn)前后在Lisa 數(shù)據(jù)集測試集的檢測效果。改進(jìn)后的交通標(biāo)志檢測識別效果相較于未改進(jìn)的在定位預(yù)測上更加準(zhǔn)確。原始算法中對于復(fù)雜路況上容易產(chǎn)生誤檢,改進(jìn)后的算法更有利于實(shí)時(shí)道路場景中交通標(biāo)志的檢測。圖19 為模型改進(jìn)后在CQ-data 數(shù)據(jù)集測試集的檢測效果,顯示了本文提出的改進(jìn)方法在復(fù)雜環(huán)境下的檢測效果。
為進(jìn)一步驗(yàn)證本文改進(jìn)模型對于交通標(biāo)志檢測的有效性,在Lisa 數(shù)據(jù)集和CQ-data 數(shù)據(jù)集上分別訓(xùn)練了對應(yīng)的檢測模型并與FasterR-CNN、YOLOv2、YOLOv3等主流算法進(jìn)行了對比。實(shí)驗(yàn)結(jié)果如表3和4。
圖17 交通標(biāo)志檢測精度mAP
圖18 4類交通標(biāo)志檢測精度AP
圖19 改進(jìn)后算法在CQ-data數(shù)據(jù)集的檢測效果
表3 各模型在Lisa數(shù)據(jù)集上效果對比
表4 各模型在CQ-data數(shù)據(jù)集上效果對比
從實(shí)驗(yàn)結(jié)果看,本文的改進(jìn)模型與Faster R-CNN所訓(xùn)練的模型在精度上很近似,但在速度上本文改進(jìn)方法還是具有顯著的優(yōu)勢。在兼顧精度的同時(shí)相比Faster R-CNN 能夠達(dá)到更快的檢測速度,這滿足實(shí)時(shí)交通場景檢測的速率要求,與YOLOv2 相比,雖然檢測速度降低了,但是經(jīng)過BN層和CONV層的融合已經(jīng)有了顯著的提升。綜合來看,本文改進(jìn)的YOLOv3模型具有一定的泛化性和魯棒性。
針對YOLOv3 原始算法直接運(yùn)用于本文的兩個(gè)交通標(biāo)志數(shù)據(jù)集上性能不高的問題,首先將DBL 單元中BN 層和CONV 層合并提高模型前向推理速度,其次引入更加接近檢測任務(wù)的評價(jià)標(biāo)準(zhǔn)GIoU-Loss 作為代價(jià)函數(shù)以提高模型的定位能力。最后使用k-means++聚類算法重新確定anchor 的大小可以使模型更容易收斂來更好適用于本文數(shù)據(jù)集的檢測與識別。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的YOLOv3算法相較于原始算法在Lisa數(shù)據(jù)集和CQ-data數(shù)據(jù)集上檢測平均準(zhǔn)確率和檢測平均速率有一定的提升。同時(shí)本文還有很多地方需要改進(jìn),本文算法在識別小目標(biāo)時(shí),識別精度仍沒有達(dá)到預(yù)期的效果,并且由于工作計(jì)算量大消耗大量內(nèi)存,該模型仍然不適用于實(shí)時(shí)性工程應(yīng)用中。如何在提高性能條件的基礎(chǔ)上精簡網(wǎng)絡(luò)結(jié)構(gòu)、降低計(jì)算量將是未來的主要研究方向。