郭朦, 陳紫強, 鄧鑫, 梁晨
(桂林電子科技大學, 廣西無線寬帶通信與信號處理重點實驗室, 桂林 541004)
近年來,隨著經濟的發展、社會的進步,道路設施建設越來越完善,汽車保有量不斷增長,交通事故發生頻率逐年遞增,因此人們的關注點落到了安全駕駛上。駕駛員在道路上駕駛汽車時,不僅要規劃行駛路線,還需要時刻注意周圍道路環境情況,交通標志作為重要的道路標識,能夠提前給駕駛員提供道路環境信息,有利于駕駛員盡早做出判斷,有效提升了駕駛的安全性、準確性。但在日常生活中,駕駛員可能由于疲勞、分心等原因,導致注意力不集中,無法及時留意到交通標志,造成交通意外。為了減少交通事故的發生,國內外學者對輔助駕駛系統進行了大量研究。在輔助駕駛系統中,交通標志的檢測與識別技術作為一項關鍵的基礎技術,成了熱門的研究方向之一。
交通標志的檢測與識別分為TSD(traffic sign detection)和TSR(traffic sign recognition)兩部分[1]。傳統的TSD方法通常在RGB[2]、HSV[3]、Lab[4]等不同顏色空間進行閾值分割,或是采用曲線擬合、霍夫變化等方法檢測圖像幾何邊緣[5-6],亦或是結合顏色和形狀特征,對色彩分割后的區域進行幾何檢測[7],但該類方法容易受到光線變化、標志形變、視線角度等情況的影響,從而產生誤檢或漏檢。傳統的TSR方法首先提取能表述圖像紋理、梯度方向等信息的特征,如LBP(local binary pattern)、HOG(histogram of oriented gradient)等,再結合相應的機器學習算法進行識別,如模板匹配、AdaBoost、支持向量機等[8-10]。該類方法需要人工設計特征,特征算子無法完整表征圖像信息,有一定的限制性,在種類繁多的交通標志中,識別效果參差不齊。在實際復雜場景中,傳統的交通標志檢測與識別方法時間復雜度高,泛化能力弱,算法性能仍需提高。
基于深度學習的方法通過建立神經網絡,模擬人類大腦對圖像進行學習和分析,對檢測識別方法進行自主修正改進[11]。卷積神經網絡(convolutional neural network,CNN)能夠提取出大量的特征,主動學習特征信息,因此Girshick等[12]提出了基于候選區域的RCNN(regions with convolutional neural network features)算法,能夠提取多層信息,精準定位目標,該算法遍歷圖像各個區域,計算量大,耗費時間長,無法達到應用設備的要求。Xiong等[13]在RCNN基礎上提出一種利用區域生成網絡的Faster RCNN算法,能快速精確檢測出交通標志位置信息,但缺乏識別能力。為了提高檢測識別速率,Redmon等[14]提出了一種基于回歸思想的YOLO(you only look once)目標檢測算法,該算法從完整的圖像中預測目標的邊界框和置信度,定位目標并給出類別。之后研究者們在此基礎上進行改進,在檢測速率和精確度方面有了一系列的突破,提出了YOLO系列算法,如YOLOv2、YOLOv3等。YOLO系列算法作用于整幅圖像,無須提取候選區域,在檢測速率上優勢明顯,但在小目標的識別應用上表現能力不如Faster RCNN。
綜上所述,雖然上述算法在目標檢測方面進行了一系列研究,但無法同時滿足檢測速率與準確度的要求。因此,現提出一種基于YOLOv5l和視覺轉換器[15](vision transformer,ViT)的交通標志檢測識別算法,將YOLOv5l作為目標檢測器,加入ViT網絡對目標特征進行識別,并融入DenseNet[16]網絡加強特征連接,實現更佳的實時性,提高識別準確率。
所提出的基于YOLOv5l和改進ViT的交通標志檢測與識別方法,整體流程如圖1所示。該方法首先將原始圖片輸入YOLOv5l檢測器得到目標檢測框,該檢測器用自適應錨框計算方法計算最佳錨框值,減少了推理時的計算量,并采用GIOU(generalized intersection over union)替代IOU(intersection over union)來匹配檢測框和真實框,不僅能對重合區域進行計算,還能考慮到兩框不重合的部分以及相交方式,使得檢測框更加準確;然后將檢測框中的目標輸入改進ViT中,在檢測目標分塊切片后加入DenseNet網絡模型用于特征提取,提取特征時不僅保留了原始特征,還保留了卷積后的特征,隨著網絡的加深,實現了特征之間的密集連接,最后再輸入Transformer中編入位置信息,將帶有位置信息的特征送入編碼器進行分類識別,最終輸出含有檢測框與交通標志類別的結果圖。

YOLOv5l為檢測器;ViT為視覺轉換器;DenseNet為密集連接的卷積神經網絡圖1 交通標志檢測與識別流程框圖Fig.1 Flow chart of traffic sign detection and recognition
YOLOv5系列共有4種網絡結構,每種網絡深度和寬度各不相同,因此各網絡的算法性能也有所差異,分別為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。這4種結構的網絡模型大小逐漸遞增,速度則依次下降,檢測精度逐步提升。YOLOv5l作為該系列中模型大小居中的網絡,其檢測速率能達到實時的標準,且檢測精度能保證檢測目標的準確性,減少冗余信息,因此采用YOLOv5l作為交通標志的檢測器,其網絡結構框架如圖2所示。

YOLOv5l主要由輸入端、Backbone網絡、Neck網絡、Prediction 4個部分組合而成。輸入端首先對數據進行預處理,采用Mosaic的方式對4張原始圖像進行隨機縮放、色彩空間調整、剪裁以及排布,拼接成一張組合圖像,增加了數據的多樣性、目標的個數,提升了訓練速度;再用自適應錨框計算方法算出最佳錨框值,之后將圖片統一縮放到同一個尺寸,減少推理時的計算量,加快目標檢測速度。Backbone網絡主干先對圖像進行Focus操作,對圖像進行復制、切片、卷積后輸入CSP,再分為兩個部分,一部分進行卷積,另一部分直接與上一部分卷積結果跨越式連接到特征圖。Neck網絡為FPN+PAN結構,FPN采用由上而下的上采樣操作,傳遞高層的語義信息,最后接自下而上的PAN結構,傳遞低層的位置信息,將不同檢測層的參數進行結合。Prediction部分采用GIOU作為損失函數,考慮檢測框與真實框不重合時的情況,采用加權的非極大值抑制篩選出目標框,得到預測結果。
1.2.1 ViT分類器
ViT結構如圖3所示,首先數據處理部分對原始輸入的圖像x∈RH×W×C做切片分塊處理,將圖像x展開成為一個xP∈RN×(P2×C)圖像塊序列,序列中一共有N=HW/P2個圖像塊,其中(H,W)表示原始圖像的分辨率,C表示通道數,(P,P)表示圖像序列塊的分辨率,N為輸入的有效序列長度。再嵌入矩陣E對展平后的圖像塊進行線性變換,轉換成D維向量。為了編碼器明確預測類別,所以添加一個可學習的向量xclass與D維向量同時嵌入編碼器。然后引入位置編碼向量Epos,明確圖像塊序列的空間位置信息,最終將這些圖像塊序列Z0一并輸入編碼器中,即
(1)
式(1)中:E∈R(p2×C)×D;Epos∈R(N+1)×D。

Class為類別;MLP Head為多層感知機分類;Transformer Encoder為編碼器;Patch為補丁信息;Position Embedding為位置編碼信息;Linear Projection of Flattened Patches為序列塊的線性投影圖3 ViT模型結構Fig.3 ViT model structure
編碼器主要由多頭注意力機制模塊和多層感知器模塊交替組成,每個模塊前都會采用層歸一化,模塊后采用殘差連接,結構如圖4所示。在編碼器的前向過程中,多頭注意力機制與層歸一化迭代L次得到z′|l,多層感知器與層歸一化迭代L次得到zl,且多層感知器采用了GELU(gaussian error linerar units)激活函數避免了梯度消失問題。即

