曹梧漢 賀波濤
(武漢郵電科學研究院 武漢 430074)
近些年我國的經濟水平不斷的提高,機動車制造業發展速度迅猛,人均收入增幅持續擴大,國內機動車數量逐年遞增。但是國內機動車駕駛素養水平并未和機動車環境變化相匹配。近年來,因各種人為原因,重大交通事故頻發,行人安全和機動車駕駛安全已經成為一個社會熱點問題。得益于近15 年來GPU 處理性能的大幅提升,車載智能輔助駕駛技術在近幾年逐步走進人們的視野,借用此類智能技術作為駕駛操作的補足,避免各類交通事故的發生成為研發的熱點。作為無人駕駛技術的重要一環,交通標志檢測的精度和實時性成為待解決的熱點問題,能否快速且準確的檢測出交通標志,并將此類信息反饋給駕駛系統,隨之進行準確的決策,在提升駕駛安全性上有極其重大的意義。
針對上述提出的問題,本文提出了一種基于SSD 改進的交通標志檢測算法,通過對SSD[1]的輸入數據進行select-cutmix 預處理,并對多個特征圖進行反卷積之后疊加做特征融合,提升語義信息,在預測的部分,改進邊框回歸的損失函數為CIoU Loss[2],使得此傳統檢測框架在速度和檢測性能上也能達到一個在當前極有競爭力的水平。通過最后的實驗分析驗證,本文提出的算法較原版SSD[1]檢測算法的識別精度提升極大,在未來的研究中可以使用更輕量級的骨干網絡部署到移動端,進一步提升檢測的實時性,因此也極具應用價值。
近些年的目標檢測算法主要分為兩種類型,兩階段檢測算法和單階段檢測算法。
兩階段檢測算法,如R-CNN類,此類算法主要分為兩步,首先通過特定方法生成可能存在目標的區域,比如select search[3]或者RPN[4],之后將所有的區域送入檢測器中進行分類和回歸,去掉置信度低的部分,對置信度高的部分的邊框進行修正。此類方法的優點在于精度很高,但是檢測的實時性較差。
而單階段檢測算法,如YOLO[5]系列和SSD[1]等,其流程一步到位,給定圖像的輸入后,直接輸入網絡,使用回歸的方法輸出目標的類別和邊框的位置。該類算法較之前的兩階段檢測算法相比,實時性提升很大,但是缺點就是訓練較為困難。其中一個原因就是均勻的密集采樣后,正負樣本的比例極不均衡,模型的精確度也稍有降低,且檢測尺度較小的物體也較為困難。
SSD[1]檢測算法的結構圖如圖1所示。

圖1 SSD基礎結構圖
SSD[1]直接使用卷積的輸出進行檢測,且采用了不同尺度的特征圖對不同尺度的目標進行檢測。較淺卷積層的輸出特征圖尺度較大,可以用來檢測目標較小的物體,而深層卷積的輸出特征圖尺度較小,可以用于檢測較大的物體。另外SSD[1]采用了不同尺度長寬比的先驗框,能夠根據實際檢測的任務進行微調。
SSD[1]不同層的特征圖的大小如表1所示。

表1 SSD卷積層輸出特征圖尺寸
在實際場景下,利用SSD[1]對交通標志進行檢測的效果不理想,本文分析了以下幾個主要原因:
1)雖然SSD[1]利用了多個尺度的特征圖進行不同尺寸目標的檢測,但是conv4_3 輸出的特征層只經過了一次卷積,整個特征圖的語義信息較少,不能很好地提取到目標的信息;
2)針對較多目標框定位的偏差問題,原版的SSD[1]采用了Smooth L1 Loss 作為邊框回歸的損失函數,獨立的算出目標框四個坐標點的損失,這種方法計算下目標框的四個坐標存在相關性,帶來了不必要的計算。并且多個相似框的Smooth L1損失很有可能相同,但是實際考慮這些邊框的交并比的話,這些目標框可能存在較大差異;
3)對最后每個可能的目標物體生成多個框后,采用了NMS(Non-Maximum Suppression)[1]算法對多余框進行過濾,原SSD[1]算法采用的NMS 算法僅僅采用IoU(Intersection-over-Union)作為邊框重合度的判斷依據,在很多情況下并不能反映兩個框的遠近,也無法精確地反映兩個框的重合度大小。
隨著現代神經網絡層數的加深,整個模型的資源占用也越來越大。更深的網絡帶來了更好的特征提取能力,但是也帶來了過擬合的風險。如果在圖片中增加一定的噪聲或者進行一定的裁剪操作,能夠一定程度上提高網絡的泛化能力和準確性。
本文提出的算法在原輸入模式的基礎上引入select-cutmix 數據增強。不同于原cutmix[6]數據增強的方法,本文考慮到數據集種的交通標志的像素尺寸較小,比較難以裁剪特定的標志,因此先選定目標周圍區域做一個裁剪,之后四張圖拼接起來。利用select-cutmix 方法生成的輸入圖像如圖2 所示。

圖2 select-cutmix后的輸入圖片
隨后在原版SSD[1]的實現中,數據的輸入會通過一個光度變形和幾何變換,本文實現中省去了幾何變換的部分,僅僅采用了光度變換對經過select-cutmix的輸入數據做隨后的處理。
本文提出的select-cutmix 方法在訓練過程中不會出現數據集中未出現的無關像素點,不會引入無關數據,同時不改變訓練和推理的代價。
SSD[1]的檢測結構中,僅僅提取了conv4_3,fc_7,conv6_2,conv7_2,conv8_2,conv9_2 的卷積輸出特征圖做了特征的提取和檢測,隨后對其做了兩次卷積,一次是卷積核大小為num_anc?or×4 的卷積,用于預測每一個網格點上的先驗框變化,一次是卷積核大小為num_anc?or×num_classes的卷積,對應特征層上的每一個格點上的預測類別[1]。
原SSD[1]算法多尺度特征圖檢測結構的缺點就是沒有用到最后卷積輸出的高維度特征圖。底層卷積的特征圖輸出分辨率高,但是語義信息較少,因此,淺層的特征圖用于提取特征時,沒有用到深層的語義特征,造成了對于小目標檢測性能的下滑。因此,本文采用FPN[7]的思想改進原網絡的檢測和分類部分,改進的網絡如圖3所示。

圖3 改進后的SSD檢測網絡結構
其中本文用一個反卷積特征融合模塊[8]來做特征圖的融合和維度提升。其結構如圖4所示。

圖4 反卷積上采樣模塊
如圖4 所示,淺層的特征經過卷積核批量歸一化之后和深層的反卷積上采樣輸出的結果進行元素級別的相加操作,最后輸出。
同時,本文將原SSD[1]檢測網絡中conv8_2 和conv7_2的兩個卷積的block換成RFB[9]模塊做一個特征的聚合。RFB[9]模塊的結構如圖5所示。

圖5 RFB[9]模塊
原SSD[1]算法的邊框位置回歸損失函數的缺點就是當多個框的IoU 差距較大的時候可能會有相同的損失函數,計算的誤差較大。后續提出的模型中,常采用IoU 損失函數,但在該損失函數下,兩目標框不相交的時候不能反映二者的遠近,且無法反映具體是如何相交的。本文在目標框的回歸上采用CIoU Loss[2]來改善這類情況。
原SSD 檢測算法的損失函數如公式所示,本文替換回歸框的損失函數為CIoU Loss[2],替換后的CIoU[2]損失函數公式如式(1)所示:
本文的數據集TT00K 有騰訊和清華大學聯合采集,一共有共221 種標注類別。其中,訓練集和測試集分別為6105 張3071 張。經過瀏覽,數據集覆蓋了大量不同的光照環境和天氣場景,其數據豐富性較強。另外部分類別的標注數據不足300 張,因此本文在實際訓練過程中僅選取了標注數據較為豐富的前35類交通標志。
本文的實驗環境如表2 所示,系統配置環境為CUDAv10.2,pytorch v1.9.0。

表2 本文實驗環境
本文主要兩個性能指標,首先是能夠表征識別準確度的平均精度均值(mAP),其次是能夠反映識別實時性的FPS(frames per second)。
計算mAP(mean Average Precision)之前首先要引入FP(False Positive)和TP(True Positive),FN(False Negative)三個定義,其中FP,TP 分別代表假陽實例,真陽實例。真陽實例表示預測為正樣例,實際也是正樣例,假陽實例表示預測為正樣例,實際是假。則精確率P 和召回率R 的公式定義如式(4)、(5)所示。
隨后每一類的平均精確率(Average Precision,AP)定義如式(6)所示。
其中p(rc)表示當類別c 的召回率為rc時的準確率。
平均精度均值及算法方法較為簡單,首先對每個類別在全體數據集中求出平均精度值,隨后對所有類比的平均精度值取一個均值。如式(7)所示
FPS 表征了一個模型處理圖片的速度,其定義如式(7)所示,其中的t代表處理一幀畫面需要的時長。
本文針對改進SSD[1]算法模型的訓練先用原版的SSD[1]在TT100K 種進行50個epoch的訓練,隨后用訓練好的模型數據初始化相同結構的神經網絡層,丟棄不匹配的部分嗎,隨后線凍結conv4_3的參數,訓練迭代50 個epoch,隨后解凍所有的參數,繼續訓練100個epoch。
將本文改進的算法和原版SSD[1]以及YOLOv3[9]做性能對比實驗,對比結果如表3 所示。本文提出的改進算法的mAP達到了85.37%,相較原版SSD[1]高出了18.05%,相較于YOLOv3[9]高出了11.24%,有了極大的提升,其中YOLOv3[9]的輸入圖片尺寸大小為(416,416)。

表3 本文算法與其他目標檢測算法對比
綜合識別的精度(mAP)和處理的速度(FPS)來看,本算法在已經提出的目標檢測算法中有較大的競爭力。
本文在SSD[1]基礎上提出了一種改進的SSD[1]算法,有效解決了SSD[1]算法在交通標志識別過程中,漏檢和誤檢較多的問題。改進算法針對該數據集特征,對數據增強處理,并將多特征圖檢測結構改進,將多個特征圖的融合,增強每個檢測分時的語義信息,并在主干網絡提取中加了簡化的RFB[8]模塊,提升網絡的寬度,同時做特征的聚合。實驗結果表明,本文的檢測算法在精度上較之前的SSD[1]有較大的提升,且在處理實時性上同YOLOv3[9]對比存在一定優勢,具有較高的落地使用價值。考慮到實際應用場景中,環境復雜,后續可以考慮采用更好的特征提取網絡替換本文的基礎卷積網絡VGG[10],進一步提升算法的精度。同時在實時性方面,可以結合數據的特征,精簡各類模塊,重新設計通道的參數,在檢測速度上做進一步的提升。