王 暢 何愛生 山 巖 宋定波
(長安大學汽車學院 西安 710064)
我國85%左右的交通事故與駕駛人有關[1-2],而引發交通事故與駕駛人沒有準確、快速地做出決策密切相關,駕駛人決策失誤與駕駛人有限的信息獲取和處理能力有關[3].駕駛人沒有意識到潛在的危險車輛是造成交通事故的重要原因[4].高級輔助駕駛系統(advanced driver assistance system, ADAS)可以在一定程度上輔助駕駛人發現駕駛過程中的潛在危險車輛[5],或對車輛進行主動干預以避免交通事故[6].目前ADAS主要通過機器視覺和視覺傳感器來識別車輛,其中系統算法的識別精度和算法的實時性是車輛識別系統面臨的兩個主要挑戰[7].因此,設計一種識別精度高、實時性好的車輛識別方法,對于ADAS適應復雜多變的交通場景和實際在線車載應用具有重要意義.
目前,針對車輛識別的方法主要有:基于先驗知識的方法、基于運動信息的方法[8]、基于機器學習的方法[9].基于先驗知識的車輛識別方法提取車輛的幾何特征作為先驗知識來確定可能存在車輛的區域,車輛的幾何特征包括車輛的對稱性、邊緣特征,底部陰影等[10].Jazayeri等[11]利用車輛的對稱性和車輛底部的陰影識別出視頻中的車輛,并利用隱馬爾科夫模型將車輛從背景中分離出來.該方法的缺點在于僅通過單一的車輛幾何特征難以對車輛進行識別.基于運動信息的車輛識別方法中最具代表性的是光流法[12],但是該方法存在對光照條件敏感和抗噪聲干擾能力較弱等缺點.基于機器學習的車輛識別方法首先對車輛特征進行描述,然后利用機器學習的方法訓練樣本,如利用類Haar特征和改進的AdaBoost分類器[13]、利用HOG和SVM[14]設計識別算法.基于機器學習的車輛車別方法因其良好的魯棒性和高精度的識別率而被越來越廣泛的應用.
此外,國外部分研究人員也利用深度學習[15]的方法來設計車輛識別算法,其方法與基于機器學習的車輛識別方法類似,即需要對建立的模型進行訓練,但模型的訓練時間一般較機器學習的時間要長.
車輛識別的準確率和實時時性決定了系統工作的有效性,而現有的圖像匹配識別車輛算法需建立龐大的圖像庫,在連續識別時需對圖像庫內的圖像逐一進行比對,計算量很大,可能識別出車輛時,該車輛已經在場景中消失,這將直接導致算法失效.針對此種情況,建立有限的背景圖像庫,并對圖像進行編碼,建立相應的特征向量,利用相關向量機對車輛進行識別.在此基礎上,利用圖像灰度在邊緣處的方向導數的變化率進一步細化車輛輪廓,從而準確提取出車輛.
由于車輛在圖像中位置的不同以及車輛類型的差異,在建立車輛圖像庫時需要搜集大量典型的圖像作為模板,從而造成圖像庫的容量非常龐大,在進行圖像比對時,計算量大大增加,耗費時間長.
盡管車輛在同一場景中所處的位置不同,但是其背景基本相似,所以構建背景圖像庫可以大大縮小圖像庫的容量.因此,考慮建立單一的背景圖像庫.根據車輛在同一路段可能出現的狀態分布建立背景圖像庫.然而實際行駛過程中每個路段的車道數不盡相同,建立的圖像庫也應包含車道數目不同的路段圖片.保守考慮,建立的圖像庫中包含六個車道的路段圖像.在進行圖像比對時,僅需將車道線所圍成的區域進行比對,所以,車道線以外的背景對識別結果影響不大.
為減少計算量,對圖像庫中的圖像進行二進制編碼.單幅圖像的代碼由類型段和狀態段組成,類型段包含三個字符,狀態段包含6個字符.類型段的作用是確定圖像中的車道數目,狀態段的作用是確定圖像中車輛所在的車道.例如一幅圖像的代碼為101001000,其中101是類型段,十進制的值為5,表示該圖像中有五個車道;001000是狀態段,表示車輛處在第四個車道上(字符和車道的位置是對應的).
由于車道線具有明顯的灰度特征,所以利用Sobel算子[16]對圖像中的車道線進行提取,圖1的原始街道提取效果見圖2.由圖2可知,車道線被準確的提取出來,并將圖2中車道線所圍成的區域作為搜索區域.

圖1 原始車道

圖2 車道線提取
在進行圖像比對時,若逐一對每個像素點進行比對,不僅計算量大,而且很難保證精度.首先將圖像劃分成16×16的網格,然后對劃分后的網格建立特征向量.圖像的具體劃分過程見圖3.

