張新宇,丁勝*,楊治佩
(1.武漢科技大學計算機科學與技術學院,武漢 430065;2.智能信息處理與實時工業系統湖北省重點實驗室(武漢科技大學),武漢 430065)
交通標志作為當前道路交通安全的重要標志之一,對駕駛員起著警示、限制和指示的作用。實時準確地對交通標志進行檢測的技術作為當前高級駕駛輔助系統(Advanced Driving Assistance System,ADAS)[1]的重要組成部分,在一定程度上能減少或避免由于駕駛員一時疏忽沒有注意到道路交通標識而發生危險的情況,很大程度上保障了駕駛員的行車安全。
當前針對交通標志檢測識別的主要研究方法[2]是通過把攝像頭安裝在車輛上對自然環境道路進行拍攝以獲取自然場景圖像,然后通過圖像處理等技術對圖像中的交通標志進行檢測和識別。交通標志在場景中通常存在分辨率過低、破損、光照、被其他目標覆蓋、易受環境因素等影響的問題[3-4],從而比一般目標更難檢測,而在現實應用中,又要求其保證較高的精確度與實時性。傳統的目標檢測算法[5]如:Haar 特征+AdaBoost 算法、方向梯度直方圖(Histogram of Oriented Gradient,HOG)[6]特征+支持向量機(Support Vector Machine,SVM)[7]算法、Deformable Part Model 算法等由于手工設計的特征導致算法存在魯棒性較差,對滑動窗口的選擇沒有針對性、冗余度高、時間復雜度高等缺點,在精度和實時性上難以滿足高級駕駛輔助系統的需要。而卷積神經網絡(Convolutional Neural Network,CNN)依靠其強大的特征提取和語義表達能力,在交通標志目標檢測領域被廣泛應用。
當前基于CNN 的目標檢測算法分為one-stage 算法和two-stage算法。以 Faster R-CNN(Faster Region-based Convolutional Neural Network)[8]為代表的two-stage 算法采用區域候選網絡(Region Proposal Network,RPN)代替傳統的選擇性搜索(Selective Search)提取候選框,再利用候選框區域的卷積特征進行分類和目標框的定位學習,存在著精度高、速度慢的特點;以YOLO(You Only Look Once)系列[9]、SSD(Single Shot MultiBox Detector)[10]等one-stage 的目標檢測算法通過輸入圖片直接產生物體的類別概率和空間位置信息,經過單次檢測直接得出檢測結果,具有檢測速度快但精度低的特點。鮑敬源等[11]在Tiny-YOLOv3 網絡的基礎上引入FireModule 層進行模型壓縮,在減小模型參數的同時引入short-cut 增強網絡的特征提取能力,最后在中國交通標志檢測數據集CCTSDB(CSUST Chinese Traffic Sign Detection Benchmark)數據集上獲得85.56%的平均精確率均值(mean Average Precision,mAP),相較于Tiny-YOLOv3 的準確率提升了3 個百分點,同時大幅提升了模型的檢測速度。江金洪等[12]在YOLOv3 算法中將深度可分離卷積應用到特征提取層,將卷積過程分為深度卷積和逐點卷積兩部分,保證網絡在較高識別率的同時減少模型的參數量,并在損失函數中添加Focal Loss 解決正負樣本不均衡的問題,得到了在精度與YOLOv3 相差不大的基礎上檢測速度極大提升的交通標志目標檢測器。
雖然當前主流的目標檢測算法在常規的交通標志目標檢測任務中已經取得了初步的成果,但是在一些自然復雜環境仍存在檢測精度低的問題。交通標志檢測屬于小目標檢測,存在特征圖攜帶的語義信息有限,缺乏紋理、形狀、顏色等外觀信息,經過卷積神經網絡多次下采樣后,目標區域的分辨率進一步降低,特征信息逐漸減少,導致深層網絡對小目標的表達能力較弱,檢測難度加大。因此,本文在YOLOv4 的基礎上,首先對跨階段殘差網絡CSPDarknet53(Cross Stage Partial Darknet 53)特征提取網絡添加通道注意力模塊;同時,為了突出不同通道間特征的相關性,使用一維卷積代替注意力模塊中的全連接層聚合不同通道間信息并降低模型額外的參數量,使網絡能自主學習特征圖通道的權重關系,突出交通標志區域的有用信息,抑制背景等無關信息;其次,在路徑聚合網絡(Path Aggregation Network,PANet)[13]的中、小尺度特征層后添加感受野模塊增大淺層網絡的感受野并融合目標區域的上下文信息;最后,用kmeans++聚類算法生成的Anchor 先驗框對交通標志進行檢測。實驗結果表明,本文所設計的交通標志目標檢測算法能在與YOLOv4 算法保持相差不大的速度下達到較高的檢測精度。
YOLOv4 基于一個單獨的end-to-end 網絡,將目標檢測問題作為回歸問題求解,具有較快的檢測速度,是當前目標檢測領域常用的檢測算法之一。
YOLOv4 在YOLOv3 的基礎上對主干特征提取網絡、特征金字塔、數據增強等方向進行了優化改進,主干特征提取網絡采用CSPDarknet53 代替原來的Darknet53 進行特征提取,在特征金字塔部分采用空間金字塔池化網絡(Spatial Pyramid Pooling,SPP)[14]和PANet 結構,SPP 包含1×1、5×5、9×9、13×13 四種不同尺度的池化層,可有效地增大感受域,分離出最顯著的上下文信息,且網絡推理速度沒有明顯下降,在特征融合模塊,YOLOv4 借鑒路徑聚合網絡PANet 的思想,通過特征金字塔網絡(Feature Pyramid Network,FPN)將高層語義特征傳到低層網絡,融合不同層的特征,在FPN 后添加自底向上的路徑增強,可避免信息丟失,經過特征圖拼接后獲得的信息既有底層特征也有語義特征。YOLOv4 整體檢測過程和YOLOv3 相差不大,采用8 倍、16 倍、32 倍下采樣生成的三個特征層進行多尺度預測。對于608×608 的輸入圖像,將下采樣生成19×19、38×38、76×76 的特征圖經過PANet 特征融合后采用3×3 和1×1 兩層卷積操作并經過非極大抑制(Non Maximum Suppression,NMS)非極大值處理后獲得最終的預測框,其中19×19 特征圖用于檢測大目標,38×38特征圖用于檢測中等目標,76×76 特征圖用于檢測小目標。
在當前深度學習目標檢測領域中,尤其是無人駕駛車載監控的交通標志目標檢測中,交通標志通常存在分辨率較低、尺寸小、易受天氣環境影響導致圖像模糊、目標遮擋等問題,是當前無人駕駛領域的難點之一。基于注意力機制的目標檢測網絡[15]可通過增強圖像有效信息、抑制背景等無關信息強化圖像特征,而感受野模塊在增大網絡寬度和深度的同時,不僅可以增大淺層網絡的感受野,還能融合目標區域的上下文信息提升對小目標的檢測效果。改進后的YOLOv4網絡結構如圖1 所示。

