天天看點

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

3月28日,地平線在智東西公開課開設的「地平線自動駕駛技術專場」已順利完結,地平線自動駕駛系統架構師劉景初博士圍繞《上帝視角與想象力——自動駕駛感覺的新範式 》這一主題進行了直播講解。

劉景初博士從自動駕駛架構演化下提出的算法新需求出發,對軟體2.0下新的感覺範式、BEV感覺的十八般武藝以及端雲一體的BEV感覺開發進行了深入講解。

本次專場分為主講和Q&A兩個環節,以下則是主講回顧:

各位朋友大家好,我是地平線自動駕駛系統架構工程師劉景初,很高興和大家分享地平線在感覺領域的一些思考和實踐。本次課程主要分為以下4個部分:

1、自動駕駛結構演化提出算法新需求

2、軟體2.0下新的感覺範式

3、BEV感覺的十八般武藝

4、端雲一體的BEV感覺開發

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖1

先來看一張簡單的圖,分享下地平線對于自動駕駛的了解。自動駕駛的目标比較簡單,通常有三個:安全、舒适、效率。一般安全是第一位的,因為誰也不是希望自動駕駛出事,它是為了不出事而設計的系統。除了安全之外,是舒适和效率,對于不同的車型,這兩個目标會有不一樣的折衷。如果是日常生活中的乘用車,舒适應該會更重要一些,因為很多人不希望在日常通行過程中頻繁體驗推背感,是以舒适對于乘用車來說比較重要。最後是效率,大家都不希望為了舒适,車輛隻以5邁的速度在街上行駛。更多是希望在滿足安全、舒适的前提下,盡快把我們送到想去的目的地。

在一些其他場景之下,舒适和效率可能會有順序的交換。比如一些運貨的車,車上沒有易碎物品,舒适性上可以稍微打折扣,在不損壞貨物的前提下,急刹車或者加速是允許的,這時可以把效率的優先級提高一些。

從我個人的了解來看,自動駕駛最終要服務的系統級目标是安全、舒适、效率。為了實作這個目标,自動駕駛已經研發了數十年,典型的系統pipeline沒有太多變化。在典型的pipeline中,最上遊是傳感器,類比于人的感官,像眼睛、耳朵、觸覺等傳感器;再往下遊是大腦中對原始傳感器資訊的處理,并從中提取一些有意義的、抽象的、精簡的資訊,這部分一般叫做環境感覺。

再往後是定位地圖。如果不是熟路,車主在開車的過程中是很容易迷路的,在很多主流的自動駕駛方案中,地圖或高精地圖是比較重要的一環,它的基本作用是作為離線感覺器,把人眼看不到、耳朵聽不到的超視距資訊,預先通過一些預處理方法形成一個資料結構。當人線上開車時,通過定位把資訊recall回來,放到目前的局部坐标系下,這樣就能看得更遠、更全,獲得更好的感覺效果。環境感覺和定位地圖都是為了完成感覺,隻是一個是線上的,一個是離線的,這兩個子產品的邊界在不同公司也會有不同的劃分。

再往下遊是決策規劃。決策規劃籠統劃分可以分為決策子產品和規劃子產品,若是更細分,可分為決策、預測、規劃和控制這四個子產品。最核心的問題是如何處理場景中與其他交通參與者的動态博弈。之是以在圖1中規劃決策子產品上放了“下棋”的圖示,因為決策和規劃這兩個最主要技術子產品的内部過程,與下棋有很多異曲同工之處,很多用來解決下棋問題的方法,某種程度上也可以應用在決策規劃子產品中。

最後是控制執行。這部分是怎麼樣把計算出的車輛油門、刹車、轉向等資訊傳遞到車身中,然後讓車去執行。

中間三個環節比較偏算法,是以用顔色比較深的形式表達;而兩端偏硬體外設,是由車的硬體架構決定,是以用顔色比較淺的形式表示。雖然pipeline在這幾十年來已逐漸成型,但是通過什麼樣的軟體和硬體劃分方式來實作這些子產品,在最近幾年有很大的演進趨勢變化。

看下圖1中最下面的方框,上面箭頭表達的是以往主流的劃分方式,豎杠與上面的 pipeline對應,比如傳感器,一般意義上來看,傳感器是純硬體外設,甚至一部分感覺工作或一些很前端的信号處理,都是硬體外設來完成的。硬體外設的特點是運算速度很快,功耗比很出色,但它的靈活性相對比較差。

1

