丁柏群,李敬宇
(東北林業(yè)大學(xué) 交通學(xué)院,黑龍江 哈爾濱 150040)
全球每年在交通事故中受傷的人數(shù)超過(guò)1 000萬(wàn)人,在這些事故中,尾撞事故約占所有事故的30%[1]。車輛測(cè)距技術(shù)對(duì)保持安全車距、保障車輛安全具有重要作用。與雷達(dá)、激光等主動(dòng)傳感器相比,視覺(jué)檢測(cè)系統(tǒng)具有獲取信息豐富、檢測(cè)方便、成本低廉等特點(diǎn),不僅可用于車距檢測(cè),還可以檢測(cè)交通標(biāo)志標(biāo)線、交通設(shè)施和其它障礙物等?;谝曈X(jué)的測(cè)距方法分為單目視覺(jué)和多目視覺(jué)測(cè)距。多目視覺(jué)測(cè)距方法[2-4]涉及多個(gè)攝像頭參數(shù)與信息的匹配,計(jì)算量大,算法復(fù)雜,處理圖像的時(shí)間較長(zhǎng),測(cè)距成本相對(duì)較高。與多目系統(tǒng)、雷達(dá)和激光傳感器相比,單目視覺(jué)測(cè)距方法雖然精度稍低,但原理和結(jié)構(gòu)簡(jiǎn)單,成本低廉,計(jì)算量小,實(shí)時(shí)性更好。
近年來(lái),國(guó)內(nèi)外許多學(xué)者對(duì)前方車輛單目測(cè)距的方法開(kāi)展深入研究。楊清峻等[5]、杜琰琪等[6]、陳薇等[7]通過(guò)探測(cè)、識(shí)別、提取車道標(biāo)線消失點(diǎn)或已知的車道寬度實(shí)現(xiàn)單目視覺(jué)測(cè)距,但其車距測(cè)量的精度受車道標(biāo)線識(shí)別的準(zhǔn)確度影響,只適用于特定結(jié)構(gòu)化道路;吳駿等[8]、J.HAN等[9]、G.KIM等[10]采用的測(cè)距方法以單目攝像頭成像橫向模型為基礎(chǔ),估計(jì)前方車輛的寬度作為已知的物理值,結(jié)合行駛場(chǎng)景進(jìn)行車距測(cè)量,但這種方法容易受到前車車型的局限,若出現(xiàn)預(yù)估的車輛寬度與實(shí)際的車輛寬度相差較大的情況,則會(huì)產(chǎn)生較大的誤差;LIU Zewei等[11]、蔣玉亭等[12]、陳勇等[13]通過(guò)世界坐標(biāo)系、攝像機(jī)坐標(biāo)系和圖像坐標(biāo)系之間的關(guān)系,分析前方車輛在圖像平面與道路平面中的對(duì)應(yīng)位置,將已知的車載單目攝像頭距離地面的高度作為準(zhǔn)確的物理量,不需要估算前方車輛的寬度,但是,這些研究難以確定車輛距離地面的準(zhǔn)確位置信息,容易受到地形的限制;李占旗等[14]、程瑤等[15]、姚春蓮等[16]分別利用機(jī)器學(xué)習(xí)與深度學(xué)習(xí)中SSD(single shot multibox detector)算法識(shí)別車輛號(hào)牌,以之作為固定靶標(biāo)進(jìn)行車距測(cè)量,結(jié)果表明,深度學(xué)習(xí)比機(jī)器學(xué)習(xí)實(shí)時(shí)性更好,但因這種方法需要足夠的特征映射(feature mapping)來(lái)提供精確特征,同時(shí)也需要大量的語(yǔ)義信息與背景作區(qū)分,所以對(duì)車牌這類小目標(biāo)的識(shí)別效果不夠理想。
筆者提出一種基于多任務(wù)級(jí)聯(lián)卷積神經(jīng)網(wǎng)絡(luò)(MTCNN)的車牌檢測(cè)算法,結(jié)合P4P(perspective-4-point)算法計(jì)算車距的方法,可以檢測(cè)多尺度車輛的車距,并進(jìn)行了試驗(yàn)驗(yàn)證。
車輛距離檢測(cè)方法總體設(shè)計(jì)如圖1。
圖1 車距檢測(cè)總體流程Fig.1 Overall process of vehicle distance detection
為了使車輛號(hào)牌的定位更加精準(zhǔn),筆者借助基于深度學(xué)習(xí)的MTCNN(multi-task cascaded convolutional neural network)算法進(jìn)行駕駛場(chǎng)景中前方車輛車牌的檢測(cè),檢測(cè)結(jié)構(gòu)采用了兩個(gè)級(jí)聯(lián)的網(wǎng)絡(luò),包括提案網(wǎng)絡(luò)(P-Net)與輸出網(wǎng)絡(luò)(O-Net)。通過(guò)車牌分類、邊界框回歸以及關(guān)鍵點(diǎn)定位3個(gè)任務(wù)同時(shí)訓(xùn)練神經(jīng)網(wǎng)絡(luò),完成車牌角點(diǎn)定位,獲取車牌角點(diǎn)坐標(biāo)。最后,依據(jù)P4P算法與幾何關(guān)系,計(jì)算出前方車輛的距離。
深度神經(jīng)網(wǎng)絡(luò)從淺層到高層進(jìn)行特征學(xué)習(xí),可以用于車牌定位。利用Faster R-CNN(faster region-based convolutional neural networks)算法得出的識(shí)別結(jié)果雖然準(zhǔn)確,但耗時(shí)較長(zhǎng);SSD、YOLO(you only look once)等方法識(shí)別的速度相對(duì)較快,但不適合小物體的識(shí)別。因此,H.LI等[17]在2015年提出了級(jí)聯(lián)神經(jīng)網(wǎng)絡(luò),它不僅保持了R-CNN較高的識(shí)別精度,而且創(chuàng)造性地將幾個(gè)性能較低的小網(wǎng)絡(luò)級(jí)聯(lián),形成性能優(yōu)良的強(qiáng)分類器。傳統(tǒng)方法常通過(guò)人工處理每一級(jí)分類器使用的特征,級(jí)聯(lián)神經(jīng)網(wǎng)絡(luò)則由神經(jīng)網(wǎng)絡(luò)生成,具有很好的擬合能力。
MTCNN算法自提出以來(lái)主要用于人臉與面部關(guān)鍵點(diǎn)的檢測(cè),是一種改進(jìn)的級(jí)聯(lián)神經(jīng)網(wǎng)絡(luò)方法。該方法主要采用了3個(gè)級(jí)聯(lián)的網(wǎng)絡(luò),分別為生成候選窗口的提案網(wǎng)絡(luò)(P-Net)、對(duì)候選窗口進(jìn)行過(guò)濾優(yōu)化的優(yōu)化網(wǎng)絡(luò)(R-Net)和生成最終邊界框與面部關(guān)鍵點(diǎn)的輸出網(wǎng)絡(luò)(O-Net)。
筆者只使用其中的P-Net和O-Net,對(duì)于車牌定位,跳過(guò)R-Net不會(huì)損害識(shí)別的準(zhǔn)確性,并且提高識(shí)別速度。輸入車牌圖像按照不同的縮放比例縮放到不同的大小,形成一個(gè)特征金字塔,作為后續(xù)二級(jí)級(jí)聯(lián)框架的輸入。整個(gè)過(guò)程分為2個(gè)階段,在第1階段,利用P-Net網(wǎng)絡(luò)獲取候選車牌和邊界回歸向量,然后采用非極大值抑制(NMS)方法來(lái)合并重疊程度較高的候選項(xiàng);第2階段中,O-Net使用邊界框回歸和NMS對(duì)候選車牌進(jìn)行微調(diào),在去除重疊候選框的同時(shí),對(duì)車牌的關(guān)鍵點(diǎn)進(jìn)行定位。
具體的車牌檢測(cè)定位網(wǎng)絡(luò)架構(gòu)包括P-Net和O-Net:
1)P-Net(proposal network)網(wǎng)絡(luò)架構(gòu)如圖2。利用3個(gè)卷積層得到候選區(qū)域分類結(jié)果和邊界回歸向量。P-Net具有規(guī)模小、閾值低的特點(diǎn),最大限度地提高正樣本召回率。其主要目的是選擇盡可能多的車牌信息,并將較困難的分類任務(wù)分配給后續(xù)網(wǎng)絡(luò),使用NMS消除冗余的候選車牌,找到候選車牌的最佳檢測(cè)位置。
圖2 P-Net網(wǎng)絡(luò)架構(gòu)Fig.2 P-Net network structure
2)O-Net(output network)網(wǎng)絡(luò)架構(gòu)如圖3。基本結(jié)構(gòu)是一個(gè)更復(fù)雜的卷積神經(jīng)網(wǎng)絡(luò)。O-Net可以更詳細(xì)地描述車牌,并且輸出車牌4個(gè)角點(diǎn)位置用于定位。
圖3 O-Net網(wǎng)絡(luò)架構(gòu)Fig.3 O-Net network structure
在車牌定位的訓(xùn)練過(guò)程中,筆者采用了3個(gè)任務(wù)同時(shí)訓(xùn)練神經(jīng)網(wǎng)絡(luò):車牌分類、邊界框回歸、車牌關(guān)鍵點(diǎn)定位。
2.2.1 車牌分類
車牌分類的學(xué)習(xí)目標(biāo)是一個(gè)兩類分類問(wèn)題,既輸入圖像中是否包含車牌信息,用交叉熵?fù)p失函數(shù)來(lái)判斷該分類問(wèn)題,如式(1):
(1)
2.2.2 邊界框回歸
對(duì)于每個(gè)候選框,預(yù)測(cè)它與正確的數(shù)據(jù)標(biāo)簽之間的偏移量(坐標(biāo)、寬度和高度)。學(xué)習(xí)目標(biāo)是一個(gè)回歸問(wèn)題,對(duì)每個(gè)樣本xi使用歐式損失,如式(2):
(2)
2.2.3 關(guān)鍵點(diǎn)定位
與邊界框回歸相似,車牌關(guān)鍵點(diǎn)的檢測(cè)也是一個(gè)回歸問(wèn)題,對(duì)每個(gè)樣本xi使用歐式損失,如式(3):
(3)
2.2.4 多源訓(xùn)練
因?yàn)樵诿總€(gè)卷積神經(jīng)網(wǎng)絡(luò)中使用了不同的任務(wù),總目標(biāo)如式(4):
(4)
在P-Net中,取αdet=1,αbox=0.5,αkeypoint=0.5;而在O-Net中,為了更準(zhǔn)確的檢測(cè)車牌四角的坐標(biāo),取αdet=1,αbox=0.5,αkeypoint=1。
采用單目攝像頭獲取圖像信息時(shí),將現(xiàn)實(shí)中3D場(chǎng)景投影到攝像機(jī)2D像平面上,可以使用線性攝像機(jī)模型將三維空間點(diǎn)與二維空間點(diǎn)聯(lián)系起來(lái),即任意一點(diǎn)P1的投影點(diǎn)P2都是光心Oc與P1點(diǎn)的連線與像平面的交點(diǎn),如圖4。
圖4 線性攝像機(jī)模型Fig.4 Linear camera model
根據(jù)線性攝像機(jī)模型,車牌的投影原理如圖5。圖5中包含4個(gè)坐標(biāo)系:世界坐標(biāo)系(Ow-XwYwZw)、相機(jī)坐標(biāo)系(Oc-XcYcZc)、圖像坐標(biāo)系(O-xy)以及像素坐標(biāo)系(O′-uv);A、B、C、D分別代表車牌的4個(gè)角點(diǎn),a、b、c、d則為車牌的4個(gè)角點(diǎn)在相機(jī)成像平面上的投影。
圖5 車牌的投影圖像Fig.5 Projection image of the license plate
基于文獻(xiàn)[18] 所述的P4P算法,對(duì)于三角形Ocab和OcAB,由余弦定理可得:
(5)
同理,對(duì)于另外3組三角形,可以得到式(6):
(6)
式中:h為車牌高度,即AC;w為車牌寬度,即CD。
世界各國(guó)車輛號(hào)牌規(guī)格雖有差別,但每個(gè)國(guó)家在相當(dāng)長(zhǎng)的時(shí)期內(nèi)號(hào)牌的幾何尺寸是穩(wěn)定不變的,而且統(tǒng)一為若干類規(guī)格。由于a、b、c、d在圖像上的位置是已知的,余弦角α、β、γ、θ也是已知的,通過(guò)聯(lián)立式(5)、式(6),可以求出lOcA、lOcB、lOcC、lOcD。所以,單目攝像頭距前方車牌的距離l的計(jì)算式如式(7):
(7)
為驗(yàn)證文中方法的有效性,在實(shí)際駕駛環(huán)境下對(duì)文中方法進(jìn)行測(cè)試。試驗(yàn)車搭載單目攝像頭駛向前方目標(biāo)車輛,將試驗(yàn)車與目標(biāo)車輛的車距依次遞減采集視頻圖像。車距分別為20、15、10、5 m時(shí)采集的圖像如圖6。
在我國(guó)大陸,車輛號(hào)牌的規(guī)格統(tǒng)一為440 mm(寬)×140 mm(高),所以取h=140 mm、w=440 mm。使用文中測(cè)距方法分別對(duì)每個(gè)距離下的目標(biāo)車輛車牌圖像進(jìn)行距離計(jì)算,并將求取的距離值與真實(shí)距離值相比較,車距測(cè)量結(jié)果及平均絕對(duì)誤差如表1。
表1 車距測(cè)量結(jié)果
車距測(cè)量的結(jié)果與實(shí)際距離的偏差曲線如圖7,車距測(cè)量的相對(duì)誤差曲線如圖8。
圖7 實(shí)際車距與測(cè)量結(jié)果對(duì)比Fig.7 Comparison between actual vehicle distance and measurement results
圖8 測(cè)量結(jié)果相對(duì)誤差Fig.8 Relative error of measurement results
由圖7、圖8可以發(fā)現(xiàn):測(cè)距的絕對(duì)誤差隨試驗(yàn)車與目標(biāo)車的距離增大而增大,這主要是由于在目標(biāo)車距離逐漸增大的過(guò)程中,車牌圖像、邊緣輪廓的清晰度逐漸降低,絕對(duì)誤差因而增大;相對(duì)誤差的變化則比較平穩(wěn),車距在27 m范圍內(nèi)的檢測(cè)平均相對(duì)誤差約為2.77%,其中在3 m以外的平均誤差為2.52%,而在3 m內(nèi)因車間實(shí)際距離很小,測(cè)距相對(duì)誤差增大,平均誤差達(dá)到約4.79%。
為了更清楚地表明文中方法的有效性與準(zhǔn)確性,在[0,5]、(5,10]、(10,15]、(15,20]、(20,25]m共5個(gè)不同的距離區(qū)間,分別計(jì)算、對(duì)比文中與文獻(xiàn)[14]~文獻(xiàn)[16] 的測(cè)距試驗(yàn)相對(duì)誤差平均值,結(jié)果如表2和圖9。
表2 若干測(cè)距方法的相對(duì)誤差
圖9 相對(duì)誤差對(duì)比Fig.9 Relative error comparison
對(duì)不同測(cè)距方法的相對(duì)誤差對(duì)比分析可以看出,文中方法明顯優(yōu)于對(duì)比的其它幾種方法,各距離區(qū)間的相對(duì)誤差降低了約25.4%~84.7%,總平均相對(duì)誤差降低了約38.6%~71.8%。SSD算法[14]隨著目標(biāo)車輛距離增大,其相對(duì)誤差也有不同程度的增大;而文中方法隨著距離的增大,相對(duì)誤差降低近一半且波動(dòng)不大,表明筆者提出的方法在提高精度的基礎(chǔ)上具有更好的穩(wěn)定性。
1)采用MTCNN算法和P4P算法識(shí)別車牌、計(jì)算車輛間距,檢測(cè)方法僅與車牌圖像識(shí)別測(cè)算質(zhì)量有關(guān)而與車型大小、道路起伏無(wú)關(guān),有效減少了負(fù)向影響因素,提高了單目視覺(jué)檢測(cè)車距的精度。
2)在試驗(yàn)范圍內(nèi),車距檢測(cè)的平均誤差為2.77%,其中3~27 m的檢測(cè)平均誤差為2.52%,與機(jī)器學(xué)習(xí)和SSD算法相比,平均誤差降低了約38.6%~71.8%,且具有較高的穩(wěn)定性。