特斯拉是一個典型的AI公司,過去一年訓練了75000個神經網絡,意味著每8分鐘就要出一個新的模型,共有281個模型用到了特斯拉的車上。接下來我們分成幾個面向來解讀特斯拉FSD的演算法和模型進展。
#特斯拉今年在感知方面的一個重點技術是Occupancy Network (佔據網路)。研究機器人技術的同學肯定對occupancy grid不會陌生,occupancy表示空間中每個3D體素(voxel)是否被佔據,可以是0/1二元表示,也可以是[0, 1]之間的一個機率值。
為什麼估計occupancy對自動駕駛感知很重要呢?因為在行駛中,除了常見障礙物如車輛、行人,我們可以透過3D物體偵測的方式來估計他們的位置和大小,還有更多長尾的障礙物也會對行駛產生重要影響。例如:1.可變形的障礙物,如兩節的拖車,不適合用3D bounding box來表示;2.異形障礙物,如翻倒的車輛,3D姿態估計會失效;3.不在已知類別中的障礙物,如路上的石子、垃圾等,無法進行分類。因此,我們希望能找到更好的表達來描述這些長尾障礙物,完整估計3D空間中每一個位置的佔據情況(occupancy),甚至是語義(semantics)和運動情況(flow)。
特斯拉用下圖的具體例子來展現Occupancy Network的強大。不同於3D的框,occupancy這種表徵對物體沒有過多的幾何假設,因此可以建模任意形狀的物體和任意形式的物體運動。圖中展示了一個兩節的公車正在啟動的場景,藍色表示運動的體素,紅色表示靜止的體素,Occupancy Network精確地估計出了公車的第一節已經開始運動,而第二節還處於靜止狀態。
對正在啟動的兩節公車的occupancy估計,藍色表示運動的體素,紅色表示靜止的體素
Occupancy Network的模型結構如下圖所示。首先模型利用RegNet和BiFPN從多相機取得特徵,這個結構跟去年的AI day分享的網路結構一致,顯示backbone變化不大。然後模型透過帶有3D空間位置的spatial query對2D影像特徵進行基於attention的多相機融合。如何實現3D spatial query和2D特徵圖之間的連結呢?具體融合的方式圖中沒有細講,但有許多公開的論文可以參考。我認為最有可能採取的是兩種方案之一,第一種叫做3D-to-2D query,即根據每個相機的內外參將3D spatial query投影到2D特徵圖上,提取對應位置的特徵。此方法在DETR3D中提出,BEVFormer和PolarFormer也採取了這個想法。第二種是利用positional embedding來進行隱式的映射,即將2D特徵圖的每個位置加上合理的positional embedding,如相機內外參、像素坐標等,然後讓模型自己學習2D到3D特徵的對應關係。再接下來模型進行時序融合,實現的方法是根據已知的自車位置與姿態變化,將3D特徵空間進行拼接。
Occupancy Network結構
特徵融合後,一個基於deconvolution的解碼器會解碼出每個3D空間位置的occupancy,semantics以及flow。發表會中強調,由於這個網路的輸出是稠密(dense)的,輸出的解析度會受到記憶體的限制。我相信這也是所有做影像分割的同學們遇到的一大頭痛的問題,更何況這裡做的是3D分割,但自動駕駛對於解析度度的要求卻很高(~10cm)。因此,受到神經隱式表示(neural implicit representation)的啟發,模型的最後額外設計了一個隱式queryable MLP decoder,輸入任意坐標值(x,y,z),可解碼出該空間位置的信息,即occupancy,semantics,flow。該方法打破了模型解析度的限制,我認為是設計上的一個亮點。
規劃是自動駕駛的另一個重要模組,特斯拉這次主要強調了在複雜路口對互動(interaction )進行建模。為什麼交互建模如此重要呢?因為其他車輛、行人的未來行為都有一定的不確定性,一個聰明的規劃模組要在線進行多種自車和他車交互的預測,並且對每一種交互帶來的風險進行評估,並最終決定採取何種策略。
特斯拉把他們採用的規劃模型叫做互動搜尋(Interaction Search),它主要由三個主要步驟組成:樹搜索,神經網路軌跡規劃和軌跡評分。
1、樹搜尋是軌跡規劃常用的演算法,可以有效地發現各種互動情形找到最優解,但用搜尋的方法來解決軌跡規劃問題遇到的最大困難是搜尋空間過大。例如,在一個複雜路口可能有20輛與自車相關,可以組合成超過100種互動方式,而每種互動方式都可能有數十種時空軌跡作為候選。因此特斯拉並沒有採取軌跡搜尋的方法,而是用神經網路來給一段時間後可能到達的目標位置(goal)進行評分,得到少量較優的目標。
2、在確定目標以後,我們需要確定一條到達目標的軌跡。傳統的規劃方法往往使用最佳化來解決該問題,解優化並不難,每次優化大約花費1到5毫秒,但是當前面步驟樹搜尋的給出的候選目標比較多的時候,時間成本我們也無法負擔。因此特斯拉提出使用另一個神經網路來進行軌跡規劃,從而對多個候選目標實現高度並行規劃。訓練這個神經網路的軌跡標籤有兩種來源:第一種是人類真實開車的軌跡,但是我們知道人開的軌跡可能只是多種較優方案中的一種,因此第二種來源是透過離線優化演算法產生的其他的軌跡解。
3、在得到一連串可行軌跡後,我們要選擇一個最優方案。這裡採取的方案是對得到的軌跡進行評分,打分的方案集合了人為制定的風險指標,舒適指標,還包括了一個神經網路的打分器。
透過上述三個步驟的解耦,特斯拉實現了一個高效的且考慮了互動的軌跡規劃模組。基於神經網路的軌跡規劃可以參考的論文不多,我有發表過一篇與該方法比較相關的論文TNT[5],同樣地將軌跡預測問題分解為以上三個步驟進行解決:目標打分,軌跡規劃,軌跡評分。有興趣的讀者可以前往查閱細節。此外,我們研究小組也一直在探討行為互動和規劃相關的問題,也歡迎大家關注我們最新的工作InterSim[6]。
Interaction Search規劃模型結構
個人覺得本次AI Day上另一大技術亮點是線上向量地圖建立模型Lanes Network。有關注去年AI Day的同學們可能記得,特斯拉在BEV空間中對地圖進行了完整的線上分割和識別。那為什麼還要做Lanes Network呢?因為分割得到的像素等級的車道不足夠用於軌跡規劃,我們還需要得到車道線的拓樸結構,才能知道我們的車可以從一條車道變換到另一條車道。
我們先來看看什麼是向量地圖,如圖所示,特斯拉的向量地圖由一系列藍色的車道中心線centerline和一些關鍵點(連接點connection,分叉點fork, 並道點merge)組成,並且透過graph的形式表現了他們的連接關係。
向量地圖,圓點為車道線關鍵點,藍色為車道中心線
Lanes Network在模型結構上,是感知網路backbone基礎上的一個decoder。相較於解碼出每個體素的occupancy和語義,解碼出一系列稀疏的、帶連接關係的車道線更為困難,因為輸出的數量不固定,此外輸出量之間還有邏輯關係。
特斯拉參考了自然語言模型中的Transformer decoder,以序列的方式自回歸地輸出結果。具體實作上來說,我們首先要選取一個生成順序(如從左到右,從上到下),並將空間離散化(tokenization)。然後我們就可以用Lanes Network進行一系列離散token的預測。如圖所示,網路會先預測一個節點的粗略位置的(index:18),精確位置(index:31),然後預測該節點的語意("Start",即車道線的起點),最後預測連接特性,如分叉/並道/曲率參數等。網路會以這樣自回歸的方式將所有的車道線節點進行產生。
Lanes Network網路結構
我們要注意到,自回歸的序列產生並不是語言Transformer模型的專利。我們研究組在過去幾年也有兩篇產生向量地圖的相關論文,HDMapGen[7]和VectorMapNet[8]。 HDMapGen採用有註意力的圖神經網路(GAT)自回歸地產生向量地圖的關鍵點,和特斯拉的方案有異曲同工之妙。而VectorMapNet採用了Detection Transformer(DETR)來解決這個問題,也就是用集合預測(set prediction)的方案來更快速地產生向量地圖。
HDMapGen向量地圖產生結果
##VectorMapNet向量地圖產生結果
自動標註也是特斯拉在去年AI Day就講解過的技術,今年的自動標註著重講解了Lanes Network的自動標註。特斯拉的車每天就能產生500,000條駕駛旅程(trip),利用這些駕駛數據能夠更好地幫助進行車道線的預測。
特斯拉的自動車道線標註有三個步驟:
#1、透過視覺慣性里程計(visual inertial odometry)技術,對所有的旅程進行高精度軌跡估計。
2、多車多旅程的地圖重建,是此方案中最關鍵的步驟。此步驟的基本動機是,不同的車輛對同一個地點可能有不同空間角度和時間的觀測,因此將這些資訊進行聚合能更好地進行地圖重建。此步驟的技術點包括地圖間的幾何匹配和結果聯合優化。
3、對新旅程進行車道自動標註。當我們有了高精度的離線地圖重建結果後,當有新的旅程發生時,我們就可以進行一個簡單的幾何匹配,得到新旅程車道線的偽真值(pseudolabel)。這種取得偽真值的方式有時(在夜晚、雨霧天中)甚至會優於人工標註。
Lanes Network自動標註
視覺影像的模擬是近年來電腦視覺方面的熱門方向。在自動駕駛中,視覺模擬的主要目的,是有針對性地產生一些少見場景,從而免掉到真實路測中去碰運氣的必要。例如,特斯拉常年頭痛的路中央橫著大卡車的場景。但是視覺模擬並不是一個簡單的問題,對於一個複雜的路口(舊金山的Market Street),利用傳統建模渲染的方案需要設計師2週的時間。而特斯拉透過AI化的方案,現在只需要5分鐘。
視覺模擬重建的路口
具體來說,視覺仿真的先決條件是要準備自動標註的真實世界道路信息,和豐富的圖形素材庫。接著依序進行以下步驟:
1、路面生成:依路沿進行路面的填充,包括路面坡度、材料等細部資訊。
2、車道線產生:將車道線資訊在路面上進行繪製。
3、植物和樓房生成:在路間和路旁隨機生成和渲染植物和房屋。生成植物和樓房的目的不僅是為了視覺的美觀,它也同時模擬了真實世界中這些物體所造成的遮蔽效應。
4、其他道路元素產生:如號誌燈,路牌,並且匯入車道和連接關係。
5、加入車輛和行人等動態元素。
#最後,我們簡單說說特斯拉這一系列軟體技術的基礎,就是強大的基礎設施。特斯拉的超算中心擁有14000個GPU,共30PB的資料緩存,每天都有500000個新的影片流入這些超級電腦。為了更有效率地處理這些資料金額,特斯拉專門開發了加速的視訊解碼庫,以及加速讀寫中間特徵的檔案格式.smol file format。此外,特斯拉還自研了超算中心的晶片Dojo,我們在這裡不做解說。
影片模型訓練的超算中心
隨著近兩年特斯拉AI Day的內容發布,我們慢慢看清了特斯拉在自動(輔助)駕駛方向上的技術版圖,同時我們也看到特斯拉自己也不停地自我迭代,例如從2D感知,BEV感知,到Occupancy Network。自動駕駛是萬裡長徵,是什麼在支撐特斯拉技術的演進呢?我想是三點:視覺演算法帶來的全場景理解能力,強大算力支持的模型迭代速度,海量資料帶來的泛化性。這不就是深度學習時代的三大支柱嗎?
以上是特斯拉自動駕駛演算法與模型解讀的詳細內容。更多資訊請關注PHP中文網其他相關文章!