楊傳江,曹景勝,袁增千,范博文
(遼寧工業大學 汽車與交通工程學院, 遼寧 錦州 121001)
近年來,迅猛發展的汽車工業給人們生活增添了諸多便捷,但隨之而來的道路交通問題也日漸凸顯,傳統機動車行駛過程中出現超速、酒駕等問題屢見不鮮,給人們出行安全帶來巨大隱患[1-3]。隨著人工智能領域的快速發展,解決汽車駕駛主動安全問題、有效減少交通事故的無人駕駛和智能網聯汽車成為了該領域內最有可能落地化和產業化的分支。在智能網聯汽車眾多關鍵技術中,道路前方車輛識別與跟蹤技術是其中研究熱點之一[4-6]。傳統的車輛檢測和識別方法主要有:基于毫米波雷達、超聲波雷達的聲波測距技術;基于車載激光雷達掃描的光傳感定位技術;將雷達數據融合進行環境感知和精確測距的方法等,但是激光雷達成本極高,實際應用困難;毫米波雷達對行人識別率低,并且開發周期長;超聲波雷達作用范圍有限,易受外界環境影響。
隨著圖像識別算法的深入發展和計算機數據處理速度提高,機器視覺開始在車輛檢測和識別方面表現出優勢。隨著硬件水平的提高和計算機算力的支持,越來越多的人探討深度學習算法的應用,主要包括一階段的YOLO系列和SSD算法,以及兩階段的R-CNN算法,程泊靜等[7]使用單目攝像頭基于YOLOv3實現前車實時檢測跟蹤。但是,深度學習算法需要極高的硬件成本和大量數據集進行訓練,對于部分研究者來說較為困難,因此,基于特征提取的統計學習方法依然有其優勢。曹景勝等[8]對類Haar特征提取并基于AdaBoost算法進行訓練和級聯,滿足多場景、多工況下的前車識別;徐鵬等[9]基于支持向量機(SVM)進行樣本分類,實現低能見度下車輛樣本分類。
正常行駛在道路上的汽車,其尾部與周圍環境相比,具有明顯的視覺形態,因此本文使用局部二值模式(local binary pattern,LBP)特征提取方法,改進算子提取方式,對提取到的特征值化、區域分塊、排序處理,然后結合支持向量機(support vector machine,SVM)分類方法,實現對前方車輛的識別與跟蹤。
在汽車上安裝攝像頭,用以替代駕駛員的視覺效果,是較早提出的一種駕駛輔助方案[10-12]。計算機視覺技術利用視頻采集設備(如CMOS或CDD攝像機)代替人的眼睛,將獲取到的信息傳遞給計算機,計算機代替人的大腦對“看到”的圖像進行分析處理,然后做出相應的反應。將計算機視覺技術應用到汽車安全系統中,能夠大大提高行駛的安全性[13-15]。
本文研究LBP特征提取算法應用于前車識別,進行圖像局部特征提取。LBP算法在人臉識別中應用廣泛、識別率高、成熟可靠。而一般汽車尾部設計與人臉類似,尾燈想象為人的眼睛,車牌類似于人的鼻子,后保險杠凹凸不平,看作人的嘴。因此采用LBP算法來識別前方車輛的車尾[16]。主要步驟為:
1) 由車載圖像獲取設備(攝像頭)進行前方道路車輛圖像采集,將原始圖像預處理后,提取圖像上劃分點的LBP特征值,將特征值統計為直方圖,進而歸一化為特征向量;
2) 將正負汽車樣本,經過以上步驟轉化,對SVM分類器進行訓練,將步驟1)中的結果導入訓練后的分類器,從而識別出前方車輛。前車識別原理如圖1所示。