圖1 改進的YOLOv4網絡結構Fig.1 Improved YOLOv4 network structure
YOLOv4 在CSPDarknet53 特征提取網絡中采用卷積核大小為3×3 步長為2 的方式進行下采樣,這種方法雖然可以使網絡的感受野增大但同時也容易造成小目標區域信息丟失[16],而且交通標志容易受天氣環境、破損等影響造成圖像分辨率低、模糊從而導致網絡提取圖像信息有限。
為了進一步提升算法對交通標志的特征表達能力,本文引入了注意力模塊。在YOLOv4 的特征融合網絡PANet 部分或Head 部分,經過深層網絡的下采樣和特征融合后的特征圖具有更豐富的語義信息和更大的感受野,如果將注意力模塊添加在PANet 或Head 部分,注意力模塊很難從經過特征融合后的特征圖中區分出重要通道和冗余通道,甚至引起網絡對目標區域特征學習能力的偏差,從而造成網絡對交通標志的檢測精度下降;而對于CSPDarknet53 特征提取網絡部分,由于淺層網絡的特征圖的語義特征并不豐富,而且特征圖在下采樣過程中依然保留目標在特征圖上的中、淺層輪廓信息和紋理信息,這些信息對于交通標志的檢測尤為重要。因此,本文在CSPDarknet53 的CSPnet 模塊的每個殘差單元中,首先將特征圖經過注意力模塊提取出交通標志區域的關鍵特征;然后通過殘差操作進一步提取特征;最后將提取的特征與原輸入的特征進行addition 操作作為殘差模塊的特征輸出,改進前后的殘差模塊如圖2 所示。