自動駕駛結構演化提出算法新需求

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

在剛做環境感覺時,大家談AI,大多談的是環境感覺中的AI應用。為了讓AI算法能更快、更好地運作,一般都不會把它運作在硬體外設上,也不會選擇運作在CPU上,它們兩個的缺點要麼是可程式設計性不夠,要麼是能耗比不夠,是以會設計專用的硬體加速器,這也是地平線的主要發力點。

再往後的很大區間是CPU上的軟體,這裡面包含了底層的一些軟體、中間件,更大量的是上層的邏輯算法,還有一些偏傳統的數學優化方法。因為它的靈活性很高,是以AI加速器的支援力度相對會低一些,傳統方法一般把這些軟體運作在CPU上,有些實踐也會把它放在GPU上,因為GPU對很多的數學運算來說,基本上是一個通用的計算裝置。

最後,控制執行一般都在硬體外設,這也是目前主流的方法。大家可以看到,雖然談到自動駕駛和AI有很多關聯,但實際應用上,主流的方法隻在環境感覺中很窄的一段區間裡,是AI算法真正發揮作用的地方。

最近幾年有一個很大的趨勢性變化,如圖1中最下面的橫向箭頭,展示了一個更加複雜,但更有意思的途徑,兩端還是硬體外設,但在傳感器側,硬體外設的邊界向前端退縮了。以往很多需要使用ISP裝置計算的信号,現在可以直接将原始傳感器的資訊直接送到AI算法裡,跳過一些專用的硬體做計算。同時,在感覺的下遊,也可以去掉大量用于輔助感覺的規則,即感覺後處理。是以在環境感覺中,AI算法基本上能夠cover環境感覺以及環境感覺的下一步。

定位地圖是另外一個相對不一樣的環節。定位地圖裡面有很多優化的内容,是以很多核心的問題可以通過軟體和CPU解決,而且地圖在雲端有相對成熟的自動化工具,有時不一定依賴AI算法,也可以獲得不錯的效果。是以在車端上能展現出的定位地圖,大部分還是CPU的通用軟體算力,但也有一些内部實踐發現,在定位方面以及地圖和感覺融合方面,使用AI算法會有不錯的效果。

再到決策規劃子產品,以往很多決策規劃的内容都是寫的規則,if-else或一棵巨大無比的決策樹,然後在裡面做決策。規劃可能是一些優化的問題,很多時候靠規則設定一些邊界條件和代價函數決定最終的行為。最近也有一個趨勢是将決策規劃中偏上層的部分,甚至決策和規劃的邊界消融掉,然後把決策、規劃中很核心的初始解選擇問題,通過AI算法來實作,包含了模仿學習、強化學習等内容,再把剩下的一部分交給軟體來做,通過這樣的方式達到更好的協同。

最後控制執行變化不多,主要是硬體外設。通過上面可以看到一個很大的趨勢是 AI算法在整個pipeline裡的範圍越來越大,這裡表述的最好的是特斯拉的Andrej Karpathy,Karpathy把它稱作軟體2.0。軟體2.0,正逐漸在系統中替換軟體1.0,那什麼是軟體2.0?我認為最精确的定義應該是用神經網絡實作一些原本用規則、邏輯實作的功能,也有一些寬泛的定義,會把Machine Learning模型、統計學習模型也算做軟體2.0,但它的核心特性是算法本身的建構,一方面要依靠人搭一些架構和骨架,更重要的是通過資料來訓練它的性能表現。簡單來說就是軟硬協同的演進趨勢,是為了更好地利用軟體2.0的方式服務整個自動駕駛系統。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖2

上面談到了整個自動駕駛系統,而今天的主題是感覺。感覺是整個自動駕駛系統的最上遊,如果回顧下感覺系統比較主流的處理方式,可以類比為圖2最左部分,自動駕駛系統為了保證足夠高的安全性能,會放很多的傳感器。每個傳感器一般會經過簡單的信号處理後,送到一個神經網絡中。每個傳感器的模态會獲得一些神經網絡的輸出,像圖2最左邊的下半部分是6路攝像頭看到的情景,對應的神經網絡會分别處理這幾路的 video輸入,獲得每一路的輸出。