MLP為多層感知機;Norm為層歸一化;Multi-Head Attention為多頭注意力機制;Embedded Patches為嵌入補丁圖4 編碼器結構Fig.4 Encoder structure
z′|l=MSA[LN(zl-1)]+zl-1,l=1,2,…,L
(2)
(3)
ViT對圖像進行分塊,加入學習向量后線性嵌入編碼器中進行反復堆疊,再進行識別分類,雖然在圖像分類中有良好的表現,但所需數據集規模過大,在中小型規模數據集上收斂效果不佳。且交通標志種類繁多,類別間相似度高,ViT中編碼器中僅僅只將原始的特征與經過注意力機制的特征直接相加,對特征的簡單處理結合無法得到重要的特征信息,導致識別精度低,因此在編碼器前加入DenseNet網絡模型用于特征提取,淬煉出有效特征,提高識別準確率。
1.2.2 DenseNet網絡
DenseNet網絡模型主要分為Dense block和Transition層,兩個模塊互相重疊,交替連接組成網絡主干部分。Dense block作為DenseNet中獨有的模塊,內部結構如圖5所示,先對輸入進行規范化,再進行卷積得到特征層,將該特征層與原始輸入堆疊成為新的特征層,該特征層既保留了原始特征,還獲得了卷積后的新特征,重復進行以上步驟,隨著網絡通道的不斷加深,實現層與層之間的密集連接,每一層都可以直接訪問原始輸入信息和卷積后的特征信息,有效杜絕了輕梯度消失的產生,增強特征的傳遞性,從而使特征得到高效利用。不同的Dense block之間采用Transition層進行連接,將block中不同特征層間的特征進行整合,采用平均池化減小block的高度與寬度,壓縮了模型的大小,減少了參數量,提升計算效率。

BN為批量歸一化;ReLu為整流線性單元激活函數;Con為卷積圖5 Dense block模塊Fig.5 Dense block module
實驗環境采用了Windows10操作系統,GPU采用的是RTX3060,12 G內存,CPU為Intel I7-10700,實驗環境為python 3.6.9。
交通標志用于給人們提供道路信息,其類別多種多樣,不同方位下看到的交通標志輪廓外形有所差異,不同光線視線下的顏色也會存在色差,因此選用包含了GTSDB(german traffic sign detection benchmark)和GTSRB(german traffic sign recognition benchmark)的德國交通標志數據基準。該數據集采集了不同道路在不同天氣情況下的真實場景,比如霧天、陰天、強光照天氣、雨天等天氣情況。GTSDB里包含了不同的靜態道路環境整體圖,每幅圖標注出交通標志所在位置檢測框,可應用于檢測模塊;GTSRB里面包含了43類不同類別的交通標志圖像,其天氣情況、拍照角度、尺寸大小皆有不同,能夠使分類器提取出的特征更加完整,應對實際生活中不同視角、不同天氣下的交通標志識別。對于整個檢測識別系統而言,既要檢測出目標對象在大環境下的位置,還要識別出目標對象所屬類別,必須將檢測和識別這兩個模塊結合起來,因此選用GTSDB和GTSRB。
采用檢測速率和識別準確率衡量交通標志的檢測與識別方法在實際應用中的可行性、高效性,對于深度學習模型泛化能力的評判,采用以下評估標準指標。
(1)準確率(accuracy)。準確率是指分類正確的樣本數量占所有樣本數量的比例,即:準確率=分類正確的樣本/樣本總數。
(2)精確率P(precision)、召回率R(recall)和F1。在測試集中,有正樣本與負樣本之分,在本文中交通標志為正樣本,其余物體為負樣本。對于正負樣本的檢測,有TP(true positives)、TN(true negatives)、FP(false positives)、FN(false negatives)4種。TN表示樣本類別為負,預測類別為負;FP表示樣本類別為負,預測類別為正;TP表示樣本類別為正,預測類別為負;FN表示樣本類別為正,預測類別為負。
精確率為預測類別為正的正樣本數量占所有預測類別為正的樣本數量的比例,即TP占TP與FP之和的比例,表達式為
(4)
召回率為預測類別為正的樣本數量占實際正樣本數量的比例,即TP占TP與FN之和的比例,表達式為
(5)
精確率和召回率通常是互相約束的關系,模型的精確率上升的同時可能會出現召回率的下降,而模型召回率上升的同時也可能出現精確率的下降,為了實現對交通標志的精確檢測,采用F1對模型的精確率和召回率進行評估。Fn是對P和R關系的計算,公式為
(6)
式(6)中:n表示R的權重與P的權重之前的比值,F1則表示P和R的權值比值為1∶1,說明了精確率和召回率的重要性相等,計算公式為
(7)
可以看出F1為P和R的調和平均數,數值越大表示模型的性能越好。實驗結果如表1所示,本文模型的F1值為0.988,檢測結果準確。

