胡昭華,王 瑩
1.南京信息工程大學 電子與信息工程學院,南京 210044
2.南京信息工程大學 江蘇省大氣環境與裝備技術協同創新中心,南京 210044
交通標志檢測的任務是在圖像或視頻中顯示出交通標志的類別及位置。交通標志檢測是智能交通系統中重要組成部分,在無人駕駛、自動駕駛等很多領域均被廣泛應用。因此,交通標志檢測研究有很高的研究意義和應用價值。
交通標志檢測研究可劃分為傳統方法和基于深度學習的方法。其中,傳統的方法利用外觀、顏色特征進行檢測交通標志[1-2],但是特征提取依賴手工,存在很多局限,不滿足交通標志檢測實時性、精確性的要求。2014年,R-CNN首次將卷積網絡用于目標檢測[3],自此以后,基于深度學習方法開始廣泛應用于交通標志檢測。基于深度學習的目標檢測算法主要分為兩個方向:基于一階段檢測與雙階段檢測算法。一階段檢測算法主要有:YOLOv2[4]、YOLOv3[5]、EfficientDet[6]以及SSD[7]等。雙階段檢測算法主要有Fast R-CNN[8]、Faster R-CNN[9]、SPP-Net[10]以及HyperNet[11]網絡等。
Zhu等人[12]創建了新的交通標志檢測基準(Tsinghua-Tencent100K,TT100K)與廣泛使用的檢測基準(german traffic sign detection benchmark,GTSDB)[13]相比,圖像數量更多、分辨率更高、背景更加復雜,很多研究在此基準上進行。由于交通標志目標較小、分辨率低,Li等人[14]介紹了新的感知對抗網絡,利用重復更新的生成器網絡和鑒別器網絡為小對象生成超分辨率表示,將小的交通標志分辨率增加,以提高檢測性能。Liu等人[15]提出對深層特征進行反卷積,并將其與淺層特征連接起來,利用淺層特征解決由于交通標志尺寸小帶來的檢測困難問題。Wan等人[16]在YOLOv3基礎上進行各種優化策略,包括網絡剪枝、四尺度預測分支和損失函數改進,以此來解決小交通標志檢測的帶來挑戰。Tang等人[17]基于交通標志的統計特性,提出了一種新的集成特征金字塔網絡和特征聚合,從而增強網絡對交通標志大小差異的魯棒性。以YOLOv5為基礎,設計了一種記憶性特征融合網絡,輸入采用可見標簽比,利用模塊增強主干網絡的特征提取能力和減少模型采樣損失,做到了準確和實時的交通燈檢測[18]。雖然現有的檢測算法在交通標志檢測方面取得了較好的成績,但是由于交通標志中小目標占比大,且小目標分辨率低,在實際檢測中存在很多困難,比如:檢測精度低、漏檢等問題。針對以上分析,交通標志檢測還待進一步研究。
由于在交通標志檢測中小目標占比大,所以提高小目標檢測精度這一短板,整體檢測精度就能提升。本研究旨在提高交通標志中小目標檢測的精度和召回率,從而提升整體的檢測性能,更好地將交通標志檢測用于實際生活中。本文中算法以YOLOv5[19]框架為基礎進行改進,改進思路如下:
(1)在特征提取主干中引入區域上下文模塊(regional context module,RCM),提高特征融合能力,充分利用周圍環境有效信息,為交通標志的學習起到重要補充作用。一般來說,背景信息和目標信息具有很強的相關性。因此,該步驟有助于檢測小的交通標志對象。
(2)在特征提取主干添加注意力模塊(shuffle attention,SA)[20],與原C3結構結合形成特征增強模塊(feature enhancement module,FEM),重新分配提取特征的權重,增強交通標志小目標的特征表達能力,提高主干的特征提取能力。
(3)在多尺度檢測環節,將深層特征與淺層特征進一步融合,使輸出端在獲得高級語義信息的同時兼顧到淺層的位置信息,有利于小目標的位置信息學習。
YOLOv5屬于一階段檢測算法,一階段檢測算法與雙階段檢測算法相比少了中間負樣本篩選過程,所以YOLOv5具有一階段算法實時性的優點。而且YOLOv5檢測精度在一階段檢測算法中較好,尤其在小目標檢測方面。所以本文選擇YOLOv5算法為基礎進行交通標志檢測。
YOLOv5檢測流程可分為四部分:輸入端、Backbone主干部分、Neck頸部、輸出端。輸入端采用了自適應圖像填充和Mosic數據增強,Mosic數據增強通過將4張圖片隨機裁剪、旋轉、縮放等方式隨機排放組成一張圖像,此數據增強方式可有效提高小目標檢測精度;此外,輸入端還采用了自適應錨框設計,更好地解決了不同數據集中目標大小不同問題,為數據集提供了更合適的預設錨框。主干部分采用了Focus切片操作,進行下采樣,可以減少計算復雜度;C3模塊是一種殘差模塊組成的,有效減少計算量;SPPF結構類似SPP結構,可以實現不同尺度融合,YOLOv5有不同版本,5.0版本采用了SPP結構,但是對于交通標志檢測總體精度較低,SPPF在總體樣本上精度比SPP較高,所以本文在5.0基礎上將SPPF模塊替換了SPP模塊;頸部采用了路徑聚合PAN[21]結構,可以有效實現特征不同尺度的融合。輸出端3個分支,分別用于大、中、小目標檢測輸出。YOLOv5結構如圖1所示。