圖2中間部分是語義分割的輸出做表示,但實際上每一路的神經網絡,一般是多任務模型,除了語義分割外,還有目标檢測、深度估計等任務。它們的主要特性是每一路神經網絡的輸出是在原始的 sensor空間,比如圖像輸入,輸出也是在圖像空間。而它們給出的資訊,比如語義分割、2D目标檢測雖然做得很好,但是隻能是中間結果,因為一個自動駕駛系統最終在做規劃時是在3D空間進行,是以首先需要通過規則把原始傳感器中間的資訊轉到3D空間,同時還需要把很多不同的中間結果,做一定的組合和拼湊,形成下遊能夠使用的形态。

因為有各種不同的傳感器輸入,但下遊在使用時需要一個完整的360度輸出,是以會做一些fusion,來組合各路傳感器的輸出。fusion過程包含了很多的規則,像濾波,選擇誰做融合以及最後怎麼做融合,選多大的權重融合不同路的資訊等。上面這些原因最後在量産實踐中的最大問題是基于規則的轉換、拼湊、融合的過程,它不是一個可以自主學習的過程,而是一個基于規則的過程。規則意味着出了錯需要人來修改,而規則不會自己改變。

當自動駕駛系統應用到一個實體世界中,會遇到各種各樣的問題,也就是長尾問題。長尾問題是說當你以為解決了90%的問題,可能還有90%的問題等着你,這樣需要很多工程師來寫這些規則。比如決策樹,如果1個人寫決策樹,可能過了1個月會忘記之前寫的分支,如果100個人同時寫1個決策樹,那軟體棧最後會變得很複雜。

舉個很簡單的例子:停車入位。在駕校學車時,會發現停車入位是一個特别複雜的過程,因為它依賴多路傳感器觀測,比如需要看左後視鏡、右後視鏡、正中間的後視鏡,還有倒車影像,有的車甚至沒有倒車影像。雖然有傳感器觀測,但是它并不能直接地表現車所在3D空間中的位置,這也是很多同學不太喜歡開車的原因,即不直覺。在駕校的教程中,你要注意裡面各種各樣的規則,比如需要看左邊的線在後視鏡中的位置,右邊的線在後視鏡中的位置,這樣才能很隐式的映射出,在3D空間中車停在什麼位置。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖3

現在很多車都有環視功能,在環視功能中,最終環視影像會給出車輛周圍360度的場景資訊。比如泊車入位,以一個上帝視角直接看到周圍空間,這時停車就變得很簡單,為什麼?因為人腦不需要做觀測、拼接,直接拿到了上帝視角,做決策規劃。再回到自動駕駛系統,上帝視角對系統的簡化和幫助很多,這也是自動駕駛的感覺架構演化對我們提出的第一個要求,即要在上帝視角中直接輸出下遊所需要的資訊。這簡稱是BEV,是鳥瞰的視角,與上帝視角意思相近。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖4

BEV對比傳統的感覺算法,輸入是一樣的,是多路的傳感器資訊,然後每一路傳感器資訊會經過一個單獨的神經網絡進行處理。原始傳感器的信号模态,與圖4中間的一些Feature map基本上是相應的。不一樣的是中間會加一個神經網絡,學習如何自動組合和融合單路神經網絡的輸出,最終在3D空間中直接輸出下遊規控需要用的輸出形态。

比如圖4裡展示的是一個丁字路口,車道線、斑馬線分别在什麼地方,這個資訊經過簡單的結構化,就可以直接給到下遊規控進行使用。它最大的特點是來自于一個感覺系統,它是一個大的神經網絡,這也代表着隻要有了資料、真值,就可以訓練它,并自動學習如何從原始傳感器輸入得到最終需要的輸出,而不需要有特别多的規則,這也充分展現了感覺領域的軟體2.0實作。

雖然在業界很多公司都在讨論BEV感覺,尤其是基于視覺的BEV感覺。這裡面的難點許多人認為是神經網絡架構設計,但地平線認為如果難度排序,可能神經網絡架構設計難度相對較小。還有兩方面的難點,第一是當有這樣的架構後,要輸出什麼内容。因為想要用原本感覺神經網絡的輸出,替換以前的一些感覺後處理的輸出。那究竟輸出哪些内容能夠被下遊比較好的使用,這需要探讨什麼是完整的感覺算法集合,這是一個系統的架構設計問題。

第二個最難的點是如何擷取資料中的真值。當有了資料以後,在有監督學習的訓練方式下,需要有真值,神經網絡訓練才知道往哪走。真值的生成不像在學校裡面去做一些論文研究,基于一些比較幹淨的資料集,在量産的世界中需要有生成真值的能力,而且真值生産的速度要足夠快,精度要足夠好。

