郭鵬宇
(上海工程技術(shù)大學(xué) 機械與汽車工程學(xué)院, 上海 201620)
在自動駕駛輔助系統(tǒng)中,基于傳感器,采用車輛檢測、跟蹤、測距等一系列計算機視覺算法進行環(huán)境感知,輔助系統(tǒng)就能得到車輛周圍信息,以保證駕駛員安全駕駛。
基于視覺的車輛檢測及測距系統(tǒng)主要應(yīng)用在道路交通場景下,用于輔助檢測前方目標(biāo)以及進行距離預(yù)警,其性能好壞主要依賴于采用的車輛檢測算法。
目前,在使用相機進行目標(biāo)檢測時,多采用傳統(tǒng)的機器視覺檢測方法。 對于前方車輛目標(biāo),該方法首先根據(jù)車輛的局部特征,如陰影、邊緣紋理、顏色分布等特征生成感興趣區(qū)域;然后利用對稱特征等整體特征對感興趣區(qū)域進行驗證。 在從產(chǎn)生感興趣區(qū)域到驗證感興趣區(qū)域的過程中,為了達(dá)到實時檢測的要求,一般需要對圖像進行灰度化,并對灰度化后的圖像進行陰影分割和邊緣分析。 因此,對于相機獲得的圖像,傳統(tǒng)的機器視覺的車輛檢測方法通常找到感興趣區(qū)域的車輛的特點和梯度直方圖特征(HOG[1]), SIFT[2]特征或Haar-like[3]特征通常用于獲得前面的假設(shè)檢驗區(qū)域車輛,即ROI 區(qū)域;此后用這些特征訓(xùn)練SVM[4]或Adaboost[5]車輛檢測分類器,計算車輛圖像的特征值,并根據(jù)車輛特征值的大小與前方車輛進行判斷,得到前車的假設(shè)測試區(qū)域驗證,完成對前車的檢測。
而上述傳統(tǒng)的機器視覺檢測方法本質(zhì)上是通過人工選擇特征進行識別和分類。 在復(fù)雜場景中,人工特征的數(shù)量會呈幾何級數(shù)增長,這對前面車輛的識別率也有很大的影響。 這種方法更適合在某種特定場景下的車輛識別,因為其數(shù)據(jù)規(guī)模并不大,泛化能力則較差,很難實現(xiàn)快速和準(zhǔn)確的復(fù)雜應(yīng)用場景的檢測。 近年來,隨著卷積神經(jīng)網(wǎng)絡(luò)(CNN)的應(yīng)用,出現(xiàn)了許多算法。 一階段方法包括SSD[6]、YOLO 系 列[7-8]、 RetinaNet[9]。 兩 階 段 方 法 包 括Fast R-CNN[10]和Faster R-CNN[11]。 最近提出的最先進的YOLO-v4[12]具有很高的檢測精度和檢測速度。
目前,對于多目標(biāo)車輛軌跡跟蹤技術(shù)主要可分為兩大類。 一類是傳統(tǒng)方法,如利用背景差分法、幀差法、光流法等方法提取運動目標(biāo),傳統(tǒng)方法部署方便,資源消耗低,但受先驗知識限制,跟蹤穩(wěn)定性差,準(zhǔn)確性不高。 另一類是基于卷積神經(jīng)網(wǎng)絡(luò)的、稱為深度學(xué)習(xí)的方法,深度學(xué)習(xí)方法可以學(xué)習(xí)更多的目標(biāo)特征,能在連續(xù)的視頻幀中檢測出目標(biāo)對象。 深度學(xué)習(xí)方法精度高,但其計算量較大,實時性不高,因此,基于視頻跟蹤的車輛檢測算法仍需改進。
研究可知,基于視覺相機的測距方法主要有單目測距和雙目測距兩種。 這2 種方法的共同特點是通過相機采集圖像數(shù)據(jù),隨后從圖像數(shù)據(jù)中得到距離信息。 單目檢測方法的優(yōu)點是成本低,缺點是對檢測精度的依賴過大。 此外,從實用的角度來看,在汽車上安裝單目相機時,由于汽車的顛簸,汽車的俯仰角經(jīng)常發(fā)生變化,導(dǎo)致精度顯著下降。 雙目測距的方法是通過計算2 幅圖像的視差直接測量距離。
本文使用的目標(biāo)檢測算法是YOLOv4-tiny,其中YOLO 表示You Only Look Once,由Bochkovskiy等學(xué)者開發(fā)。 YOLOv4-tiny 是YOLOv4 的壓縮版本,雖在平均精度方面受到了影響,但卻可以在低計算能力下高效運行。 與未壓縮版本的4 個YOLO 頭相比, YOLOv4-tiny 只使用了2 個YOLO 頭,并使用了29 個預(yù)訓(xùn)練卷積層作為基礎(chǔ)。 YOLO 各變量參數(shù)設(shè)置見表1,卷積層各變量參數(shù)設(shè)置見表2。
表1 YOLO 各變量參數(shù)設(shè)置Tab. 1 YOLO parameter settings
表2 卷積層各變量參數(shù)設(shè)置Tab. 2 The convolution layer parameter settings
上一代YOLO 的非maxpool 抑制(NMS)等遺留特性和一些新特性、包括加權(quán)剩余連接(WRC)、Mosaic 數(shù)據(jù)增強在內(nèi)有效提高了算法在模糊圖像中識別類的能力,降低了識別類所需的處理能力。YOLOv4-tiny 提供了較高的幀率,同時具有中間地帶平均精度與常用模型并列。
在本文中,使用YOLOv4-tiny 算法作為車輛的檢測器,并且使用DeepSORT[13]算法作為初始車輛跟蹤器。
圖1 顯示了2 個ID 及其前3 個標(biāo)簽。 對于ID#137 的車輛,本文方法預(yù)測的標(biāo)簽用加黑來標(biāo)記。
圖1 應(yīng)用MLP 后的歷史緩沖區(qū)示例圖Fig. 1 A history buffer example after applying MLP
本文使用歷史緩沖區(qū)來調(diào)整和改進每個檢測標(biāo)簽的視覺質(zhì)量和在幀中的顯示。 如果有任何車輛檢測標(biāo)簽缺失,那么本文的MLP 為該車輛生產(chǎn)一個估計的檢測標(biāo)簽。 延時使用一系列的檢測標(biāo)簽前存儲在歷史緩沖區(qū)來預(yù)測未檢測到車輛的檢測標(biāo)簽ID 在給定的框架(見圖1)。 條件估計為特定車輛檢測標(biāo)簽,標(biāo)簽ID 應(yīng)該至少在2 個連續(xù)幀出現(xiàn)。 為了預(yù)測缺失的檢測標(biāo)簽,本文對當(dāng)前幀t應(yīng)用以下公式:
這里,l(xmin,ymin,xmax,ymax) 表示每個車輛ID基于調(diào)整邊界框標(biāo)簽的中值, ▽表示邊界框位置的變化從時間戳(t -2)到(t -1);i表示每輛車唯一的ID。
雙目視差示意如圖2 所示。 由圖2 可知,2 個攝像頭的中心距是B,兩個攝像頭觀察同一點P,P1的坐標(biāo)為(X1,Y1),P2的坐標(biāo)為(X2,Y2),由于2臺相機始終是平行的,高度相同,所以在左右2 張圖像中P點的Y坐標(biāo)是相同的,在X方向上存在視差。 因此,可以通過標(biāo)定相機內(nèi)外參數(shù)來確定圖像坐標(biāo)與世界坐標(biāo)之間的關(guān)系。 雙目視差原理如圖3所示。
圖2 雙目視差示意圖Fig. 2 Schematic diagram of binocular parallax
圖3 雙目視差原理圖Fig. 3 Principle of binocular parallax
圖3 中,CL和CR是2 個攝像頭的光學(xué)中心,攝像頭之間的距離是b,相機的焦距為f,P點在左右圖像的投影點為Pl(Xl,Yl),Pr(Xr,Yr) ,從三角形相似關(guān)系可知:
由式(3)可知:
由此,空間中P點到相機的距離為:
P在相機坐標(biāo)系中的三維坐標(biāo)可以由幾何關(guān)系得到:
對于車輛的測距,本文取檢測到的邊界框內(nèi)每輛車的中心來表示被檢測物體到雙目相機中心的距離。
將YOLOv4-tiny 與其他常用的目標(biāo)檢測算法進行比較,將其mAP與FPS進行比較,得到表3 中的結(jié)果。
表3 各模型幀率和mAP對比Tab. 3 Frame rate andmAPcomparison
本文提出的車輛檢測與跟蹤方法使用了TensorFlow 庫 和 基 于 YOLOv4 - tiny 模 型 的DeepSORT 算法。 經(jīng)綜合比較,使用YOLOv4-tiny的精度和檢測速度是可以接受的,精度比YOLOv3-tiny 高,速度比YOLOv4 的方法更快。
YOLOv4-tiny 模型檢測車輛效果如圖4 所示。
圖4 YOLOv4-tiny 模型檢測車輛效果Fig. 4 Cars video detection using YOLOv4-tiny model
使用本文方法前后汽車的標(biāo)簽變化曲線如圖5所示。 對于ID#39 的車輛,圖5(a)是使用方法前,圖5(b)是使用本文方法后,相同的汽車標(biāo)簽變得更加平滑。
圖5 使用本文方法前后汽車的標(biāo)簽變化Fig. 5 The label changes before and after using the method in this paper
在目標(biāo)跟蹤時, 從歷史緩沖區(qū)中預(yù)測缺失標(biāo)簽的方法往往會產(chǎn)生不好的結(jié)果,因為對象檢測器的可視化結(jié)果經(jīng)常顯示不穩(wěn)定和閃爍的邊框標(biāo)簽。 在應(yīng)用本文的基于中值的算法后,可以得到高度穩(wěn)定的標(biāo)簽。 因此,本文方法提高了目標(biāo)檢測器的視覺性能,并為目標(biāo)檢測器和跟蹤器提供了對缺失標(biāo)簽的更好估計。
利用雙目相機取檢測到的邊界框內(nèi)每輛車的中心來表示被檢測物體到雙目相機中心的距離。
仿真測試結(jié)果見表4。 從距離測試的結(jié)果來看,測試精度相對較高,基本保持在0.5%~0.6%之間。
表4 測量結(jié)果分析Tab. 4 The measured results analysis
本文介紹了一種用于自動駕駛的實時檢測跟蹤與測距系統(tǒng)。 通過本文提出的實時同步方法,該系統(tǒng)方便了車輛實時同步檢測;利用雙目攝像頭,YOLOv4-tiny 和DeepSORT 算法對車輛進行檢測和跟蹤,并提出中值標(biāo)簽預(yù)測方法優(yōu)化跟蹤效果,同時實現(xiàn)了對前方車輛的精確測距。 整個系統(tǒng)在檢測和測距方面取得了較高的精度和實時性。 對于自動駕駛的應(yīng)用,該系統(tǒng)可以結(jié)合許多智能技術(shù),如目標(biāo)預(yù)警、自動避障等。 與此同時,該系統(tǒng)還有很大的改進空間。 在檢測方面,通過優(yōu)化算法提高檢測性能,通過訓(xùn)練更多類型的物體,如行人、非機動車等,為自動駕駛提供更多的道路信息。 在這個系統(tǒng)中,測距是指從雙目相機的中心到物體的距離。 在實際情況下,車輛的具體位置到物體的距離可以根據(jù)相機的安裝位置和車輛的實際長度來計算。 通過優(yōu)化雙目測距算法,可以提高測距精度。