圖1 前車識別原理框圖
一般拍攝設備獲取圖像時,周圍環境因素會對其產生影響,尤其是多云、傍晚、雨雪天氣等光照變化劇烈的情況。為了提高特征提取準確率,降低光照影響,將圖像感光區域進行修正(歸一化處理),為:
(1)
式中:IMGn(i,j)為圖像經過修正后的(i,j)處的像素值;IMG(i,j)為錄入圖像在(i,j)處的像素值;Vave為圖片區域內像素的平均值;M為像素點數目;xk為圖片區域內第k個點的像素值。
特征提取是基于灰度化的圖像,將彩色圖像進行灰度化處理,基于了紅、綠、藍三原色的加權平均值法,為:
Gray=R×0.299+G×0.587+B×0.144
(2)
這種方法處理后的圖像能基本體現原圖像特征,更符合人眼成像。
LBP算子在描述圖像局部特征方面的主要優點是:受光照影響較小,具有非0即1的局部二值特征,關于灰度變化魯棒性好;圖像信息旋轉不變特性,提取圖像特征更充分,在描述局部紋理特征方面更為準確。另外,LBP特征為整數特征,計算簡單,圖像分析速度快。隨著技術的進步,原始LBP算子不斷被改進,以應用于各種干擾強和情況復雜場景。白靈鴿等[17]介紹了原始LBP算法改進為圓形模式、旋轉不變模式過程,李旭輝[18]應用等價模式方法減少運算數據,宋艷萍等[19]應用MB-LBP算法提高特征提取的準確率。本文詳細介紹了LBP算法的改進歷程,并在最終選擇等價模式方法和MB-LBP算法相結合的特征提取方式,提高識別的速度和穩定性。
2.2.1原始LBP算子及公式
原始LBP算子首先選定一個3×3的鄰域,計算中心點和周圍8個點的灰度值,鄰域點分別與中心點比較,若鄰域點大記為1;若中心點大,則鄰域點記為0。這樣周圍像素點的值會產生一組8位二進制數,利用這組數表示中心點的像素。這8位數按照一定順序排列,共有256種可能。圖2是一種示例。

圖2 原始LBP算子示例
其推導公式為:
(3)
式中:(xc,yc)表示中心像素點位置;p是第p個點的像素;ic是區域中心點(xc,yc)的灰度值;ip為鄰域點按一定順序排列的第p個點的灰度值;s(x)是記錄比較結果的符號函數。
2.2.2圓形LBP算子
原始的LBP算子只是獲取周圍鄰域內的像素值,尺寸范圍較小,頻率也無法滿足。隨后有學者提出圓形LBP算子,這種算子可以將3×3鄰域擴展,不再局限于正方形區域,紋理特征適應性增強,并且帶來旋轉不變特性。圓形LBP算子半徑為R,在以半徑畫圓的鄰域上取N個點,同樣判斷大小,取值為0或1,采樣點數量可變。原理如圖3所示。

圖3 圓形LBP算子示例
給定中心點(xc,yc),可以確定周圍鄰域內的采樣點位置分別為p(xp,yp),計算方法如下:

(4)
式中:R表示采樣取值的半徑范圍;p表示采樣點所在位置,表示第p個采樣點;P表示采樣點總的個數。但計算結果不一定為整數,因此選取雙線性插值方法,計算公式為:

(5)
通過式(3)和式(4)獲得采樣點坐標,就可以找到該點灰度值,然后代入到式(2),求得基于圓形LBP特征的值。
2.2.3旋轉不變LBP特征
原始LBP算子轉換為圓形LBP算子后,灰度依然不變,計算精度大大增加,但當旋轉圖像后,LBP值跟著發生變化,為了避免重復,規定選取所有值中的最小數作為中心點的LBP值,如圖4所示。

圖4 旋轉不變LBP算子示例
2.2.4等價模式LBP特征
圓形LBP特征計算像素點值具有隨著采樣點數目增加,LBP算子模式指數級增加的缺點。將其應用于紋理特征提取、識別、分類時,大量數據不利于運行處理,想到對LBP模式的一種降維方法。
Ojala提出一種“等價模式(Uniform Pattern)”對二進制數組進行處理。規定二進制數組中由0到1或者由1到0視為一次跳變,當LBP特征數組有少于等于2次跳變時,稱這種數組為等價模式類。選取具有等價特征的LBP值作為計算值,總數就會減少為P(P-1)+2種,大大降低運算數據量,并且圖像信息不會丟失,可以保證識別的準確率。
2.2.5MB-LBP特征
一般情況下,基于等價模式LBP特征可以很好地實現對特征的提取,但對于準確率的更高追求使中國中科院學者提出更進一步的方法——MB-LBP,全稱為Multiscale Block LBP。原理如圖5所示。