圖1 YOLOv5結構圖Fig.1 YOLOv5 structure diagram
改進后的YOLOv5算法在原算法的基礎上加以改進,利用區域上下文信息能夠更好地補充交通標志周圍的有效信息,具體做法是在主干中原SPPF位置加以改進,構造成區域上下文模塊RCM;并且為了更好地提取特征的有效信息,本文在主干的最后兩個原C3位置進行構造為特征增強模塊;在多尺度檢測階段,將檢測輸出頭與主干淺層特征進行融合。改進后的YOLOv5算法結構如圖2所示。

圖2 改進后的YOLOv5結構圖Fig.2 Improved YOLOv5 structure diagram
對于目標檢測而言,待檢測目標不可能單獨存在,它一定會和周圍的其他目標或多或少存在某種關系,這就是通常所說的上下文信息[22]。對于交通標志檢測而言,周圍的交通標志桿子等可以作為交通標志的有效周圍信息,因此學習它們之間存在的關系,對交通標志檢測起到非常重要的作用。
YOLOv5更新很快,現在已經有了6.0版本。由于6.0版本省略了Focus切片,影響交通標志檢測的精度,所以本文采用了5.0版本。SPPF結構是6.0提出的,在總體樣本精度上比SPP模塊高,所以將SPPF模塊替換了SPP模塊。SPPF模塊如圖3所示,采用了5×5 maxpooling最大池化,最大池化雖然會擴大感受野,但是會降低特征圖的分辨率,不利于網絡學習。空洞卷積(dalited convolution)具有可以學習上下文信息、擴大感受野且不降低特征分辨率等優點,所以本文將不同擴張率的空洞卷積代替了最大池化。

圖3 SPPF模塊Fig.3 SPPF module
受RFB模塊影響[23],優化后的SPPF模塊包含四路分支,本文稱之為區域上下文模塊RCM。區域上下文模塊RCM如圖4所示,一共四路分支可分為兩類,分別用于提取較遠處上下文信息和相鄰上下文信息。其中,較遠處上下文信息首先通過空洞卷積擴大感受野獲得,緊接著通過1×1卷積將信息細節處理;相鄰區域信息先通過1×1卷積獲得,緊接著經過空洞卷積將信息局部擴大處理。這兩類上下文信息中空洞卷積擴張率(dilation rate,d)選擇相同,都采用了擴張率d=3與d=4,從而可以獲得多個感受野信息,最后將較遠處區域信息與相鄰區域信息進行融合,構成了區域上下文信息模塊RCM。此模塊可以學習到交通標志目標周圍區域的相關聯信息,從而起到重要的補充作用。

