自動駕駛系統包括環境感知和定位,行為預測和規劃控制。作為自動駕駛感知演算法工程師,我這裡就只說說環境感知方面需要的知識吧。
下面是我在自動駕駛感知專欄中的一篇概述文章,專欄裡也包含了各個子領域的介紹性文章。
1 前言
本專欄主要關注自動駕駛中的環境感知任務,內容包括感知技術的起源,現狀以及最新的發展趨勢。感知任務大多涉及演算法設計,因此專欄的介紹也以演算法為主線,特別是深度學習的演算法。此外也會涉及一些資料採集,系統測試,演算法部署以及量產感知系統的分析。
自動駕駛中的環境感知包含了自動駕駛和環境感知兩個概念。首先,什麼是自動駕駛呢?下面是維基百科上對自動駕駛汽車的定義。
自動駕駛汽車,又稱無人駕駛車、電腦駕駛車、無人車、自駕車,為一種需要駕駛員輔助或者完全不需操控的車輛。作為自動化載具,自動駕駛汽車可以不需要人類操作即能感測其環境及導航。
上述定義裡有幾個關鍵詞。首先是汽車,我們這裡所說的自動駕駛技術涉及的是汽車,而不是飛機火車之類的交通工具。其次是感知環境和導航,也就是說自動駕駛汽車可以自主的採集和理解周邊環境資訊,並根據設定的目的地進行決策和行進。最後是需要駕駛員輔助或者完全不需操控,這裡涉及到自動駕駛系統的分級,是一個非常重要的概念,下面稍微展開說一下。
自動駕駛技術不是從0到1的質變,而是一個漸變迭代的過程。關於自動駕駛系統的分級,目前最常用的標準是由SAE(美國汽車工程師學會)制定的。不同機構制定的標準會略有不同,但是基本的概念是一致的。下表對L0(人工駕駛)到L5(完全自動駕駛)六個級別進行了總結。這些定義可能有些難懂,但是與車輛上不同的功能結合起來就容易理解了。比如說,汽車中現在標配的防抱死制動系統(ABS)和車身電子穩定系統(ESP)就都屬於L1級別。此外,定速巡航、自適應巡航(ACC)以及車道保持輔助 (LKA)也屬於L1級別的範疇,因為它們只能在一個方向上(橫向或縱向)操控車輛。如果同時實現了 ACC和LKA,那麼這輛車就來到了L2級別。對於L2及其以下級別的系統來說,車輛的駕駛員都需要監控周圍環境並隨時做好接管的準備。這一點非常關鍵,這也是很多L2級別的車輛出現交通事故的主要原因,也就是駕駛員對系統期望過高,在駕駛過程中沒有時刻保持對周邊環境的關注。如果一個車輛配備了某種Pilot系統,比如Traffic Jam Pilot,那麼就達到了L3級別。這就意味著,在某些特定的場景下(比如高速公路,堵車等),駕駛員不需要時刻監控當前路況,可以鬆手,松腳,松眼,只需要在系統提示時接管車輛即可。在這種限定的情況下,駕駛員已經成為了乘客。對於L4級別的系統,目前只存在於演示車輛中。我們平時看到的諸如“某廠家的車輛在某道路上實現了XX小時無人工接管的自動行駛”,這都屬於L4級別的範疇,與L3最大的區別是不需要人工接管了,在限定場景下可以實現車輛的完全自主行駛。L5級別就是把“限定場景”這個條件也去掉了。這個級別的車輛最大的特點就是沒有方向盤了,所有人都是乘客,車輛的所有操控權都屬於系統。
瞭解了自動駕駛是什麼以後,我們再來看看自動駕駛系統是怎麼實現的。一般來說,自動駕駛系統包含感知,決策和控制這三個主要模組。粗略來說,這三個模組對應生物系統的眼睛,大腦和四肢。感知系統(眼睛)負責瞭解周圍障礙物和道路的資訊,決策系統(大腦)根據周圍的環境以及設定的目標決定下一步需要執行的動作,而控制系統(四肢)則負責執行這些動作,比如轉向,加速,剎車等。進一步來說,感知系統裡又包括了環境感知和車輛定位兩個任務。環境感知負責檢測各種移動和靜止的障礙物(比如車輛,行人,建築物等),以及收集道路上的各種資訊(比如可行駛區域,車道線,交通標誌,紅綠燈等),這裡需要用到的主要是各種感測器(比如攝像頭,鐳射雷達,毫米波雷達等)。車輛定位則根據環境感知得到的資訊來確定車輛在環境中所處位置,這裡需要高精度地圖,以及慣性導航(IMU)和全球定位系統(GPS)的輔助。
本專欄主要關注環境感知系統,重點會介紹攝像頭,鐳射雷達和毫米波雷達這三種主要的感測器,以及它們的融合。不同的感測器有著不同的特性,各自都有優缺點,因此也適用於不同的任務。攝像頭是感知系統中最常用的感測器,優勢在於能夠提取豐富的紋理和顏色資訊,因此適用於目標的分類。但是其缺點在於對於距離的感知能力較弱,並且受光照條件影響較大。鐳射雷達在一定程度上彌補了攝像頭的缺點,可以精確的感知物體的距離和形狀,因此適用於中近距的目標檢測和測距。但是其缺點在於成本較高,量產難度大,感知距離有限,而且同樣受天氣影響較大。毫米波雷達具有全天候工作的特點,可以比較精確的測量目標的速度和距離,感知距離較遠,價格也相對較低,因此適用於低成本的感知系統或者輔助其它的感測器。但是缺點在於高度和橫向的解析度較低,對於靜止物體的感知能力有限。
環境感知系統中的多種感測器
2 技術概覽
上一節中提到了,環境感知系統的硬體基礎是多種感測器以及它們的組合,而軟體方面的核心則是感知演算法。總的來說,感知演算法要完成兩個主要的任務:物體檢測和語義分割。前者得到的是場景中重要目標的資訊,包括位置,大小,速度等,是一種稀疏的表示;而後者得到的是場景中每一個位置的語義資訊,比如可行駛,障礙物等,是一種稠密的表示。這兩個任務的結合被稱為全景分割,這也是自動駕駛和機器人領域最近興起的一個概念。對於物體目標(比如車輛,行人),全景分割輸出其分割Mask,類別和例項ID;對於非物體目標(比如道路,建築物),則只輸出其分割Mask和類別。環境感知系統的終極目標就是要得到車輛周邊三維空間中全景分割結果。當然對於不同級別,不同場景下的自動駕駛應用來說,需要的感知輸出不也盡相同。
自動駕駛駕駛技術這一輪的爆發很大程度上來源於深度學習在計算機視覺領域取得的突破,而這個突破首先是從影象分類和影象中的物體檢測開始的。在自動駕駛環境感知中,深度學習最先取得應用的任務是單張二維影象中的物體檢測。這個領域中的經典演算法,比如Faster R-CNN,YOLO,CenterNet等都是不同時期視覺感知演算法的主流。但是,車輛不能僅僅依靠一張二維影象上的檢測結果來行駛。因此,為了滿足自動駕駛應用的需求,這些基礎的演算法還需要進行進一步的擴充套件,其中最重要的就是融合時序資訊和三維資訊。前者衍生出了物體跟蹤演算法,後者衍生出了單目/雙目/多目的三維物體檢測演算法。以此類推,語義分割包含了影象語義分割,影片語義分割,稠密深度估計。
為了得到更加精確的三維資訊,鐳射雷達也一直是自動駕駛感知系統的重要組成部分,尤其是對於L3/4級別的應用。鐳射雷達的資料是相對稀疏的點雲,這與影象稠密的網格結構差別非常大,因此影象領域常用的演算法需要經過一定的改動才能應用到點雲資料。點雲感知的任務也可以按照物體檢測和語義分割來劃分,前者輸出三維的物體邊框,而後者輸出點雲中每個點的語義類別。為了利用影象領域的演算法,點雲可以轉換為鳥瞰檢視(Bird's Eye View)或者前檢視(Range View)下的稠密網格結構。此外,也可以改進深度學習中的卷積神經網路(Convolutional Neural Network, CNN),使其適用於稀疏的點雲結構,比如PointNet或者Graph Neural Network。
毫米波雷達由於其全天候工作,測速準確,以及低成本的特點,也被廣泛的用於自動駕駛感知系統中,不過一般應用在L2級別的系統中,或者在L3/4級系統中作為其它感測器的輔助。毫米波雷達的資料一般來說也是點雲,但是比鐳射雷達的點雲更為稀疏,空間解析度也更低。相比於攝像頭和鐳射雷達,毫米波雷達的資料密度非常低,因此一些傳統方法(比如聚類和卡爾曼濾波)表現的並不比深度學習差很多,而這些傳統方法的計算量相對較低。最近幾年來,開始有研究者從更底層的資料出發,用深度學習代替經典的雷達訊號處理,透過端對端的學習取得了近似鐳射雷達的感知效果。
單個感測器的感知能力總是有限的,如果把系統成本先放在一邊,多感測器融合的方案自然更好的選擇。一般來說,攝像頭是感知系統的必備的感測器,為了得到深度資訊和360度的視場,可以採用雙目或者多目融合的方案。為了更準確的獲得三維和運動資訊,攝像頭也可以與鐳射雷達和毫米波雷達進行融合。這些感測器的座標系不同,資料形式不同,甚至採集頻率也不同,因此融合演算法的設計並不是一件簡單的任務。粗略來說,融合可以在決策層(融合不同感測器的輸出)或者資料層(融合不同感測器的資料或者中間結果)來進行。資料層融合理論上說是更好的方法,但是對感測器之間的空間和時間對齊要求會更高。
以上大致介紹了環境感知中所涉及的演算法部分,演算法部分的其它一些內容,比如多目相機的融合,多感測器的空間和時間對齊,後續也會進行介紹。
除了核心演算法設計以外,感知系統中其它重要的部分還包括資料的採集和標註,演算法的測試和迭代,以及系統的部署等,這些內容之後專欄中也會推出系列文章進行分析。
3 行業現狀
瞭解了感知系統中所包含的技術之後,下一步我們來看看這些感測器在目前的量產或者演示車輛中的應用現狀。
粗略來說,自動駕駛公司可以分為兩大類別。一類是傳統的車企(比如國外的大眾,寶馬,通用,豐田等,國內的長城,吉利等),新能源車企(比如特斯拉,蔚來,小鵬等)和Tier1(比如國外老牌的博世,大陸,安波福)等,以及國內新興的華為,大疆等)。這類公司的首要目標是量產,一般以L2級別方案為主,目前也在向L3級別擴充套件。另外一類是一些方案提供商或者初創公司(比如Waymo,Mobileye,Pony.AI,Momenta,TuSimple等)。這些公司致力於發展L4級別的自動駕駛技術,面向的是諸如Robotaxi,Robotruck和Robobus之類的應用。
對於不同的自動駕駛級別,不同的應用場景,感測器的配置方案也不盡相同。對於L2級別的應用,比如緊急制動和自適應巡航,可以只採用前視單目攝像頭或者前向毫米波雷達。如果需要變道輔助功能,則需要增加感測器對相鄰車道進行感知。常用的方案是在車頭和車尾增加多個角雷達,以實現360度的目標檢測能力。對於L3級別的應用,需要在特定場景下實現車輛的完全自主駕駛,因此需要擴充套件車輛對周邊環境的感知能力。這時就需要增加鐳射雷達,側視和後視的攝像頭和毫米波雷達,以及GPS,IMU和高精度地圖來輔助車輛定位。到了L4級別以後,由於在特定場景下不需要人工接管了,感測器就不僅需要高精確度,還需要高可靠性。這就需要增加感測器的冗餘性,也就是說需要備用系統。
下面我們來看幾個具體的案例。
首先是特斯拉近期推出的純視覺方案。雖然一提起自動駕駛,很多人腦子裡最先想到的就是特斯拉,但是特斯拉其實也只是L2級別(或者說高階L2)的自動駕駛系統,因為還是需要駕駛員隨時準備好接管車輛。如果你只在L2級別的系統裡橫向對比,那麼特斯拉的方案還是很有競爭力的。這個系統只採用了視覺感測器,包括了安裝在車身不同位置,多種焦距和視野範圍的攝像頭。這些攝像頭可以覆蓋360度的視野,並且有一定的冗餘性。特斯拉在AI Day上展示的基於深度學習的的多攝像頭融合演算法,個人覺得還是非常值得研究一下的,後續也會推出文章進行詳細分析。
特斯拉的純視覺感測器配置(L2級別)
2017年夏天,奧迪釋出了第四代A8,其中最大的亮點就是搭載了Traffic Jam Pilot(TJP)系統。前文提到了,TJP系統已經屬於L3的範疇,因此奧迪A8可以說是全球首個“量產”的L3級系統。為什麼加上引號呢,這是因為該功能在交付的車輛中一直沒有開啟,使用者只能在奧迪自己的演示車中體驗。奧迪官方的解釋是法規方面的問題,但其實最核心的原因還是技術方面的,也就是L3中的所謂的“接管悖論”問題。在60公里時速以下的結構化道路堵車場景中,TJP系統允許駕駛員低頭玩手機或者睡覺。這時如果出現突發狀況,可能就會出現接管不及的情況。雖然奧迪在2019年底取消了L3級自動駕駛專案,但是這個探索也為後續的L4和各種高階L2系統的研發提供了寶貴的經驗。更多的細節這裡就不展開說了,我們下面來看看這套系統中感測器方案。奧迪A8全車共有12個超聲波感測器、4個全景攝像頭、1個前置攝像頭、4箇中程雷達、1個遠端雷達、1個紅外攝像機。此外,奧迪A8首次搭載了一個4線的車規級鐳射雷達,並且配備中央駕駛輔助系統控制單元(zFAS),這些都是L3級自動駕駛系統的必備選項。
奧迪A8的感測器配置(L3級別)
從L2到L3,再到L4,感測器方面最大的變化就是增加了鐳射雷達,而且數量逐漸增加。比如,在Waymo的感測器方案中,除了前向的鐳射雷達外,還增加了後向和車頂的360度鐳射雷達。而且鐳射雷達的線束數量顯著提高,可以達到300米左右的感知範圍。除了Waymo,其它各家公司的L4系統都不可避免的包含了一個或者多個鐳射雷達。從目前的技術發展趨勢來看,實現L4級別的自動駕駛主要還是靠增加感測器,從而大幅提升對駕駛路況和環境的感知能力,而這其中最重要的就是鐳射雷達。到了L4級別,車輛在限定場景下完全自主行駛,這時99%的準確度就不夠了,而需要的是99.99999%的準確度,而鐳射雷達就是小數點後幾位的保障。這種保障來自鐳射雷達與其它各種感測器之間的配合,而不僅僅是簡單的堆疊,因此高效精確的感測器融合在L4級別的系統中起到至關重要的作用。
Waymo的感測器配置(L4級別)
以上只是簡單的介紹了L2/3/4級別中感測器配置的一些典型案例,專欄會在後續的文章中詳細分析不同公司的自動駕駛技術路線,以及相應的感測器配置和感知系統設計。