圖2 改進前后殘差模塊Fig.2 Residual modules before and after improvement
圖3 是特征圖經過特征提取網絡每層CSPnet 后輸出的特征圖,可以看出特征圖經過每次下采樣后,隨著網絡層數的加深,目標區域的局部特征信息逐漸丟失,而在加入注意力模塊后,目標區域的信息相較于原網絡特征有所增強,更加突出了目標區域的特征,弱化了背景等非重要特征。

圖3 添加注意力模塊前后的特征圖Fig.3 Feature maps before and after adding attention module
通道注意力模塊在卷積神經網絡架構中具有比較明顯的性能提升,但通常在網絡模型中增加注意力模塊會不可避免地增加網絡計算量,而計算量的明顯增加是在注意力模塊的全連接層降維部分。通常注意力模塊在計算特征圖的通道權重時,會使用全連接(Fully Connected,FC)層對特征進行映射來捕獲非線性的跨通道交互作用,但FC 層的參數量與輸入的特征圖通道數的平方成正相關[17],導致在特征提取網絡中大量添加通道注意力模塊會增加模型的復雜度和計算量,降低模型檢測速度。雖然在FC 層中會對通道壓縮r倍進行降維避免過高的模型復雜度,但是在通道降維的同時會影響通道間的關注度即通道權重大小的預測。由于FC 層本質是把二維卷積的特征圖映射到一維的向量,一維卷積替代FC 層也可以把二維卷積的特征圖卷積為一維向量,且不會增加太多計算量,也不需要固定的輸入,最重要的是可以聚合特征圖相鄰通道間的不同信息。因此,本文在FcaNet(Frequency channel attention Network)[18]通道注意力模塊的基礎上設計了一個輕量級的通道注意力模塊FcaNet-E。改進前后的注意力模塊如圖4~5 所示。

圖4 FcaNet通道注意力模塊Fig.4 FcaNet channel attention module

圖5 FcaNet-E通道注意力模塊Fig.5 FcaNet-E channel attention module
通常特征圖相鄰通道間的局部特征由于感受野重疊存在一定的相關性,若某一通道與其鄰近通道特征的相關性高,則表明該通道具有更多的主體特征。因此,為了突出相鄰通道間特征的相關性,FcaNet-E 使用了一個大小為k的一維卷積代替原有注意力模塊中的FC 層以聚合相鄰k個通道間的信息[19],由于卷積核的卷積操作具有參數共享的性質,引入一維卷積后可以使注意力模塊的參數量減小到常數級別,其中k的大小由輸入特征圖的通道數C自適應確定,如式(1)所示:

其中:[u,v]表示2 維DCT 的分量下標。
特征圖經過2 維DCT 分量處理后,通過維度拼接得到多譜向量,然后向量經過卷積核大小為k的一維卷積學習每個通道的重要程度,最終經過Sigmoid 激活函數后得到的通道權重大小與最初輸入的特征圖F逐通道相乘得到最終的輸出特征圖,如式(3)所示:

圖6 為通道注意力模塊的網絡結構,對經過卷積后的輸入特征F經過二維離散余弦變換(2D-DCT)后得到1 × 1 ×的特征向量,然后把n個特征向量通道拼接,再經過大小為k的一維卷積,并使用Sigmoid 激活函數計算每個通道的重要程度,最終得到通道注意力特征。

圖6 FcaNet-E通道注意力模塊網絡結構Fig.6 FcaNet-E channel attention module network structure
CSPDarknet53 的CSPnet 模塊在添加了FcaNet-E 后的網絡結構如圖7 所示。

