长篇自动驾驶技术综述论文(下)
長篇自動駕駛技術綜述論文(下)
三維目標檢測
鑒于經濟性,可用性和研究的廣泛性,幾乎所有的算法都使用相機作為主要的感知方式。把相機應用在ADS中,限制條件除了前面討論到的光照等因素外,還有一個問題就是目標檢測是在圖像空間的,忽略了場景的尺度信息。而當需要進行避障等動態駕駛任務時,我們需要將二維圖像映射到三維空間來獲得三維的信息。實際上利用單個相機來估計深度也是可行的[30],當然利用立體相機或者多相機的系統更具魯棒性。從二維到三維的映射必然需要解決一個圖像匹配問題,這給已經夠復雜的感知過程又增加了大量的計算處理成本。
所以我們換一種思路,是否可以直接在三維進行目標檢測。我們知道3D雷達收集的數據是三維的,從本質上已經解決了尺度問題,而且3D雷達不依賴于光照條件,不容易受到惡劣天氣的影響。3D雷達收集的是場景表面的稀疏3D點,這些點很難用于對象檢測和分類,分割反而相對容易。傳統方法使用基于歐式距離的聚類(Euclidean clustering)或者區域生長(region-growing)算法[31]來將點劃分為不同對象。結合一些濾波技術,比如地面濾波(ground filtering)[32]或者基于地圖(map-based filtering)的濾波[33],可以使該方法更具魯棒性。下圖我們展示了一個從原始點云輸入中獲取聚類對象的例子。
與基于圖像的方法發展趨勢一樣,機器學習最近也取代了傳統3D檢測方法,而且這種方法還特別適用于RGB-D數據。RGB-D產生的數據與點云類似,不過包含顏色信息,由于范圍比較有限而且可靠性不高,尚未應用于ADS系統。[34]利用3D占據柵格(occupancy
grid)表示的方法完成了RGB-D數據的對象檢測。此后不久,類似的方法被應用于激光雷達創建的點云。受基于圖像的方法的啟發,盡管計算開銷很大,但仍然使用了3D CNN。VoxelNet[35]首次給出了令人信服的點云上三維邊界框估計的結果。SECOND[36]利用激光雷達數據的自然稀疏性,改進了這些工作的準確性和計算效率。最近提出的幾種算法比較如下表所示:
數據集是KITTI[42],結果以中等類別精度排序,算法中只使用點云數據。
基于激光雷達的感知的另一個選擇是點云數據的二維投影。點云數據在2D中有兩種主要表示形式,一種是深度圖,主要是受通過深度估計執行3D對象檢測[37]和在RGB-D數據上進行操作方法的啟發。VeloFCN網絡[38]提出使用單通道深度圖像作為淺層單級卷積神經網絡的輸入,生成3D車輛候選,許多其他算法也都采用了這種方法。深度圖的另一個用途是用于激光雷達點的語義分類(semantic classification)[39]。
另一種2D投影是指對鳥瞰圖(bird’s eye view,BV)的投影,該方式越來越受歡迎。不過鳥瞰圖僅有單純的2D離散信息,因此如果激光雷達點的值僅有高度變化的話,在2D中必定會互相遮擋。MV3D算法[40]使用相機圖像,深度圖像以及多通道BV圖像(這里不同通道對應不同的高度),來最小化這種遮擋。一些工作重復使用基于相機的算法,并訓練了有效的網絡來在2D BV圖像上進行3D對象檢測[41]。這些算法都是在KITTI數據集和nuScenes[43]數據集上進行測試的。2D的方法計算成本要比3D小得多,而且利用稀疏性改進這些工作的準確性和效率之后[36],這些方法可以迅速接近ADS系統所需的精度。
目標跟蹤
對于復雜和高速情況下的自動駕駛,僅僅估計位置是不夠的,為了避免碰撞,還需要估計動態目標的航向和速度,以便應用運動模型跟蹤目標并預測目標未來的運動軌跡。同樣的,一般都通過多個相機,激光雷達或者雷達來獲取傳感器信息,且未來更好地應對不同傳感器的局限性和不確定性,通常采用傳感器融合的策略進行跟蹤。
常用目標跟蹤算法依賴于簡單的數據關聯技術和傳統的過濾方法。當在三維空間中以高幀速率跟蹤對象時,最近鄰方法通常足以建立對象之間的關聯。基于圖像的方法一般需要建立一些外觀模型,例如使用顏色直方圖,梯度或者其他特征(如KLT)等來評估相似度[44]。基于點云的方法也使用一些相似性度量,例如點密度,Hausdorff距離[45]。由于總是可能出現關聯錯誤的情況,因此經常使用多假設跟蹤(multiple hypothesis tracking)算法[46],這確保了跟蹤算法可以從任一時間內的不良數據關聯中回復。一般我們都是在每幀中使用占據地圖(occupancy maps),然后在幀之間進行數據關聯,尤其是在使用多個傳感器時。為了獲得平滑的動態特性,采用傳統的Bayes濾波器對檢測結果進行濾波。
對于簡單的線性模型,Kalman濾波一般是足夠的,而擴展Kalman濾波器(EKF)和無跡Kalman濾波器(UKF)可用于處理非線性動態模型。我們實現了一個基本的基于粒子濾波的目標跟蹤算法,利用相機和3D激光雷達來跟蹤行人,結果如下(白色的表示軌跡)。
為了使跟蹤更具魯棒性,經常會用到被跟蹤對象的物理模型。在這種情況下,首先使用諸如粒子濾波器之類的非參數化方法,之后利用一些物理參數(如大小)來進行動態跟蹤[47]。更為復雜的濾波方法,如raoblockwelled粒子濾波器,被用于跟蹤L型車輛模型的動態變量和車輛幾何變量(dynamic variables and vehicle geometry variables)[48]。針對車輛和行人,現在有各種各樣的模型,甚至一些模型可以推廣到任何動態對象。此外,深度學習也開始被應用于跟蹤問題,尤其是對圖像領域。[49]通過基于CNN的方法實現了單目圖像的實時跟蹤。利用多任務網絡來估計物體動力學的方法也在涌現[50],這進一步表明了能夠處理多種感知任務的廣義網絡可能是ADS感知的未來。
道路和車道線檢測
前面介紹的邊界框估計方法對于某些感興趣的對象十分有用,但對于一些連續曲面(如道路)則不適用。可行駛曲面的確定是ADS的關鍵,所以把該問題從檢測問題中單獨出來作為一個子類研究。從理論上講,利用語義分割可以解決該問題。一個簡單的做法是從車輛自身來確定可駕駛區域,將道路分為若干個車道,并確立主車道,該技術被應用在許多ADAS中,如車道偏離警告,車道保持和自適應巡航控制[51]。更有挑戰性的任務就是怎么確定其他車道和對應的方向,并在此基礎之上理解更復雜的語義,比如轉向和合并[52]。上述具體不同的任務對ADS的探測距離和可靠性要求各不相同,但是自動駕駛需要對道路結構有一個完整的語義理解以及長距離探測多條車道的能力。
前面提到的數據預處理(包括圖像和點云)的方法,在道路處理中也同樣適用,比如歸一化照明條件(normalize lighting
conditions),濾波,顏色,強度,梯度信息統計等。另外,利用道路的均勻性和邊緣的突變(elevation gap at the
edge )我們可以使用區域生長方法(region growing)[53]。也有一些基于機器學習的方法,包括將地圖與數據融合[54]或者完全基于外觀的分割[55]。一旦曲面被估計出來之后,就可以利用一些模型擬合來保證道路和車道的連續性,包括參數化模型(比如直線、曲線)和非參數化模型的幾何擬合。[56]提出了一個集成了拓撲元素(如車道分割與合并)的模型,還可以結合車輛動力學和動態信息,利用濾波算法獲得更平滑的結果。
目前道路和車道線檢測已經有許多方法,并且有些已經集成到了ADAS系統中,但是大多數方法仍然依賴于各種假設與限制,能夠處理復雜道路拓撲的真正的通用系統尚未開發出來。通過對拓撲結構進行編碼來獲得標準化的道路圖并結合新興的基于機器學習的道路與車道線分類方法,也許會形成一個魯棒的可應用于自動駕駛的系統。
評估( ASSESSMENT)
一個魯棒的ADS系統應該能夠不斷地評估當前狀況的總體風險水平并預測周圍駕駛員和行人的意圖,缺乏敏銳的評估機制可能會導致事故。本節主要討論以下三類評估:總體風險和不確定性評估,人類駕駛行為評估和駕駛風格識別。
總體風險和不確定性評估
總體評估可以理解為去量化駕駛場景的不確定性和風險水平,目的是為了提高ADS的安全性。[57]提出了一種利用貝葉斯方法來量化深度神經網絡的不確定性。[3]設計了一個貝葉斯深度學習體系結構,并在一個模擬場景中展示了它相對于傳統方法的優勢。這種方法的總體邏輯是每個模塊在系統中的傳遞與輸入都服從概率分布,而不是一個精確的結果。
另一種方法就是單獨評估駕駛場景下的風險水平,可以理解為前者是從系統內部評估,后者是從系統外部評估。[58]將傳感器數據輸入到一個風險推理框架中,利用隱馬爾科夫模型(Hidden Markov Models ,HMMs)和語言模型檢測不安全的車道變更事件。[59]引入了一個深度時空網絡來推斷駕駛場景的總體風險水平,也可以利用來評估車道變更的風險水平。下圖是一個示例,代表兩種圖像序列下的風險評估結果
周圍駕駛行為評估
實際環境中的自動駕駛決策還有周圍駕駛員的意圖與行為相關。目前該技術在ADS領域尚不常見。[60]用隱馬爾可夫模型(HMM)對目標車輛的未來行為進行了預測,通過學習人類駕駛特征,將預測時間范圍延長了56%。這里主要是利用了預定義的移動行為來標記觀測值,然后再使用HMM以數據位中心學習每種類型的特征。除此之外,還有一些其他的方法,比如貝葉斯網絡分類器,混合高斯模型和隱馬爾科夫模型相結合[61],支持向量機等。這一類評估的主要問題在于觀測時間短,實時計算量要求高,大多數情況下,ADS只能觀測周圍車輛幾秒鐘,因此不能使用需要較長觀察周期的復雜模型。
駕駛風格識別
人和機器最大的不同在于人是有情緒的,有些駕駛員比較激進,有些比較穩重。2016年,谷歌的自動駕駛汽車在換道時和迎面而來的巴士相撞,原因就是自動駕駛汽車以為巴士會減速,而巴士司機卻加速了。如果能事先知道司機的駕駛風格,并結合進行預測,這場事故也許是可以避免的。當然,駕駛風格目前還沒有一個準確的定義,因此分類的依據也有很多種,比如油耗,均速,跟車行為等。一般來說,對駕駛風格的分類大多是將其分為若干類,對應于不同的離散值,但是也有連續型的駕駛風格分類算法,比如[62]將其描述為介于-1到+1之間的值。
同樣,也有一些基于機器學習的方法。[63]采用主成分分析法( Principal component analysis, PCA),以無監督的方式檢測出5個不同的駕駛類別。[64]使用了基于GMM的駕駛員模型來識別單個駕駛員的行為,主要研究了跟車行為和踏板操作(pedal operation)。[65]使用詞袋(Bag-of-words)和K均值聚類來表示個體的駕駛特征。[66]使用了一個自編碼網絡(autoencoder network)來提取基于道路類型的駕駛特征。類似的還有將駕駛行為編碼到3通道RGB空間中,利用一個深度稀疏的自編碼器(deep sparse autoencoder)來可視化各個駕駛風格[67]。將駕駛風格識別成功應用到真實的ADS系統的目前還沒有相關報道,但是這些研究可能是未來ADS發展的一個方向。
規劃與決策
全局規劃
全局規劃是比較成熟的一個研究領域,幾乎所有車都已經配備了導航系統,利用GPS和離線地圖能夠輕易規劃全局路徑。全局路徑規劃可以分為以下四種:目標導向(goal-directed),基于分割( separator-based),分級規劃( hierarchical)和有界跳躍(bounded-hop)。目標導向最常見,比如Djikstra和A*,已經廣泛應用于各個領域。基于分割的邏輯有點像路由算法,刪去一些邊或者頂點,計算每個子區域間的最短路徑,這種方法可以有效加快計算速度。
基于分級的技術利用了道路的層次邏輯,比如道路有國道省道鄉道等,對于路線的查詢,層次結構的重要性應該隨著距離的增長而增加。有界跳躍是一種典型的空間換時間做法,很明顯,計算一對頂點間的所有可能路徑是不切實際的,事先保存若干選定頂點之間的距離和路徑并在導航中使用才是一種合理的做法,對于路徑規劃的查詢可以利用標簽集線器(hub labeling)[68]來加快查詢速度。當然,這些方法并不互斥,互相組合的方法也很常見。[69]將分割法與有界跳躍法相結合,提出了Transit Node Routing
with Arc Flags(TNR + AF)算法。
局部規劃
局部規劃實際可以理解為為了實現全局規劃來找到一條足夠優化且能避開障礙物的軌跡。同樣可以分為四類:基于圖搜索(graph-based planners),基于采樣( sampling-based planners),曲線插值( interpolating curve
planners)和數值優化( numerical optimization)方法。當然,后續還有一些基于深度學習的方法。基于圖搜索的方法基本和基于圖的全局規劃差不多,Dijkstra和A*以及其改進算法依然是最常見的方法。基于圖搜索常見的做法都是將地圖離散成狀態格,這種做法在高維的情況下會產生指數爆炸。因此就有了基于采樣的方法,最常見的基于采樣的方法是概率圖(PRM)和快速隨機搜索樹(RRT)。
這類方法的缺陷主要是不穩定,在某些特定環境下可能要很長時間才能收斂。曲線插值是在一系列已知點上擬合一條可行的軌跡曲線,常見的曲線有回旋線,多項式曲線,貝塞爾曲線等,這種方法的避障策略一般是插入新的無碰撞的軌跡,如果偏離了初始軌跡,則避開障礙之后再返回初始軌跡。這種方法生成的軌跡較光滑,計算量也比較大,但是在實際ADS中,軌跡光滑一般意味著對乘客比較友好。
數值優化一般可以用來改善已有的軌跡,比如[^70]利用非線性數值函數(numeric non-linear functions )來優化A*得到的軌跡,[71]利用牛頓法解決了勢場法(Potential Field Method,PFM)的固有震蕩問題。
隨著人工智能的火熱,一些基于深度學習和強化學習方法的規劃策略也開始涌現出來。[72]利用三維全卷積神經網絡(Fully convolutional 3D neural networks)從激光雷達等輸入設備獲取點云并生成未來的軌跡。[73]利用深度強化學習在仿真環境下實現了交叉路口的安全路徑規劃。基于深度學習的缺陷前面已經提到過了,缺乏硬編碼的安全措施,除此之外還有泛化能力問題,數據來源問題等,但總的來說,這一類方法應該是未來的趨勢之一。
人機交互
車輛一般通過人機模塊(HMI)與駕駛員或乘客交互。互動的強度取決于自動化程度,傳統的L0的車需要持續的用戶操作輸入,而理論上L5級別的車僅需要在行程開始的時候給予一個輸入即可。根據目的不同大致可以把交互任務分為兩類:首要任務(與駕駛相關)和次要任務,理論上講,次要任務的交互輸入更期望是非視覺選項,因為視覺在駕駛任務中是不可替代的,需要視覺的次要任務界面會影響首要任務,從而影響駕駛的可靠性[72]。一個可替代的方案就是聽覺用戶界面(Auditory User Interfaces ,AUI),聽覺不需要刻意集中注意力于某個界面之上。音頻交互的主要挑戰是自動語音識別(automatic speech recognition, ASR)。ASR算是一個比較成熟的領域,但是在車輛領域還有一些挑戰,比如一些不可控的噪聲(駕駛噪聲,風聲,道路噪聲等)。
除此之外,如何與ADS實現對話也是一個尚未解決的挑戰。人機交互最大的挑戰應該是出現在L3和L4,這兩個階段需要人和ADS互相理解對方的意圖來實現手動和自動的切換。在監控自動駕駛時,駕駛員會表現出較低的主觀認知欲望,盡管可以通過一些基于頭部和眼睛追蹤的攝像機來識別駕駛員的活動,并使用視覺和聽覺來提示駕駛員做好切換準備,但目前主要是在模擬環境下實現[73],在真實環境中能夠高效切換的系統目前還未出現。這是一個懸而未決的問題,未來的研究應著重于提供更好的方法來告知駕駛員以簡化過渡過程。
數據集和開源工具
數據集對于研究人員和開發人員來說至關重要,因為大多數算法和工具在上路之前都必須經過測試和訓練。通常的做法是將傳感器數據輸入到一系列具有不同目標的算法中,并在標注過的數據集上測試和驗證這些算法。有些算法的測試是相互關聯的,有些則是單獨的。CV領域已經有很多專門用于目標檢測和跟蹤的標注數據集,而對于端到端系統,還需要額外的車輛信號,主要包括轉向和徑向控制信號。
隨著學習方法的出現,支持它們的訓練數據集也隨之出現。從2005年一直增長到2012年,PASCAL
VOC數據集是第一個包含大量ADS相關數據的數據集之一。但是這些數據通常以單個對象為特征,不能代表駕駛場景中遇到的情況。2012年,KITTI
Vision Benchmark通過提供大量的標記駕駛場景彌補了這一缺陷,直到現在它仍然是自動駕駛中使用最廣泛的數據集之一。當然,從數量上來說,它遠遠比不上ImageNet和COCO這樣的通用圖像數據庫。
通用數據庫在訓練某一特定模塊是有用的,但是由于缺少前后關聯信息(the adequate context),不足以用來測試ADS的能力。加州大學伯克利分校DeepDrive是一個帶有注釋圖像數據的最新數據集。牛津的RobotCar在英國使用六個攝像頭、激光雷達、GPS和慣性導航系統收集了超過1000公里的駕駛數據,不過這些數據沒有標注。還有一些其他的數據集可以見下表。
開源框架和模擬器
常見的ADS開源框架包括:Autoware、Apollo、Nvidia
DriveWorks和openpilot等。常見的模擬器包括CARLA、TORCS、Gazebo
、SUMO等。CARLA可以模仿各種城市場景包括碰撞場景,TORCS是一個賽車仿真模擬器,Gazebo 是一個常見的機器人模擬器,SUMO可以模擬車流量。
總結
這篇文章概述了在ADS中現有的一些系統及關鍵的創新。目前來看,自動駕駛在很多方面都存在著明顯的缺陷。無論是模塊化還是端到端系統,不同的模型都存在著各自的缺陷。具體到算法,建圖,定位,感知等方面,仍然缺乏準確性和效率,對不理想的路況或者天氣的魯棒性也仍有待提高。V2X仍然處于起步階段,由于所需的基礎設施比較復雜,基于云的集中式信息管理也尚未實現。人機交互的研究還比較少,存在著許多問題。
總結
以上是生活随笔為你收集整理的长篇自动驾驶技术综述论文(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长篇自动驾驶技术综述论文(上)
- 下一篇: ISP算法高水平分析(上)