圖4 區域上下文RCM模塊Fig.4 Regional context RCM module
注意力機制能夠使網絡更加關注重要的目標信息,抑制無關的背景影響,在神經網絡學習中是一個重要的提升學習性能的組成部分。特征提取的關鍵環節在于網絡的Backbone主干部分,所以本文將注意力模塊SA加入了網絡的主干。
在神經網絡學習中,注意力機制主要有兩種:通道注意和空間注意。(convolutional block attention module,CBAM)[24]將通道與空間注意結合在一起,獲得較好的性能,但是計算量大且收斂困難。SA注意力模塊采用洗牌單元同時將注意通道與空間通道進行結合,如圖5所示,首先將輸入大小為H×W×C的特征圖X沿通道尺寸進行劃分為g組,這里g取64,得到矩陣[X1,X2,…,Xg],然后對每個特征圖Xk(Xk大小為H×W×C/g),再沿通道劃分為Xk1、Xk2(Xk1、Xk2大小都為H×W×C/2g),Xk1、Xk2分別進行通道注意channel atention與空間注意spatial atention處理。其中,通道注意是先進行全局平均池化(global averaging pooling,GAP),具體表達式如下:

圖5 SA注意力模塊Fig.5 SA attention module

然后進行Scale操作,具體使用參數縮放W1和移動通道向量b1,最后進行激活函數σ處理:

空間注意力操作最先不是進行的全局平均池化,而是群范數(group norm,GN),然后和通道注意執行相同操作,具體表達式如下:

這里σ是激活函數,W2是參數縮放和b2是移動通道向量,GN是群范數,W1、b1、W2、b2是超參,超參數較少,因此SA模塊屬于輕量級。將通道注意與空間注意進行融合,這樣每個劃分后的特征圖上同時擁有兩個方向注意機制,最后將劃分后的特征圖進行“洗牌”操作以實現跨組信息沿通道維度流動。
C3模塊是由兩個嵌套的殘差模塊組成的,本文將SA模塊嵌入到C3模塊第二個殘差塊中,形成特征增強模塊如圖6所示。由于提取特征的關鍵在于主干部分,所以將特征增強模塊放在主干比較合適,而且在主干提取特征網絡較淺處放入注意力模塊可能會使交通標志檢測性能降低。所以本文只將FEM模塊用在了主干C3中的倒數1、2位置,即下文中所說主干C3的a、b位置。

圖6 特征增強模塊FEMFig.6 Feature enhancement module FEM
在YOLOv5s中有3個輸出檢測頭,當輸入圖片為640×640大小時,輸出端輸出的特征圖分別為80×80、40×40、20×20大小,它們分別負責預測小目標、中等目標以及大目標。由于交通標志的目標大多是小目標,這些小目標在40×40、20×20大小的特征圖中像素僅有幾個像素,丟失大量位置信息,因此小目標在中等、大目標檢測層的效果不好,所以改善這兩個輸出檢測層部分很關鍵。
從YOLOv5結構圖中可以看出,檢測頭位于整個結構的最后,處于較深的神經網絡層中,所以它提取到的語義信息比較完善,與此同時,在特征層不斷加深過程中較淺的位置信息會丟失,因此為輸出層增加位置信息尤為重要。鑒于此,從淺層信息出發,獲得充足的位置信息,所以考慮到將淺層的特征層與輸出檢測層進行融合。主干特征層位于網絡的最前端,屬于淺層特征層,它的輸出特征圖是逐漸遞減的,遞減的過程中有的特征圖的大小恰好與檢測層的輸出大小相同,所以本文將主干特征層中輸出大小為40×40、20×20的特征層分別與中等、大目標檢測層進行融合,可以獲得小目標的邊界信息。改進后的網絡稱為M-YOLOv5,具體結構如圖7所示。