圖3 網格劃分
由圖3可知,圖像大小的差異會導致每個網格包含的像素點數不一致.可以利用圖像中第1行、第1列和第16行、第16列的元素對圖像外沿進行擴充,從而保證每個網格內的像素點數目保持一致.
劃分網格后,計算每個網格內像素點灰度的均值,并設定閾值,將搜索域內各個網格內像素點灰度的均值與閾值進行比較,若大于閾值,則將該網格的屬性記為1,否則記為0.搜索域外的網格均置為0.通過分析不同閾值下相關向量機的分類準確率,最終確定的閾值為68,通過統計各個網格的類標簽來確定特征向量,特征向量的確定過程見表1.

表1 特征向量
統計所有行和列中網格標簽為1的數目,并將該數目作為特征向量的元素,則由表1得到的特征向量T為

利用同樣的方法可以確定圖像庫中基元的特征向量.
在確定了特征向量后,只需將原始圖像與圖像庫中的元素進行比對,就可以確定當前場景中是否存在車輛,利用相關向量機對車輛進行識別.

tn=y(xn;w)+ξn
(1)
式中:w為權重;y(xn;w)為相關向量機模型的輸出,其計算公式為
y(xn;w)=∑Ni=wik(xn,xi)+w0
(2)
其中:k(xn,xi)為核函數;ξn為滿足高斯分布的隨機噪聲,其數學期望為0,方差為σ2,是未知量,其值可通過訓練模型來確定.根據條件概率公式即可得到.
P(tn|w,σ2)=N(y(xi,wi),σ2)
(3)
在確定w和σ2時,若直接使用最大似然法,則結果中w的大部分元素為零,其稀疏特性較差,從而導致過學習,為避免此種情況,對w加上先決條件,即認為w是隨機分布在0附近的正態分布,即:
(4)
式中:αi為假定超參,于是通過式(4)可以將對w的求解轉化為對α的求解,當α趨近于無窮大時,w趨近于零.
通過求解特征向量的2范數,來確定場景中是否存在車輛.設原圖的特征向量為T,圖像庫中對應圖像的特征向量為T',則
(5)
式中:S0為閾值,若RVM的輸出為1則表示當前場景中有車輛存在,否則表示當前場景中沒有車輛存在.
通過特征向量元素所在的位置即可確定出車輛所包含的區域,該區域包含了一部分背景像素點,為剔除這些偽目標點,利用方向導數細化車輛輪廓.將像素坐標記為x,y,像素點灰度值記為z,從而構建擬合函數z=f(x,y).圖4為車輛區域灰度值的擬合結果.

圖4 灰度值擬合
由圖4可知,車輛區域中心的灰度值較小,而外沿部分的灰度值逐漸增大,且擬合效果良好.
在利用方向導數細化車輛的輪廓邊緣時,首先需要確定搜索方向.以車輛區域的中心點到各個邊緣點的方向作為搜索方向,通過求擬合函數z=f(x,y)的極值點得到車輛區域的中心點.方向導數細化車輛輪廓邊緣的過程見圖5.

圖5 細化邊緣
圖5中l為搜索方向,對于車輛輪廓邊緣的每個像素點,沿著相應的方向求擬合函數的方向導數.一般地,背景與車輛交匯處的灰度值的變化近似成高斯分布,由于通過相關向量機獲取的車輛區域大于車輛實際所占區域,則沿邊界點逆著圖5中的方向逐一搜索,通過設置終止搜索條件來確定最終的車輛輪廓.采用雙閾值作為限制條件,即方向導數閾值和閾值變化率,方向導數閾值主要是剔除過多的背景區域,閾值變化率主要是對邊緣處進一步細化,細化過程為

(6)
通過邊緣細化后,車輛的輪廓能夠被準確地提取出來,識別結果見圖6.

圖6 識別結果
由圖6可知,基于相關向量機和方向導數的算法能夠較為準確地提取車輛的輪廓.
在模型識別效果檢驗階段,共采集了不同道路環境下的圖片800幀,選取500幀作為模型的訓練集,300幀作為模型的測試集.文中算法共準確識別前車的幀數為273幀,總的識別準確率為91.0%.分析識別失誤的圖片,主要的原因在于目標車輛的特征不夠清晰,比如受到樹陰的影響,或者車輛與車輛、車輛與其他物體之間的遮擋,這對于圖像處理算法而言是較大的挑戰.
實際車載使用環境中,文中算法的優越性主要還體現在實時方面.相比于目前較流行的深度學習方法,研究的定位在于在線車載使用.在這種環境下,深度學習所需要的學習訓練時間、硬件配置需求均無法滿足.提出的算法能夠在普通嵌入式平臺中快速運行,適合于對實時要求較高的場合[19-20].
針對現有的圖像匹配技術需要建立龐大的圖像庫,以及對圖像灰度梯度依賴嚴重等問題,選用相關向量機和方向導數對車輛進行識別,并針對每一幅圖像建立相應的特征向量,依據特征向量的2范數確定當前場景中是否存在車輛以及車輛所處的位置.對所提取的區域灰度進行函數擬合,從而確定車輛區域中心,進而對邊緣各個像素點建立相應的方向導數,通過迭代搜索滿足雙閾值的邊界,實現對車輛輪廓邊緣的細化.模型的測試結果表明,該算法計算量小,圖像庫容量小,識別耗費時間短,且在車輛輪廓細化方面表現出更優異的性能.