以上這幾方面的挑戰都需要逐一地擊破,才能夠在軟體2.0大方向的指引下,實作BEV感覺範式。

2

軟體2.0下新的感覺範式

下面分幾個環節讨論下地平線在這方面的思考和實踐。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖5

首先是架構問題,怎麼做架構設計?線上很多做算法的同學都知道BEV已經有很多方法衍生出來,但是今天讨論的是一個比較抽象的結構怎樣做BEV感覺。圖5最左側是原始傳感器的輸入,主要是攝像頭,也有其他不同類型的輸入。做BEV感覺第一步是要有單一輸入的Frontend網絡,它處理一個傳感器的輸入,不會涉及與其他傳感器的互動耦合,是一個單獨的神經網絡。

而在很多傳感器中,比如攝像頭,Frontend網絡可以是複用的,隻進行一些初步的資訊提取。比較重要的架構設計來自于怎麼對多元的資訊進行融合。這裡主要分為三步,首先要對同樣的模态,比如同樣視覺信号的輸入,對它進行校準;第二步還需要跨模态進行校準,因為不同類型傳感器輸出的原始信号形态不一樣,是以需要在BEV下把信号對接好,才能進行融合;第三步是設計一個神經網絡,在空間和時間次元上對這些對齊好資訊進行融合,融合完成後,可以把feature map送給下遊的感覺任務,實作各種各樣的任務類型。

那地平線目前有什麼樣初步的嘗試呢?

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖6

最簡單的是一個固定的融合網絡,這也是最早期的BEV方案。它的好處是所有的都見過,沒有特别新的架構在裡面,但是足夠簡單、魯棒、好用,是以作為一個起點對應上面提到的幾個不同層次内容。左邊是上面提到的alignment、temporal fusion、 spatial fusion、最終的Task heads,圖6以攝像頭為例,雷射雷達可能會有一些不同的變種,但基本的意思是一樣的。

在各個攝像頭的 alignment上,最簡單的可以把圖像的輸入,通過perspective transform的方式投影在BEV下。這種投影有很多的假設,比如地面平直性假設、車不能有太多的抖動、隻能表達地面,不能表達高出地面的内容等。但是做的比較好的方面是地面上的内容,能映射到一個相對合理的空間位置,是以可以選用它來做空間alignment。

空間資訊通過alignment對齊到BEV空間之後,有了3D坐标,可以用一個神經網絡進行空間的fusion,最簡單的方法是通過一個卷積網絡。再下一步是進行時間的融合,時間融合最主要的是怎麼樣做時間上資訊的選擇,因為攝像頭的幀率很快,顯然不能處理所有資訊,是以需要做一定的選擇和采樣。最簡單的方法是在原始輸入中做一個基于時間的隊列,等間隔的采樣制作一個滑窗,然後把最近的資訊放在裡面。時間融合的神經網絡可以直接針對滑窗做處理,獲得空間上的融合效果。最後經過融合以後,feature可以傳給最終的感覺任務,這是一個偏固定的架構。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖7

地平很快的進入到下一步,首先在做跨攝像頭alignment時,上面提到的假設很容易被幹擾,那怎麼來改進呢?希望在空間alignment上加入一些自适應成分,比如在做空間的映射時,如果能估計出來車輛的外參變化,可以把一個很抖的IPM投影做得相對穩定。同時在時間上面也是如此,如果不能嚴格要求時間同步,不同攝像頭的曝光時間也可以做一些時間上的同步。

經過了這一步以後,是一個對齊得比較好的空間feature,然後把它經過一個融合的神經網絡。時間上面有一個受特斯拉方案啟發的方式,之前的隊列是等時間間隔的隊列,但在很多現實場景中發現,重要事件不是等時間間隔發生的,它是稀疏的,可能突然出現,或過很久都不出現。為了處理這種情況,除了time-based隊列,還有一個distance-based隊列,根據車輛的裡程記資訊,在固定的空間間隔上把資訊入隊,通過這種方法實作兩種不同尺度的資訊隊列效果。

最終在做時間融合時,除了使用最簡單的卷積神經網絡以外,也可以使用循環神經網絡RNN。特斯拉提出的方案叫Spatial RNN,它的方式比傳統的RNN更複雜一些,因為傳統RNN隻有一個Recurrent memory,每一個時間都要不斷的更新,但是Spatial RNN memory是與空間位置對應的,隻有當上遊空間對齊的資訊能夠跟時間對應上時,才能循環更新它。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖8

