圖中的三個小圖像顯示了人類和靈長類動物(獼猴,右圖)大腦皮層是如何處理視覺信息的。信息到達視網膜后,經過大腦皮層的多個區域、流、層,最終形成生物視覺。這些區域和器官包括:視交叉、外側膝狀體核(LGN)、初級視覺皮層(V1)、紋外皮層(V2、V3、V4……)、顳下區等。
Tesla的目標是建立一個像人腦一樣的基于視覺的計算機神經網絡系統。通過軟件、硬件和算法設計汽車的視覺皮層。
Tesla 的輸入來自其原始光子計數(Raw )提供的視頻數據——8個攝像頭( 12-Bit(HDR)@36Hz)。
傳統攝像頭的原始數據需要經過ISP處理。
ISP(Image ),即圖像信號處理器,是車載攝像頭的重要構成組件,主要作用是對前端圖像傳感器CMOS輸出的信號進行運算處理,把原始數據“翻譯”成人眼可以看懂的圖像。
但是ISP的設計初衷是為了在多變的外部環境下獲得一張“好看”的圖片,但這究竟是不是自動駕駛最需要的圖片形式,業界尚無定論。按馬斯克的說法,神經網絡不需要漂亮的圖片,它需要的是傳感器直接獲取的原始數據、是原始光子計數(Raw )。
該傳感器在低光照可見度低的條件下能夠提供超越人眼的感知能力。
Tesla 的一個重要工作是對周圍環境進行感知,而感知的重要工作是目標檢測。
目標檢測的通用結構為:Input -> -> neck -> head -> , 如下圖所示:
在Tesla的神經網絡架構中:
: +
Neck: BiFPN
(Tips:上面的網絡都是目前SOTA(行業當前最佳)的網絡。以后有更好的網絡可以直接更換)
Head: ( Tesla 的軟件架構)
1.2
自動駕駛任務不僅僅需要進行周圍車輛的檢測,還有很多其他任務。包括交通燈的識別與檢測,限速標志的識別與檢測,車道線預測,判斷物體是否移動等等。
這些任務的特點都是基于相同的視頻輸入,進行若干工作(檢測,判別)。Tesla將這些任務聚合在一個新的架構布局中,有一個共享的(骨干),并將分支分成若干個頭部(Head)。這種架構被稱為。(符合人類視覺的流程)
整體的軟件流程:
1)8個攝像頭的單幀數據經過image 進行特征提取。這里采用類似的網絡。
2)接著是一個多攝像頭融合。此處的想法是將8個攝像頭的特征圖進行融合組成,生成BEV , 方法是通過類似, 此步驟的目的是通過2D的圖像生成3D的結構。這個操作類似于人類開車時通過后視鏡判斷后車距離。(2021年及以前)
multi-cam, multi-scale -> -> BEV
3)然后接著是一個時間融合。就是將給上一步的每個圖賦予時間信息。融合方式采用3d conv/ /RNN 。這么做是因為單幀結果對于自動駕駛沒有任何意義,很多狀態在單幀下都無法識別,比如:速度,目標的遮擋與重現。
4)將上一步的結果分發到不同的Heads中,每個Heads負責特定的功能,后面接著自己的單獨網絡。
1.3 簡介
是近年來最受關注的深度學習模型。它在谷歌論文《 Is All You Need》中首次被提到,主要用于自然語言處理(NLP)領域。
的核心是注意力機制。BERT、GPT和其他模型都基于。這些以注意機制為核心的模型廣泛應用于自然語言處理、CV、人工智能等任務中。
上圖是的基本結構,包含一個編碼器()和解碼器()。每個編碼器層主要包括多頭注意層和前饋層;每個解碼器層包含兩個多頭注意層和一個前饋層。
在Tesla中,圖像空間( ) 到向量空間 (BEV space)可以類比成一種語言到另一種語言的翻譯,因為他們都是對同一個空間的不同描述。如下圖所示,由于在自然語言翻譯方面有如此優異的性能,所以Tesla訓練了一個Image-to-BEV 網絡。
1.4 Tesla視覺技術棧
從上圖的特斯拉技術棧來看,特斯拉使用的模型是一些處理對象檢測領域的常用模型,如RNN、LSTM、、、、BiFPN、YOLO等,但特斯拉AI Team對這些模型有更深入的了解,因此才能夠成功的融合如此多的模型并深入挖掘模型潛力。
二、FSD在2022年的新進展
2.1 感知|
是 的重要改進,該網絡主要用于可活動空間的探測。
2.1.1 為什么需要 ?
Tesla采用基于純視覺的自動駕駛系統有一個核心缺陷,就是其目標檢測系統失效。(這一點也和人類不一樣,人類只用判斷前面是否有障礙物即可,不需要知道障礙物是啥)
(Tips:如果攝像頭拍攝到的東西從來沒有出現在數據集的話,則大概率不會被目標檢測系統檢測到。直觀的表現就是車不會進行避障等操作。)
在2022年的CVPR( and , AI行業頂會)會議上, Ashok ,Tesla 負責人對 做了一個專題報告。
上圖是自動駕駛中的“可通行空間”問題,該問題是要識別哪里可以走,哪里不可以走,是路徑規劃的前提。上面的黃色框標識出了常見的難點:
1)像素的分布密度機及其不均衡,在圖像遠端地平線處,往往2~3個像素就一大片區域的深度。
2)圖像是2D的,世界是3D的。
3)對于識別的目標標記過于粗糙,目標識別用矩形框標記, 而實際中的物體都是大部分都是不規則的。目前的標記方式會導致細節損失。
4)沒辦法看透遮擋。當前方有車的時候,會認為前方車輛的前方也是不可行區域。
5)存在不在數據集的東西導致不會進行識別。
為了解決上述問題,引入 。該算法受到機器人領域中 grid 啟發,將3D空間分為大小一致的grid cell, 然后判斷每個cell是否被占用。
核心思想是得到空間是否被占用的信息。所以它是3D的,不需要進行目標識別,而且是多視角。
上圖可以看到并沒有得到精確的物體尺寸,但是可以得到結果較好的近似。同時可以進行動態和靜態的預測。最后該算法的效率很高,10ms 就可以對周圍更新一次,因此內存的占用率很低。
此網絡對之前三個算法進行了優化:
BEV、固定尺度的矩形框、目標檢測
1)對BEV的優化:
完成了2D到3D的轉化
2)固定尺度的矩形框
固定尺度的識別矩形會導致如下問題:
a.懸空的物體如果被框住,會導致其下方變成不可通行區域。
b.突出的物體如果沒有被框住,會導致碰撞。
將空間分為非常小的立方體,判斷每個立方體是否被占用。這樣可以生成較為精確的空間占用情況。
3)解決了目標檢測的長尾問題
目標檢測總會存在某些物體不存在于訓練集中。 不進行目標檢測,從根本上避免了這個問題。
2.1.2 網絡架構
上圖為一個簡化版的 架構,出自 Ashok 在上的專題匯報
AI 上的模型架構
整個算法流程如下:
1)Image Input:
8個攝像頭依據攝像頭標定矯正后直接輸入給算法。攝像頭的焦段都不相同,相對位置也不是嚴格的剛體,所以需要修正到同一個焦段,并消除畸變和震動。
2)Image :
將圖像送入由 和 組成的,用于提取特征。
3) :
是卷積神經網絡中用于空間注意力的模塊(類似),利用特征的空間關系生成空間注意力圖,也就是構建空間特征。
4) :
利用里程計信息,對前面時刻的占用特征( )進行時序上的拼接,初步形成了時空特征。有了時空信息就可以用來計算類似速度,加速度等信息,這些是空間對時間的導數。
5):
組合后的 會進入(反卷積)的模塊來提高分辨率。這是因為 是稠密的,因為區域內的點非常多,每個點都有意義,會導致內存不夠用。解決方法是降低 的分辨率。
(Tips:稠密的意思:一個矩陣中若數值為非0的元素數目遠遠多于0元素的數目時,則稱該矩陣為稠密矩陣。與之相反,若0元素數目占大多數時,則稱該矩陣為稀疏矩陣。高維矩陣的元素個數會非常多, d1*d2*d3*d4*...*dn)
6) :
輸出物體表面的幾何特征,輸出物體表面語義信息,用于其他任務,比如交通標志識別。
7) :
輸出空間占用信息、空間占用流信息(速度,加速度)、亞體素(sub-voxel)信息、3D語義信息。
a.空間占用信息
b.空間占用流信息(速度,加速度) 和 NeRF網絡結合,用于驗證結果是否準確。
c.亞體素(sub-voxel)信息
d.3D語義信息 和 MLP (網絡的一種)生成兩個查詢函數,輸入體素(voxel) 的 x,y,z 坐標,即可查詢其 空間占用信息,空間占用流信息,語義信息等。該方法打破了模型分辨率的限制。
2.1.3 NeRF
(神經輻射場)簡稱NeRF主要用于3D重建,于 功能相似,都是通過不同視角的image進行環境的重構。
NeRF主要使用在兩個方面:
1)訓練階段:將NeRF的重構結果作為真值,用于 的約束。
2)運行階段:Tesla將一個精簡版的NeRF運行在車端,用于確保 輸出的占用值符合傳感器觀測的結果(NeRF的輸出值)
2.1.4 應用
產生了可以用來查詢空間中任意體素Voxel的占用概率和語義信息的方法,然后能用來干什么呢?最直接的一個應用就是用來避免碰撞。
一個自動駕駛車要真的有用,需要滿足三個基本條件:
安全、舒適、合理范圍內盡可能地快
只要開的足夠慢,安全很容易達到。如果想要同時滿足上述三點,需要有一個重要的能力就是要根據當前道路條件和自身狀態“預判”未來幾秒內碰撞的可能性。在預判的基礎上駕駛員才能完成避障,超車,適當制動力減速等任務。
為了完成避障任務,基于 和隱式場( Filed) 建立了一個 隱式網絡( ),其如下圖所示:
其方法就是把之前的占用值壓縮成一個MLP,這個MLP的作用是查詢特定狀態下避免碰撞的概率。相當于回答類似 “ 2秒內碰撞可以避免的概率”。輸入的狀態是“當前位置,方向,速度,縱向和橫向加速度等等”。
因為查詢速度很快,幾微秒,所以就可以根據車的當前狀態遍歷非常多的可能,進行碰撞檢測。
2.1.5 訓練
是一種監督網絡,即需要大量標注好的數據進行訓練。Tesla的 所需要的訓練量極大,具體如下:
一共14億幀圖像,用了10萬GPU時(等效于10萬個GPU運行1小時)。溫度90度。這個是為了給后面的自研芯片和超級計算機做鋪墊。
不得不承認的是, 技術目前對于激光為主的三維高精地圖方案來說,是一個非常大的挑戰;對于空間中某一個體素是否被障礙所占用, 方案給出了不遜色,甚至優于高精地圖方案的表現,但是攝像頭的成本卻是遠遠小于多線激光雷達的。 是個軟件方案,后期可以使用訂閱軟件的方式收費,升級非常的便捷,相對于硬件的替換優勢巨大;
對于類似我們產品的,成本控制更加嚴格的機器人來講,類似 的方式顯然是更加“終極”的解法,在機器人上視覺傳感器的成本很低,相對于單線激光雷達來講,所包含的信息則極大豐富,單目視覺可以使用很低的成本覆蓋機器人周身,獲取機身周圍的 ,作為避障與路徑規劃的依據,實際上, 技術也在人形機器人上進行了演示,獲得非常好的演示效果;
當然挑戰也很大,主要是 訓練的問題。
2.2路徑規劃|
規劃是自動駕駛的另一個重要模塊,特斯拉這次主要強調了在復雜路口對交互()進行建模。為什么交互建模如此重要呢?
因為其他車輛、行人的未來行為都有一定的不確定性,一個聰明的規劃模塊要在線進行對自己和其他車輛,行人等交互的預測,并且對每一種交互帶來的風險進行評估,并最終決定采取何種策略。
特斯拉把他們采用的規劃模型叫做交互搜索( ),它主要由三個主要步驟組成:樹搜索,神經網絡軌跡規劃和軌跡打分。
1)生成決策樹的初始輸入來自于前面車道線,障礙物以及 感知得到的 Space, 通過 Space規劃出后續潛在目標狀態,如目標車道線,目標路口,超車等,然后這些目標狀態又可以進一步拆分成規劃動作(軌跡)集合,最后規劃的軌跡還要考慮與周圍動態障礙物可能出現的博弈場景。
這里最重要的是如何生成決策分支的算法,傳統算法基于條件約束的優化方法獲取最優路徑,特斯拉采用遞增的方式不斷加入新的約束,用較少約束下最優方案作為初值繼續求解更加復雜的優化問題,最終得到最優解,Tesla工程師提到這種方法雖然在離線進行了很多預生成,并對在線(車上)做了并行優化,然而每個候選路徑1~5ms的計算時間雖然已經很優秀,但對于盡可能遍歷城市場景復雜還是不夠快,Tesla于是使用了另一套數據驅動的輕量生成網絡幫助快速生成規劃路徑。
這個數據驅動決策樹生成模型使用Tesla車隊中人類駕駛員駕駛數據(汽車記錄并學習人類駕駛員在特定場景下的操作)和在無時間約束的離線條件下規劃的全局最優路徑最為真值進行訓練,能夠在100us內生成一個候選規劃路徑。
2)決策樹剪枝:有了決策樹生成算法,就有了完整的規劃問題定義,然而即使使用上述生成方法,要在限制的響應時間內遍歷復雜場景決策樹也是不可能的。因此一個能夠對于候選路徑進行快速評估,打分,拒絕掉離譜的候選路徑從而對決策樹進行剪枝的系統就成了決策規劃系統的另一塊拼圖。特斯拉同樣采用了傳統方法與數據驅動相結合的辦法,采用碰撞檢測,舒適度分析,以及根據車隊人類駕駛員實際數據和影子模式訓練模型來預測一個候選路徑導致接管的概率以及候選路徑與人類駕駛員開車路徑的差異這樣四個方法進行候選路徑評估完成剪枝。
最后決策規劃部分還結合上面提到的 講解了Tesla對于未知及不確定性的決策用神經網絡設計自動跳舞機器人控制系通過,這里前面感知部分提到的 輸出的占據柵格就起到了決定性作用。如下圖所示,藍色區域代表根據Tesla車身傳感器可視角度以及3D占據柵格計算得到的可視區域,而針對未知區域則引入了Ghost動態物體,代表在未知區域可能出現的不可見動態交通參與者,需要根據這些假想的參與者做相應的保護性駕駛。
上述技術目前已經被部署到FSD beta 10.69及之后的版本中,測試視頻如下:
2.3模擬|
通過模擬技術,不但可以大幅降低實際實驗,采集數據的費用,節省開發時間,還可以建立罕見的場景,比如人和狗同時在高速路上跑步這種幾乎不會發生的場景。
這種類型的數據雖然發生的概率很低,但是有必要讓系統在模擬環境學習其應對策略。
2.3.1 模擬優勢
模擬產生的數據有如下優勢:
1)向量空間描述,即有完美的 空間,車道線等。
2)對于物體有完美的標簽。包括動力學數據,分割數據等等。
3)可以大批量的快速修改標簽。
4)可以快速生成某些難以獲得的數據。
5)模擬系統可以進行閉環驗證,包括感知,定位,預測,規劃和控制。
2.3.2 模擬系統的核心技術
1)需要對傳感器進行準確的模擬。
Tesla的模擬系統不是為了渲染出漂亮的圖像,而是要生成一個看起來和真車攝像頭生成的盡可能像的的圖像。為了達到這一目的,Tesla對相機的很多屬性進行了建模,比如:傳感器噪聲,動態模糊,光學畸變,擋風玻璃的衍射等。更進一步的是,這些工作不僅僅用于FSD軟件,還被用來指導真實硬件的設計工作,比如鏡頭的設計,相機的設計,傳感器放置位置,甚至是大燈一些參數。這里就有了一點點數字孿生的感覺。
2)照片級渲染
生成的模擬圖像要以真實的方式呈現出來,游戲的渲染方式會讓線段變成鋸齒狀。Tesla開發了有效的神經渲染算法( )和抗鋸齒算法( anti-)。同時也采用了光線追蹤(ray )和 全局照明( )。總之就是為了讓渲染出來的圖像與真實相差無幾。
3)物品&道路多樣性
這個主要是防止過擬合。虛擬場景中的物體盡可能不一樣,比如人有不同的衣服,身高,膚色,發型等等。
4)可擴展場景生成
模擬系統的場景是通過程序按照一定條件生成的,比如道路的彎曲度用神經網絡設計自動跳舞機器人控制系通過,植物的密度,車輛速度,人員密度等,描述他們的參數均可單獨設置。
同時模擬場景的的組成也不是隨機生成,通過分析自動駕駛算法失效的場景的參數,產生與失效場景類似的模擬場景作為學習的起點。
5)場景重構
場景重構主要是為了在模擬系統中重建真實世界中自動駕駛失效的場景,讓算法在虛擬場景中找到并解決失效的部分。這一部分可與可擴展場景生成聯動。
本次大會中主要介紹了模擬中場景重建的流程:
a.路面生成:根據路沿進行路面填充,包括路面坡度、材料等細節信息;
b.車道線生成:將車道線信息在路面上進行繪制;
c.植物和樓房生成:在路間和路旁隨機生成和渲染植物和房屋,生成植物和樓房的目的不僅僅是為了視覺的美觀,同時仿真了真實世界中這些物體引起的遮擋效應;
d.其他道路元素生成:如信號燈,路牌,并且導入車道和連接關系;
e.加入車輛和行人等動態元素。
2.3.3 模擬的應用
說了這么多模擬,對麥巖智能來說到底有什么實際用處:
先問三個問題:
1)10000平方米的環境下,需要在二十分鐘內清掃一遍,一天清掃4次,需要多少臺極光壹號PRO,它們應該放置在哪里?
2)比如極光壹號PRO進行口罩檢查,需要盡快上線。此時再去采集口罩數據然后標注過于耗時,耗錢,怎么辦?
3)假設需要讓人形機器人能夠上樓梯,或者撿瓶子,如何寫這個程序?
如果沒有仿真系統的話:
1)按照機器參數或者經驗估算,但無法保證準確性。
2)用較小的數據集進行訓練模型,無法保證精度。
3)很難直接編寫,很難把走路這種動作用量化的步驟表示出來。這不是一個“先邁左腿還是先邁右腿的問題” 而是一個“ 先把左腿在 t 時刻 以 w 角速度轉動多少度的問題”, 同時還要控制左膝蓋,右臂” 。 即使寫出來了,也很難保證正確,一旦上機試驗,發生意外,會威脅工作人員人身安全,帶來時間和金錢的損失。
如果有仿真系統的話:
這就是之前說的 概念,先在仿真中模擬。前提是仿真精度高,包括仿真世界中的物理規律,機器人的性能參數和物理結構。
1)建立一個10000平米的空間,定義好地面材質,并行開很多模擬,每個模擬場景中初始化個數不同,位置不同的機器人看哪個可以符合要求。
2)對口罩建模,賦予口罩不同材質,外形,佩戴時的彎曲程度,旋轉角度,大小等一系列參數。用不同的光照環境進行模擬,直接作為數據集訓練。最耗時的步驟是對口罩的建模。
3)直接在仿真系統中模擬,等模擬到差不多水平了再在真實機器人上試驗。
所以,模擬的實際用處就是:
1)加速算法開發
2)預先驗證
3)降低成本
以下是的實際應用:
1)騰訊 X實驗室利用深度強化學習等AI技術,推進機器人智能研究,讓機器人在虛擬環境中自主學習,更好地適應復雜環境的變化。
2) Isaac Sim稱:成功開發、訓練和測試用于現實世界應用的復雜機器人需要高保真模擬和準確的物理模型。Isaac Sim基于NVDIA的平臺構建,將身臨其境的、物理上準確的、逼真的環境與復雜的虛擬機器人相結合。詳細視頻如下: