陳冰曲,鄧 濤,b
(重慶交通大學 a.機電與車輛工程學院;b.航空學院,重慶 400074)
準確實時檢測目標車輛能有效緩解交通監控壓力和降低車輛違規行為。目前,基于計算機視覺的方法吸引了國內外學者廣泛關注,如應用于車流統計、車輛檢索和車輛行為分析等方面。
傳統目標檢測方法如HOG(histogram of oriented gradient)[1]、SIFT(scale-invariant feature transform)[2]等,利用手工設計特征,將特征送入諸如SVM(support vector machine)[3]、AdaBoost[4]等分類器進行分類實現目標檢測。上述方法對于簡單場景的目標檢測效果不錯,但是對于稍微復雜的場景或者光照變化的情況下檢測精度就相對較差。即使采用星型結構的DPM(deformable part model)[5],雖可以檢測出變形目標和部分重疊目標,但因采用滑動窗口提取特征再進行分類,導致計算量過大,實時性受到影響。
近年來,卷積神經網絡在圖片分類、目標檢測領域取得了巨大成功。相比于手工設計特征,基于卷積神經網絡的目標檢測模型能夠自主學習不同層級的特征,具有更加豐富的特征和更強的特征表達能力。目前兩階段的卷積神經網絡算法有R-CNN[6]、SPPnet[7]、Fast R-CNN[8]、Faster RCNN[9]、R-FCN[10]等。與之相比,單階段目標檢測模型更加容易訓練,計算效率更高,典型代表如YOLO[11]、SSD[12]等。其中,SSD檢測性能更好,具有實時性好、檢測精度高等優點。
作為目前最先進和實時的目標檢測網絡之一,SSD只用一個全卷積網絡就完成了目標分類和定位任務。SSD結構框圖如圖1所示,它采用VGG-16[17]作為基礎特征提取層,將 VGG-16網絡結構的全連接層fc6和fc7層轉換成兩個卷積層,并去除VGG-16中的dropout層和分類層;再格外增加了4組卷積層,每一組都首先使用1×1卷積核降通道,再用3×3卷積核降尺度增通道。不同層次的特征圖分別用于不同尺度目標的邊框偏移以及不同類別得分的預測。最后通過非極大值抑制(NMS)得到最終的檢測結果。SSD結合多尺度特征圖共同檢測,用淺層分辨率大的特征圖檢測小目標,深層大感受域的特征圖檢測大目標,保證不同尺度大小的目標都能得到檢測。

圖1 SSD框架
SSD采用多尺度特征圖方法,在不同尺度特征圖上都會設置不同大小和寬高比的區域選框,區域候選框定義如下計算。

式中:m為特征層數;smin=0.2為最低特征層尺度;smax=0.9為最高特征層尺度;中間特征層尺度均勻分布。
區域候選框具有不同的寬高比 ar∈{1,2,3,。區域候選框的寬、高分別為同時對于寬高比為1的區域候選框增加一個尺度每個區域候選框的中心坐標為)。其中 w為第 k個fk特征圖的寬,hfk為第 k個特征圖的高,i∈[0,wfk),j∈[0,hfk)。
SSD把 conv4_3、fc7、conv8_2、conv9_2、conv10_2、conv11_2作為預測層,各層區域候選框參數統計如表1所示。從表1中可以看出:隨著網絡加深特征圖尺寸逐漸減小,區域候選框的尺寸不斷增大,所以SSD用淺層特征圖檢測小目標,用深層特征圖檢測大目標。

表1 SSD各預測層區域候選框
SSD訓練過程中對位置和目標類別進行回歸,它目標損失函數為定位損失(loc)與置信度損失(conf)之和,其表達式如下式。

式中:N為區域候選框與真實框的匹配個數,如果N=0則設置Loss=0;x為區域候選框與不同類別的真實框匹配結果,如果匹配x=1,否則x=0;c為預測物體類別置信度;l為預測框位置偏移信息;g為真實邊框與區域候選框的偏移量;α為位置損失權重參數通常設為1。
SSD采用SmoothL1作為位置損失函數,對區域候選框(p)的中心坐標(cx,cy)、寬(w)、高(h)的偏移量進行回歸,按下式計算:

式中i、j分別表示第i個區域候選框與第j個真實框匹配。
SmoothL1函數計算如下:

類別置信度損失函數采用Softmax損失函數用下式計算:

SSD目標檢測性能好壞在很大程度上取決于特征提取的好壞,而特征提取是由訓練數據所驅動的。SSD中訓練數據是由區域候選框決定的,因為只有區域候選框與真實的目標邊框的IOU>0.5時被標注為正樣本,反之為負樣本。區域候選框的設置應該根據真實框的變化范圍而定。一般來說,候選框與真實框匹配度越高就越能減少背景噪聲的影響從而提高檢測的準確度。并且區域候選框與真實框差異小,更利于位置回歸,因為區域候選框與真實框相近時是個線性回歸,如果兩者差異太大則必須建立復雜的非線性模型求解。原始SSD區域候選框與車輛數據集分布,如圖2所示。圖中黑色“點”代表數據集中車輛寬高分布,彩色直線為原始SSD中不同寬高比直線,彩色“三角形”為原始SSD中設置的區域候選框。從圖中可以看出SSD中大部分區域候選框離車輛數據集分布較遠,直接將SSD應用于車輛數據集不能得到很好的檢測結果。

