邱 康,王子磊
(中國(guó)科學(xué)技術(shù)大學(xué) 信息科學(xué)與技術(shù)學(xué)院自動(dòng)化系,安徽 合肥 230027)
車輛壓線檢測(cè)是指針對(duì)車輛運(yùn)行過(guò)程中發(fā)生的壓線行為進(jìn)行檢測(cè),可以在車輛發(fā)生車道偏移或壓線行駛時(shí)對(duì)司機(jī)做出警告,避免由于司機(jī)的疏忽大意、疲勞駕駛、駕駛陋習(xí)等原因造成交通事故,是輔助駕駛的一個(gè)重要功能。
已有基于視覺(jué)的方法大都基于車載視頻實(shí)現(xiàn)。文獻(xiàn)[1]針對(duì)車輛直行情況下的車道偏移進(jìn)行研究,在車輛較傾斜的情況下可能失效。文獻(xiàn)[2]利用扇形投影法對(duì)車道偏移進(jìn)行檢測(cè),但是其基于消失點(diǎn)的本車道識(shí)別比較復(fù)雜和耗時(shí)。文獻(xiàn)[3]利用車輛變道過(guò)程中涉及的兩條車道的三條車道線之間夾角變化進(jìn)行車輛壓線變道檢測(cè),但實(shí)際情況中車道數(shù)目多變,常導(dǎo)致這三條線難以確定。文獻(xiàn)[4]利用基于人工魚(yú)群算法進(jìn)行車道線檢測(cè),利用SAE算法進(jìn)行車道偏離檢測(cè),整體實(shí)時(shí)性不足。文獻(xiàn)[5]利用單目成像原理對(duì)車輛變道行為進(jìn)行分析,但是算法整體過(guò)程較繁雜,實(shí)時(shí)性不足。文獻(xiàn)[6]將攝像機(jī)固定在車輪上方,檢測(cè)車輪邊緣切線和車道邊緣線,根據(jù)兩線是否相交來(lái)判斷車輛是否壓線,由于涉及多個(gè)攝像機(jī)的處理,系統(tǒng)較為復(fù)雜。
事實(shí)上,基于車載視頻的車輛壓線檢測(cè)研究主要存在以下幾個(gè)問(wèn)題:(1)基于監(jiān)督學(xué)習(xí)的車輛壓線變道檢測(cè)方法需要大量標(biāo)注數(shù)據(jù)進(jìn)行訓(xùn)練,但是車輛壓線變道數(shù)據(jù)的獲取與標(biāo)注需要耗費(fèi)大量人力物力,且一些危險(xiǎn)行為在現(xiàn)實(shí)中難以采集;(2)已有的車輛壓線變道檢測(cè)方法往往涉及大量復(fù)雜的計(jì)算,算法實(shí)時(shí)性不足,并且未給出車輛在當(dāng)前車道的語(yǔ)義信息如朝向、位置等,不能及時(shí)給出車身修正建議。對(duì)此,本文從數(shù)據(jù)和方法兩方面開(kāi)展研究。數(shù)據(jù)方面,采用虛擬交通道路場(chǎng)景構(gòu)建、數(shù)據(jù)自動(dòng)采集和標(biāo)注,生成大量車載視頻及其單幀圖像標(biāo)注,得到豐富多樣的壓線檢測(cè)數(shù)據(jù)集。方法方面,結(jié)合圖像語(yǔ)義分割完成車道線檢測(cè),通過(guò)簡(jiǎn)單的車道線夾角變化及其在圖像中的位置比較進(jìn)行車輛壓線檢測(cè),并對(duì)車道偏移做出預(yù)警,同時(shí)給出車輛的位置和朝向,便于修正。
真實(shí)的壓線檢測(cè)數(shù)據(jù)需要車輛在道路上運(yùn)行采集,等待各種天氣與時(shí)間條件,且需人工標(biāo)注。數(shù)據(jù)獲取難度大且多樣性不易滿足。對(duì)此,利用合成數(shù)據(jù)是一種較好的解決方案。文獻(xiàn)[7-8]使用3D引擎構(gòu)建了若干場(chǎng)景,在其中自動(dòng)采集并標(biāo)注數(shù)據(jù),以此構(gòu)建虛擬交通數(shù)據(jù)集,用于目標(biāo)檢測(cè)、跟蹤、語(yǔ)義分割等任務(wù),證明了深度學(xué)習(xí)算法在合成數(shù)據(jù)中具有較好的效果。
本文基于Unreal Engine 4構(gòu)建多種交通場(chǎng)景,利用Airsim[9]開(kāi)發(fā)數(shù)據(jù)采集器和數(shù)據(jù)標(biāo)注器。為逼近真實(shí)情況,在各環(huán)境條件上進(jìn)行多樣化設(shè)置??紤]到輔助駕駛的重點(diǎn)應(yīng)用場(chǎng)景,構(gòu)造了普通城市道路、城市快速路、高架橋、隧道等場(chǎng)景,如圖1所示。
圖1 不同場(chǎng)景
為觀察不同光照和天氣對(duì)任務(wù)的影響,構(gòu)造了多個(gè)時(shí)間點(diǎn):中午(noon)、傍晚(evening)和深夜(night);同時(shí)構(gòu)造了晴天(sunny)、小雨天(lightRain)、大雨天(heavyRain)、小霧天(lightFog)、小雪天(lightSnow)等天氣,如圖2所示。
圖2 不同光照與天氣
利用安裝在車頭正中的攝像機(jī)進(jìn)行視頻采集,以單幀圖像形式保存,對(duì)每幀圖像進(jìn)行標(biāo)注。最終構(gòu)建的數(shù)據(jù)集分布情況如表1所示,采集了更多的常見(jiàn)情況下的數(shù)據(jù):白天的數(shù)據(jù)較多,傍晚的數(shù)據(jù)相對(duì)較少;壓線數(shù)據(jù)少于不壓線數(shù)據(jù)。如表1中天氣為sunny、時(shí)間為noon的數(shù)據(jù)有2 625條,其中壓線數(shù)據(jù)占比38.6%。此外,每種條件下都在場(chǎng)景中設(shè)置3條線路進(jìn)行采集,分別以值為0、1和2的routeID標(biāo)識(shí),不同線路的視頻幀數(shù)大致相同。
表1 壓線檢測(cè)數(shù)據(jù)集分布情況
1幀圖像數(shù)據(jù)對(duì)應(yīng)3個(gè)文件:原圖、分割圖、標(biāo)注文件。其中,分割圖是原圖的像素級(jí)標(biāo)注,標(biāo)記著原圖中每個(gè)像素所屬的類別如車輛、車道線等;標(biāo)注文件包含overlap(車輛是否壓線)、vehicleScale(車輛尺寸)、vehicleVelocity(車輛速度矢量)、lineScale(車輛碾壓的車道線在3D場(chǎng)景中的尺寸)、linePos2D(車輛碾壓的車道線的起點(diǎn)在圖中投影的位置)等信息,可用于判斷車輛壓線與否、計(jì)算車輛變道程度等。
首先對(duì)當(dāng)前幀中的車道線區(qū)域進(jìn)行檢測(cè),然后對(duì)車道線輪廓進(jìn)行擬合并識(shí)別當(dāng)前車道,由左右兩條車道線表示,計(jì)算這兩條線的幾何參數(shù),據(jù)此進(jìn)行壓線判斷,具體流程如圖3所示。
圖3 壓線檢測(cè)方法流程圖
下面對(duì)流程圖中的相關(guān)步驟進(jìn)行闡述。
(1)車道線區(qū)域檢測(cè)。利用圖像語(yǔ)義分割[10]的方式檢測(cè)出車道線區(qū)域。
(2)車道線擬合。考慮到曲線擬合的復(fù)雜性和主要應(yīng)用場(chǎng)景的道路線特點(diǎn),可使用直線模型對(duì)車道線進(jìn)行擬合。本文利用Hough變換檢測(cè)圖像中多條車道對(duì)應(yīng)的車道線。經(jīng)典的Hough比較耗時(shí),對(duì)此從幾個(gè)方面進(jìn)行改進(jìn):對(duì)車道線區(qū)域進(jìn)行邊緣檢測(cè),減少搜索點(diǎn)數(shù)量;場(chǎng)景中有許多虛線,許多不同路段的直線實(shí)際上屬于同一條直線,故可以設(shè)置兩條直線之間的最大間隔,小于該間隔的直線認(rèn)為是同一條直線;車道線區(qū)域有許多噪點(diǎn),對(duì)此設(shè)置形成一條直線需要的最少的點(diǎn)的數(shù)量,避免噪聲干擾。
(3)當(dāng)前車道識(shí)別。當(dāng)前車道定義為車頭中點(diǎn)所在車道。在車載視頻圖像中,車頭中點(diǎn)對(duì)應(yīng)圖像底部水平線段L的中點(diǎn)O。故當(dāng)前車道計(jì)算方法為:計(jì)算所有車道直線Li與L所在直線的交點(diǎn)Di,計(jì)算線段ODi的長(zhǎng)度di,O左右兩側(cè)分別最小的dl和dr對(duì)應(yīng)直線即為當(dāng)前車道線Ll和Lr,如圖4所示。特殊情況下O位于某一條車道線中,此時(shí)車輛壓線程度較大,不定義當(dāng)前車道,僅給出該車道線的左右兩邊輪廓對(duì)應(yīng)直線。
圖4 當(dāng)前車道識(shí)別
觀察當(dāng)前車道線與車輛的位置關(guān)系,如圖5所示。
圖5 不同位置的車輛與車道線的幾何關(guān)系
當(dāng)車輛正常居中行駛時(shí),左右兩條車道線與L分別形成的較小角(即不取大于90°的另一個(gè)角)θl與θr幾乎相等,且都較??;當(dāng)車輛向一側(cè)如右側(cè)偏移時(shí),θr開(kāi)始增大,直至壓線過(guò)程接近90°。據(jù)此簡(jiǎn)化地定義車輛壓線行為:max(θl,θr)>θt。其中θt是閾值,與車載攝像機(jī)高度、視場(chǎng)角(FOV)和車道寬度有關(guān)。大部分的小汽車車頭高度在80 cm左右,數(shù)據(jù)集中使用的車載攝像機(jī)的FOV為90°,中國(guó)主流車道寬度為3.5 m,據(jù)此可得較好的閾值θt為49°。
顯然,當(dāng)車輛靠近車道右側(cè)時(shí)θr大于θl,反之θl大于θr,據(jù)此可得車輛在當(dāng)前車道的位置,定義為position,其取值為-1、0、1,分別意味著車輛在當(dāng)前車道左側(cè)、中間、右側(cè)。
車輛方向在圖像中投影為的L中垂線Lm,如圖6所示。定義車輛在當(dāng)前車道的方向?yàn)閐irection,其取值為-1、0、1,分別意味著車輛在當(dāng)前車道向左、向中、向右。顯然,Ll和Lr都分別與Lm相交,交點(diǎn)為Pl和Pr。在圖像坐標(biāo)系下,當(dāng)Pr的y值較大時(shí),車輛向右,反之向左。特殊情況下,Pl和Pr有一個(gè)不在圖像中,如圖6中第三幅圖,此時(shí)Pl不在圖中,雖然其y值較大,但是車輛向右。
圖6 車輛在當(dāng)前車道方向
事實(shí)上,依據(jù)position和direction可以進(jìn)一步優(yōu)化壓線判斷方法。只考慮車輛向前行駛的情況下,當(dāng)position和direction同號(hào),車輛即將或已開(kāi)始?jí)壕€,車頭更靠近車道線,此時(shí)θt應(yīng)較大;當(dāng)position和direction異號(hào),車輛即將或已結(jié)束壓線,車頭較車尾離車道線更遠(yuǎn),此時(shí)θt應(yīng)較小,據(jù)此,分別設(shè)閾值θt1和θt2,其中θt1>θt2,依據(jù)先驗(yàn)知識(shí)將θt分別增加和減少5°得到θt1和θt2分別為54°和44°。
通過(guò)適當(dāng)減小壓線判斷閾值θt1,可以在車輛還未壓線時(shí)就觸發(fā)壓線的判斷,當(dāng)連續(xù)T1幀未壓線后連續(xù)T1幀壓線則觸發(fā)警告,起到車道偏離預(yù)警的作用。同樣依據(jù)先驗(yàn)知識(shí),減小θt1至50°,設(shè)T1為2。
為驗(yàn)證所提方法的有效性,在數(shù)據(jù)集上進(jìn)行不同環(huán)境條件的對(duì)比實(shí)驗(yàn),主要有以下三個(gè)方面的目的:
(1)壓線判斷方法驗(yàn)證:利用數(shù)據(jù)集的ground truth分割圖進(jìn)行壓線判斷,可得理想情況下(車道線檢測(cè)完全準(zhǔn)確)壓線判斷方法的總體效果,準(zhǔn)確率記為Accuracy1。
(2)壓線檢測(cè)方法驗(yàn)證:以語(yǔ)義分割結(jié)果進(jìn)行壓線判斷,可得實(shí)際情況下壓線檢測(cè)方法有效性,準(zhǔn)確率記為Accuracy2,并以mIoU作為車道線檢測(cè)準(zhǔn)確率。
(3)車道偏離預(yù)警驗(yàn)證:基于語(yǔ)義分割結(jié)果,利用壓線檢測(cè)方法進(jìn)行車道偏離預(yù)警測(cè)試。設(shè)車道偏離預(yù)警的幀數(shù)為f,若[f-2,f+2]共5幀范圍內(nèi)存在壓線行為且[f-7,f-3]共5幀范圍內(nèi)存在非壓線行為則本次預(yù)警準(zhǔn)確,這里非壓線行為的范圍要求是防止持續(xù)壓線過(guò)程中的警告,此時(shí)已壓線許久,預(yù)警無(wú)意義,不算正確預(yù)警;若發(fā)生車道偏移而未預(yù)警則定義為漏警,設(shè)預(yù)警準(zhǔn)確次數(shù)為T(mén)P,漏警次數(shù)為FN,則可以定義召回率為:
R=TP/(TP+FN)
(1)
以召回率作為車道偏離預(yù)警評(píng)價(jià)指標(biāo)。
此外,采取用一個(gè)簡(jiǎn)單的做法對(duì)數(shù)據(jù)進(jìn)行劃分:每種條件下routeID=0的數(shù)據(jù)作為測(cè)試數(shù)據(jù),其余數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),壓線判斷和車道偏離預(yù)警都在測(cè)試數(shù)據(jù)上進(jìn)行。不同數(shù)據(jù)條件設(shè)置如表2所示。
表2 實(shí)驗(yàn)設(shè)置
依據(jù)表3的結(jié)果,對(duì)上述3個(gè)實(shí)驗(yàn)內(nèi)容進(jìn)行分析并得出相應(yīng)結(jié)論:
(1)Accuracy1都在93.5%以上,說(shuō)明壓線判斷方法是有效的。實(shí)驗(yàn)表明,錯(cuò)誤原因主要是臨界數(shù)據(jù),即車輛恰好壓線,此時(shí)僅利用車道線夾角是無(wú)法準(zhǔn)確判斷的,但這種數(shù)據(jù)較少。
(2)由于語(yǔ)義分割類別較少,只有背景和車道線兩類,故整體mIoU較高。相應(yīng)的Accuracy2雖然相對(duì)于Accuracy1有所降低,但是整體水平仍然較高。
(3)預(yù)警召回率整體較高,將第4組結(jié)果可視化,如圖7所示,其中“點(diǎn)線”的值為1和0,代表車輛實(shí)際壓線與否;“點(diǎn)虛線”值為2和0,代表方法判斷車輛壓線與否;“實(shí)線”值為4和0,代表車道偏離警告與否??梢?jiàn)車道偏離預(yù)警基本可及時(shí)在壓線開(kāi)始之時(shí)做出警告,漏警的原因是存在單幀壓線檢測(cè)失敗現(xiàn)象,可以通過(guò)幀間平滑來(lái)解決。事實(shí)上,θt1越小越能提前預(yù)警,但是也更有可能誤警,所以適中選擇閾值。
表3 實(shí)驗(yàn)結(jié)果(%)
圖7 車道偏移預(yù)警結(jié)果可視化
實(shí)驗(yàn)均在GPU服務(wù)器完成,配置為:Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10 GHz;DDR3 64 GB;GTX 1080Ti單點(diǎn)運(yùn)算能力9TFLOPS。實(shí)驗(yàn)中,單張圖像平均處理時(shí)間為78 ms,其中語(yǔ)義分割耗時(shí)25 ms,實(shí)時(shí)性較好。
本文提出利用車道線夾角的方式對(duì)車輛壓線行為進(jìn)行檢測(cè)并據(jù)此做出車道偏離預(yù)警,實(shí)現(xiàn)較簡(jiǎn)單且檢測(cè)準(zhǔn)確率高,實(shí)時(shí)性較好,具備一定的實(shí)際應(yīng)用價(jià)值。后續(xù)可通過(guò)壓線檢測(cè)幀間平滑處理進(jìn)一步提升車道偏離預(yù)警準(zhǔn)確率。