迅速的實踐完這種方案以後,地平線沒有停下腳步,還在嘗試更加新穎,網絡上限更加大的方案。原來一直是先做alignment,再做fusion或者先做隊列,再做fusion。那alignment和fusion這兩步可以進一步的整合嗎?因為這兩步是人通過規則分開的兩種架構性步驟,如果能夠通過一個神經網絡把它這兩個步驟都做到一起,或許網絡的上限會更高。

對應下來,在空間融合部分,受到了特斯拉及其他一些工作的啟發,可以看到圖8下的Transformer方式,可以計算原始圖像pixel和最終BEV空間中pixel的交叉關聯。交叉關聯的學習本身是一種alignment,因為學習的是原始像素到BEV像素中關聯,同時還會學習關聯的強弱,強弱本身表示一種融合上的權重傾向性。是以通過Transformer結構,可以将alignment和spatial fusion進行融合。

在時間方面也有類似的操作,以往有一個通過規則寫下來的固定隊列,每一步神經網絡處理的是隊列裡面所有的或最新的樣本,如果再進一步,是否能夠讓神經網絡自己去學習如何去入隊?如何出隊?以及什麼時候從隊列裡面選取什麼樣的資訊融合?這裡工作其實叫做Memory Networks,它是自己去學習如何存儲資訊、讀取資訊以及融合資訊的神經網絡結構。

大家可以看到在軟體2.0的範式下,哪怕是BEV架構也可以有很多的玩法,而且為了能夠讓各種各樣的玩法,盡快的從實驗室部署到車端,需要有很強的晶片工具鍊支撐。因為不希望在GPU上寫了一個很好的模型,但移到晶片上部署,沒有工具鍊的支撐。開發者在晶片上做各種定點量化是很痛苦的,是以需要一個工具鍊讓這個過程很平順地自動化完成。

地平線在這方面也有一些成就,地平線的工具鍊不僅讓内部的工程師使用,還希望能夠讓我們的客戶,包括汽車行業以及汽車行業之外的客戶,把神經網絡從訓練、量化、部署整個的流程能比較順利的在一個鍊條裡面打通,通過這種方式讓BEV方案快速的演進、疊代,擴充到各種各樣的任務上。

3

BEV感覺的十八般武藝

在談到的 Challenge中,個人認為最簡單的是設計神經網絡架構,稍微更難一點的是怎麼樣設計一個不重不漏的感覺任務集合,它的輸出能夠被下遊不重不漏地使用,不重表示它是一個很精煉的集合,不會重複輸出一些内容讓下遊去選;不漏表示不要出現下遊本來使用,但是感覺任務沒有辦法提取的任務。之前的感覺架構棧有這樣的問題,經常在實踐過程中不斷往裡面加各種各樣奇奇怪怪的任務,來彌補之前任務設計的疏漏,這也會引入很多融合相關的問題,因為上遊給的輸出越多,也要面臨更多選擇融合的過程。最好是不做選擇,希望上遊給的就是最完整、不重不漏的輸入。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖9

地平線内部對于這件事情的了解,可以分為以下幾個層次,從low level表達實體世界的限制;到中層語義層次,關注的是從這個世界中提取一些邏輯上的Entity;到最終從Entity中得到結構層次的了解,包含一些概念、關聯、行為,通過這樣不同層次的内容來支撐下遊的任務。

同時這個架構還能夠把上遊直接輸給有能力的下遊,比如有能力的下遊也是一個神經網絡,神經網絡和神經網絡之間的溝通,沒有必要通過設計的這些任務做二傳手,它們可以直接通過神經網絡feature map這樣的隐式語言來溝通。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖10

接下來會看一些執行個體,首先看下語義感覺。如果分為靜态和動态,靜态主要是環境中靜止的資訊、地面的資訊,比如車道線、路沿、地面标志、停止線,這些是最基本的行車靜态限制。在圖10左上角可以看到基于BEV架構,通過六路傳感攝像頭的輸入,得到右面的BEV效果輸出。除了可以展示車道信号、路沿的分割結果以外,還可以獲得更多的任務,包括檢測人行道、路口的邏輯結構,還檢測路上标志。

除了靜态以外,動态也很重要。因為世界中大部分的道路使用者是動态的,是以也需要有動态感覺能力。圖10右半部分展示的是基于六路傳感器的輸入,直接獲得BEV下車輛測量輸出的效果,圖像中的綠框是 BEV的結果在圖像空間中的效果。這個場景中路邊停着一排車,可以看到BEV下的空間也有同樣的、很炫酷的效果。以上是語義感覺,從世界中提取一些需要知道的語義資訊。