表1 測試實驗結果Table1 Test results
對輸入的原始圖片在YOLOv5l與改進ViT的檢測識別方法下進行實驗,輸出結果如圖6所示,6張圖代表了在不同光照條件、不同天氣情況、不同尺寸大小下的交通標志檢測識別情況。
圖6(a)為晴天時刻強光照下的結果,限速50的交通標志被成功檢測并標記上02的類別,檢測框中無其他干擾物體,且識別類別正確。
圖6(b)為霧天光照不足時小目標的結果,兩個限速80的交通標志都被成功檢測并分別標記上05的類別,檢測框中無其他干擾物體,且識別類別正確。
圖6(c)為陰天傍晚光照不足時的結果,限速80的交通標志被成功檢測并標記上05的類別,檢測框中無其他干擾物體,且識別類別正確。
圖6(d)為雨天目標不清晰時的結果,限速100的交通標志被成功檢測并標記上07的類別,檢測框中無其他干擾物體,且識別類別正確。
圖6(e)為強光照下過度曝光時小目標的結果,限速50和注意兒童的交通標志都被成功檢測并分別標記上02和28的類別,檢測框中無其他干擾物體,且識別類別正確。
圖6(f)為晴天傍晚逆光情況下小目標的結果,含義為彎曲的交通標志被成功檢測并標記上20的類別,檢測框中無其他干擾物體,且識別類別正確。

圖6 實驗結果圖Fig.6 Pictures of experimental results
以上結果說明本文方法能在不同道路場景下準確地檢測識別出交通標志,實驗結果良好。為了驗證本文方法的性能,在采用同一數據集的基礎上,相比于其他現有方法,本文方法在保持檢測速率的情況下,識別準確率有所提升,對比結果如表2所示。
分析以上結果可知,本文方法聯合TSD與TSR,能夠在不同光照條件下、不同視角、不同天氣情況下對不同尺寸的交通標志進行準確地檢測與識別,在本文實驗環境下,實驗檢測速率為20 ms,準確率為98.78%,實驗結果良好,性能穩定。

表2 實驗對比結果Table 2 Experimental comparison results
采用YOLOv5l和改進ViT的交通標志檢測與識別方法,在交通標志目標小、類別多的道路中,快速準確地檢測識別出交通標志,改善了檢測速率與識別準確度無法同時滿足的缺陷。首先通過YOLOv5l檢測器快速準確地檢測出目標檢測框,然后將檢測框中的目標輸入ViT進行分類識別,在ViT中加入了DenseNet,能夠提高特征的重復利用率,緩解梯度消失,提高識別精確度。最終實驗結果表明,本文的交通標志檢測與識別方法在速率得到保證的情況下,識別準確率有所提高,適用于終端移動設備,具有一定的應用價值與研究意義。