林 菁,楊 楠,臧 勤
(1.海軍裝備部,北京 100841;2.中國船舶重工集團公司第七二四研究所,南京 211153)
目標識別算法是輔助駕駛和無人駕駛技術[1-2]中一個非常重要的研究方向。準確的獲得交通目標位置信息能夠讓司機或者無人汽車對交通狀況做出準確的判斷,從而避免交通事故的發(fā)生。雖然學術界和工業(yè)界在過去的幾十年里通過計算機視覺對檢測算法研究已經取得了較大進展,但是目前的檢測算法仍存在如下兩個不可避免的問題,一個是由于噪聲、運動模糊等因素造成的圖像低分辨率,另一個是由于復雜的天氣的條件如霧霾、可變光照、雨水天氣等造成的干擾。
為了解決上述問題,一些專家學者提出了一系列的方法,如基于顏色與陰影模型[3]的方法、基于形狀模型[4]的方法、基于滑動窗口[5]的方法、基于選擇性搜索的方法[6]等。
基于顏色與陰影模型的方法引入了顏色變換和陰影檢測方法[7],通過車輛顏色和車輛陰影模型對前方車輛的位置進行定位。但是,基于顏色或者陰影模型的方法容易受到天氣情況的影響,在強光照、陰雨等天氣情況下該檢測方法的識別率較低?;谛螤畹姆椒ǎ缥墨I[8]提出的基于邊緣對稱性的視頻車輛檢測算法,通過車輛邊緣對稱信息對前車位置進行匹配。然而,基于形狀的檢測方法容易受到運動形變、障礙物遮擋等問題的影響,在交通環(huán)境比較復雜的情況下檢測性能并不理想。為了解決上述問題,一些研究人員提出了滑動窗口結合分類器的檢測方法,利用多尺度滑動窗口提取大量的候選區(qū)域后通過分類器進行篩選從而對前方車輛位置進行定位。雖然上述方法可以有效地解決基于顏色和基于形狀的方法因為環(huán)境干擾帶來的誤檢和漏檢,但是由于提取的候選區(qū)域較多,算法實際運算時間較長,在實際應用中效果并不理想。為了解決滑動窗口提取候選區(qū)域數量較大和提取候選區(qū)域存在大量冗余等問題,J.R.R. Uijlings等人[9]提出了基于選擇性搜索的目標檢測方法。該方法首先對圖片進行超像素分割,通過合并超像素的方法選擇性地提取候選區(qū)域,在一定程度上減少了候選區(qū)域的提取。
隨著深度學習算法在目標的檢測與分類中取得的良好表現,Girshick R等人[10]結合卷積神經網絡分類模型改進了J.R.R. Uijlings等人方法提出了R-CNN目標檢測方法。該方法通過結合選擇性搜索算法與深度卷積神經網絡分類模型提高了檢測算法的檢測精度。但是,該算法需要對非目標區(qū)域提取大量的候選區(qū)域并判決,所以該方法存在著檢測速率慢、在復雜交通環(huán)境下精確率較低等問題。
Longjong等人在CVPR2015上提出了一種基于全卷積神經網絡圖像語義分割算法[11]。該算法通過訓練能夠進行像素級的分類從而高效地解決語義級別的圖像定位問題。該方法能夠快速地對交通場景進行初始語義分割從而得到前方車輛大致所在位置,但在經過卷積網絡和反卷積網絡過程中會丟失部分信息,所以對于復雜環(huán)境下的前方車輛檢測效果并不理想。基于此,本文進一步提出了基于全卷積神經網絡和選擇性搜索的前車檢測算法。該算法將全卷積神經網絡語義分割算法與J.R.R.Uijlings等人提出的R-CNN算法相結合并應用于前車識別上。通過在LISA交通數據庫[12]中進行試驗對比,實驗結果顯示,與Girshick R等人提出R-CNN目標檢測算法相比,本文所提出的算法的平均準確率、召回率和準確率均有提高。
本文提出的前車檢測方法分為候選區(qū)域提取、候選區(qū)域識別兩個部分。算法結構如圖1所示。算法第1部分首先通過訓練好的全卷積神經網絡模型對輸入圖像進行語義分割得到目標區(qū)域粗略位置,接著通過選擇性搜索算法對分割后的粗定位圖像提取候選區(qū)域。算法第2部分先將第1部分提取的候選區(qū)域放入訓練好的神經網絡分類器進行分類得到每個候選區(qū)域的置信度,然后通過非極大值抑制算法[13]去除冗余候選區(qū)域得到最優(yōu)候選區(qū)域,即前方車輛所在位置。
由于全卷積神經網絡在圖像語義分割上具有良好表現,所以文本采用全卷積神經網絡(fully convolutional neural network)對輸入圖像進行語義分割從而實現目標的粗定位。全卷積神經網絡和卷積神經網絡都是含有多隱層的神經網絡模型。相對于經典的CNN網絡在卷積層之后使用全連接層得到固定長度的特征向量進行分類,全卷積神經網絡采用反卷積網絡對最后一個卷積層的特征圖進行上采樣, 使原始圖像恢復到輸入圖像相同的尺寸,從而能夠對每個像素都產生了一個預測值,同時也保留了原始輸入圖像中的空間信息。
圖2顯示了本文選用的全卷積神經網絡的詳細配置。本文將整個網絡分為卷積網絡和反卷積網絡。卷積網絡用于將輸入圖像轉換為多維特征,而反卷積網絡用于從提取的多維特征生成分割圖像。網絡的最終輸出為與輸入圖像大小相同的顯示每個像素屬于預定義類之一的概率的概率圖。
本文采用去除softmax層的VGG16層網絡[14]用于卷積網絡部分。卷積網絡有13層卷積層。卷積層與卷積層直接采用整形和池化操作用于降低卷積層輸出的特征向量。卷積網絡末端連接2個全連接層用于增強特定類的投影。反卷積網絡采用的是卷積網路的鏡像模型。與卷積網絡相比,反卷積網絡具有多個上池化層、反卷積層。
2.1.1 卷積網絡
(1) 卷積層
(1)
(2) 激活函數
卷積的結果經過激活函數后的輸出形成這一層的特征圖。每一個輸出的特征圖可能與前一層的幾個特征圖的卷積建立關系。本文采用Relu函數如公式(2)所示。
(2)
(3) 下池化(pooling)層
(3)
2.1.2 反卷積網絡
(1) 上池化(Unpooling)層
由于池化操作不可逆,所以上池化操作是一種近似操作。本文通過將池化操作前的位置信息反向重新顯示實現圖像的上池化操作,從而達到還原圖像的目的。
(2) 反卷積層
在對上池化操作后需要對特征圖進行反卷積操作從而實現對圖像不同層次特征的提取。反卷積操作通過多個可訓練的卷積核進行卷積運算從而得到一個放大的稀疏響應特征圖。
選取LISA數據庫中3種不同交通環(huán)境下的測試圖片作為輸入,圖像語義分割后的輸出結果如圖3所示。
2.2.1 選擇性搜索算法流程
對初始輸入圖片進行語義分割以后,能夠得到前方車輛大致的所在位置。為了對前車所在位置進行更精確的定位,需要對初始分割圖片進行候選區(qū)域提取。本文采用選擇性搜索算法對圖像進行候選區(qū)域提取,使算法能夠適應不同尺度的圖像,并且減少提取候選區(qū)域的量。選擇性搜索算法通過計算目標區(qū)域的相鄰聯通子區(qū)域的相似度,不斷合并圖像子塊并提取子塊外接矩的方式選取候選區(qū)域。本文在進行選擇性搜索作相似性判斷時采用多策略融合的方法進行合并。根據實際需求本文使用圖像分割后子塊的顏色、紋理、大小的相似度進行合并。選擇性搜索算法提取候選區(qū)域流程如下所示:
(a) 對語義分割圖像(圖4(a)列所示)進行超像素分割得到超像素分割圖(如圖4(b)列所示);
(b) 將得到的超像素分割圖分為若干初始圖像子塊,設子塊集合為R={r1,r2,…,rn},對區(qū)域集合R中的子集取其對應的外接矩作為候選區(qū)域;
(c) 計算臨近圖像塊區(qū)域之間的相似度s(rm,rn),所有圖像塊之間的相似度集合為S={s(rj,rk),…};
(d) 將集合S中相似度最大值max(S)對應的兩個區(qū)域(rj,rk)合并為一個新的區(qū)域rnew=rj∪rk,從集合中去除區(qū)域rj和rk,并且在相似度集合中去除與其他區(qū)域的相似度。
(e)重復步驟(c)和步驟(d)直到相似度集合S為空集,得到全部候選區(qū)域(如圖4(c)列所示)。
2.2.2 子塊合并策略
本文根據實際需求采用基于顏色、大小和紋理特征融合的相似度融合策略對相鄰的子塊進行融合判別。
(1) 顏色相似度
(4)
(2) 紋理相似度
(5)
在區(qū)域合并過程中對新的區(qū)域的SHIFT-LIKE特征直方圖進行更新,計算方法如下:
(6)
(3) 大小相似度
本文采用區(qū)域中包含像素點的個數進行判別,計算方法如下:
(7)
其中,size(im)為整個輸入圖片的總像素點數。
將紋理特征、顏色特征、大小特征相似度計算方式組合到一起,得到相似度量公式:
s(ri,rj)=a1scolour(ri,rj)+a2stexture(ri,rj)+a3ssize(ri,rj)
(8)
在提取候選區(qū)域以后,需要通過分類器對提取的候選區(qū)域進行分類從而去除非車輛位置區(qū)域。相比于傳統(tǒng)的基于人工特征因子(如BP、HOG、LBP等)加分類器(如SVM、adoost等)的分類方法,基于深度卷積神經網絡(CNN)分類算法具有較好的魯棒性與準確率,并且可以得到每幅候選區(qū)域圖像的置信度。因此,本文采用深度卷積神經網絡模型對提取的候選區(qū)域圖像進行分類。
本文的深度卷積神經網絡框架中采用7層網絡(如圖5所示)將提取的候選區(qū)域分為車輛和背景2種類別。首先將提取的候選區(qū)域尺度歸一化為32×32大小的圖像,然后經過2層卷積層加2層池化層、2層全連接層和softmax層輸出圖片所屬類別的概率。本文從KITTI數據庫[15]中選取1 000張圖片,選取標注好的2 341張車輛區(qū)域作為正樣本集,截取選取圖片中不同尺度下的背景區(qū)域作為非車輛樣本,最終構建的非車輛樣本集共有6 400張圖片。
表1 深度卷積神經網絡參數表
當提取選取的候選區(qū)域經過卷積極神經網絡分類器會得到每個候選區(qū)域屬于車或者背景的置信度,保留候選區(qū)域屬于車輛且大于0.8的所有候選區(qū)域。根據非極大值抑制法求得最優(yōu)候選區(qū)域,即最優(yōu)候選區(qū)域為前方車輛的精確位置。
非極大值抑制法提取最優(yōu)候選區(qū)域過程如下所示:
(1) 選取單幀圖片中所有的候選區(qū)域{s1,s2,…,sn},假設最大概率候選框為smax,分別計算{s2,…,sn}與s1的重疊度(IOU)是否大于0.5。假設候選框的重疊度超過0.5的區(qū)域有si和sj,去除si和sj,并標記第1個候選框smax。
(2) 從剩下的候選框中{s2,si-1,si+1,…,sj-1,sj+1…,sn},選取概率最大候選框ssecond,重復步驟1并標記ssecond。
(3) 重復步驟2,直到候選區(qū)域集合為空,從而得到單幀圖片中所有最優(yōu)候選區(qū)域。
為了驗證本文算法,本文采用LISA交通數據庫作為測試數據。LISA車輛檢測數據庫包含白天不同光照條件、不同道路環(huán)境(城市、高速公路)的車輛行駛。該數據集能夠較好地對前車檢測算法進行評價。本文算法在基于Linux下的caffe框架[16]實現,硬件平臺為英特爾至強E5、TIANX 顯卡、內存12 GB的計算機上運行。部分檢測結果如圖5所示。
本文采用以下評價指標對不同算法在前車檢測中的效果進行評價:精確率(即車輛識別率)tp、召回率(即虛警率)fp,其定義公式如下所示:
(9)
其中,NTP、NFP、NTN和NFN分別表示測試樣本中正確檢測到的前車數目、將車輛誤差誤識別為車輛的個數、正確識別的非車輛數目和將車輛誤識別為非車輛的個數。
本文將文獻[10]所提出的R-CNN算法與與所提出的改進算法在LISA數據集3種不同環(huán)境下的準確率和召回率進行了比較,見表2、表3。
表2 算法準確率與召回率對比
表3 算法檢測速率對比
根據實驗結果,本文所提出的改進算法與R-CNN算法相比在3種不同的道路和天氣環(huán)境下的交通場景下的準確率與召回率均有所提高。相比于R-CNN算法,本文算法的準確率提高了5.9%,召回率提高了7.1%,單張識別時間減少了0.51秒/張。
本文提出了一種基于全卷積神經網絡和選擇性搜索算法的前車檢測方法。針對R-CNN算法提取精確率低、召回率低、檢測速率慢等問題,本文引入了全卷積神經網絡語義分割的粗定位的方法對其進行改進。相比于原有的R-CNN算法,本文算法在復雜交通環(huán)境下(如運動模糊、復雜的天氣)的前方車輛檢測具有更好的準確率、召回率和檢測速率。