圖5 MB-LBP算子示例
類似于HOG特征算法中cell的劃分方式,先將正方形大區域劃分為9個小區域,每個小區域中劃分3×3的區塊,取9個小區塊的平均灰度值作為一個小區域的灰度值,在整個大區域內使用等價模式LBP算法,就可以提取大區域中心點(小區域9號)的特征值。使用這種方法,在小區域內求平均值而不是直接計算LBP特征灰度值,可以大大減少運算時間。
在原始LBP特征提取的基礎上,使用MB-LBP方法原理提取到圖像特征灰度值,按照等價模式原理最終獲取中心點的特征值,這種方法使得特征提取更加準確、清晰。原圖和特征提取如圖6和圖7所示。

圖6 拍攝原圖

圖7 特征提取結果示例
圖片處理及特征提取步驟如下:
1) 輸入256×256維像素的圖像,進行灰度化處理,然后搜索圖中每個像素點,得到對應像素點的灰度值;
2) 使用MB-LBP方法和等價模式原理提取每個區域中心點的特征值;
3) 將LBP特征圖像劃分為8×8共64區域,分別統計每個區域的特征直方圖;
4) 將特征直方圖歸一化,按照上一步分塊直方圖各自的空間順序依次排列特征值,組合為整張圖片的LBP特征值圖譜;
5) 最后,就可以將得到的特征圖譜導入SVM分類器進行訓練或識別了。
支持向量機(SVM)[20]是利用監督學習方式,通過計算將數據按特征分為2種類型,是定義在空間上的一種間隔最大特征分類器,是統計學習理論的延伸應用。當給定一個訓練樣本集:
D={(x1,y1),(x2,y2),…,(xm,ym)},
yi∈{-1,+1}
SVM分類學習的思想是用超平面將樣本空間劃分,使得樣本盡可能被區分開。可以找到許多符合要求的超平面(如圖8),但紅線距離兩側數據間隔最大,可以盡量避免樣本訓練集數據的噪聲,同時對樣本局限性抗干擾能力較強,所以中間那一條紅線抗“擾動”性最好。

圖8 SVM分類原理示意圖
將正負樣本導入SVM分類器中,分類器會自動識別并且找到一個超平面,使得抗擾動性最好,這決定了識別的成功率。在樣本空間中,如下線性方程是劃分超平面最好的分界:
ωTx+b=f(x)
(6)
式中:ω=(ω1,ω2,…,ωd)為法向量;b為位移。
由式(6)可得樣本所在空間中,任何一點x到超平面(ω,b)的間距為:

(7)
假設分類器能夠正確分類樣本,則:
(8)
使式(8)等號成立的采樣點稱為“支持向量”,若2個采樣點分屬超平面兩側,被稱為“異類支持向量”,2個異類支持向量到超平面距離之和為:

(9)
稱為間隔。
找到“最大的間隔”,即式(9)中γ最大值,就能夠精確分類,即:
(10)
s.t.yi(ωTxi+b)≥1,i=1,2,…,m表示最大間隔之外的部分。
顯然,當間隔最大時||ω||最小,式(10)可以寫為:
(11)
這就是支持向量機的基本型。
目標函數的約束條件是不等式,在數學角度變為求解二次規劃問題,選用KKT(karush-kuhn-tucker)條件得到原來問題的對偶問題。
將拉格朗日乘子αi≥0加入到每個約束條件中,即得到:

(12)

最終目標函數表示為:

