長篇自動駕駛技術綜述論文(上)
A Survey of Autonomous Driving: Common Practices and Emerging Technologies
Ekim Yurtsever, Jacob Lambert, Alexander Carballo, Kazuya Takeda
論文鏈接:https://arxiv.org/abs/1906.05113
摘要
自動駕駛系統(ADSs)承諾提供安全、舒適和高效的駕駛體驗。然而,涉及配備ADS的車輛的死亡人數正在上升。只有進一步提高ADSs的穩健性,才能充分發揮ADSs的潛力。本文討論了尚未解決的問題,並綜述了自動駕駛的技術方面。對當前挑戰、高級系統架構、新興方法和核心功能(包括定位、映射、感知、規划和人機界面)的研究進行了全面回顧。此外,在我們自己的平台上,在真實的駕駛環境中實現並比較了許多最先進的算法。本文最后概述了ADS開發中可用的數據集和工具。
索引項
自主車輛、控制、機器人、自動化、智能車輛、智能交通系統
目錄
摘要
引言
前景與挑戰
系統構成和框架
系統框架傳感器和硬件
定位與建圖
GPS-IMU融合SLAM基於先驗地圖定位
感知
檢測
基於圖像的目標檢測語義分割三維目標檢測目標跟蹤道路和車道線檢測
評估( ASSESSMENT)
總體風險和不確定性評估
周圍駕駛行為評估
駕駛風格識別
規划與決策
全局規划
局部規划
人機交互
數據集和開源工具
數據集和標准
開源框架和模擬器
總結
參考文獻
引言
主要介紹了一些背景,提到了兩個著名的自動駕駛研究項目
1、Eureka Project PROMETHEUS[^1]:1987-1995年間在歐洲開展,是最早的主要自動化駕駛研究之一,戴姆勒-奔馳公司的VITA II也基於此而來。
2、DARPA Grand Challenge[^2]:美國國防部主辦的業內最負盛名的挑戰賽,許多經典的文章都來自於這里。
在傳統的自動駕駛方案系統架構中,一般將任務划分為多個模塊,並在各個模塊上使用一系列傳感器和算法。但是隨着深度學習[^3]的發展,逐漸出現了一些端到端的系統。ADS高級系統架構分類如下,主要是按連通性和算法實現邏輯划分,具體介紹在后面。
前景與挑戰
前景就不提了,自動駕駛不缺故事。按照美國汽車工程師學會(SAE)的定義,汽車的自動化水平如下:
L0:無自動化。
L1:原始駕駛員輔助系統(Primitive driver assistance systems),包括自適應巡航控制、防抱死制動等。
L2:部分自動化,先進的輔助系統(Advanced assistance systems),例如緊急制動或避免碰撞。
L3:有條件的全自動化(Conditional automation),在正常操作期間,駕駛員可以專注於除駕駛以外的其他任務,但是緊急情況下必須能快速響應並接管車輛。
L4:在天氣條件許可,基礎設施(信號地圖等)完善的情況下,完全不需要駕駛員。
L5:無論在任何場景下,都不需要駕駛員,目前尚無完全實現L4級別及以上的自動駕駛車輛。
系統構成和框架
像引言中顯示的那樣,一般從系統框架上可以分為單車輛系統(Ego-only systems)和互聯車輛系統(Connected multi-agent systems);從算法實現上,可以分為兩大類,一類是通過將各個部分模塊化來實現,另一類是直接通過端到端的實現。
系統構成
單車輛系統,顧名思義就是始終在一輛車自身執行所有必要的自動駕駛操作,而互聯車輛系統可能需要依賴於其他車輛和一些基礎設施來完成一些操作,比如現在比較火熱的車輛網,V2X等。就目前來說,當然還是單車輛系統更為常見。
模塊化系統(Modular systems),指將傳感器輸入到執行器輸出的中間過程分別構造成一個個獨立的模塊,比如定位、建圖、感知、評估、規划與決策、車輛控制、預測、人機交互等。模塊化的基本邏輯就是分而治之,把一個復雜的任務分成若干個較為簡單的子任務。除此之外,模塊化還有一些隱藏的優勢,比如說對一些約束(如緊急制動,超速等),多模塊意味着可以從不同角度施加約束,可以保證在其中部分傳感器出現偏差的時候仍能提供較為可靠的輸出。反過來說,多模塊也意外着出錯的概率大大增加,某個模塊的錯誤可能會沿着進程傳播擴散,如前段時間的特斯拉事故,感知模塊誤將白色拖車分類為天空,即使后續模塊完全正確執行,錯誤也無法避免。
端到端系統(End-to-end systems),指的是直接從感知輸入產生輸出,常見的端到端系統有三種主要方法:直接監督的深度學習( Direct supervised deep learning)[5]、神經進化(Neuroevolution)[6]和深度強化學習(Deep reinforcement learning)[7]。一般端到端系統的流程圖如下圖所示
最早的端到端系統可以追溯到ALVINN[5],他訓練了一個三層全連接的網絡來輸出車輛的前進方向。文[74]提出了一種輸入圖像輸出轉向的深度卷積神經網絡。[75]提出了一種時空網絡結構,即FCN-LSTM,可以預測車輛的運動。[4]介紹了另一種卷積模型DeepDriving,可以從輸入圖像中學習一組離散的感知指標。實際上這種方法並不是嚴格端到端的,因為如何從一系列感知指標中得到正確的駕駛動作還需要另外的模塊。
上述的方法都是有監督的訓練,也就是說需要一個專家的行為序列。那么就引入了另一個問題,自動駕駛系統是否應該像人一樣開車?基於上面那個問題,出現了一種新的深度強化學習模型Deep Q Networks(DQN),將強化學習與深度學習相結合。強化學習的目標是選擇一組能最大化獎勵的行動,深度卷積神經網絡在這里的作用是用來逼近最優獎勵函數。簡單來說,基於DQN的系統不再是去模仿專家的行為,而是去學習一種“最佳”的駕駛方式[^7] 最后一種神經進化是指利用進化算法來訓練人工神經網絡,但就實際而言,經進化的端到端駕駛不像DQN和直接監督學習那樣受歡迎。
神經網絡的出發點是去除了反向傳播,從邏輯上來說,更接近生物的神經網絡。在[63]中,作者使用駕駛模擬器對RNN進行神經進化訓練。上述三種端到端自動駕駛的方法相比,直接監督學習的方法可以利用標記數據離線訓練,而DQN和神經進化都需要在線交互。從理論上講,端到端自動駕駛是可行的,但是還沒有在真實的城市場景中實現(demo不算),最大的缺點是缺乏可解釋性和硬編碼安全措施(Hard coded safety measures)。 互聯系統(Connected systems):有一些研究人員認為,靠在單車輛系統上疊傳感器是局限的,自動駕駛的未來應該是側重在多車輛之間的信息共享。隨着車輛自組織網絡(VANETs)的使用,無論是行人信息,傳感器信息,亦或者是交通信號等,利用V2X(Vehicle to everything),車輛可以輕松訪問其他車輛的數據,來消除單車的感知范圍,盲點,算力的限制。
車輛自組織網絡可以通過兩種不同的方式實現:傳統的基於IP的網絡和以信息為中心的網絡( Information-Centric networking,ICN)[8]。由於車輛的高度流動性和在道路網絡上的分散性,因此傳統的基於IP主機的網絡協議不是很適用,事實上,信息源的身份有時候不是那么重要的一件事,ICN顯然是更合理的方式。在這種情況下,車輛將查詢信息匯聚到某個區域而不是某個地址,同時,它們開源接收來自任何發送方的響應。
上面我們提到可以利用車輛間的共享信息來完成一些駕駛任務,但是這里還有一個待解決的問題。想象一下一個城市有幾十萬輛車,每輛車可能有若干個攝像頭,雷達,各種各樣的傳感器,每時每刻產生的數據量是十分龐大的,更關鍵的是,大多數情況下,這些數據是雷同的,即使不考慮傳輸和計算的負擔,對算力來說也是極大的浪費。為了減少待處理的數據規模,[9]引入了一個符號學框架,該框架集成了不同的信息源,並將原始傳感器數據轉換為有意義的描述。除此之外,車輛雲計算(Vehicular Cloud Computing,VCC)[10]與傳統的雲計算不同,它將傳感器信息保存在車輛上,只有當本地其他車輛查詢時才會被共享,節省了將恆定的傳感器數據流上載/下載到web的成本。
傳感器和硬件
為了保證系統的魯棒性和可靠性,大多數任務都需要較高的傳感器冗余度,因此ADS一般都采用多種車載傳感器。硬件模塊大致可以分為五類,外部感知傳感器(Exteroceptive sensors),監測車輛自身狀態的本體感知傳感器(Proprioceptive sensors),通信單元,執行器和計算單元。常見的外部傳感器比較如下表:
單目相機(Monocular Cameras):最常見最廉價的傳感器之一,除此之外,二維的計算機視覺算是一個比較成熟的研究領域,雖然理論上無法獲得深度,但是現在也有一些基於單目深度的結果,缺點主要還是在精度和容易受環境因素影響上。現在還有一些針對特殊場景而開發的相機,如全景相機(Omnidirection Camera),閃光相機(Flash Camera),熱敏相機(Thermal Cameras),事件相機(Event Camera)[11]等。所謂的全景相機就是理論上擁有360度視角的相機,事實上,這一類相機的難點並不在捕捉圖像而是在圖像拼接上,因為球面圖像是高度失真的,所以校准的難度很大。
而事件相機是一種比較新穎的概念,傳統相機是按時間采用,而事件相機是事件觸發型,它對場景中移動造成的變換比較敏感,因此可以用在檢測動態目標上。事件相機的簡單示例如圖3和圖4所示。
雷達(Radar)和激光雷達(Lidar):一般來說,現在都是采用多傳感器的形式,用雷達或者激光雷達來彌補相機(包括深度相機)在深度信息上的缺陷。激光雷達和雷達的工作原理其實差不多,只不過激光雷達發射的是紅外線而不是無線電波,在200米以內的精度是很高的,但是相對雷達來說,更容易受到天氣的影響。雷達的精度雖然不如激光雷達高,但是由於測距長,成本低,對天氣魯棒性強,目前已經廣泛應用於輔助駕駛(ADAS)中,比如接近警告和自適應巡航。(原文中沒有提到這兩種雷達的干擾問題,實際上金屬對電磁波的干擾,生物對紅外的干擾,相同頻段的(激光)雷達互相干擾是十分關鍵的問題)。 本體傳感器:一般指車輛自身攜帶的傳感器,如里程計,IMU,轉速計等。一些研究機構及公司的整車配置如下表所示:
定位與建圖
定位指的是在環境中找到相對於參考系的位置,對於任何移動機器人來說這個任務都是最基本的。下文會詳細介紹到三種最常見的方法:GPS-IMU融合,SLAM,基於先驗地圖定位。幾種定位方法的比較如下表所示
GPS-IMU融合
GPS-IMU融合的主要原理是用絕對位置數據修正航位推算(dead reckoning)的累積誤差[12]。在GPS-IMU系統中,IMU測量機器人位置和方向的變化,並對這些信息進行處理,以便用航位推算法對機器人進行定位。但是IMU有一個顯著的缺點,就是我們常說的累積誤差。因此引入GPS的絕對位置信息(相當於一個反饋),可以有效地對IMU誤差進行校正。
GPS-IMU融合的方法的精度比較低,實際上並不能直接用在車輛定位上。在2004年的DARPA挑戰賽中,卡內基梅隆大學(Carnegie Mellon University)的紅隊就因為GPS錯誤而未能通過比賽。除此之外,在密集的城市環境中,像隧道,高層建築等都會影響GPS的精度。盡管GPS-IMU系統本身無法滿足自動駕駛的性能要求,但是可以和激光雷達等傳感器相結合進行位姿估計。
SLAM
顧名思義,SLAM是一種在線地圖繪制同時定位的行為(理論上的同時)。理論上SLAM不需要關於環境的先驗信息,就目前而言,更多是應用在室內環境(室外更多還是基於預先構建的地圖進行定位)。關於自動駕駛領域的SLAM可以參見[13]。
基於先驗地圖定位
基於先驗地圖的定位技術的核心思想是匹配:定位是通過比較在線數據同先驗地圖的信息來找到最佳匹配位置[14]。也就是根據先驗的地圖信息來確定當前的位姿。這個方法有一個缺陷,一般需要額外的一個地圖制作步驟,而且,環境的變化可能會對結果產生負面影響(比如光照變化,參照物移動等)。
這類方法大致可以分為兩大類:基於路標的定位和基於點雲的匹配。- 基於路標:與點雲匹配相比,基於路標的定位計算成本要低得多。理論上來說,只要路標的數量足夠多,這種定位就是魯棒的。[15]中采用了激光雷達和蒙特卡羅結合的方法,通過匹配路標和路緣(road markers and curbs)來定位車輛的位置。[16]介紹了一種基於視覺的道路標記(road marking)檢測方法,事先保存了一份低容量的全局數字標記地圖(a low-volume digital marker map with global coordinates),然后與前置相機的采集數據進行比較。最后根據檢測結果和GPS-IMU輸出利用粒子濾波器進行位置和方向的更新。
該方法的主要缺點在於地標的依賴性。基於點雲:點雲匹配一般是指局部的在線掃描點雲通過平移和旋轉同先驗的全局點雲進行匹配,根據最佳匹配的位置來推測機器人相對地圖的局部位置。對於初始位姿的估計,一般是結合GPS利用航位推算。下圖展示了利用Autoware進行的地圖制作結果:
文獻[17]中使用了一種帶有概率圖的多模態方法,在城市環境中實現了均方誤差小於10cm的定位。與一般逐點進行點雲匹配並舍棄不匹配部分相比,該方法中所有觀測數據的方差都會被建模並應用於匹配任務。后續幾種常見的匹配方法包括基於高斯混合模型(Gaussian Mixture Maps ,GMM)),迭代最近點匹配(Iterative Closest Point ,ICP),正態分布變換(Normal Distribution Transform ,NDT)等。關於ICP和NDT,[18]進行了詳細的比較(我之前也寫過一篇博客)。ICP和NDT算法都有相應的一些改進和變式,比如[19]提出了一種基於NDT的蒙特卡羅定位方法,該方法利用同時利用了離線的靜態地圖和不斷進行更新的短期地圖,當靜態地圖失效時,基於NDT的柵格來更新短期地圖。
基於先驗地圖方法最大的缺陷就在於先驗地圖的獲取上,實際上制作和維護一個可靠的高精度地圖是相當費時又費力的一件事。除此之外,還有一些其他情況,比如跨維度的匹配(二維到三維,三維到二維等)。[20]就提到一種利用單目相機在點雲中進行定位的方法。在初始姿態估計的基礎上,利用離線的三維點雲地圖生成二維圖像,並同相機捕捉到的圖像進行在線歸一化比較。這種方法相當於簡化了感知的工作,但是增大了計算的復雜度。
感知
感知周圍環境並提取可供安全導航的信息是自動駕駛的核心之一。而且隨着近年來計算機視覺研究的發展,相機包括三維視覺逐漸成為感知中最常用的傳感器。本節主要討論基於圖像的目標檢測,語義分割,三維目標檢測,道路和車道線檢測,目標跟蹤等。
基於圖像的目標檢測
一般目標檢測指的是識別感興趣目標的位置和大小(確定圖像中是否存在特定類的對象,然后通過矩形邊界框確定其位置和大小),比如交通燈,交通標志,其他車輛,行人,動物等。目標檢測是計算機視覺的核心問題,更重要的是,它還是其他許多任務的基礎,比如說目標跟蹤,語義分割等。
對於物體識別的研究雖然始於50多年前,但是直到最近幾年,算法的性能才算真正達到自動駕駛相關的水平。2012年深度卷積神經網絡(DCNN) AlexNet[21]一舉玩穿了ImageNet挑戰賽,開啟了深度學習用於目標檢測的浪潮。基於圖像的目標檢測survey也有很多,比如[22]。盡管目前最先進的方法基本都依賴於DCNN,但它們之間也存在明顯的區別:1)單級檢測框架(Single stage detection frameworks)使用單個網絡同時生成對象檢測位置和類別預測。2)區域生成檢測框架(Region proposal detection frameworks)有兩個不同的階段,首先生成感興趣的一般區域(候選區域),然后通過單獨的分類器網絡進行分類。
區域生成網絡是目前比較先進的檢測方法,不足是對計算能力要求高,不容易實現,訓練和調整。相應的,單級檢測算法具有推理速度快,存儲成本低等優點,非常適合實時自動駕駛場景。YOLO[23]是當前十分流行的一種單級檢測算法,也有許多改進的版本。YOLO的網絡利用DCNN在粗網格上提取圖像特征,顯著地降低了輸入圖像的分辨率。之后用一個全連接的神經網絡預測每個網格單元的類概率和邊界框參數,這種設計使得YOLO速度非常快。另一種廣泛使用的方法是單點檢測器(Single Shot Detector,SSD)[24],它的速度甚至比YOLO更快。SSD與YOLO都在粗網格上進行檢測,但是SSD也使用在DCNN早期得到的高分辨率特征來改進對小目標的檢測和定位。
對於自動駕駛任務來說,可靠的檢測是至關重要的,但同時也需要平衡精度和計算成本,以便規划和控制模塊能有充足的時間來對檢測結果做出反應。因此,目前SSD通常是ADS的首選檢測算法。當然,區域生成網絡(RPN)在目標識別和定位精度方面的性能已經遠勝單級檢測框架算法,並且近年來隨着計算能力的不斷提高,也許在不久的將來,RPN或者其他兩階段檢測框架就能適用於ADS任務中。
基於圖像的目標檢測方法的主要不足大多來源於相機的天然缺陷,比如難以處理弱光條件,對於陰影,天氣,光照變化的適應性不足等,尤其是監督學習的方法。一方面可以研究一些光照不變特征的方法,另一方面的話,通常來說,采用單傳感器很難能適應各種復雜的現實情況,因此采用多傳感器融合的策略是大勢所趨。比如利用雷達或者紅外傳感器來處理低光條件下的目標檢測等。
語義分割
這里簡單談一下我理解的圖像分類,目標檢測和語義分割的區別。圖像分類是給你一堆圖,告訴我每張圖主要內容的類別,最經典的就是MNIST上的手寫數字識別,輸出是每張圖代表什么數字。目標檢測是輸入一系列圖,把每張圖里我感興趣的目標框出來,比如上面說的用YOLO做行人檢測,輸出就是用矩形框把每張圖里的行人框出來。語義分割的任務是把圖像里的每一個像素都歸到某個類別里,有點像機器學習中聚類的概念。下面兩張圖左邊是目標檢測,右邊是語義分割。
為什么自動駕駛需要研究語義分割呢?因為僅僅簡單用矩形框把目標框出來的效果可能很差,尤其是在道路,交通線上。甚至我們應該更進一步進行實例分割(Instance segmentation),來區分不同軌跡和行為的對象。得益於目標檢測的發展,分割方法逐漸在實時應用中變得可行。Mask R-CNN[25]是Faster R-CNN[26]的推廣,多任務網絡可以同時實現精確的邊界框估計和實例分割,該方法可以用來進行行人姿態估計等任務。Mask R-CNN的速度可以達到每秒5幀,速度接近了實時ADS的要求。
與使用CNN使用區域生成網絡進行目標檢測不同,分割網絡通常采用卷積的組合進行特征提取,然后利用反卷積(去卷積,deconvolutions)來獲得像素級標簽[27]。此外,特征金字塔網絡(Feature pyramid networks)也被廣泛使用,比如在PSPNet[28]中,它還引入了擴散卷積(dilated convolutions)進行分割。DeepLab[29]是目前最先進的對象分割模型,主要用到了稀疏卷積(sparse convolutions)的思想。
盡管大多數分割網絡仍然太慢且計算量巨大,無法在ADS中使用,但需要注意的是,許多分割網絡最初都是針對不同的任務(如邊界框估計)訓練的,然后在推廣到分割網絡。而且之后證明這些網絡可以學習圖像的通用特征表示並推廣到其他任務當中。這也許提供了另一種可能性,利用單一的廣義感知網絡可以解決ADS的所有不同感知任務。