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