(13)
對式(13)中ω,b求最小值,在對α求最大值,就能求得SVM的最優超平面。
本文中SVM分類器的主要作用是訓練汽車圖片正負樣本,因此其準確率與樣本集中的支持向量有關,差異越大,最優超平面的分類越準確。
對研究的內容進行測試和分析,選用的硬件平臺為CPU:Intel CORE i7-4790K處理器,內存:16G;軟件平臺為:在Ubuntu 14.04 操作系統之上運行QT5.5和OpenCV 3.1版本的計算機視覺和機器學習軟件庫。在訓練分類器時,選用5 358張不同種類和外形的汽車后視圖片,作為正樣本輸入;同時選用5 260張非汽車圖片,作為負樣本輸入。
針對樣本集,輸入256×256維像素的圖像,然后用原始LBP算子、MB-LBP和等價模式算子分別提取特征,并對整張圖像進行分塊處理,采取3種方案:即劃分成32×32的區域,得到8×8像素的樣本窗口;劃分為16×16的區域,得到16×16像素的樣本窗口;劃分為8×8的區域,得到32×32像素的樣本窗口,然后分別選用8×8、16×16、32×32等不同的樣本窗口大小進行測試,測試結果如表1所示。

表1 不同樣本窗口大小下識別率
通過測試可以分析出,本實驗輸入原始256×256維像素的圖像,選用窗口大小為32×32像素,并且使用MB-LBP和等價模式算子提取特征,得到的識別效果最好。
基于在京沈高速錄取的實時行車視頻,截取車速為70、90、110 km/h時的原始圖像,進行算法測試,得到的結果如圖9—11所示。

圖9 70 km/h工況下的前車識別圖像

圖10 90 km/h工況下的前車識別圖像

圖11 110 km/h工況下的前車識別圖像
圖9—11為截取的不同車速下前車識別圖像,分析實驗結果,得知:在右側車道行駛時,由于車速最低、圖像清晰、與前車距離近,因此識別效率高、識別時間短;在中間車道較高速行駛時,識別時間增加,距離較遠的車輛圖像模糊無法識別;在左側車道最高速行駛時,識別時間最長,甚至出現識別遺漏現象。
針對上述表現,統計了不同車速下的識別的平均準確率,即:某一大致車速下,前車圖像正確識別的幀數之和與整段視頻總幀數的比。不同車速下平均準確率如表2所示。

表2 不同車速下平均準確率
通過對比不同車速下算法識別的準確率和識別時間,其結果與理論預測相符合,在不同車速工況下,均可以實現較好的檢測結果。
前車識別方法種類繁多,一般情況下,YOLO系列算法識別速度快,傳統特征提取算法準確率高。將本文方法與YOLOv3方法(利用開源代碼,自己訓練,得到檢測識別結果)、類Haar特征+Adaboost[8]方法識別結果進行對比,對比參數主要包括2個方面:每秒幀數(frames per second, FPS)表示計算機每秒處理圖像的幀數;平均精度(average precision,AP)表示根據不同車速,以10 km/h為一個區間,分別計算汽車在60~120 km/h車速內,每個區間的圖像識別的平均準確率,然后所有區間內的平均準確率加和求均值,稱為平均精度。不同檢測方法識別結果如表3所示。

表3 不同檢測方法識別結果
通過對比可以看到,YOLOv3算法識別圖像用時短,可以實現實時識別,但識別率不高,本文研究的方法每秒運行幀數未達到實時識別標準,但平均精度和效率,較類Haar特征+Adaboost算法都有所提高,基本滿足不同速度下的前車識別。
汽車智能化是科技進步的高端產物,前車識別技術則是智能汽車實現自動行走的眼睛。當前前車識別主要依賴于機器視覺算法,而基于神經網絡的深度學習目標檢測方法引起熱潮,其檢測的速度和精度是建立于大量目標數據集和較高硬件配置的基礎之上,應用相對困難,而基于特征的統計分類方法,對軟硬件要求低,且能夠達到實時檢測的目的,實用性強。另外,本文使用的LBP算法對光照有很強的魯棒性,因此只考慮了不同車速情況的平均識別精度,沒有考慮天氣、光照的影響。實驗測試結果表明,本文提出的方法滿足前車識別的基本需求。另外,進一步研究晴天、多云、雨雪、深夜路燈等不同光照環境下的識別結果具有廣闊應用前景。