王 海,王 寬,蔡英鳳,劉 澤,陳 龍
(1.江蘇大學(xué)汽車與交通工程學(xué)院,鎮(zhèn)江 212000; 2.江蘇大學(xué)汽車工程研究院,鎮(zhèn)江 212000)
交通標志的檢測和識別在自動駕駛系統(tǒng)中十分重要,在自動駕駛過程中,迅速并正確識別出駕駛場景的交通標志對于交通安全意義重大。常用的交通標志檢測主要有以下方法:基于顏色[1]、形狀[2]的檢測或者基于二者結(jié)合進行檢測,再用模板進行匹配的方法[3-4];傳統(tǒng)基于機器學(xué)習的檢測方法[5]。其中基于標志顏色、形狀的檢測通常采用對圖像進行顏色分割的方法,運算量小,實時性好,然而顏色特征受光照、天氣的影響較大?;跇酥拘螤畹臋z測算法可以將交通標志從復(fù)雜背景中有效提取出來,通常采用霍夫變換進行直線和圓的檢測,檢測效果良好,然而受環(huán)境影響也較大。傳統(tǒng)的基于機器學(xué)習方法通常在分類中應(yīng)用了如支持向量機[6]、貝葉斯分類器[7]等,然而該方法需要針對不同檢測任務(wù)設(shè)計不同特征,識別效果一般且不穩(wěn)定。
基于深度學(xué)習的計算機視覺算法作為計算機視覺領(lǐng)域的后起之秀,隨著近幾年數(shù)據(jù)量的不斷提升和硬件水平的突飛猛進,在各類計算機視覺任務(wù)中都取得了巨大的成功,例如目標分類、目標檢測和語義分割等。其中,針對目標檢測,目前已有大量效果出眾且實時性良好的算法。這些算法根據(jù)是否使用了區(qū)域候選網(wǎng)絡(luò)(RPN)進行一次正樣本的檢測框回歸,分為單階段和二階段檢測算法。單階段目標檢測算法有YOLOv3[8]、SSD[9]、Retinanet[10]等,雙階段檢測算法有RCNN[11]、RFCN[12]、Faster-RCNN[13]和Cascade-RCNN[14]等。單階段目標檢測算法相比二階段檢測算法,減少了一次RPN的回歸操作,有著更快的檢測速度,但同時因為少了一次目標框的回歸,有大量的簡單負樣本信息干擾單階段檢測算法最后的檢測框回歸操作,導(dǎo)致檢測結(jié)果有較大的定位誤差。而以Faster-RCNN為代表的一系列二階段檢測算法相比單階段算法一方面存在著檢測速度的劣勢,另一方面二階段檢測算法的高查全率也會導(dǎo)致檢測結(jié)果中有較多的假陽性目標。針對檢測速度這一問題,考慮到二階段算法中RoI pooling的插入,打破了原卷積網(wǎng)絡(luò)的平移不變性,犧牲了訓(xùn)練和測試效率,RFCN檢測算法提出了位置敏感積分圖(position sensitive score map)這一概念,積分圖包含位置信息,因此能夠把RoI pooling層的輸入直接連接全連接層用于分類和回歸,大大提高了訓(xùn)練和檢測的速度。針對假陽性問題,研究人員提出的Cascade-RCNN算法通過級聯(lián)幾個檢測網(wǎng)絡(luò)達到不斷優(yōu)化預(yù)測結(jié)果的目的,在進一步提高位置回歸精度的同時也使得檢測結(jié)果假陽性得到了一定的抑制。在目標檢測領(lǐng)域中,交通標志檢測是一個十分重要的方向,研究交通標志檢測算法對于交通安全十分重要。
基于以上的研究基礎(chǔ),本文中提出了一種改進的卷積神經(jīng)網(wǎng)絡(luò),基于Cascade-RCNN深度學(xué)習框架對交通標志進行檢測和識別,算法在德國交通標志數(shù)據(jù)集(GTSDB)[15]上進行了驗證,獲得了較好的檢測效果。
本文中的貢獻包括以下內(nèi)容:(1)對一些目前主流的深度學(xué)習目標檢測算法在GTSDB數(shù)據(jù)集上進行橫向比較研究,包括檢測算法的精確度和實時性等,并對測試結(jié)果進行了分析和總結(jié);(2)引入了特征圖像金字塔FPN[16],針對交通標志這類小目標特殊任務(wù),為更好地識別大小不同的物體,通過多尺度融合,將低層圖像的位置信息與高層圖像的特征語意信息融合,更好地表達圖像信息;(3)通過引入文獻[17]中提出的GIoU(generalized intersection over union)這一優(yōu)化目標加快模型擬合預(yù)測框與真實框的位置關(guān)系,并提高交通標志識別回歸框的準確率;(4)通過相關(guān)實驗結(jié)果分析,本文所設(shè)計的目標檢測模型在檢測性能上相比其他目標檢測模型有明顯的提升。
Cascade-RCNN是Faster-RCNN的 改 進 版,F(xiàn)aster-RCNN算法包含兩個卷積神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)如圖1所示。Faster-RCNN由區(qū)域生成網(wǎng)絡(luò)(RPN)和Fast-RCNN兩部分構(gòu)成,RPN用于生成目標可能存在的候選區(qū)域;Fast-RCNN實現(xiàn)對候選區(qū)域的分類,并進行邊界回歸。這兩部分共享一個提取特征的卷積神經(jīng)網(wǎng)絡(luò),使得目標候選區(qū)域的檢測時間幾乎為0,大幅提高了目標檢測的速度。
圖1 Faster-RCNN結(jié)構(gòu)示意圖
在目標檢測算法中,IoU閾值常用于定義并生成正負樣本,當使用低IoU閾值訓(xùn)練檢測器時,會帶來檢測噪聲(檢測精度不高);如果僅僅提高IoU閾值,檢測性能也同樣下降,原因如下:(1)IoU閾值的提高,用于訓(xùn)練的正樣本數(shù)量呈指數(shù)倍減少,會導(dǎo)致訓(xùn)練的過擬合;(2)預(yù)測階段,輸入與檢測分支訓(xùn)練時采用的IoU閾值不一致,會導(dǎo)致性能下降。
雙階段檢測網(wǎng)絡(luò)會對提取的候選區(qū)域進行分類和回歸。在分類過程中,每個候選區(qū)域中的正樣本和負樣本會根據(jù)初始設(shè)定的IoU閾值進行分類。在訓(xùn)練回歸任務(wù)中,網(wǎng)絡(luò)不斷地向正樣本的邊界框回歸。因此正確的IoU設(shè)定對于網(wǎng)絡(luò)的訓(xùn)練和驗證具有重大影響。
于是Cai等[14]在Fast-RCNN和Faster-RCNN的基礎(chǔ)上提出改進的目標檢測算法Cascade-RCNN。當設(shè)置一個閾值訓(xùn)練時,訓(xùn)練出的檢測器效果有限,在級聯(lián)RCNN中就采用了多階段結(jié)構(gòu),每個階段分別設(shè)置不同的IoU閾值。算法的主要思想是設(shè)置不同閾值,閾值越高,其網(wǎng)絡(luò)對準確度較高的候選框的作用效果越好。通過級聯(lián)的RCNN網(wǎng)絡(luò),每個級聯(lián)的RCNN設(shè)置不同的IoU閾值,這樣每個網(wǎng)絡(luò)輸出的準確度提升一點,用作下一個更高精度的網(wǎng)絡(luò)的輸入,逐步將網(wǎng)絡(luò)輸出的準確度進一步提高。對于交通標志檢測識別,使用級聯(lián)RCNN可使檢測更加準確。
在交通標志識別中,為解決交通標志檢測精度不高的問題,本文中采用級聯(lián)RCNN網(wǎng)絡(luò)結(jié)構(gòu)(圖2)。與圖1所示的Faster-RCNN相比,將多個不同的檢測器根據(jù)IoU的值串聯(lián)起來。本文中設(shè)定IoU分別是0.3、0.4和0.5的3個級聯(lián)檢測器,每個檢測器的輸入源自上一層檢測器邊界框回歸后的結(jié)果。這種設(shè)定的網(wǎng)絡(luò)可使正樣本的圖像信息得到充分利用。首先初始化搭建的卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù),其中卷積層參數(shù)由利用ImageNet圖像數(shù)據(jù)集預(yù)先訓(xùn)練的ResNet101[18]得到,其他層的參數(shù)都是采用隨機方式初始化;為獲得圖像的多尺度特征表達,利用卷積神經(jīng)網(wǎng)絡(luò)提取層次特征,進而建立特征金字塔;然后根據(jù)RPN網(wǎng)絡(luò)生成目標候選區(qū)域,在特征金字塔各個層級中找到對應(yīng)的目標區(qū)域,從而提取出目標的多尺度特征;最后將池化后的特征進行特征融合。
圖2 級聯(lián)RCNN網(wǎng)絡(luò)結(jié)構(gòu)
本文中采用的級聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)前傳步驟詳細如下:圖片送入模型中,經(jīng)過RPN網(wǎng)絡(luò),RPN網(wǎng)絡(luò)從全部anchor中分配正樣本和負樣本,大于閾值0.7的為正樣本,小于閾值0.3的為負樣本,從全部的正樣本和負樣本中隨機抽取200個樣本進行l(wèi)oss訓(xùn)練,200個樣本中正樣本比例占0.5,接著RPN后處理。按照預(yù)測的分類概率進行排序,利用非極大值抑制篩選后得到2 000個候選區(qū)域,然后將2 000個候選區(qū)域選出512個送入第1個RCNN網(wǎng)絡(luò)中,正樣本比例為0.25,IoU大于0.3的為正樣本,IoU小于0.3為負樣本,接著再將上一步中的輸出送入第2個RCNN網(wǎng)絡(luò)中,正樣本比例為0.25,IoU大于0.4的為正樣本,小于0.4的為負樣本,最后再將上一步中的輸出送入第3個RCNN網(wǎng)絡(luò)中,正樣本比例為0.25,IoU大于0.5的為正樣本,小于0.5的為負樣本。這種設(shè)定在一定程度上減少了正樣本的浪費和流失,使得檢測網(wǎng)絡(luò)適應(yīng)各種目標的檢測情況,提高網(wǎng)絡(luò)的整體檢測精度。
通過本文中采用的級聯(lián)RCNN網(wǎng)絡(luò)結(jié)構(gòu),可提高網(wǎng)絡(luò)整體的檢測精度,但是針對交通標志這類小目標特殊任務(wù),檢測效果提升不明顯,通常為了更好地識別大小不同的物體,特征圖像金字塔[19]是一個常見方法。常見的特征圖像金字塔將圖像化成不同大小尺寸,對每一個尺寸的圖像生成各自的特征并進行預(yù)測。雖然可保證特征提取的完備性,但是時間成本太大。通過該方式,網(wǎng)絡(luò)速度快,內(nèi)存占用小。但是由于忽略了低層網(wǎng)絡(luò)的細節(jié)信息,網(wǎng)絡(luò)精度有待提高。
基于上述原因,本文中創(chuàng)新性地引用FPN(feature pyramid network)的思想,在圖像融合前,分別對兩者生成特征圖,由于圖像底層的特征語義信息比較少,不能直接分類,但目標信息準確;高層特征語義信息比較豐富,但目標位置不準確,本文中采用如圖3所示的特征金字塔網(wǎng)絡(luò)FPN,其網(wǎng)絡(luò)結(jié)構(gòu)為自底向上和自頂向下的特征映射的構(gòu)建模塊。將自底向上和自頂向下的路徑進行橫向信息融合,通過對高層特征上采樣和底層信息進行3×3卷積操作融合,可充分還原最低層特征圖的語義信息,并得到有豐富的特征信息和高分辨率的特征圖,對小目標有很好的檢測率,且生成的特征圖滿足后續(xù)的處理。
圖3 FPN網(wǎng)絡(luò)結(jié)構(gòu)示意圖
首先,通過設(shè)定空間分辨率采樣為2像素,來完成較為粗糙的分辨率特征映射。其次,通過逐個元素疊加的方法將上采樣的映射與對應(yīng)的自下而上的映射(其經(jīng)歷1×1卷積層以減少信道維度)合并。迭代此過程,直到生成最佳分辨率的映射,然后添加一個1×1卷積層來生成最粗糙分辨率映射以開始迭代。最后,由于要減少上采樣的混疊效應(yīng),在每個合并的映射上添加一個3×3卷積來生成最終的特征映射,即特征圖。
整個算法大致分為3個部分:自底向上、橫向連接和自頂向下。自底向上就是普通的卷積神經(jīng)網(wǎng)絡(luò)前饋過程,如果同一階段的不同層產(chǎn)生相同大小的輸出映射,則選擇每個階段最后一層的輸出作為待處理特征圖;自頂向下過程就是將自底向上過程得到的特征圖進行上采樣,該目的是使上采樣后的特征圖和相鄰低層的特征圖大小相同,可進行特征圖相加;橫向連接就是將上采樣的結(jié)果和自下而上生成的特征圖進行融合。這種做法只是在基礎(chǔ)網(wǎng)絡(luò)上增加了跨層連接,優(yōu)點是不會增加網(wǎng)絡(luò)額外的時間和計算量。
本文中將GIoU作為一種新的評價指標損失函數(shù)替代原有評價指標IoU引入到了級聯(lián)RCNN中,由Loss-GIoU計算公式可知,Loss-GIoU能保證損失函數(shù)目標檢測框回歸具有尺度不變性,同時使檢測框的優(yōu)化目標和損失函數(shù)保持一致。在交通標志識別中,由于正樣本和負樣本之間存在顯著的不平衡,這使得訓(xùn)練邊界框得分更加困難,使用GIoU可有進一步改進的機會。在很多目標檢測算法中,定位損失函數(shù)都使用預(yù)測框與真實框角點坐標距離的1-范數(shù)Loss或者2-范數(shù)Loss。目標檢測領(lǐng)域IoU是對象檢測基準中最常使用的評估指標,在最終評價模型性能時使用預(yù)測框與真實框的交并比來判斷是否進行了正確的檢測。IoU作為定位回歸的損失函數(shù)主要有以下問題:(1)對于不重疊的兩個對象,IoU值將為0,并不能反映兩個形狀之間的距離,在非重疊對象的情況下,如果使用IoU直接作為損失,則梯度為0無法進行優(yōu)化;(2)IoU對于不同的對齊方式也無法進行區(qū)分。
如圖4所示,圖中右上角在圓心的矩形框為真實框,右上角在圓上的矩形框為預(yù)測框??梢钥闯鲱A(yù)測框與真實框的2-范數(shù)Loss都是相等的,但是第3個的IoU明顯高于前兩個。在1-范數(shù)與2-范數(shù)取到相同值時,實際上檢測效果卻差異巨大,直接表現(xiàn)就是預(yù)測和真實檢測框的IoU值變化較大,這說明1-范數(shù)和2-范數(shù)不能很好地反映檢測效果,模型對這兩者的優(yōu)化不是等價的,所以檢測結(jié)果也優(yōu)于前兩者。更精確地說,對于兩個具有相同交點水平的不同方向重疊對象,IoU將完全相等。因此,IoU函數(shù)值并不能反映兩個對象是如何重疊的。所以基于此問題,本文中提出了一種新的度量預(yù)測框與真實框擬合程度的方法,將GIoU作為一種損失函數(shù)引入到2D目標檢測中。
圖4 相同2-范數(shù)Loss不同IoU
IoU和GIoU的計算公式為
式中:A為預(yù)測框;B為真實框;C為兩者的最小閉包(包含A、B的最小包圍框)
GIoU的詳細計算方法如下所示。
輸入:
輸出:LossIoU和LossGIoU
(6)IoU=I/U,其中U=Areap+Areag-I,GIoU=IoU-(AreaC-U)/AreaC
綜上損失函數(shù)為
LossIoU=1-IoU,LossGIoU=1-GIoU
本文中使用了世界知名的公開交通標志數(shù)據(jù)集—德國交通標志檢測數(shù)據(jù)集GTSDB,目標圖像大小為1 360×800,本文中所采用的數(shù)據(jù)集包括不同的交通標志圖像共900張,其中訓(xùn)練數(shù)據(jù)為600張,測試數(shù)據(jù)為300張。其中,圖像中交通標志的數(shù)量在0到6個不等。每張圖片均為RGB三通道的彩色圖像。圖像分為4類:禁止(prohibitory)、警告(danger)、指示(mandatory)與其它(other)。交通標志示例如圖5所示。實驗平臺為Intel酷睿i7 8700K處理器,64GB內(nèi)存,操作系統(tǒng)為Ubuntu18.04,編程軟件為Pycharm,使用的運算顯卡為GTX1080Ti。
圖5 交通標志示例
本文中選擇4種目前主流的深度學(xué)習目標檢測算法以及本文中改進的級聯(lián)RCNN算法共5種算法進行橫向比較研究,其中包含了兩類單階段檢測模型YOLOv3和RetinaNet,兩類二階段檢測模型Faster-RCNN和原版Cascade-RCNN,以及本文中改進的算法。訓(xùn)練和測試平臺是一臺搭載了GTX1080-TI GPU的工作站,在GTSDB數(shù)據(jù)集上評估這4種目標檢測模型。對比實驗統(tǒng)一將輸入檢測模型的圖片尺寸定為1 360×800,考慮到顯卡內(nèi)存的限制batchsize選擇為4,訓(xùn)練時選擇的優(yōu)化器都是SGD算法[20],初始學(xué)習率設(shè)置為0.001。除了YOLOv3使用Darknet-53作為基礎(chǔ)特征提取之外,其余4類目標檢測模型,本文中均使用在Imagenet上進行預(yù)訓(xùn)練的ResNet101網(wǎng)絡(luò)作為基礎(chǔ)特征提取網(wǎng)絡(luò)。
本文中算法采用的評價指標為平均精度均值(mean average precision),實際上就是4類交通標志平均精度(AP)的平均值。每一個類別檢測結(jié)果指標為精確率(Precision),即被正確檢測出來的交通標志占全部檢出區(qū)域的百分比,其計算方式如式(3)所示;召回率(Recall),即被正確檢測出來的交通標志占全部交通標志的百分比,其計算方式如式(4)所示。根據(jù)每一個類別檢測結(jié)果的精確率和召回率繪制一條曲線,曲線下的面積就是平均精度,其計算如式(5)所示。5種算法的實驗結(jié)果如表1所示。
式中:PR為精確率;RE為召回率;AP為平均精度;TP為正確檢測出來的交通標志數(shù)量;FP為背景被檢測為交通標志的數(shù)量;FN為交通標志被檢測為背景的數(shù)量;p為縱軸精確率;r為橫軸召回率。
表1 不同算法的檢測精度對比
表1清晰地顯示了不同目標檢測算法對于不同交通標志類別目標的檢測精度,同時也反映了各算法對檢測樣本的查全和查準的能力。
兩類單階段模型YOLOv3、Retinanet在檢測GTSDB的檢測精度較低,相比于雙階段檢測算法Faster-RCNN、Cascade-RCNN以及本文中的算法mAP較低,檢測較不精確。
相比于改進前的Cascade-RCNN,當使用本文中改進的方法后,其中禁止類標志牌AP提高了1個百分點,警告類標志牌AP提高了2.2個百分點,指示類標志牌AP提高了3.5個百分點,其他類標志牌AP提高了1.6個百分點,平均準確率mAP提高了2個百分點。
圖6 本文算法檢測效果
實驗中,本文中算法得到的部分檢測結(jié)果如圖6所示,所提出的方法可以很好地檢測不同尺寸、角度和位置的交通標志。在圖6中,包圍框區(qū)域代表交通標志牌的位置,數(shù)字表示置信度,由圖可以看出,對于較小的交通標志,本文中使用的模型能夠很好地將交通標志檢測出來,較好地解決了對交通標志這樣的小目標漏檢的問題。
改進后算法與YOLOv3算法檢測效果對比如圖7所示,可知改進后算法的車牌檢測效果相較于YOLOv3的算法定位更加準確。由圖8可知,原版Cascade-RCNN算法中較小的交通標志被漏檢,改進后的檢測效果較好,改進后的檢測效果準確率和召回率都更高。同時本文中改進后的Cascade-RCNN算法相比于原版算法在檢測速度上幾乎一樣,改進后不產(chǎn)生明顯的時間代價。
圖7 本文算法與YOLOv3算法檢測效果對比
圖8 本文算法與原版Cascade-RCNN檢測效果對比
通過上述實驗結(jié)果表明,測試的總體識別率達到98.8%,對于不同光照下和不同場景以及不同距離都有著良好的檢測效果,本文中提出的算法準確率高于其他算法,對于現(xiàn)實場景下的交通標志有著良好的檢測效果,有著很高的準確性。
本文中針對交通標志的識別采用了基于級聯(lián)Cascade-RCNN改進優(yōu)化方法,在原有網(wǎng)絡(luò)基礎(chǔ)上引入FPN模塊,將深層特征信息融合進淺層特征層,同時引入了更加接近檢測任務(wù)的評價標準GIoULoss作為代價函數(shù)以提高模型的定位能力。該方法能識別出交通標志,既可提高網(wǎng)絡(luò)在各個候選區(qū)域的檢測精度,又可重點解決小目標檢測問題,使網(wǎng)絡(luò)的整體檢測精度有了較大的提升。經(jīng)過多次合理的模型參數(shù)優(yōu)化后,檢測準確率高達98.8%。但由于基礎(chǔ)特征網(wǎng)絡(luò)ResNet101的層數(shù)較深,單幀圖像的檢測時間較長,實時性還有待提高,下一步可考慮減少模型體積壓縮模型來完成交通標志的實時檢測與識別。