梁 鑫,代 倩
(中南民族大學計算機科學學院,武漢 430074)
交通標志檢測系統(tǒng)作為智能交通系統(tǒng)中的重要一環(huán),不僅能為駕駛員提供重要的路況信息以起到輔助駕駛的作用,而且在繪制高精度地圖上能極大程度地減少人工標注,降低錯誤的發(fā)生。出于安全性考慮,交通標志檢測速度和準確性有著嚴格的要求,在保證網(wǎng)絡推理速度的前提下,交通標志的檢測與識別必須達到高召回率和高精確率。傳統(tǒng)的交通標志檢測算法主要是基于顏色和形狀的算法,以及基于SVM+HOG、Harr-like等人工設計特征的機器學習算法。然而,交通標志數(shù)據(jù)集在不同的國家通常有著很大的差異,因此人工設計特征往往會損失算法的魯棒性。同時,上述傳統(tǒng)機器學習算法還存在檢測精度不足、檢測速度慢等問題,難以應用到實際中。
隨著計算機性能的提升,以神經(jīng)網(wǎng)絡為代表的深度學習模型在目標檢測領域獲得廣泛應用。近年來,基于深度學習模型的算法被逐漸運 用 到 了 交 通 標 志 檢 測 中。Arcos-García對Faster R-CNN等多個目標檢測網(wǎng)絡進行改進,并將其應用于交通標志檢測。Zhu等使用全卷積網(wǎng)絡(fully convolutional network,FCN)生成候選區(qū)域,縮小了交通標志的搜索范圍,并產(chǎn)生更具判別力的候選框。Zhu等對OverFeat框架進行了修改,提出了一個同時兼顧檢測和分類交通標志的網(wǎng)絡。Li等提出一種新的感知生成對抗網(wǎng)絡,該網(wǎng)絡通過為小型交通標志生成超分辨率表達來提高檢測性能。MR-CNN采用多尺度反卷積結構,將深層和淺層特征融合起來,融合后的特征圖可以在一定程度上減少區(qū)域建議的數(shù)量,提高交通標志檢測的效率。
上述工作大都通過提出多分辨率和多尺度的網(wǎng)絡結構,再加上反卷積、特征融合等操作提升交通標志檢測算法的性能,但仍然面臨實時性不強、計算參數(shù)多的問題。YOLOv3作為一階段檢測算法,將輸入圖像的類別和檢測目標的相應位置作為一項回歸任務,在輸出層一次性預測完成,大大縮短了檢測時間,滿足實際應用場景的需求。同時,YOLOv3借助特征金字塔(feature pyramid networks,F(xiàn)PN)的思想,將不同層次的特征融合,實現(xiàn)對大、中、小目標的預測,有效地提高了檢測效果。盡管YOLOv3的檢測精度和速度都取得了巨大的進步,但其對小目標的檢測性能仍然不理想。
現(xiàn)有針對交通標志檢測的YOLOv3改進算法主要以改進基礎網(wǎng)絡結構,融合多尺度特征為主。然而,大多數(shù)改進的網(wǎng)絡結構都會造成計算量增大,內(nèi)存消耗量增大的問題,不適于實際應用。同時,融合特征的過程往往會導致信息丟失,造成部分精確率下降。為解決現(xiàn)有改進策略的不足,本文以YOLOv3算法為基礎,將通道注意力(channel attention,CA)和輕量級的子空間注意力(subspace attention,SA)相結合,形成了YOLOv3-HA(YOLOv3-based hybrid attention)算法。通過賦予特征圖在通道和空間上的注意力權重,增加對有用特征的關注度,同時抑制當前任務中的無效特征。實驗表明,該算法在YOLOv3的基礎上以少量的檢測耗時為代價,能獲得良好的檢測精度,實現(xiàn)了檢測速度和精度的平衡。
本文的主要工作如下:
(1)對SENet(Squeeze-and-Excitation Net)中的特征壓縮方法進行改進,令壓縮后的特征更能代表小目標特征中的通道信息,使SENet更加適應交通標志檢測任務;
(2)引入一種輕量級的子空間注意力模塊,該模塊能對每個特征圖子空間推導出不同注意圖,以細化小目標特征,使網(wǎng)絡能獲得更加細粒度的特征信息。并將其與通道注意力結合,補充特征圖中的空間信息;
(3)使用K-Means++算法代替YOLOv3中原始K-Means算法,對數(shù)據(jù)集中的標注框進行聚類,獲得聚類效果較好的錨框參數(shù)。
針對目標檢測對小目標檢測性能不佳的問題,本文提出一種基于YOLOv3的YOLOv3-HA算法,將通道注意力和子空間注意力兩種注意力模塊進行融合,并嵌入到YOLOv3殘差結構。近年來,諸多學者采用注意力機制來引導卷積神經(jīng)網(wǎng)絡去學習關注重要特征并抑制干擾特征。文獻[13]提出了一種通道注意力模塊SENet,該模塊能被方便地集成到現(xiàn)有目標檢測網(wǎng)絡中,且在僅增加少量的計算參數(shù)的情況下便能有效提高網(wǎng)絡模型精度。本文對此模塊進行改進,同時為了補充全局特征之間的位置信息,引入一種輕量級的子空間注意力模塊,對每個特征圖子空間推導出不同注意圖,以細化小目標特征,使網(wǎng)絡能獲得更加細粒度的特征信息。
YOLOv3網(wǎng)絡可以簡化為FPN形式,分為自底向上的特征提取網(wǎng)絡DarkNet-53和自上而下的多尺度檢測網(wǎng)絡,如圖(1)上半部分。DBL是YOLOv3中的基本單元,由卷積層、批標準化(batch normalization,BN)和Leaky relu激活函數(shù)構成。Resn代表n個殘差結構,每個殘差結構由兩個DBL模塊串聯(lián)而成。為了使網(wǎng)絡能夠更加關注通道和空間中的有效信息,本文在殘差結構中嵌入通道注意力(CA)模塊和子空間注意力(SA)模塊,形成了混合注意力(HA)模塊。圖1 Residual部分是引入混合注意力后的殘差模塊。
圖1 YOLOv3網(wǎng)絡簡化結構與改進的殘差模塊
基于通道注意力的SENet采用了全局平均池化進行特征壓縮,在圖像分類任務獲得了良好的效果。然而在圖像分類任務中,目標對象占特征圖的比例一般較大,通道特征的平均值能比較好地說明該通道的信息。但對于交通標志這樣的小目標檢測,待檢測物體在特征圖上只占據(jù)一小塊區(qū)域。同時,目標檢測的原圖像通常包含數(shù)量占比較多的干擾物體,這些物體單體特征信息貢獻雖然較小但總體特征信息貢獻卻很大。因此,在交通標志檢測任務中,僅對特征進行空間維度的平均池化不能很好地表示目標的網(wǎng)絡響應,每個通道的響應極值也應當考慮進來。
本文根據(jù)交通標志檢測特征中含有大量干擾信息的特點,將全局最大池化與全局平均池化結合,使不同層級的特征有區(qū)分度,有效地抑制干擾特征。本文針對小目標檢測進行改進后的通道注意力模塊結構如圖2所示。
圖2 改進后的通道注意力模塊結構
設輸入特征為F,、和依次代表F的高度、寬度和通道數(shù),輸出的通道特征為F。輸入與輸出之間的關系如式(1)、式(2)所示:
式(1)中代表Sigmoid激活函數(shù),MLP代表多層感知機,GAvgPool代表全局平均池化,GMaxPool表示全局最大池化。式(2)中大小為××的輸入特征F經(jīng)過兩種全局池化,進行特征壓縮并相加,得到1×1×的壓縮特征。壓縮特征經(jīng)過SENet中的多層感知機結構激活后得到通道注意力權重M。最后M在式(2)中與F進行逐元素相乘,完成對輸入特征在通道上的加權,得到與F相同大小與維度的輸出特征F。
SENet中的多層感知機結構如圖3所示。輸入特征F在經(jīng)過特征壓縮后得到1×1×的特征向量。特征向量經(jīng)過兩個全連接層后分別完成降維和升維,最后由Sigmoid函數(shù)激活得到通道注意力權重M。
圖3 多層感知機結構
多尺度特征學習有助于神經(jīng)網(wǎng)絡理解圖像的背景,尤其是在多對象環(huán)境中能夠提高網(wǎng)絡的表達能力。為了更好地檢測交通標志中的細節(jié)特征,本文引入了一種支持多尺度特征學習的子空間注意力。
其將特征映射劃分為多個階段(特征圖子空間),并且為每個子空間推理出不同的注意力特征圖以支持多尺度特征表達。同時,在生成注意力特征圖時采用逐點卷積和逐通道卷積,減少了計算參數(shù)。
假設∈R是經(jīng)通道注意力模塊加權后的特征圖,其中為輸入通道的數(shù)量,、是特征圖的空間維度。為了在特征圖中獲取跨通道的依賴關系,將劃分為個互斥的組[,,…,…F],其中每個組含有個特征圖,如圖4所示。
圖4 子空間注意力模塊結構
將定義為其中一組中間特征圖,并進行如下操作:
與SENet類似,子空間注意力在卷積后采用最大池化操作以突出顯示局部區(qū)域信息,獲取空間信息。但在激活階段,子空間注意力利用不同特征圖子空間的線性關系來整合跨通道間的信息,相比于使用多層感知機激活,這種方法大大減少了網(wǎng)絡的計算參數(shù)。
實驗數(shù)據(jù)集采用我國的基于真實場景的交通標志公開數(shù)據(jù)集TT100K,其包含的交通標志種類多樣,場景豐富。與GTSDB和LISA(laboratory for intelligent and safe automobiles)相比,TT100K中的交通標志數(shù)目更多,分類更加細致。最重要的是,TT100K中的交通標志主要是小目標,更符合現(xiàn)實環(huán)境中的交通標志。它由6105張訓練圖像和3071張測試圖像組成,圖像的分辨率為2048×2048。實驗中的訓練集和測試集均采用默認分配的訓練圖像和測試圖像。實驗環(huán)境配置如表1所示。
表1 實驗環(huán)境配置
實驗采用精確率(Precision)、召回率(Recall)、mAP(Mean Average Precision)以及每幅圖像的檢測耗時作為模型的綜合評價指標。相關計算公式見式(6)~式(8)。
式(6)、式(7)中,代表正樣本中被預測為正樣本的數(shù)量;代表正樣本中被預測為負樣本的數(shù)量;代表負樣本中被預測為正樣本的數(shù)量。預測結果和由交并比(intersection over union,IoU)決定,它的計算方式是預測邊框和真實邊框的交集與并集的比值。當IoU大于設定閾值時,記為;反之記為。
mAP表示各類別的平均準確率均值,可以更好地衡量多召回率下的模型檢測精度。由式(8)求得:
其中代表檢測類別總數(shù),()表示當前類別的精確率-召回率曲線。
錨框(anchor box)最早起源于Faster R-CNN,錨框作為真實框的先驗,在大多數(shù)目標檢測算法中起著重要的作用。錨框機制主要是解決一張圖片中的物體具有不同尺度和寬高比的問題,錨框機制采用多個不同大小和比例的矩形錨框對檢測物體進行預測,降低了模型的學習難度。
在原始YOLOv3中,選定錨框參數(shù)是基于COCO數(shù)據(jù)集采用K-Means算法確定,這些錨框并不適用于本文的交通標志數(shù)據(jù)集,而且K-Means算法存在著初始點敏感的問題。因此,本文對TT100K數(shù)據(jù)集使用K-Means++算法重新進行聚類操作,得到新的錨框尺寸大小為:(14,16),(17,19),(18,23),(21,21),(22,25),(27,29),(32,38),(51,56),(86,96)。新的錨框寬高比更符合交通標志數(shù)據(jù)集特點,將原始錨框與使用K-Means++生成的錨框分別在TT100K數(shù)據(jù)集中進行訓練和測試,實驗結果見表2。
表2 聚類算法對比實驗結果
本文實驗采用深度學習框架Tensorflow和Keras實現(xiàn)網(wǎng)絡模型。使用隨機梯度下降優(yōu)化算法更新網(wǎng)絡參數(shù),初始學習率lr設置為1×10,動量Momentum=0.9,權值衰減weight decay設置為5×10。每個batch隨機選取16個訓練樣本,訓練500個epoch后停止。訓練的損失函數(shù)曲線如圖5所示。網(wǎng)絡模型損失在10個epoch內(nèi)迅速下降,在100個epoch后緩慢下降并在400個epoch后趨于平穩(wěn),算法達到收斂。
圖5 損失函數(shù)曲線
本節(jié)首先對通道注意力機制中的特征壓縮方式進行對比實驗,驗證不同的特征壓縮方式對YOLOv3檢測算法的改善效果。然后通過消融實驗,驗證CA和SA兩種注意力機制是否都對檢測結果起到積極影響。通過檢測效果的對比分析,直觀地展示HA對交通標志檢測的影響。最后,對比本文提出的YOLOv3-HA算法與其他主流目標檢測算法在TT100 K數(shù)據(jù)集上的檢測性能。
對于通道注意力機制的特征壓縮方法的選擇,本文將對比全局最大池化(GlobalMaxPooling,GMP)、全局平均池化(GlobalAveragePooling,GAP)、全局最大池化與全局平均池化相加(GMP+GAP)共三種方法。分別將這三種方法用于YOLOv3網(wǎng)絡之中,采用相同的訓練和測試方法,得到在TT100K數(shù)據(jù)集上的精確率和召回率,結果如表3所示。
表3 特征壓縮方法對比
由表3可以看出,通道注意力進行特征壓縮時,全局最大池化優(yōu)于全局平均池化,而將兩種池化相加時檢測結果最好,較全局最大池化的精確率和召回率分別提升了0.3%和0.5%。由此可說明,將通道特征進行全局最大池化和全局平均池化再相加的方式更能突出通道維度的特征信息,對小目標檢測任務的適應性更強。
為了探究改進通道注意力和子空間注意力對模型的影響,本文進行多次消融實驗。分別將改進的通道注意力機制和子空間注意力機制嵌入到YOLOv3網(wǎng)絡的殘差結構中,在相同實驗條件下與原始YOLOv3網(wǎng)絡進行性能對比,得到的實驗結果如表4所示。
表4 注意力機制消融實驗結果
由表4可以得出,原始YOLOv3網(wǎng)絡的檢測性能不佳,精確率和召回率分別為74.8%和81.9%。而融合兩種注意力機制后的YOLOv3-HA網(wǎng)絡性能有了明顯提升,精確率和召回率分別提升了21.9%和12.8%。而將CA和SA分別應用于YOLOv3網(wǎng)絡之后,網(wǎng)絡模型的檢測性能也有著不同程度的提高。由此消融實驗可以說明,兩種注意力模塊都對模型性能有著積極的影響,減少了網(wǎng)絡的漏檢和誤檢情況,且對精確率的影響更加明顯。
為直觀地說明改進算法有著更好的檢測性能,從TT100K數(shù)據(jù)集中選取3張圖片分別用YOLOv3算法和YOLOv3-HA進行檢測,并標出了誤檢和漏檢情況,具體檢測效果如圖6所示。
由于背景中的廣告牌干擾,圖6(a)中YOLOv3算法出現(xiàn)了誤檢;對于小目標對象,原始YOLOv3算法也存在著不同程度的誤檢和漏檢。而YOLOv3-HA算法則準確地檢測出所有的交通標志,且預測分數(shù)明顯高于原始YOLOv3算法。綜上所述,改進后的算法有著更加優(yōu)秀的交通標志檢測性能。
圖6 檢測效果對比
表5給出了YOLOv3-HA算法與YOLOv3、Faster R-CNN、SSD等算法在TT100K數(shù)據(jù)集上的檢測性能對比。可以看出,盡管本文的改進算法獲得的mAP低于二階段檢測算法Faster RCNN,但在檢測速度上本文算法有著明顯的優(yōu)勢。YOLOv5s在YOLOv3的基礎上大大減少了網(wǎng)絡參數(shù),在檢測速度上有了提升,但其在小目標物體上檢測性能仍然不夠理想。盡管YOLOv3-HA嵌入了混合注意力模塊使得網(wǎng)絡參數(shù)增多,但其仍具有良好的實時性,同時相比于原YOLOv3算法mAP有了較大的提升。綜合來看,本文改進的YOLOv3算法在精度和實時性方面實現(xiàn)了良好的平衡。
表5 TT100K數(shù)據(jù)集上對比實驗結果
針對現(xiàn)有目標檢測算法對小目標檢測存在精確度低、耗時長的問題,本文提出了一種基于YOLOv3的改進算法YOLOv3-HA。在YOLOv3的殘差結構中引入了改進的通道注意力模塊和子空間注意力模塊,分別在通道維度和空間維度對特征進行注意力加權,提高了對小目標的檢測性能,同時盡可能地減少了計算參數(shù)。實驗結果表明,改進后的YOLOv3算法在TT100K數(shù)據(jù)集上檢測平均準確率達到81.0%,較原始算法有了明顯的提升。由于引入注意力模塊使得模型的計算量增多,檢測耗時有了些許增加。因此,下一步工作將考慮保證精確性的前提下,進一步精簡網(wǎng)絡模型,減少網(wǎng)絡參數(shù)。