圖7 添加FcaNet-E后的CSPnet模塊Fig.7 CSPnet module after adding FcaNet-E
YOLOv4 同YOLOv3 一樣,為了提高對小目標的檢測精度,在Neck 部分采用特征融合網絡在多個scale 的特征圖上進行多尺度檢測,然而通常交通標志所在的目標區域占整幅圖像的比例不到5%[20],交通標志數據集的圖片分辨率大多數為1 024×768,導致交通標志所在的區域分辨率小于60×60,特征圖雖然經過特征融合后,淺層網絡融合了深層網絡的特征信息,但是淺層網絡特征圖的感受野較小,相較于深層網絡特征圖仍缺乏目標區域的上下文信息[21]。因此,針對這個問題本文在中小尺度預測層前設計了一個共享卷積感受野模塊(Shared Convolution Receptive Field Block,SCRFB)。
SCRFB 利用卷積共享性質將多個不同尺寸的共享卷積核生成多個分支結構,不僅增加了網絡的寬度,而且豐富了每層特征圖的信息,通過在分支上添加空洞卷積增加感受野,最后融合不同分支感受野的特征圖融合目標區域的上下文信息。
SCRFB 借鑒了感受野模塊(Receptive Field Block,RFB)[22]和inception[23]的思想,首先特征圖通過1×1 卷積調整通道;其次分別通過1×1、3×3、5×5 卷積構成三個不同特征感受野分支;然后在每個分支后分別添加空洞率為1、2、3 的空洞卷積來增加感受野;最后將三個分支與原輸入特征圖拼接融合不同特征。SCRFB 使用兩個3×3 卷積替代5×5 卷積以減少參數量,同時利用共享卷積的性質,將模塊中的多個3×3 卷積作為共享卷積,這就可以在網絡引入目標區域上下文信息的同時,不僅可以改善多次卷積導致特征圖分辨率較低的問題,還可以簡化感受野模塊網絡結構,最后通過Shortcut 操作與原特征圖相乘得到輸出特征圖。SCRFB 的結構如圖8 所示。

圖8 SCRFB結構Fig.8 SCRFB structure
采用中國交通標志檢測數據集(CCTSDB),該數據集包含復雜的背景信息、不同的光照變化以及拍攝角度,同時也包含因天氣影響變化和背景遮擋造成圖像模糊的情況。在實驗中所用的CCTSDB 數據集分為三類:指示標志(mandatory)、警告標志(warning)和禁止標志(prohibitory),總共包含13 828 張圖像,其中訓練集11 062 張,測試集2 766張,數據集具體信息如圖9 所示。

圖9 CCTSDB數據集分類Fig.9 CCTSDB dataset classification
在網絡訓練過程中,目標區域的邊界框位置信息會根據模型的反向傳播不斷調整,而YOLOv4 引入了Anchor 的思想以提高網絡的訓練速度和模型檢測性能,在初始的YOLOv4算法中Anchor 參數的設置是根據COCO(Common Objects in Context)數據集聚類得到的,而COCO 數據集由于其類別較多,目標尺寸不一,不適合作為CCTSDB 數據集的先驗框,同時由于k-means 算法聚類的結果受到初始點的選取的影響,本文使用k-means++算法代替原來的k-means 算法生成先驗框以降低原始算法聚類造成的偏差。k-means++算法生成的Anchor 如表1 所示。

表1 k-means++算法生成的AnchorTab.1 Anchors generated by k-means++algorithm
本文實驗是在Ubuntu16.04 系統下進行訓練,采用PyTorch 深度學習框架,編程語言為Python3.7,CUDA(Compute Unified Device Architecture)和Cudnn 版本分別為10.0 和7.5.0,顯卡為NVIDIA GeForce GTX1080Ti,顯存11 GB,CPU 為i5-1135G7 的四核處理器。設置輸入圖像大小為608×608,初始學習率為0.000 1,batch size 大小為16,優化器選擇Adam,epoch 設為100,在訓練過程中使用余弦退火(Cosine Annealing)方法衰減學習率。訓練的loss 如圖10 所示,當訓練輪次到達72 時,改進模型前后的loss 分別保持在2.6 和1.7 附近,訓練收斂。

