范博文,段 敏
(遼寧工業(yè)大學 汽車與交通工程學院, 遼寧 錦州 121000)
車輛行駛安全性是汽車領(lǐng)域的重要研究內(nèi)容,而汽車駕駛輔助系統(tǒng)是智能駕駛汽車安全性的關(guān)鍵落地點。對前方車輛的檢測識別是為了減少汽車碰撞、提高主動安全性,是汽車駕駛輔助系統(tǒng)中不可或缺的技術(shù)。
隨著機器學習的崛起和計算機視覺檢測識別算法的發(fā)展,處理器對圖像的處理速度與準確率在不斷提高,基于計算機視覺技術(shù)的檢測識別算法的開發(fā)成為了主流趨勢。黃鶴等[1]研究的算法能夠有效降低光照和陰影等環(huán)境因素對預(yù)處理效果的影響,相比傳統(tǒng)預(yù)處理方法檢測精度更高,自適應(yīng)性、檢測準確性更優(yōu)。張強[2]對圖像進行去噪后采用方向直方圖進行特征提取,在訓練集中融入YCrCb顏色空間直方圖與空間分塊顏色圖,提高了前車識別準確率。陳勇[3]運用優(yōu)化算法對前車進行識別,但對陰雨天等能見度低的場景識別較差。余小角等[4]基于Haar特征提取,采用自適應(yīng)算法進行圖像特征融合,有效避免了雨天環(huán)境的干擾,使識別更加快速準確。徐鵬等[5]使用支持向量機(support vector machine,SVM)對前車低能度情景進行前車識別,但未將十字路口、車輛轉(zhuǎn)彎等復(fù)雜路況作為重點研究?;趯VM的研究情況,本文中主要提高前車檢測識別原始圖像的準確率和速率,對原始圖像預(yù)處理后進行HOG特征提取,在此基礎(chǔ)上運用模糊支持向量機(fuzzy support vector machine,F(xiàn)SVM)算法對其進行正樣本和負樣本的訓練。對給定不同訓練樣本時賦予的隸屬度,利用核函數(shù)解決高維數(shù)問題得出決策函數(shù)進行分類;然后利用Opencv3.1計算機視覺平臺軟件和機器學習軟件庫在Visual Studio集成開發(fā)環(huán)境中對車載攝像機采集的原始圖像來進行檢測識別,完成對不同場景和工況下的實際應(yīng)用。
在汽車輔助駕駛技術(shù)的研究發(fā)展中,有許多與前車識別相關(guān)的應(yīng)用案列。例如,疲勞預(yù)警系統(tǒng)[6]是采用攝像頭來代替人眼的視覺作用,通過將采集的數(shù)字圖像特征進行識別判斷,達到預(yù)警值時發(fā)出報警聲,使駕駛?cè)藛T清醒,以此來使汽車安全性得到提高。然而本文研究方法也是通過安裝在汽車上的單目攝像頭進行實時的路況拍攝,將所拍攝的每幀圖像進行識別并標出,以此來達到前車識別與檢測。而HOG是一種基于在計算機視覺中,用于進行目標檢測、目標跟蹤的特征描述子,主要核心的思想是通過對處理后的圖像進行窗口化、梯度計算、cell梯度計算和塊內(nèi)歸一化,最后統(tǒng)計出HOG特征向量,部分抵消了光照顏色對圖像的影響。
在前方車輛檢測的過程中,由于光照因素和采集設(shè)備的影響會對圖像造成很大干擾,為此先將圖像進行預(yù)處理,消除圖像中無關(guān)緊要的信息。首先進行圖像灰度化處理,由于人類的視覺對于顏色的敏感度不一樣,因此在RGB模型里如果R=G=B則表示一種灰度顏色,所對應(yīng)的這個值叫做灰度值,但是等量的紅、綠、藍混合后并不能得到預(yù)想亮度相同時所對應(yīng)的灰度值。經(jīng)過大量實驗研究發(fā)現(xiàn),按照0.3份的紅色、0.59份綠色、0.11份藍色的配比混合在一起后可以得到符合人類視覺效果的灰度值,如式(1)所示。
灰度值=(0.3R)+(0.59G)+(0.11B)
(1)
式(1)中,R表示紅色,G表示綠色,B表示藍色。計算出當前的灰度值即為RGB圖像中彩色像素所對應(yīng)的灰度值。經(jīng)過算法對圖像進行預(yù)處理,實現(xiàn)后得到的效果見圖1-2。
圖1 原始圖像
圖2 灰度化圖像
首先需要選擇一個灰度閾值,由于閾值的大小決定后續(xù)邊緣檢測效果的好壞,選擇的閾值過小會造成邊緣檢測時出現(xiàn)的多余信息造成一些邊緣點不能被檢測到,選擇的閾值過大會造成一些邊緣點不能被檢測到,所以閾值確定是圖像二值化的關(guān)鍵問題。采用基于概率的閾值選擇法來區(qū)分目標與背景,將閾值選擇為灰度背景分布的中間值。將圖像中所計算出的灰度值與該灰度閾值進行比較,如果比較的結(jié)果小于該灰度閾值,則將該圖像的灰度值設(shè)置為0,反之則設(shè)置為255,如圖3所示。
圖3 圖像二值化
由上述結(jié)果可以看出,經(jīng)過二值化處理后的圖像輪廓不夠清晰、邊緣模糊,造成圖像特征提取和識別的難度增加。為解決這種圖像質(zhì)量問題需要進一步加強圖像邊緣,采用空間域的算法進行圖像邊緣增強。處理后的效果如圖4所示。
圖4 圖像邊緣增強
對預(yù)處理后的圖像進行Gamma規(guī)范化處理,通過壓縮處理解決圖像中光照因素的影響,壓縮公式如式(2)所示。
I輸出(x,y)=I輸入(x,y)gamma
(2)
式中:I(x,y)為圖像灰度值,指數(shù)gamma>1表示灰度圖像暗區(qū)域被壓縮,整體圖像變暗;指數(shù)gamma<1表示灰度圖像暗區(qū)域被拉伸,整體圖像變亮。
1.4.1圖像梯度的計算
進行圖像橫坐標和縱坐標方向梯度的計算,相繼計算出各個像素點位置的梯度方向值。在圖像的(x,y)位置,計算圖像梯度。圖像中像素點(x,y)的梯度為:
Gx(x,y)=H(x+1,y)-H(x-1,y)
Gy(x,y)=H(x,y+1)-H(x,y-1)
(3)
式中:Gx(x,y)、Gy(x,y)分別為圖像中像素點的水平梯度值和垂直梯度值;H(x,y)為圖像灰度值;像素點(x,y)的梯度幅值G(x,y)和梯度α(x,y)分別見式(4)和式(5)。
(4)
(5)
1.4.2為細胞構(gòu)建梯度方向直方圖
首先將圖像分成若干個“單元格細胞”,比如每個細胞為36個像素。由于采用九通道得到的檢測結(jié)果是最好的,所以使用九通道來進行像素統(tǒng)計。細胞的梯度方向是360°,使用9通道把360°分成9個方向塊,如圖5所示。如果這個像素的梯度方向是40°~ 60°,順次加1,通過對細胞內(nèi)每個像素用梯度方向在直方圖中映射到固定的角度范圍,就可以得到這個細胞的梯度方向直方圖,即該細胞對應(yīng)的9維特征向量。
圖5 劃分方向塊示意圖
1.4.3塊(block)內(nèi)歸一化梯度直方圖
按上述過程構(gòu)建完梯度直方圖,由多個細胞單元組在一起成為塊(block)。不同的block每次滑移1個細胞單元的距離,也可以重疊滑移。為了使特征向量空間對光照,陰影和邊緣變化具有魯棒性,需要使block進行標準化,這樣可以避免直方圖不受光線的影響。歸一化為:
(6)
式中:v表示塊(block)未歸一化的特征向量;τ是避免分母為0的很小的常數(shù);Q表示塊內(nèi)歸一化后的結(jié)果。
在機器學習識別領(lǐng)域,SVM作為常用的學習算法對預(yù)測模型進行有效訓練和分類。但是SVM仍然有許多理論上的局限,比如當數(shù)據(jù)量非常大的時候訓練速度比較慢而且不容易降噪,一般的SVM[7-9]分配給每個訓練樣本的屬性只能是正樣本和負樣本,主要針對二分類問題。由于方向梯度直方圖本身屬于一種邊緣特征,只關(guān)注物體的邊緣形狀,加上本身就是梯度這個性質(zhì)造成了對噪聲非常敏感,導(dǎo)致訓練樣本集進行訓練時識別結(jié)果不夠精準。
在實際訓練中這些樣本也非常重要,針對這一問題FSVM算法基于傳統(tǒng)SVM通過給每一個樣本點都賦予一個隸屬值,使得不同的訓練樣本在對最優(yōu)分類決策面的訓練起到了不同的作用,同時降低了噪聲對最優(yōu)決策面的影響,尤其對分類精度有所提高,使車輛在行駛過程中更好的檢測與識別前方車輛。實現(xiàn)FSVM算法的具體步驟如下:
假設(shè)S={xi,yi,si},i=1,2,…,l,xi∈RN是訓練樣本點屬于整個空間,yi∈{-1,1}是訓練樣本的類別屬性,Si∈(0,1],Si是模糊度變量,它表示訓練樣本點xi隸屬于類別屬性yi的程度。由于FSVM算法與SVM算法都是在尋找一個最優(yōu)化分類超平面,因此優(yōu)化問題轉(zhuǎn)化為:
(7)
其中:ξi為松弛變量,前面C越小,懲罰就越??;Siξi相當于對分類誤差分配了不同的權(quán)重,它越小表示被分到錯誤的可能性就越小,而正確的可能性就越大;C是一個常量,(w,b)為分類決策超平面參數(shù)。由式(7)可以看出,當Si越小,松弛變量在最優(yōu)化過程中起到的作用也越小,因此訓練時的訓練樣本xi所起到的作用也越小。為了解決該優(yōu)化問題,構(gòu)建拉格朗日函數(shù)如下:
(8)
令L(w,b,ξ,a,β)對w、b、ξi分別求導(dǎo),使其梯度降為0,參數(shù)需要滿足的條件如下:
(9)
(10)
(11)
將上述得到的條件代入式(8)中,由此將優(yōu)化問題進行二次規(guī)劃,從而得出優(yōu)化后的對偶形式為
(12)
式中,核函數(shù)K(xi,yj)用來衡量2個數(shù)據(jù)的相似性,本文選擇徑向基函數(shù)φ(xi)Tφ(xj)作為算法核函數(shù)。因為徑向基函數(shù)可以將提取的樣本空間從一維空間映射到無窮維空間,對于本文研究時所得到的任意一組正負樣本都能找到一種將樣本值映射到高維空間的高維映射,而且在這個高維空間里正負樣本都是線性可分的。yiai指不同數(shù)據(jù)點的權(quán)重不同,不同的類別權(quán)重也不同,式(12)也滿足約束條件方程:
(13)
(14)
對應(yīng)的也得到?jīng)Q策函數(shù):
(15)
模糊度變量表示預(yù)測值與實際值的相近程度,在研究中要根據(jù)實際情況對其進行合理選擇?;诒疚难芯?,假設(shè)給定一個訓練樣本集合M={Nq,Pq,Sq},q=1,2,…,n,將訓練樣本用圓包裹起來,而圓的半徑則表示訓練樣本集的疏密程度。假設(shè)正樣本與負樣本分別為E+、E-,N+為正樣本集的中心,N-為負樣本集的中心,由此可知圓內(nèi)正樣本點到圓心距離最大為:
t+=max‖N+-Ni‖,Ni∈E+
(16)
圓內(nèi)負樣本點到圓心距離最大為:
t-=max‖N--Ni‖,Ni∈E-
(17)
因此,可知第q類樣本的模糊度變量為
(18)
對研究內(nèi)容進行實車實驗驗證。實驗設(shè)備為Intel CORE i7-4790K處理器,內(nèi)存為16 G的硬件設(shè)備。軟件設(shè)備為64位win10系統(tǒng),并在Opencv 3.1版計算機視覺平臺的集成開發(fā)環(huán)境配置下,使用C語言將理論算法變?yōu)橛嬎銠C語言實現(xiàn)測試。
首先進行識別驗證。車輛行駛時通過車載攝像機對前方路面進行圖像采集,對圖像預(yù)處理后進行方向梯度直方圖特征提??;其次進行訓練過程,在海量特征中選取關(guān)鍵識別特征,將其輸入FSVM中用最優(yōu)決策分類面的訓練對特征量進行分類處理;最終識別出圖像中的前方車輛并將其用矩形框標出,從而對前車進行識別。識別流程如圖6所示。
圖6 前車識別流程框圖
根據(jù)實車效果測試,實驗中選取1 231張不同種類和顏色的后視車輛樣本作為正樣本,1 697張非汽車樣本,如汽車行駛過程中的樓房、交通標志和路兩側(cè)的綠化帶等作為負樣本。實驗時隨機抽取不同幀數(shù)下的圖像,如圖7—10所示。
圖7 第80幀圖像
圖8 第435幀圖像
圖9 第850幀圖像
圖10 第1510幀圖像
從上述識別結(jié)果來看,車輛在城市道路中行駛時能見度并不高,在十字路口或者轉(zhuǎn)彎等環(huán)境錯綜復(fù)雜的情況下,車輛距離很短且緊貼在一起,甚至出現(xiàn)兩車并排重合的情況,增加了識別的難度。但新識別系統(tǒng)不僅解決了能見度低情況下的識別難題,也排除了復(fù)雜環(huán)境及非車輛樣本的影響,表明該算法能夠有效對前方車輛進行識別。
對本文算法與其他不同的算法進行統(tǒng)計,結(jié)果如表1所示。表1中的平均每幀耗時計算方法是取200幀不同的視頻圖像,舍去圖像中最高的平均每幀耗時與最低的平均每幀耗時,求剩下的198幀視頻圖像的平均每幀耗時。
表1 不同檢測方法的檢測結(jié)果
由表1可以看出,Haar與Adaboost的結(jié)合方法平均耗時最長,本文算法的耗時較好,但在模糊支持向量機算法中靠近分類邊緣的支持向量機會決定分類決策面,這種分類方法不能將部分特殊的樣本從其他樣本中有效區(qū)分出來。如圖11所示,V表示相鄰2個樣本之間的距離,假設(shè)左圖中a點與右圖中b點在考慮樣本疏密度的情況下,a、b兩點到樣本中心距相等,即在式(18)中可知兩點模糊度變量相同,而a點可能是特殊樣本也可能是正常樣本,同理,b點也是一樣,因此模糊度變量用點到樣本中心距來確定仍存在缺陷,影響模糊支持向量機算法的準確性,使本文算法準確率的提高比較有限,但整體達到了較理想的實車識別效果。同時,本文算法對硬件要求不高,成本很低。
圖11 不同樣本疏密度示意圖
HOG特征與模糊支持向量機算法不僅提高了汽車識別的準確率,也提高了速率,在陰天時也有較好的識別效果,為汽車駕駛輔助系統(tǒng)提供了更好保障。在今后的研究中將對算法的模糊度變量進行優(yōu)化,以此提高霧天等能見度低時工況下的識別準確率和速率,使汽車的實時識別性更優(yōu),便于未來廣泛普及到實際應(yīng)用中。