陳 毅,黃妙華,胡 勝
(1.武漢理工大學 現(xiàn)代汽車零部件技術湖北省重點實驗室,湖北 武漢 430070;2.武漢理工大學 汽車零部件技術湖北省協(xié)同創(chuàng)新中心,湖北 武漢 430070)
前方車輛目標檢測指從道路場景中識別出車輛目標,是智能駕駛領域中的重要組成部分。近幾年,國內(nèi)外對前方車輛目標檢測做了較多研究,在提高檢測精度問題上的關注重點有兩個方面,一是特征選擇和提?。欢菣z測算法的優(yōu)化。目前在特征選擇上主要有車底陰影特征[1-3]、車輛對稱性特征[4-5]、車輛邊緣特征[6-7]等車輛外觀特征以及HOG(histogram of oriented gradient)特征[8-9]、LBP(local binary patterns)特征[10]、Haar-like特征[11-12]、SIFT(scale-invariant feature transform)特征[13-14]等統(tǒng)計學特征。目前典型的車輛檢測算法有SVM(support vector machine)算法、Adaboost算法和神經(jīng)網(wǎng)絡算法等,但是均存在檢測精度低等缺點。
隨著深度學習理論和實踐迅速發(fā)展,基于機器學習的目標檢測和分類進入了一個新的階段。2013年R-CNN作為深度學習目標檢測應用領域的先驅(qū),創(chuàng)新地將傳統(tǒng)機器學習和深度學習結合起來,提出選擇性搜索(selective search)等經(jīng)典算法,在VOC2007測試集的平均準確率被提升至48%;2014年時通過修改網(wǎng)絡結構提高到66%。繼而出現(xiàn)了像Fast R-CNN[15]、Faster R-CNN[16]、Mask R-CNN[17]、YOLO[18]和fast YOLO[19]等目標檢測網(wǎng)絡的優(yōu)化。其中Fast R-CNN、Faster R-CNN存在計算量大,訓練及測試速度慢等問題,YOLO、fast YOLO則存在目標定位精度差,訓練時間長等問題。
為解決上述問題,筆者在傳統(tǒng)的檢測方法基礎上進行改進,運用改進后的VGG(visual geometry groups)深度卷積神經(jīng)網(wǎng)絡訓練車輛分類器。首先,通過圖像濾波算法抑制圖像噪聲;然后運用改進的二次自適應閾值分割算法,并通過兩次形態(tài)學處理后,獲取車輛底部陰影區(qū),進而得到車輛假設區(qū)域;最后通過預先運用VGG深度卷積神經(jīng)網(wǎng)絡訓練好的車輛分類器對假設區(qū)域進行分類識別,最終得到車輛的具體位置。改進后的算法在提高車輛目標檢測精度的前提下,提高檢測效率。
設計的車輛目標檢測系統(tǒng)框架如圖1所示。其主要分為3個階段:圖像預處理、提取車輛假設區(qū)域和驗證車輛假設區(qū)域。
圖1 車輛目標檢測系統(tǒng)框架
目前車底陰影區(qū)域提取方法主要采用閾值分割法,文獻[1]采用圖像均值和方差差值作為分割閾值,能較好地分割出里面和其他非感興趣目標,但不能有效抑制大面積陰影干擾;文獻[2]在此基礎上提出了二次自適應閾值分割法,有效提高了分割效果,但是其計算過程復雜,計算量大,降低了車輛目標識別效率;為確保車底陰影區(qū)盡可能保留,降低漏檢率,提高檢測精度,筆者采用兩次自適應閾值分割法,首先從原始圖像中提取感興趣區(qū)ROI(region of interest),即圖2中上下線之間區(qū)域,并根據(jù)式(1)和式(2)計算ROI中像素點均值和方差。
(1)
(2)
式中:μ為ROI的像素均值;σ為ROI的像素方差;M、N分別為灰度圖像的高度和寬度;f(m,n)為灰度圖像中(m,n)處的圖像灰度值。
第一次自適應閾值分割的閾值如式(3)所示,其目的是消除高亮像素點的干擾,然后統(tǒng)計ROI中低于threshold1的所有像素點的灰度值,并按照式(1)計算其均值。第二次自適應閾值分割的閾值如式(4)所示。圖像閾值分割效果如圖3所示,從圖3可看出采用的二次自適應閾值分割法能有效抑制環(huán)境噪聲干擾,分割道路上的車輛目標,以便于后續(xù)準確提取車輛底部陰影線。
(3)
threshold2=μ2
(4)
式中:μ1為第一次自適應閾值分割ROI的像素點的灰度均值;μ2為第二次自適應閾值分割ROI中低于threshold1的像素點灰度均值。
圖2 原始圖像
圖3 本文圖像閾值分割效果
經(jīng)過上述閾值分割后,仍然會有部分小面積區(qū)域會影響后續(xù)的車底陰影線的提取,為了消除其干擾,采用兩次形態(tài)學處理,第一次采用5×5的矩形核進行腐蝕操作,消除小面積破損區(qū)域,第二次采用7×7矩形核進行膨脹操作,進一步分割道路與車輛,便于后續(xù)提取車底陰影線,圖4為形態(tài)學處理效果。
圖4 形態(tài)學處理效果
經(jīng)過上述操作可以看出,處理結果中初步包含了所有車輛目標的陰影區(qū),提取車底陰影線的具體步驟如下:①從上至下、從左至右依次遍歷每個像素點,當滿足式(5)時,記f(x,y)為陰影線起點,當滿足式(6)時,記f(x,y)為終點;②當確定了陰影線的起始點時,將縱向跨度小于10行,并且橫向重合度大于80%的陰影先合并為一條陰影線,即為所要提取的車輛目標陰影線。
f(x,y-1)-f(x,y)=
255&f(x,y+1)-f(x,y)=0
(5)
f(x,y-1)-f(x,y)=
0&f(x,y+1)-f(x,y)=255
(6)
由于現(xiàn)實道路環(huán)境受到光照、建筑物、樹木等影響較大,因此僅憑借車底陰影作為車輛目標檢測的唯一標準會產(chǎn)生大量誤檢結果,因此需要對基于車底陰影產(chǎn)生的假設區(qū)域進行驗證,以減少誤檢率,提高檢測精度。深度卷積神經(jīng)網(wǎng)絡相比傳統(tǒng)的機器學習算法具有提取包含目標本質(zhì)的隱形特征能力,從而省去了手工提取特征的步驟,具有易擴展和高魯棒性的特點。筆者采用VGG深度卷積神經(jīng)網(wǎng)絡算法對產(chǎn)生的假設區(qū)域進行驗證。
針對智能駕駛汽車,前方車輛為主要檢測目標,因此為進一步提高檢測精度,所選的訓練正樣本集主要為車輛尾部圖像。目前,常用的車輛檢測數(shù)據(jù)集有MIT-CBCL車輛數(shù)據(jù)集(516幅128×128的ppm格式圖像)、UA-DETRAC車輛數(shù)據(jù)集(8 250個車輛目標)等,但是這些數(shù)據(jù)集正樣本數(shù)量較小,并且正樣本中車輛的姿態(tài)多樣,因此需要制作特殊的訓練正樣本集。制作的正樣本集主要由兩部分組成:汽車之家官網(wǎng)車輛尾部圖像和公開車輛數(shù)據(jù)集,共計9 497幅圖像,將其分為7 314張訓練集圖像和2 183幅測試集圖像,部分正樣本如圖5所示。針對道路環(huán)境特點,負樣本集主要包括行人、道路、樹木、房屋和天空等。負樣本集共計19 306幅圖像,將其分為15 852幅訓練集圖像和3 454幅測試集圖像,部分負樣本如圖6所示。為了進一步加快后續(xù)神經(jīng)網(wǎng)絡的訓練和測試速度,將正負樣本集歸一化為64×64大小的圖像。
圖5 部分正樣本圖像
圖6 部分負樣本圖像
采用的網(wǎng)絡結構基于由Simonyan和Zisserman在2014年提出的VGG網(wǎng)絡[20],其結構如圖7所示。該網(wǎng)絡結構共有13個卷積層,每個卷積層的卷積核大小均為3×3,卷積步長為1,卷積核個數(shù)從最初的64依次增長到128、256以及512。池化層卷積核大小為2×2,步長為2。但是其網(wǎng)絡模型的參數(shù)太多,在訓練過程中需要保存權值和偏置以及部分中間結果,這些數(shù)據(jù)將儲存在有限的GPU上,會給GPU帶來巨大負擔,并且影響訓練和測試速度。因此如何減少VGG網(wǎng)絡結構參數(shù)成為提高訓練測試效率的關鍵技術。
通過研究VGG網(wǎng)絡結構發(fā)現(xiàn),訓練參數(shù)主要產(chǎn)生于全連接層中,其中FC-4096共有4 096個節(jié)點,其參數(shù)占總參數(shù)的70%,為減少VGG網(wǎng)絡訓練參數(shù),將原始的VGG網(wǎng)絡結構進行優(yōu)化,去掉一層全連接層FC-4096,其余保持原VGG網(wǎng)絡結構不變,此優(yōu)化方式不僅減少了訓練參數(shù),提高了訓練效率,同時也提高了檢測精度。
圖7 VGG卷積神經(jīng)網(wǎng)絡結構圖
在網(wǎng)絡訓練開始時,隨機初始化參數(shù)進行訓練,訓練過程分為兩個階段:前向傳播計算和反向傳播計算。前向傳播可用式(7)進行計算。
xl=f(ul) withul=wxl-1+b
(7)
式中:f(ul)為激勵函數(shù);xl為當前層的輸出;ul為當前層的輸入;w,b分別為上一層的權重和偏置。
采用RelU激勵函數(shù),其相較于Sigmoid函數(shù)和tanh函數(shù)具有快速計算和快速收斂的優(yōu)點,計算公式為ReLU=max(0,x)。
反向傳播的核心是計算損失函數(shù)值,目前常用的損失函數(shù)有平方誤差函數(shù),交叉熵等。筆者采用平方誤差函數(shù)作為損失函數(shù),如式(8)所示,然后用式(9)作為車輛檢測結果的評價指標。
(8)
式中:C為樣本個數(shù);n為訓練次數(shù);t為訓練樣本的正確結果;y為網(wǎng)絡訓練的輸出結果。
(9)
式中:TP為正樣本測試結果為正的個數(shù);FP為負樣本測試結果為正的個數(shù);TN為正樣本測試結果為負的個數(shù);FN為負樣本測試結果為負的個數(shù)。
訓練測試硬件環(huán)境為:處理器為Intel(R) Core(TM)i7-6800K;內(nèi)存為8 G;顯卡采用GeForce GTX1060 3 GB。軟件環(huán)境為:操作系統(tǒng)為Windows 7 旗艦版;編程工具采用Python3.5和TensorFlow深度學習框架。訓練測試參數(shù)為:迭代步數(shù)為10 000;初始學習率為0.001。通過分別運用常規(guī)6層卷積神經(jīng)網(wǎng)絡、經(jīng)典VGG16卷積神經(jīng)網(wǎng)絡以及改進的VGG16卷積神經(jīng)網(wǎng)絡對上述數(shù)據(jù)集進行訓練測試。最終得到測試集損失函數(shù)值變化如圖8所示,從圖8中可以看出3種卷積神經(jīng)網(wǎng)絡的損失函數(shù)值均下降很快,說明3種卷積神經(jīng)網(wǎng)絡均能較快地學習車輛目標特征,最終改進的VGG16卷積神經(jīng)網(wǎng)絡結構得到的損失函數(shù)值最小,說明其能更好地學習車輛目標特征。測試集準確率變化如圖9所示,從圖9中可以看出采用改進的VGG16卷積神經(jīng)網(wǎng)絡結構在測試集上的準確率最高,最終測試集準確率如表1所示。
圖8 測試集損失函數(shù)值變化圖
圖9 測試集準確率變化圖
卷積神經(jīng)網(wǎng)絡結構名稱測試集準確率6層卷積神經(jīng)網(wǎng)絡61.27%VGG16卷積神經(jīng)網(wǎng)絡88.53%改進的VGG16卷積神經(jīng)網(wǎng)絡91.95%
運用訓練結果對實際圖像進行測試得到測試結果如圖10和圖11所示。
圖10 圖2(a)的測試結果圖
圖11 圖2(b)的測試結果圖
從圖10和圖11可以看出,改進的VGG卷積神經(jīng)網(wǎng)絡結構擁有更好的檢測能力,最終能獲得較好的檢測效果。
針對目前前方車輛目標檢測準確率較低的問題,提出了優(yōu)化的檢測方法,首先通過雙閾值分割提取出車底陰影特征,獲取車輛目標假設區(qū)域,然后運用改進的VGG卷積神經(jīng)網(wǎng)絡進行訓練車輛分類器,并對車輛目標假設區(qū)域驗證。在測試集上進行測試的結果表明,該方法獲得較高的檢測準確率,并在實際圖像檢測中取得良好的檢測效果。