語義層的輸出,一般是下遊最想要使用的。因為比較簡單、結構化,像高精地圖很多用到的是語義層資訊。那為什麼喜歡用雷達?因為雷達對動态感覺的語義層抽取很直接,如果車上有一個反射點,它就是一個框的直接對應關系。但在現實世界中,語義層的資訊可能不夠,以停車入位為例,如果開房車出去旅遊,到房車營地後會發現房車營地不給劃線,實際的停車位是由别人怎麼停來決定的。由于房車有不同的大小,停車的位置也不同,這時很難通過地上的語義線來決定,而是要通過一些很底層的限制,即别人停在哪裡,那個地方是要避免的,來決定房車停在哪裡。是以在一個混亂分散的世界裡,需要對底層的實體邏輯有一定了解,哪怕對這個世界一無所知,對語義一無所知,但至少知道什麼東西是不能撞上去的,這是BEV下的底層視覺要完成工作。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖11

圖11左邊展示的是底層視覺靜态感覺的效果,它是路面上一幀的結果,圖檔中藍色地面表示地面,它的高度比較低,紅色部分越紅代表高度越高,還有一些零散的内容,像地面上的肉色表示地面上稍微凸起的物體,對于這些物體,可能是一個披薩盒或水泥墩子,車主在開車會想究竟要不要壓過去,會做一些相應的選擇。不需要了解它究竟是什麼東西,隻要知道那裡有個東西,不要壓過去,車就安全了。

圖11右面是動态的效果,這是對于光流概念的拓展。相信很多同學都聽說過光流,光流是兩幀圖像之間像素的位移,在BEV空間中,有一個很直覺的展現,即可以直接通過底層的實體感覺獲得這個世界中的物體,在以什麼樣的速度移動,比如右邊的圖展示了通過BEV網絡獲得世界中移動物體的運動速度和運動朝向,不同的顔色代表了不同的運動物體,黃色是向下的,紫色的是向上的,不同的顔色也代表不同的運動速度,運動速度越快顔色越深。通過這樣的方式,不僅僅可以把靜态的資訊通過底層感覺完全cover,還可以獲得速度資訊。得到速度資訊以後,就可以更好地在周邊場景中移動。

那是做了底層感覺就夠嗎?這涉及本次分享了另外一個主題,想象力對于感覺的重要性,個人的觀點認為想象力是下一代感覺最重要的一個環節。為什麼它如此重要呢?

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖12

以停車入位為例,自從有了環視影像以後,我曾經嘗試隻看環視影像在地庫裡開車,發現速度特别慢,甚至沒有看原始攝像頭的方法簡單,為什麼會出現這種情況呢?因為在 BEV空間中,傳統感覺隻看到看得見的内容,看不見的内容做不到感覺。

但如果感覺能夠給出更多的資訊,比如感覺可以告訴車主,看到有根柱子,并且根據一些先驗知識,還看到了一截道路從柱子後面延伸出來,大概可以猜出來柱子後面是有别的可行區域,相當于可行區域能夠延伸到柱子後面。除此之外,它還能告訴車主在這個場景下未來的行駛軌迹,及未來的行為是選擇向右走,甚至可以不用思考右面是否可行,感覺網絡直接告訴車主可以往右走,這代表着很大的範式轉變。

以往的感覺是感覺看得見的内容,但如果感覺能夠感覺看不見的内容或可能看見的内容,那可能會對下遊的感覺系統有很大的使用範式上的轉變。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖13

接下來分别以靜态和動态舉例,比如靜态,為什麼喜歡用地圖,因為它是超視距的,10公裡之外的内容打開手機就可以看到,但是感覺往往是看不到的,感覺隻能看到有像素顯示出來的資訊。如果将想象力引入到 BEV感覺中,會怎麼樣?會發現車端僅依靠傳感器資訊似乎也可以猜到,如果前面有一個路口,看到人行橫道兩邊大機率會有延伸出去的道路,就像車輛在行駛的過程中,一邊在做感覺,一邊在做建圖,叫它online maps。圖13左邊顯示是online maps逐漸擴充自己對于周邊車道線、道路以及連接配接關系的了解。