圖10 改進模型前后的訓練損失函數曲線Fig.10 Training loss function curves before and after improving the model
本文采用固定的交并比(Intersection-over-Union,IoU)閾值和mAP 的指標對模型進行評估。平均精確率均值(mean Accuracy Precision,mAP)是通過計算不同類別的平均精度(Average Precision,AP)然后對所有類別的AP 求和取平均值得到。
AP 為P-R 曲線下所包圍的面積,AP 和mAP 的計算公式如式(4)所示:

其中:P為準確率,R為召回率。在計算mAP 時,為了更好地測量模型對目標區域的定位精度,判斷檢測目標區域的預測框是否精確,使用IoU 來作為衡量預測框與真實框(Ground Truth)的誤差標準。當預測框與真實框的IoU 大于提前設置好的IoU 閾值時,則判定目標區域被正確檢測,否則被判定為誤檢。因此,在計算本數據集的mAP 時,設置IoU 閾值為0.5。圖11 表示訓練后每一分類的P-R 曲線圖。

圖11 CCTSDB數據集每一類的P-R曲線Fig.11 P-R curve of each category of CCTSDB dataset
在原YOLOv4 的網絡基礎上,僅僅在CSPDarknet53 結構中添加通道注意力模塊后檢測效果明顯優于原YOLOv4 算法,mAP 提升了0.75%;通過對通道注意力模塊改進,用一維卷積代替其中的全連接層后,模型的額外參數量和計算量大幅下降且mAP 較原算法提升了0.85%,對比結果如表2 所示。

表2 引入通道注意力模塊前后YOLOv4算法對比Tab.2 Comparison of YOLOv4 algorithms before and after introducing channel attention module
從表2 可以看出,改進前的通道注意力模塊的額外計算量是改進后額外參數計算量的3 000 倍,在計算量和參數量大幅減少的情況下檢測效果反而比改進前的效果好,主要是因為在全連接層進行通道壓縮的過程中會丟失部分特征圖的語義信息,而一維卷積在沒有進行通道壓縮的情況下效果反而更好。
通常通道注意力機制只考慮對特征圖通道間的信息進行編碼,忽略了對特征圖中位置信息的捕獲,為了更好地驗證本文改進的通道注意力機制對網絡模型有更好的效果,將主干網絡中改進的通道注意力模型替換為CBAM(Convolutional Block Attention Module)重新實驗,CBAM 包含通道注意力模塊和空間注意力模塊,同時將CBAM 中的通道注意力模塊用本文方法進行改進實驗,對比結果如表3 所示。從表3 可以看出,雖然使用CBAM,mAP 提升到了96.55%,比FcaNet-E 的mAP 高0.27 個百分點,但是額外計算量卻是FcaNet-E 的1 223 倍,檢測速度大幅下降;改進后的CBAM 雖然額外計算量大幅下降,但是mAP 卻比CBAM 低3.36 個百分點,主要是CBAM 是通過減少通道數并使用大尺寸的卷積來利用位置信息,當用改進后的CBAM 嵌入到原網絡中時,由于輸入特征圖的通道數減少,一維卷積代替原注意力模塊中的FC 層聚合k個相鄰通道間的信息減少,導致檢測精度的下降;而FcaNet-E 在引進極低參數量和計算量的同時,提升了目標檢測精度,雖然比CBAM 的mAP 低0.27 個百分點,但檢測速度達到40 frame/s,完全符合實時性的要求。

表3 FcaNet-E與CBAM注意力機制模塊對比Tab.3 Comparison of FcaNet-E and CBAM attention mechanism modules
同時,本文選取了Faster R-CNN、YOLOv3、YOLOv4、YOLOv5s 等幾個當前流行的交通標志目標檢測算法與改進后的YOLOv4 算法在CCTSDB 數據集上進行實驗,對比結果如表4 所示。