圖7 M-YOLOv5網絡Fig.7 M-YOLOv5 network
實驗環境為Windows10操作系統,計算機內存為64 GB,處理器型為i9-11900K,顯卡是RTX 3080Ti,顯存為12 GB,采用的深度學習框架為pytorch1.8,編程語言python3.8。
3.1.1 TT100K數據集
數據集TT100K是由清華和騰訊共同制作完成的。此數據集一共提供了100 000個圖像,包含30 000個交通標志實例。圖像涵蓋了光照變化和天氣條件變化,與其他交通標志數據集相比,種類更多、目標更小、檢測難度更大。本文從中選取了45類,共9 170張圖片,分為7 335張訓練集和1 835張測試集。
3.1.2 CCTSDB數據集
另一個交通標志檢測數據集是(CSUST Chinese traffic sign detection benchmark,CCTSDB)[25]。它一共包含15 724張訓練集和400張測試集,共有3大類:警告、指示、禁止。本文將15 724張進行訓練,400張進行測試,輸入大小為640×640。
在訓練之前,使用YOLOv5自帶的自動錨框適應對先驗框尺寸進行調整,訓練集與測試集9∶1劃分,在COCO[26]數據集上預先訓練得到的權重進行初始化。優化函數采用了SGD,訓練批次大小為16,總共訓練了120次,初始學習率大小設為0.01,動量為0.937,IOU閾值為0.5。
實驗評價指標采用總體樣本平均精確度mAP,小目標平均精度APs、小目標平均召回率ARs。小目標指的是面積小于32×32像素的目標。
精確度(precision,P)是指預測正確的正樣本的數量占所有預測為正樣本數量的百分比。召回率(recall,R)是指預測正確為正樣本的數量占實際為正樣本數量的百分比。AP是P-R(precision-recall)曲線下的面積。mAP是所有類別的AP平均值。具體計算公式如下:

這里的TP、TN、FP、FN分別是預測為正樣本實際是正樣本、預測為負樣本實際是負樣本、預測為正樣本實際是負樣本、預測為負樣本實際是正樣本。m是樣本類別數量,本文m取45和3。
模型復雜度采用參數量(parameters,Params),具體計算公式如下:

這里的Co表示輸出通道數,Ci表示輸入通道數,kw、kh分別表示卷積核寬、高。
檢測速度指標采用FPS,代表每秒處理的幀數,單位是frame/s。
本文共設計了兩組實驗,分別是不同改進部分的消融實驗和與其他主流算法對比實驗。
3.3.1 消融實驗
為了驗證本文所提出的改進對交通標志檢測的性能是否有效,設計了一組消融實驗,對比分析了:(1)原YOLOv5模型;(2)在YOLOv5基礎上使用上下文模塊YOLOv5+RCM;(3)在YOLOV5基礎上使用特征增強模塊YOLOv5+FEM;(4)在YOLOv5基礎上加上改進多尺度檢測部分YOLOv5+M;(5)同時添加區域上下文模塊、特征增強模塊YOLOv5+RCM+FEM;(6)同時添加區域上下文模塊、特征增強模塊和改進多尺度檢測部分YOLOv5+RCM+FEM+M。在相同的實驗條件下,在數據集TT100K上進行實驗,輸入大小為960×960,這里以及本文所有的YOLOv5是指YOLOv5s模型。具體實驗性能見表1。

表1 消融實驗Table 1 Ablation experiments
從表1可以看出,僅添加上下文模塊,在小目標精度上增加了1.5個百分點,在小目標召回率上提升了1.9個百分點;僅添加特征增強模塊,在小目標精度上提升了0.6個百分點,在小目標召回率上提升了1.2個百分點;僅添加改進的多尺度檢測部分,在小目標精度上增加了2.2個百分點,在小目標召回率上提升了2.3個百分點。三者單獨的效果不是很明顯,但是將三者都添加到原算法,在小目標精度、召回率上分別提升3.5、4.1個百分點,提升效果較為明顯。總體樣本的平均精度略有提升,提高了大約2.6個百分點。參數量的增加主要來源于上下文模塊,增加了約1.4×106。最終的FPS也會隨著參數的增加而降低,由原來125 frame/s降為83.3 frame/s。
為了驗證注意力機制SA的有效性,本文還與其他注意力機制(squeeze-and-excitation,SE)[27]、CBAM、(coordinate attention,CA)[28]注意力機制進行橫向比較。從表2可以看出,與這些注意力機制相比,本文所用注意力機制SA在小目標精度上和CBAM相同,但是在小目標召回率、總體目標精度上是最高的,參數量最少,屬于輕量化模型,速度高于其他注意力機制,所以本文采用SA注意力機制組成本文的FEM模塊。