那動态上的想象力是什麼?最典型的一個例子是在規控領域經常遇到的預測子產品,它代表的是未來某一個動态物體,在未來一段時間會做什麼事情或者會去哪裡。圖13右半部分顯示的是未來每輛車會去哪裡,線代表了未來幾秒鐘車輛會在什麼地方。如果這個子產品形成感覺的一部分,會有什麼現象發生呢?會發現以前的感覺和預測中間隔了一層感覺結果,需要對感覺結果進行很多的抽煉、提取,不希望感覺結果傳出太多的資訊。實際上很多成熟的預測網絡已經是神經網絡,它可以直接拿到原始感覺的feature map。如果感覺網絡本身加了一個感覺頭,它是來做預測的,那感覺網絡能夠利用很多無法結構化的線索做預測,來完成一些以前先感覺再預測做不到的事。

4

端雲一體的BEV感覺開發

通過對自動駕駛感覺的了解,建構出了一個語義感覺、底層視覺到想象力等不同層級的感覺任務,形成一個完整的感覺集合,但最難的一點是資料,資料從哪裡來?真值從哪裡來?對于軟體2.0下的自動駕駛量産來說,個人認為難度比神經網絡要大幾個量級,這也是為什麼地平線會有一個混合了系統、軟體、算法和硬體的團隊,在雲端的平台AIDI裡面做攻堅。希望把這項能力能夠開發出來,讓更多的客戶在AIDI中體驗到這種能力。

它基本上分為幾個步驟,從車端的資料采集,到把采集的資料在雲端進行重建,通過資料的采集以及資料的了解,獲得一個更加完整的世界的資訊。然後再基于這個資訊,進行一個雲端的perception,即不僅僅隻能做車端的感覺,要先把雲端的感覺做好,才能讓雲端的感覺作為一個老師來教導車上的感覺。

既然這是一個真值的生産鍊路,還需要質檢才能完成工作。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖14

整體的流程比較簡單,在車端考慮的是怎樣挖掘有效的資訊,因為車無時無刻不在路上行駛,會見到很多的資訊。那麼什麼樣的資訊是對神經網絡性能的提升有效,什麼樣的資料是被需要的?這本身也是一個很艱難的感覺任務,背後有各種各樣的政策來完成這件事情。

像Trigger端上觸發,基本思路是根據車端能拿到的感覺結果,然後寫一些規則、腳本,選擇在某些條件下,在資料對我很有用的時間點觸發。

第二種是主動學習,即在車上神經網絡有自主學習的能力,它很好奇,并不是一個傻傻的接受傳感器輸入,隻會幹活的神經網絡。比如這個例子很有意思,想拿回去研究,它會自主選擇這件事情。

還有一些方法是如果有Multi-sensor,每種不同的sensor資訊來源可能會有輕微的差别,但在邏輯上知道它們是有一緻性的,這時空間和時間上的不一緻,可以作為一種挖掘資訊的來源。通過這樣的方法把資料挖到雲端以後,經過一些隐私處理,把資訊送到雲端。

雲端首先要從車端傳送的資訊重建出整個世界,而且這個世界不僅僅是3D世界,還要知道時間次元上的資訊,這個過程叫做4D重建。第二部分是怎麼做雲端的perception,也就是在雲端做老師模型,因為雲端和車端做感覺,它們的限制條件和優化目标不一樣,車端很多時候是在一定的功耗、算力條件下,或幀率精度足夠的情況下,幀率跑的越高越好。但雲端算力更充足,是以可以選擇更大的模型,甚至把未來的資訊也用上,而車端無法知道未來的資訊。第三步是QA,像生産線一樣可以人來做抽檢,也可以自動地做相關的質檢。

經過一串的真值的生産以後,就獲得了很高品質的真值以及配套的原始資料,可以把它喂給神經網絡,然後神經網可以訓練起來了。像地平線在AIDI上獲得了真值以後,無縫的在AIDI上把訓練任務和真值連接配接起來,觸發新一輪的訓練,訓練好之後會進行自動的系統內建,生成新一版的軟體,通過OTA下發到車端,來完成一輪疊代循環。

新的軟體在車端會持續進行資料挖掘工作,再來完成圖14類似的一個循環過程。通過上面提到的疊代方式,整個系統疊代效率是很高的,地平線内部的一些系統可以達到兩三周量級的一輪快速疊代。這樣的快速疊代,很大程度上歸功于上面的循環。