表4 CCTSDB數據集上不同算法對比結果(IoU=0.5)Tab.4 Comparison results of different algorithms on CCTSDB dataset(IoU=0.5)
從表4 可以看出,Faster R-CNN 和YOLOv3 算法對禁止標識的AP 較高,在指示和警告標識的AP 較低,這主要是因為CCTSDB 數據集中禁止標識的實例數大于指示和警告標識的實例數,尤其是禁止標識中的限速標志牌,是因為數據集的類別實例數不均衡導致禁止標識的AP 高于指示和警告標識的AP;而YOLOv4 算法使用的Mosaic 數據增強算法將4張訓練圖片按一定比例組合成一張,然后將新的圖片傳入卷積神經網絡中訓練,極大豐富了檢測物體的背景,同時也降低了因數據集類別不均衡對檢測效果的影響。實驗為了使三種標識數量盡可能均衡,在CCTSDB 數據集挑選不同的場景和一些相似度較低的圖像隨機翻轉并添加噪聲(加霧和添加污點)的方式對數據集進行擴增。
當本文算法在速度與YOLOv4 相差不大的情況下,檢測精度超越其他四種對比算法達到最優,在YOLOv4 的基礎上mAP 提升了1.48%,Faster R-CNN 檢測精度比YOLOv3 算法高1.28 個百分點,但是檢測速度卻遠遠達不到實時性的要求;YOLOv5s 檢測速度達到了實時性的要求,甚至在當前算法中檢測速度達到最優,但是mAP 卻不高,本文算法的mAP比YOLOv5s 高3.40 個百分點。由圖12 可以看出,改進后算法相較于原YOLOv4 算法在檢測小目標精度方面明顯提升,甚至會檢測到YOLOv4 漏檢的目標。

圖12 改進的YOLOv4與其他算法的檢測效果Fig.12 Detection results of improved YOLOv4 and other algotithms
為了驗證對一些分辨率較低和破損的交通標志的檢測效果,實驗利用數據增強的方法對一些圖片添加噪聲即用加霧和添加污點的方式對圖像進行改變,最后用訓練好的檢測器進行檢測。如圖13 所示:YOLOv4 在對添加噪聲的圖像進行檢測時,有一部分目標未檢測到,而且對檢測到的交通標志的置信度不是很高;而改進后的算法對添加噪聲的圖像的檢測效果比原算法的效果較好,能準確檢測出圖像中的每個交通標志。

圖13 算法改進前后對添加噪聲圖像的檢測效果Fig.13 Detection effects of noise image before and after algorithm improvement
為了驗證各個改進部分對檢測算法的影響,本文進行了消融實驗,把各個改進模塊依次添加進YOLOv4 網絡中測試每個改進模塊對檢測精度和速度的影響。為了便于區分對FcaNet 通道注意力模塊的全連接層用一維卷積替代前后通道注意力模塊對整個檢測算法的影響,把原始的FcaNet 通道注意力模塊單獨放入實驗中與改進后的FcaNet 對比,具體對比結果如表5 所示。

表5 在YOLOv4網絡中添加各模塊后的mAP對比 單位:%Tab.5 mAP comparison after adding each module to YOLOv4 network unit:%
本文提出了一種基于輕量級注意力機制的交通標志檢測算法,通過k-means++聚類生成適合本數據集的Anchor 加速訓練;在CSPDarknet53 特征提取網絡中添加通道注意力機制增強目標區域的特征信息并使用由輸入特征圖的通道C自適應的大小為k的一維卷積代替其全連接層以達到減少參數量并聚合k個相鄰通道信息的作用;最后在PANet 的中、小尺度特征層添加感受野模塊來增加淺層網絡的感受野并融合目標區域的上下文信息來更好地檢測小尺寸的交通標志。實驗結果表明,改進后的算法能在引進極少的參數量和與原YOLOv4 算法檢測速度相差不大的情況下提升對交通標志的檢測精度,但由于部分圖像的交通標志是遠距離拍攝,所以圖像中的部分交通標志分辨率過低導致檢測目標區域的框不夠精確,甚至對特別小的交通標志會出現漏檢的情況。因此,未來將進一步探索對特征融合網絡的改進,提升算法對小目標的檢測精度。