韓宏坤,沈希忠
(上海應用技術大學 電氣與電子工程學院, 上海 201418)
在汽車自動駕駛和輔助駕駛領域,交通標志的識別與檢測是不可或缺的環(huán)節(jié),也是確保安全駕駛的必不可少的技術[1]。目前,其主要解決方案是通過在汽車上方搭載攝像頭來實時獲得道路交通的圖像,運用圖像增強和模式識別等方法對路途中的交通標志和道路進行實時跟蹤檢測與識別[2]?,F(xiàn)實中道路的交通環(huán)境和場景有一定不確定性,但實際情況又需要保證識別結果的準確率和實時性。采用滑動窗口和手工設計特征融合對交通標志進行識別的方法,無法應用在自動駕駛系統(tǒng)中,因為其在精度和實時性上都不能得到保證[3]。近年來,深度學習技術快速發(fā)展,其在計算機視覺領域也取得了一定的成就,卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)顛覆了傳統(tǒng)特征提取方法,為交通標志的識別和檢測帶來了新的技術可能。
在目前已有的相關研究中,Lee 等[4]采用了單激發(fā)多框探測器(single shot multibox detector,SSD)算法識別交通標志,并且能夠估算出準確的位置和標志的邊界信息。Li等[5]提出了基于channel-wise顯著圖與深度學習的方法來識別交通標志。Wang 等[6]提出了一種基于級聯(lián)的方法來對交通標志識別,采用語義特征比較多的中層特征層來加快檢測速度。潘衛(wèi)國等[7]利用交通道路的圖像規(guī)則分割出交通標志的感興趣區(qū)域(region of interest,ROI),然后基于Yolov3(You only look once version 3)算法對交通標志牌進行檢測。
上述方法都能夠提高檢測速度,但是準確率還是不夠高,檢測結果不夠精準。幸運的是,在2020年,Bochkovskiy等[8]使用了Yolov4 (You only look once version 4)算法實現(xiàn)了檢測速度和精度兼得的成果。因此,本課題組提出了一種采用Yolov4深度學習框架的交通標志識別方法來提高車輛感知系統(tǒng)檢測交通標志的速度和精度,并將該方法與SSD和Yolov3算法進行對比[9]。但該Yolov4算法模型顯著增加了參數(shù)量。在此基礎上,本文對Yolov4的主干特征提取網(wǎng)絡和多尺度輸出進行了進一步調(diào)整,得到一種輕量化的Yolov4算法。實驗結果表明,該改進的算法能夠有效檢測出交通標志,具有較好的實時性和適用性。上述交通標志識別方法的主要內(nèi)容如圖1所示。
圖1 交通標志識別方法的主要內(nèi)容Fig. 1 The main content of traffic sign identification method
現(xiàn)階段,我國的交通標志主要包括警告標志、指路標志、禁令標志、指示標志、旅游區(qū)標志以及其他標志。在本次研究中,選用中國的TT100K數(shù)據(jù)集(由清華大學和騰訊聯(lián)合實驗室整理和公開)中的3 000張圖像(45個類別)作為實驗原始數(shù)據(jù)[10],該數(shù)據(jù)集每10 m捕獲1張圖像,其中交通標志的外觀和含義組合十分豐富。結合TT100K數(shù)據(jù)集本身和所用算法,主要對圖像中的3個類別的標志進行檢測,分別是指示標志、警告標志和禁令標志,其中部分標志如圖2所示。
經(jīng)過統(tǒng)計發(fā)現(xiàn),數(shù)據(jù)集圖像中各類交通標志的樣本數(shù)量并不平均,這對網(wǎng)絡的訓練和收斂有一定負面影響[11]。因此對樣本數(shù)量較少的類別,采用一些圖片處理方法(例如修改對比度、翻轉、鏡像、裁剪等)對一部分圖像樣本進行了調(diào)整,并將調(diào)整后的新圖像補充進數(shù)據(jù)集。補充后的數(shù)據(jù)集共3 500張,數(shù)據(jù)分布情況如表1所示。
表 1 數(shù)據(jù)補充前后的分布情況Tab. 1 Distribution of data before and after addition
在Yolov4模型的訓練中,需要對數(shù)據(jù)集用labelimg進行手動的標注。標注時要對圖片上的關鍵交通標志進行完整標注,并避開一些遮擋物以及一些顏色類似的干擾物。
由于交通標志數(shù)據(jù)集有很多數(shù)據(jù)都屬于小樣本性質(zhì)數(shù)據(jù)集,因此要先對交通數(shù)據(jù)集進行數(shù)據(jù)增強,幫助獲得更好的訓練效果。為此,在Yolov4模型中對數(shù)據(jù)集使用了Mosaic方式對數(shù)據(jù)增強,其優(yōu)點是可以很好地解決比較小的目標檢測的問題,對交通標志檢測的精確度的提升有很大幫助。
在數(shù)據(jù)的劃分方面,將3 500張交通標志圖片以9∶1的比例隨機劃分,將劃分出來的3 150張圖像作為訓練集,余下350張作為測試集。
Yolov4算法屬于one-stage方法的多框預測。該算法網(wǎng)絡的主要組成包括3部分:主干特征提取網(wǎng)絡、加強特征提取網(wǎng)絡和最后的Yolo Head。為便于不同模型(SSD、Yolov3和Yolov4)之間的比較,將交并比(intersection-over-union, IoU)視作回歸損失。IoU是目標檢測中經(jīng)常使用的一個對比方式,定義為交集與并集的比值,是一種在特定數(shù)據(jù)集中來檢測目標物體準確度的一種衡量方式。
圖3所示為Yolov4具體的模型網(wǎng)絡框架,其主要包括3個部分,其中主干特征提取網(wǎng)絡是CSPDarknet53。其主要是由一系列的1×1和3×3的卷積層組成,反復地卷積提取到的特征,在壓縮特征層的同時擴張通道數(shù),最終獲得52×52×256的有效特征層、26×26×512的有效特征層和13×13×1 024的有效特征層,并且每個卷積層之后都會跟1個標準化層和1個Mish激活函數(shù)。Mish激活函數(shù)的計算公式如下。
圖3 Yolov4算法模型框架Fig. 3 Yolov4 algorithm model framework
然后,通過空間金字塔池化(spatial pyramid pooling,SPP)實現(xiàn)不同尺度的特征融合,其中有多個不同分支,包括5×5池化核、9×9池化核、13×13池化核,這幾個池化的步長都為1,即意味著做池化前對特征圖做padding填充,填充完成后最大池化所得的特征圖的寬高和深度并未變化,再進行深度疊加的融合。
最后通過路徑聚合網(wǎng)絡(path aggregation network,PANet)對3個特征層進行進一步的加強。將13×13變?yōu)?6×26,也就是把長寬在原有基礎上擴展2倍,接著把上采樣之后的特征層和主干網(wǎng)絡的特征層進行堆疊和3次卷積,實現(xiàn)特征融合,即構成特征金字塔結構。按照相同步驟上采樣,采用主干網(wǎng)絡堆疊和5次卷積融合,再進行下采樣,然后對寬高壓縮后再堆疊并進行5次卷積,從而實現(xiàn)了進一步特征提取。用Yolo Head對提取到的特征進行結果預測,以此實現(xiàn)交通標志的多尺度檢測,對被檢測到的對象進行描框并顯示概率。Yolo Head實際上是由1個3×3卷積和1個1×1卷積組成的,其中3×3 卷積可以作為特征的集合,而1×1卷積可將獲取到的特征轉換為Yolov4的預測結果。第1個Yolo Head對應 52×52特征層,第2個對應26×26特征層,第3個則對應13×13特征層,均是為了對特征做預測。
Yolov4模型的檢測速度通常慢于SSD和Yolov3,因此本研究在模型結構上進行了一定調(diào)整,通過改進Yolov4算法來降低模型的參數(shù)量和計算量。改進后的Yolov4算法模型框架如圖4所示,與常規(guī)Yolov4算法網(wǎng)絡相比,改進算法網(wǎng)絡只使用2個有效特征層進行分類和回歸預測,改用CSPDarknet53-Tiny作為主干特征提取網(wǎng)絡,并且將激活函數(shù)修改為LeakyReLU函數(shù)[12]。
圖4 改進后的Yolov4算法模型框架Fig. 4 Improved algorithm model framework of Yolov4
改進后的Yolov4框架主要包括3個部分。主干特征提取網(wǎng)絡CSPDarknet53-tiny首先進行2次卷積+標準化+激活函數(shù),步長都為2,對被輸入的圖片進行2次高和寬的壓縮,輸出的特征層大小是104×104×64。之后共經(jīng)過3次 resblock_body殘差網(wǎng)絡,resblock_body融合了CSPNet網(wǎng)絡結構特點,每次進行resblock_body,輸入進來的不同特征層的高和寬都會被壓縮1次。最后經(jīng)過1次卷積+標準化+激活函數(shù)進行特征整合,將104×104×64,26×26×256和13×13×512這3個有效特征層輸入到加強特征提取網(wǎng)絡(feature pyramid networks,F(xiàn)PN)中。FPN將13×13特征層先進行1次卷積后再進行卷積+上采樣,再與26×26特征層進行堆疊之后進行卷積,這樣構建了加強特征提取網(wǎng)絡,其本質(zhì)為特征金字塔結構,有利于加強特征融合并提高特征提取能力。同樣地,將26×26特征層經(jīng)過2次上采樣再和104×104進行拼接,最后利用Yolo Head對3個具有高語義信息的有效特征層進行結果預測。這樣的改進使得原始Yolov4網(wǎng)絡參數(shù)量下降了10倍,速度也變得很快。將原始Yolov4中52×52輸出有效特征層改為104×104,讓算法對小目標的檢測更加準確。
實驗在64位Win10系統(tǒng)中進行,顯卡型號為RTX2070S,顯卡驅動為CUDA(compute unified device architecture)11.0,計算加速軟件為cuDNN(CUDA deep neural network library) 7.4.1.5,處理器為i7-10700F。深度學習框架為Pytorch 1.2.0,Python版本為3.6.12。
實驗過程中,將CUDA參數(shù)設置為true,然后利用fine-tuning這種遷移學習的方式,將預先訓練好的模型遷移到所提模型上來,加速了網(wǎng)絡的收斂性,而且取得的效果更好。整個訓練步驟可分為2步。先將網(wǎng)絡凍結一部分,只訓練50個epoch,每個epoch都要shuffle一次;將學習率設置為10-4,這樣可以縮短算法網(wǎng)絡的訓練用時。然后再將后續(xù)的50個epoch進行全解凍訓練,學習率設置為10-5,得到適合檢測交通標志的算法模型。由于顯存的物理特性,其對數(shù)值為2的冪次的batch計算性能較好,訓練選用的batch尺寸為16。
算法的性能將使用各種指標進行評估,包括精度fprecision、召回率frecall等,如式(2)和式(3)所示。
式中:真陽性(TP)和真陰性(TN)是指正確分類的陽性和陰性樣本的數(shù)量;假陽性(FP)和假陰性(FN)是指被錯誤分類的樣本數(shù)量。
僅使用精度和召回率,并不能充分衡量算法的質(zhì)量。在目標檢測領域,常把平均精度均值(mean average precision),即平均精度(average precision)的平均值, 作為衡量檢測精度的指標[12]。此外,為了評估算法的實時性能,還可用每秒能夠處理的圖片數(shù)量(frame per second,F(xiàn)PS)對檢測速度進行估量,F(xiàn)PS值越大,說明算法網(wǎng)絡的實時性越好[13-14]。
為了驗證改進后的Yolov4交通標志檢測模型在實際應用中的探測能力,在一些實際的場景進行了測試(見圖5)。圖5中的場景主要體現(xiàn)了不同道路場景下遠處極小目標和多目標的檢測和識別實驗結果,因為在無人駕駛情況下,越早檢測出遠處的小目標,越能給無人駕駛行為決策提供充足的時間,保證行車的安全。在一般情況下,Yolov4模型置信度為0.8左右;改進后的模型可以成功檢測出單一的目標和多個小目標,且識別出的標志內(nèi)容和位置準確,部分數(shù)據(jù)集置信度提升到0.9左右,并且檢測速度提升了3倍。
圖5 Yolov4模型實際檢測場景圖Fig. 5 The pictures of Yolov4 model actual test
為了讓模型準確判斷交通標志,把IoU 閾值設為0.5,把置信度的門限條件設置為0.5。利用上述的指標對SSD、Yolov3和Yolov4進行了對比,得到了如表2所示的實驗數(shù)據(jù)。可以明顯看出,Yolov4算法在查準率和召回率方面比其他2個同類型算法更有優(yōu)勢,分別達到92.34%和78.26%,特別是在召回率上,比SSD算法要高出約12%。在平均精度均值方面,Yolov4算法能達到85.30%,總體的識別效果更好。但是常規(guī)Yolov4模型的檢測速度較慢,其FPS只有29。
表 2 4種算法的實驗結果對比Tab. 2 Comparison of the experimental results of the four algorithms
將Yolov4算法與改進后的Yolov4算法進行對比(見表2),可以看出改進后的Yolov4算法在精確率和FPS等參數(shù)方面更有優(yōu)勢。改進后的算法能夠有效降低原有Yolov4模型中的參數(shù)量,使得模型的檢測速度加快。
本文提出1種采用Yolov4深度學習框架的交通標志識別方法,通過實驗結果,對比驗證了這個方法確實可行,并根據(jù)目前國內(nèi)交通標志牌數(shù)據(jù)集的情況,進行了3 500張圖像標注,對目前的數(shù)據(jù)集進行有效擴充。根據(jù)Yolov4架構的特點進一步改進了模型,得到了一種輕量化的Yolov4算法。實驗結果表明,本文改進的算法確實能夠有效地檢測出交通標志,具有較好的實時性和適用性。