表2 添加不同注意力對比實驗Table 2 Comparison experiments of adding different attentions
為了驗證添加區域上下文模塊對于周圍特征提取是否有效,特征增強模塊對特征提取是否有增強效果,本文使用特征圖可視化中間結果進行對比,如圖8所示,其中圖(a)為交通標志原圖,圖(b)為原SPPF模塊輸出的特征圖,圖(c)為添加RCM后輸出的特征圖,圖(d)為原C3模塊輸出的特征圖,圖(e)為添加RCM、FEM模塊后特征圖,這里C3位于主干中最后,即C3下面所說的a位置。

圖8 交通標志原圖與中間特征圖Fig.8 Original and intermediate feature diagrams of traffic signs
經過特征圖可視化對比,可以看出加入上下文模塊后感受野增大,特征圖顯示了目標周圍的信息,說明上下文確實起到補充有效信息的作用。加入特征增強模塊后,交通標志的特征相比于原來更加清晰,說明特征增強模塊對于特征的學習是有效的。
本文實驗對比了RCM中空洞卷積的選取對交通標志檢測性能的影響,從表3可以看出,空洞卷積取值3、4時小目標交通標志檢測性能最優,當空洞卷積取值3個不同值時,這樣會增加計算量,性能還不如3、4時好,所以本文最終將空洞卷積的擴張率分別選取為3和4。

表3 RCM、FEM部分對比實驗Table 3 RCM and FEM partial contrast experiments單位:%
確定了RCM的最優后,以RCM擴張率3、4為基礎,本文就FEM在主干的位置進行了實驗對比,其中主干中有4個C3,從下到上分別記C3的位置為a、b、c、d,其中由于在位置d處加入SA注意力模塊,通道數不兼容,所以無法構成本文的特征增強模塊。一共進行了3組實驗對比,分別是YOLOv5+FEM(a)、YOLOv5+FEM(a+b)、YOLOv5+FEM(a+b+c)。FEM依次累計加入主干,這3組分別代表a處加入FEM、a、b處加入FEM、a、b、c處加入FEM。具體性能見表3,可以看出在a處性能較好,然后加入b處,性能最優,最后添加c處性能會下降,由此可見并不是加入越多越好,在較淺處進行特征增強,會降低檢測效果。
3.3.2 與主流算法對比實驗
為了驗證本文改進算法檢測性能,將本文改進的算法與主流算法YOLOv3、YOLOv4[29]、SSD、Faster R-CNN、Faster RCNN+EFPN[30]、文獻[12]算法、文獻[31]算法、文獻[32]算法、文獻[33]算法進行比較,其中后面的算法是最近的交通標志算法在TT100K數據集上的實驗。Faster RCNN+EFPN是2021年提出的較新算法在TT100K上進行的實驗。這里的Faster R-CNN主干是ResNet-101,SSD主干是ResNet-50;輸入大小是寬高相同的。對比結果見表4。
從表4可以看出,檢測精度與輸入尺寸成正相關,尺寸越大,效果越好,但是FPS是負相關的。從表中可以看出,參數量與檢測速度成反比。在這些算法中,YOLOv5參數量最少,僅7.2×106,速度最快。在尺寸為640時,FPS達到了130 frame/s,改進后的算法在增加了約1.7×106的參數后,速度會降為83.3 frame/s,但是在這些算法中速度也是比較優越的,可以達到實時性檢測。在分析精度,輸入尺寸都是640時,YOLOv5無論在精度上優于YOLOv3、YOLOv4,SSD雖然尺寸300,但是精度不及YOLOv3的一半,所以SSD效果不太好。Faster RCNN在輸入尺寸為1 400時性能較好,但是在精度上不及輸入尺寸為960的YOLOv5。在這些先進算法中,Faster RCNN+EFPN,它的輸入尺寸比本文的要大,由于實驗條件有限,本文采用的輸入尺寸是960×960,改進后的YOLOv5也是優于Faster RCNN+EFPN的,在小目標平均精度、平均召回率上分別提高大約5.5、1.9個百分點。在總體目標上平均精度也是優于文獻[33],大約提高了5.2個百分點。綜上所述,本文改進后的算法在交通標志檢測數據集TT100K上,不論精度還是速度都存在一定優越性。