圖2 區域候選框尺度分布
SSD存在對于有重疊的車輛目標檢測比較弱的現象。如圖3,藍色框為目標A真實框,綠色框為目標B真實框,紅色虛線框為目標A的預測框。當目標車輛A被目標車輛B重疊時,由于兩輛車有相似的特征,檢測器很容易被混淆,結果目標A的預測邊框向B偏移,導致定位不準確。對原始的檢測結果進行非極大值抑制(NMS)處理時,目標A的預測框可能被B的預測框所抑制,導致A漏檢。

圖3 SSD檢測結果與真實值的偏差
本文對訓練數據集運行 k-means聚類[14],令k=5得到5個聚類中心,具體步驟如下:① 獲取訓練樣本,并隨機選擇k個初始聚類中心;②計算每個樣本與這k個中心各自的歐式距離,按照最小距離原則分配到最鄰近聚類;③使用每個聚類中的樣本均值作為新的聚類中心;④重復步驟②和③直到聚類中心不再變化;⑤結束,得到k個聚類。k-means算法聚類后的結果見表2。

表2 k-means聚類結果
將SSD區域候選框和寬高比都設置在聚類中心周圍,使得區域候選寬與真實框更加匹配,并對SSD作如下更改:①刪除寬高比為1/3的框;②只保留預測層conv4_3、fc7、conv8_2,刪除后面的所有卷積層。③conv4_3設置4個區域候選框,fc7、conv8_2分別設置5個區域候選框。
更改后記為SSD_change,其區域候選框w-h分布如圖4。

圖4 修改后區域候選框尺度分布
針對SSD對有重疊的目標檢測效果不佳的問題,本文在原始SSD損失函數的基礎上再增加一項排斥損失[13],最終SSD損失函數如下:

設P+={P}表示至少與一個真實邊框匹配(IoU>0.5)的區域候選框的集合,G+={G}表示所有真實邊框集合。對于給定的候選框P∈P+,分配一個與它IoU值最大的真實框,作為它的指定目標,如下。

由于排斥損失是使區域候選框與除它指定目標以外的相鄰真實邊框產生排斥,因此對于P∈P+,它排斥的目標是除它指定目標外,與它IoU值最大的那個真實目標。

設BP為候選框P回歸出的預測框。BP與間的IoG計算如下:

本文使用KITTI數據集中的車輛對模型進行訓練與評估。KITTI數據集包含7 481張圖片用于訓練與驗證,另外還包含7 518張圖片用于測試。該數據集中有許多相互之間嚴重重疊、遮擋的車輛目標,檢測難度較大。訓練中,數據增強方法與原始SSD一樣,即隨機改變圖片的亮度、對比度、飽和度、色調,對圖片進行隨機剪切、鏡像。
本文目標檢測網絡基于VGG16,首先在ImageNet1000類數據集上對該網絡進行10輪訓練得到預訓練參數。使用預訓練分類網絡獲得的訓練參數對檢測網絡結構進行微調,微調時采用隨機梯度下降法(SGD),初始學習率設為0.001,并在迭代次數為80 000、100 000次時讓學習率減小10倍。參數momentum和weight decay分別設置為0.9和0.000 5,訓練批量大小為32,訓練120 000次。
本文對汽車和其他目標的檢測是一個二分類問題,最終目的是正確檢測出所有車,且沒有將其他目標當作車。為了更好地評價模型,設置TP代表正確檢測出的汽車,FP代表將其他目標當作汽車,FN代表將汽車檢測為其他目標,TN代表其他目標沒有被檢測為汽車。準確率和召回率計算如下:
設某一類有N個樣本,其中M個正例,那么可以得到 M個召回率:{1/M,2/M,…,M/M}對于每個召回率r,其最大準確率計算公式如下:

AP是衡量模型在每個類別上好壞,mAP衡量模型在所有類別上檢測性能的高低,計算如下:

分別訓練原始SSD,和改進型SSD_change+排斥損失,兩個模型檢測性能如表3所示。可以看出,mAP分別從87.54%、83.59%提高到了91.97%、86.36%,檢測性能分別提高了約4.3%、3%。

表3 檢測的mAP值
圖5為原始SSD(左)和SSD_change(右)的單張圖片檢測效果圖。顯然,相比與原始SSD,SSD_change在重疊目標的檢測上有一定的提高,對于遠處小目標的檢測有很大的提高,這是因為在conv4_3層中設置的區域候選框更好地匹配真實目標邊框,降低了環境噪聲的影響,網絡可以更好地學習目標特征。同時刪除了無用的區域候選框和特征提取層,降低了網絡參數,提高計算速度。

圖5 KITTI數據集樣本舉例
1)重新設計SSD的區域候選框,使其分布在數據的聚類中心,因此區域候選框與目標真實邊框重疊度高,提高目標檢測性能,同時刪除了多余的區域候選框和目標預測層,相比于原始SSD參數量更少,速度更快。
2)鑒于SSD對重疊目標檢測較弱,在SSD原有損失函數的基礎上,增加一項排斥損失,提高其對重疊目標的檢測。
然而,車輛目標尺度與人、自行車之類的目標尺度相差較大,如果直接用一個網絡對這些目標進行檢測,網絡需要學習復雜的特征映射關系,導致檢測準確度不高。如何使單個網絡對于尺度分布大的多個目標檢測依然有很高的準確度,還需進一步研究。