在整個過程中,尤其是雲端的自動标注過程,目前有很多的雲端算法和軟體團隊,很努力的把雲端的标注過程變成一個labor free的工作,即不需要像以往的标注過程一樣,每個像素都要讓人來标,而是讓大部分的工作都由一個大的神經網絡模型加上重建來解決,隻有很少一部分的校驗工作和補充工作由人完成,大大提高了整體的标注效率。整個疊代的速度也是比較快的,現在的吞吐量也比較高,這主要得益于整個環節的自動化。

地平線劉景初:上帝視角與想象力——自動駕駛感覺的新範式

圖15

下面看一些具體的例子,比如在AIDI上怎麼獲得真值呢?首先會在最初始的資料來源,采集同一個地點的資料,如果BEV感覺的效果不夠好,觸發車隊需要在一個地點通過不同的方向采集資料。圖15顯示是同一個路口附近,不同的采集結果、單次重建的結果,可以看到雖然單次重建本身都還不錯,但看得不全,因為隻有車經過的路線能看得比較多,車沒經過是看不到的。通過多個單次重建結果的聚合,算法就可以獲得一個完整的場景重建。

除了靜态環境的重建以外,還可以進行動态場景重建,或面向動态的感覺結果,最終拼成一個完整的、全息的4D世界資訊,來給下遊的雲端感覺模型使用。有了這樣一個4D點雲,怎麼樣進行标注任務呢?

以做 BEV的靜态感覺标注為例,如15圖右上角所示,這裡面展示的是一輛車,在一個路口右轉了一次,方框是感覺範圍,另外一輛車在路口直行了一次,又一輛車反方向直行一次,經過這樣資訊聚合,就可以得到一個完整的場景。它很像地圖,但與地圖也有一些不太一樣的地方,一般地圖強調的是世界最新的樣子,而且是在全局和世界的關系下的位置樣子。

但是在标注任務中,首先要跟原始傳感器資訊比對,如果拿一年前的圖像資訊和一年後的重建資訊比對,這不叫真值,因為某一個路口場景有可能有所改變,這個真值标注是沒有用的;另外一點是标注一般隻關心局部,因為想訓練的是神經網絡在這個圖像輸入下,它的輸出是什麼。本身是一個相對局部的内容,隻需要相比“目力所及”稍微拓展一些,不需要拓開很多,就足夠感覺模型訓練。還有很多其他的任務,包括BEV下的低級視覺資訊、高度、光流、三維檢測等,都可以通過同樣一個全息的資訊來提取。

以上是怎麼在AIDI上,通過AIDI的雲端的環境,用一種很自動化的方式獲得BEV中最難的一塊内容。地平線自動标注部分也有一個很強的算法團隊來負責。

最後總結一下,本次講解是想提供一種系統級的模組化,希望能夠通過一種相對清晰的視角把自己看到的和地平線團隊看到的自動駕駛行業感覺範式的演變,用一個比較形式化的、簡化的表現方式,呈現出它最重要的方面。但是我們也知道統計學大師們說過,所有的模型都是錯誤的,隻有某些模型,因為它展現了某種重要的方面,是以它對我們有所幫助的。關于BEV的模組化也有這個特點。

依個人來看,量産自動駕駛技術不是單一技術就能夠完成的,在地平線的量産技術中,BEV隻是很重要的一個算法的視角,實際上為了完成自動駕駛系統量産,還需要很多不同的技術與BEV一起取長補短,才能滿足最終産品級的某些需要。

量産自動駕駛也不是單一的視角,不是僅在雲端做出優秀的模型,就可以做到量産,需要既看技術,還要看當下市場需要,什麼樣的技術能夠在目前的算力和技術水準下,能夠被大規模部署在車上。同時,地平線認為量産自動駕駛不是一家公司能夠搞定的,世界需要百花齊放。

還有一點地平線讓我比較佩服是有一個好的生态視角,而且對産業生态持很大的開放度。前幾天地平線創始人還宣布,未來不僅是算法會有一定的開放性,甚至未來最核心的BPU,即神經網絡加速器的計算IP,也是能夠通過白盒的方式提供給部分整車廠合作夥伴,去協助他們設計硬體。通過這樣的方式,地平線希望世界上不僅僅有一家特斯拉,還能夠有很多家企業通過與地平線的深度合作,達到特斯拉水準甚至超越特斯拉,創造更豐富的産品集合。

如果大家對自動駕駛感興趣,歡迎加入這個行業。如果大家對地平線感興趣,歡迎來加入我們一起創造未來真實的現實。

繼續閱讀