表4 與先進算法對比Table 4 Contrast with advanced algorithms
為了進一步驗證本文改進的YOLOv5檢測算法對其他交通標志的魯棒性,在數據集CCTSDB進一步實施相關實驗,由于CCTSDB與TT100K相比,其中的交通標志大多是大目標或中目標類型,小目標類型的交通標志只占極小部分,所以對它的精度評價指標只用了mAP。具體實驗結果見表5。
從表5可以看出,本文算法與原YOLOv5算法相比,精度大約提升了2.0個百分點,增加了大約1.7×106參數,速度略微降低。與CCTSDB數據集上主流算法T-YOLO[34]、改進的YOLOv3-tiny[35]、文獻[36]進行對比,本文算法在精度上也是略高0.3個百分點,在速度上也可以達到實時性檢測。表明本文所改進的算法在其他交通標志數據集上具有魯棒性。

表5 CCTSDB與先進算法對比Table 5 CCTSDB contrast with advanced algorithms
本節抽取部分TT100K數據集進行識別效果對比如圖9所示,對比了兩組改進前后檢測結果,從圖9(a)、(b)對比可以看出,在i5檢測目標上檢測精度分別是83%、90%,精度提升了大約7個百分點,在ph4.5上檢測精度分別是88%、89%,精度也高于原YOLOv5;在圖9(c)、(d)可以看出,在i5上原算法和本文算法精度分別是87%、91%,在pl40上精度分別是85%、86%,分別提升了4.0個百分點和1.0個百分點。綜上所述,說明本文算法對于交通標志檢測是有效的。

圖9 部分檢測效果對比圖Fig.9 Comparison diagrams of part detection effects
CCTSDB數據集檢測選取了比較特殊的幾類圖片,分別是夜晚大雨、大雪、大霧條件下交通標志檢測。檢測效果如圖10所示。從檢測圖中可以看出,與原算法對比,在夜晚大雨條件下,如圖10(a)所示原算法未檢測出待檢測的目標,改進的算法在圖10(b)可以檢測出原算法漏檢的目標,提高了漏檢率;大霧條件下,改進的算法在圖10(f)中的禁止駛入這一檢測目標精度為83%,原算法為圖10(e)的77%,大約提升了6個百分點,且較遠處目標在原算法上存在漏檢,改進的算法可以檢測出。在特殊復雜環境下檢測仍可以保持較好精度,說明本文改進的算法具有一定魯棒性。

圖10 特殊環境檢測效果對比圖Fig.10 Comparison diagrams of special environmental detection effects
針對交通標志檢測中小目標占的比例較多,本文在YOLOv5上進行三方面改進:利用區域上下文信息補充特征信息、利用特征增強模塊強化特征信息、利用改進的多尺度檢測部分融合淺層的位置信息。優化后的算法在精度上改善了交通標志檢測效果,通過實驗定量分析、交通標志檢測定量分析證明本文改善的算法在檢測精度上有一定提升,在速度上可以達到實時性檢測。下一步研究可以圍繞將算法優化應用于工程中交通標志檢測。