黎向鋒, 趙偉康, 豆心愿2, 李 堃, 左敦穩(wěn)
(1.南京航空航天大學(xué) 機(jī)電學(xué)院,江蘇 南京 210002; 2.吉林大學(xué) 汽車工程學(xué)院,吉林 長(zhǎng)春 130000)
隨著經(jīng)濟(jì)的不斷發(fā)展,生產(chǎn)力的大幅提高,國(guó)內(nèi)汽車的產(chǎn)量和銷量均穩(wěn)定增長(zhǎng)。汽車作為代步工具給人們的出行帶來了極大便利,但也帶來了諸多棘手的難題,譬如交通事故、堵塞等[1]。先進(jìn)輔助駕駛系統(tǒng)(Advanced Driver Assistant System,ADAS)能夠在發(fā)生危險(xiǎn)前發(fā)出警報(bào),保證駕駛安全,因而變得越來越重要,其發(fā)展勢(shì)頭迅猛。車輛檢測(cè)是ADAS的重要組成部分,引起了越來越多的國(guó)內(nèi)外學(xué)者的關(guān)注。
利用單目視覺技術(shù)進(jìn)行車輛檢測(cè),成本低廉,因此應(yīng)用十分廣泛,通??煞譃?類:① 基于車輛特征的方法,如任薇[2]根據(jù)車底陰影特征,使用高斯混合模型對(duì)圖像聚類,使用模型中的均值和方差自適應(yīng)提取車底陰影與路面交線,經(jīng)過濾波合并檢測(cè)到車輛,該方法實(shí)時(shí)性好,但受光照影響大,魯棒性差;② 基于模板匹配的方法,如李璟[3]對(duì)目標(biāo)分塊提取Hog特征值,并對(duì)每個(gè)分塊賦予不同權(quán)值,計(jì)算與模板相關(guān)性最大的區(qū)域作為目標(biāo),該算法魯棒性好,但計(jì)算量大,實(shí)時(shí)性低;③ 基于機(jī)器學(xué)習(xí)的方法[3],該算法實(shí)時(shí)性好,魯棒性高,是近年來研究的熱點(diǎn),如王蕾[4]利用角點(diǎn)檢測(cè)算法找出ROI,提取射影不變量特征,使用樸素貝葉斯分類器找到目標(biāo),算法實(shí)時(shí)性好,但容易受外界環(huán)境影響,導(dǎo)致分類器的檢測(cè)率不高;劉公俊[5]先通過圖像處理找出存在車底陰影可能存在的感興趣區(qū)域,使用離線訓(xùn)練的分類器檢測(cè)該區(qū)域,找到目標(biāo),該算法速度快,受外界環(huán)境(光照、雨雪和天氣)影響大,產(chǎn)生漏檢。因此,通過對(duì)AdaBoost+Haar算法的訓(xùn)練和檢測(cè)方式進(jìn)行改進(jìn),提高了檢測(cè)率和檢測(cè)速度,降低了虛警。
在AdaBoost算法中,通常是訓(xùn)練多個(gè)強(qiáng)分類器串聯(lián)形成一個(gè)級(jí)聯(lián)分類器[6]。一般而言,分類器前面幾級(jí)中包含的弱分類器數(shù)量較少,復(fù)雜度低,可用來區(qū)分與目標(biāo)差別大的對(duì)象。越往后,強(qiáng)分類器包含的弱分類器個(gè)數(shù)會(huì)逐漸增多,復(fù)雜度高,可用來區(qū)分與目標(biāo)相似的對(duì)象。待檢測(cè)樣本若未通過強(qiáng)分類器則直接丟棄,直至通過所有強(qiáng)分類器,樣本才會(huì)被判斷為目標(biāo)。該方法相較于其他的檢測(cè)算法,計(jì)算量小,檢測(cè)率高,但仍不能滿足實(shí)時(shí)性的要求。
在圖像中,道路與天空占據(jù)了圖像大部分區(qū)域,且一般是純色塊,定義為簡(jiǎn)單樣本,將剩下負(fù)樣本定義為復(fù)雜樣本,復(fù)雜樣本的紋理復(fù)雜、顏色多樣,一般多為樹木、房屋等。對(duì)負(fù)樣本進(jìn)行分類,使用正樣本和簡(jiǎn)單負(fù)樣本訓(xùn)練一個(gè)只包含6個(gè)強(qiáng)分類器的分類器C1,同時(shí)用一個(gè)同樣數(shù)量的正樣本和未分類的負(fù)樣本訓(xùn)練一個(gè)只包含6個(gè)強(qiáng)分類器C2。
圖1 分類器檢測(cè)效果
如圖1(a)所示,使用C1檢測(cè)的目標(biāo)窗口集中在了車的前端蓋板上和道路上有車以及道路欄桿的部分,車子前蓋和有車區(qū)域之間明顯存在一個(gè)無目標(biāo)帶,純路面和天空區(qū)域已經(jīng)幾乎全部過濾掉了。圖1(b)中,使用C2檢測(cè)的目標(biāo)窗口大部分都集中在車區(qū)域的前端蓋板上和道路上有車區(qū)域,但仍有部分檢測(cè)窗口存在天空和無目標(biāo)道路區(qū)域。因此C1檢測(cè)結(jié)果比C2更集中,區(qū)域更小,數(shù)量也更少。
基于此本文構(gòu)造一種新的強(qiáng)分類器級(jí)聯(lián)方案,其結(jié)構(gòu)如圖2所示。首先由正樣本和簡(jiǎn)單負(fù)樣本訓(xùn)練出一個(gè)能夠過濾圖像中的道路天空區(qū)域的分類器,接著在后面級(jí)聯(lián)上由復(fù)雜負(fù)樣本訓(xùn)練出來的一個(gè)分類器。這樣分類器的結(jié)構(gòu)先簡(jiǎn)單后復(fù)雜,使用這個(gè)分類器進(jìn)行目標(biāo)檢測(cè)的時(shí)候,在分類器的前幾級(jí)就會(huì)過濾掉圖像中的道路及天空等大部分的純色簡(jiǎn)單區(qū)域,提高效率。
圖2 分類器級(jí)聯(lián)結(jié)構(gòu)圖
AdaBoost+Haar檢測(cè)算法的檢測(cè)率高,但由于需要檢測(cè)的窗口數(shù)量大,降低了檢測(cè)算法的效率,無法達(dá)到實(shí)時(shí)性的要求。
檢測(cè)算法的檢測(cè)流程是多尺度、從左上到右下遍歷整幅圖像。在天空區(qū)域,由于沒有檢測(cè)目標(biāo),檢測(cè)算法浪費(fèi)了近一半的時(shí)間,而且還可能存在虛警。在路面區(qū)域車輛是近大遠(yuǎn)小的,因此,與本車實(shí)際距離較近的車不需要用小尺度的檢測(cè)窗口去檢測(cè)目標(biāo),同理,在與本車實(shí)際距離遠(yuǎn)的區(qū)域也無需用大尺度的窗口去檢測(cè)。因此可以得出結(jié)論,檢測(cè)算法有大量的時(shí)間浪費(fèi)在了非目標(biāo)檢測(cè)區(qū)域和多余尺度上。
本文提出一種根據(jù)車寬度調(diào)整檢測(cè)框?qū)挾鹊乃惴āT撍惴ɡ媚嫱敢曌儞Q算法[7]標(biāo)定法將圖像坐標(biāo)與世界坐標(biāo)系的路平面建立一對(duì)一的映射關(guān)系。根據(jù)車的寬度算出檢測(cè)窗口的邊長(zhǎng)范圍來過濾檢測(cè)窗口數(shù)量,提高效率。
本文把地平線以下區(qū)域作為感興趣區(qū)域。由于透視變換的關(guān)系,在世界坐標(biāo)系中兩條車道線在無窮遠(yuǎn)處相交。過這個(gè)點(diǎn)的水平線即是實(shí)際世界坐標(biāo)系中的無窮遠(yuǎn)處,是天空和路面的分界線,也就是地平線。由郭磊[8]等人推導(dǎo)出來的圖像坐標(biāo)中yp與世界坐標(biāo)的YP關(guān)系如下:
(1)
式中,H為圖像的高度;α0與γ0分別為攝像頭鏡頭的垂直視野角和俯仰角。
安裝在汽車上的攝像頭經(jīng)過標(biāo)定后,世界坐標(biāo)系中的道路平面和圖像坐標(biāo)系一一對(duì)應(yīng)。本文車寬匹配算法將左下角點(diǎn)作為起點(diǎn),由左至右、由下至上遍歷整個(gè)圖像,相較于傳統(tǒng)滑窗算法以頂邊為基準(zhǔn)放大窗口,本文將底邊將作為參考邊,該參考邊同時(shí)也是汽車和路面的接觸區(qū)域且與汽車寬度一致,可根據(jù)汽車寬度使用逆透視變換算法計(jì)算檢測(cè)窗口寬度范圍,過濾多余尺度的檢測(cè)窗口。根據(jù)GB 1589-2016[9]車輛寬度極限值為2.55 m,取轎車寬度為1.6~2.5 m,如圖3所示。程序檢測(cè)時(shí),由車輛復(fù)雜寬度W的范圍確定圖像中不同行r檢測(cè)框底邊w的范圍,這樣可以根據(jù)車的寬度來自適應(yīng)調(diào)整檢測(cè)窗口的大小,減少了超過一半的候選檢測(cè)框的個(gè)數(shù),在保證檢測(cè)率的同時(shí)極大地提高了檢測(cè)效率。
圖3 車寬匹配算法
所提出的自適應(yīng)車輛檢測(cè)算法先確立地平線,然后根據(jù)車的寬度范圍自適應(yīng)地調(diào)整圖像中不同行的檢測(cè)框范圍,具體算法如圖4所示。
圖4 檢測(cè)順序圖
圖5為經(jīng)逆透視變換得到的,靠里的兩條綠線代表的車寬是1.6 m,靠外的兩條黃線代表的車寬是2.5 m,圖像檢測(cè)窗口在不同行的尺寸見表1所示,可以看出通過寬度濾波,改進(jìn)的算法檢測(cè)窗口數(shù)量是傳統(tǒng)算法的0.26倍,可過濾大量的無關(guān)窗口。
利用C++編程語(yǔ)言,基于Visual Studio 2010開發(fā)平臺(tái),所用的計(jì)算機(jī)為64位Windows系統(tǒng),4.00 GB內(nèi)存,雙核四核心2.5 GHz處理器。本文訓(xùn)練的正樣本9285張,負(fù)樣本57000張,其中簡(jiǎn)單負(fù)樣本34652張,復(fù)雜負(fù)樣本21048張,歸一化尺寸24×24,Haar特征類型為CORE。使用如下兩種方案,訓(xùn)練出對(duì)應(yīng)的分類器:① 分類器C3,直接由正樣本和未分類的負(fù)樣本訓(xùn)練一個(gè)共有26個(gè)強(qiáng)分類器級(jí)聯(lián)的分類器;② 改進(jìn)的分類器C4,訓(xùn)練一個(gè)共有24個(gè)強(qiáng)分類器級(jí)聯(lián)的分類器。其中前6級(jí)由正樣本和簡(jiǎn)單樣本訓(xùn)練,后18級(jí)由正樣本和復(fù)雜樣本訓(xùn)練。
圖5 逆透視變換圖
行數(shù)傳統(tǒng)檢測(cè)窗口改進(jìn)算法檢測(cè)窗口范圍55024~160110~16053024~160100~14051024~16088~12449024~16076~10847024~16066~9545024~16054~80
使用傳統(tǒng)算法在進(jìn)行訓(xùn)練分類器C3、實(shí)際訓(xùn)練到14級(jí)時(shí),弱分類器個(gè)數(shù)已經(jīng)超過622個(gè),已經(jīng)發(fā)散。由圖6的ROC曲線可知在相同的誤檢率情況下,改進(jìn)的分類器C4比C3檢測(cè)率更高,說明改進(jìn)的分類器的泛化性能更強(qiáng)。
圖6 分類器C3、C4 ROC曲線圖
為了客觀高效地評(píng)價(jià)改進(jìn)訓(xùn)練方法的分類器的泛化性能和檢測(cè)的效率,本文使用的是KITTI[10]、BenchMark Dateset[11]數(shù)據(jù)集以及自己收集的圖片,隨機(jī)挑選,一共500張,共有車輛目標(biāo)1788個(gè)。分3種方式進(jìn)行測(cè)試:① 使用分類器C3+滑窗檢測(cè);② 使用分類器C4+滑窗檢測(cè);③ 使用分類器C4+本文車寬匹配算法檢測(cè),結(jié)果如表2所示。
表2 檢測(cè)結(jié)果統(tǒng)計(jì)
從圖7中可以看出,改進(jìn)的算法能夠在光照復(fù)雜的場(chǎng)景下檢測(cè)到多個(gè)目標(biāo),魯棒性好,檢測(cè)穩(wěn)定。由表2的方式1和方式2,明顯看出使用C4比C3的檢測(cè)率更高,效率也提高了30%,這主要是由于,C3未對(duì)負(fù)樣本分類,已經(jīng)發(fā)散,弱分類器個(gè)數(shù)過多,檢測(cè)效率下降;由方式2和方式3可以看出,使用新的檢測(cè)算法比傳統(tǒng)算法檢測(cè)速度提高了4.5倍,這主要是由于地平線縮小了檢測(cè)范圍,車寬過濾了大量的檢測(cè)框個(gè)數(shù),而檢測(cè)率降低主要是由于部分車輛的“高度”超過了地平線的范圍,無法檢測(cè)。
圖7 方式3部分檢測(cè)效果圖
本文提出改進(jìn)AdaBoost+Haar的車輛檢測(cè)算法,能夠高效快速地檢測(cè)到車輛。算法對(duì)硬件的要求低,有很好的泛化性能,能夠在不降低檢測(cè)率的情況下將檢測(cè)速度提高了7倍,同時(shí)還能有效抑制虛警。因此該方法是可行的。