作者?| 張萌宇
在剛剛過去的CVPR會議上,作為國內(nèi)唯一一家被邀請登臺演講的造車新勢力,小鵬汽車向參會者介紹了小鵬汽車在國內(nèi)量產(chǎn)輔助駕駛系統(tǒng)的經(jīng)驗。
作為小鵬汽車最新一代的感知架構(gòu),XNet在量產(chǎn)中發(fā)揮的作用不容小覷。
筆者有幸采訪到小鵬汽車自動駕駛中心感知首席工程師 Patrick,更進一步得了解XNet的性能、架構(gòu),以及小鵬的自駕團隊為搭建XNet所做的努力。
1.?XNet實現(xiàn)的性能提升
XNet實現(xiàn)了感知結(jié)構(gòu)的升級,擁有更好的性能,主要包括3個方面。
1.1超強環(huán)境感知能力,實時生成“高精地圖”
XNet可以根據(jù)周圍環(huán)境實時構(gòu)建“高精地圖”。從上圖我們可以看到,車輛正在經(jīng)過一個環(huán)島,圖中顯示的車道線不是來自于高精地圖,而是來自于XNet的感知輸出。XNet不光可以輸出車道線,還有停止線、人行道、可行駛區(qū)域等。這是將來小鵬汽車應對無圖場景,做高級別城市輔助駕駛的最核心的能力之一。
1.2更強的360度感知,博弈更強、變道成功率更高
在上一代感知架構(gòu)中,盲區(qū)問題很難解決。在最靠近本車的地方,尤其是車輛的下邊界,感知系統(tǒng)的檢測效果往往不好。XNet采用多相機多幀、前融合的感知方案,可以根據(jù)圖像內(nèi)的車身信息推測車輛在BEV視角下的3D位置信息,解決了相機上下視野受限的問題;還可以更加有效地同時融合多相機的信息,尤其是分節(jié)到兩個相機視野中的物體,從而避免盲人摸象式的物體感知。
另外,輸入包含時序信息的視頻流后,XNet對近車物體的識別能力有大幅提升,可以更加穩(wěn)定地檢測到近車物體。那么,自動駕駛系統(tǒng)的博弈能力就更強,汽車變道的成功率更高。
1.3更精準識別動態(tài)物體速度和意圖,博弈能力大幅提升;運動感知冗余,在城市場景安全性更高
XNet不僅能夠檢測物體的位置,還能夠檢測物體的速度甚至是完成對物體未來運動軌跡的預測。毫米波雷達通常很難檢測在本車前橫跨車道的車輛的速度,而XNet可以很容易地檢測到這個速度,對毫米波雷達有明顯的增強作用。在毫米波雷達比較擅長的場景,XNet也可以提供冗余,從而提高城市場景整體的安全度。
2.?XNet的架構(gòu)
XNet為什么可以實現(xiàn)更好的性能呢?Patrick介紹了XNet的具體架構(gòu)和工作流程。
XNet采用多相機多幀的方式,把來自每一個相機的視頻流,直接注入到一個大模型的深度學習網(wǎng)絡里,進行多幀時序前融合,輸出BEV視角下的動態(tài)目標物的4D信息(如車輛,二輪車等的大小、距離、位置及速度、行為預測等),以及靜態(tài)目標物的3D信息(如車道線和馬路邊緣的位置)。
如下圖所示。
每張輸入的攝像頭圖像經(jīng)過網(wǎng)絡骨干(backbone)和網(wǎng)絡頸部(neck,具體來講是BiFPN網(wǎng)絡)后生成圖像空間的多尺度特征圖。
這些特征圖經(jīng)過XNet最關(guān)鍵的部分—BEV視圖轉(zhuǎn)換器(BEV view transformer)后,形成BEV下的單幀特征圖。
不同時刻的單幀特征圖在BEV視角下,根據(jù)自車的位姿進行時空融合,形成BEV下的時空特征圖。
這些時空特征圖是進行BEV解碼推理的基礎(chǔ),在時空特征圖后接兩個解碼器,完成動態(tài)XNet和靜態(tài)XNet的結(jié)果解碼和輸出。動態(tài)結(jié)果包括pose、size、velocity等,靜態(tài)結(jié)果包括boundary、mark line等。
至此,感知部分基本就完成了。
3.?團隊為搭建XNet所做的努力
要實現(xiàn)上述架構(gòu)并不容易,在采集、標注、訓練、部署四個方面,小鵬的自駕團隊都做了大量的工作來優(yōu)化整個流程。
3.1采集
實車數(shù)據(jù)和仿真數(shù)據(jù)是數(shù)據(jù)的兩大來源。
小鵬有接近十萬輛用戶車,這些車都可以用來完成數(shù)據(jù)采集的任務。如下圖所示,車端模型會報告自動駕駛系統(tǒng)目前處理得不夠好的問題,針對這些問題,小鵬的自駕團隊會在車端設(shè)置相應的觸發(fā)器來定向采集相應的數(shù)據(jù)。然后,這些數(shù)據(jù)會被上傳到云端,經(jīng)過篩選和標注后用于模型訓練和后續(xù)的OTA升級。
此外,仿真數(shù)據(jù)也是數(shù)據(jù)的重要來源。吳新宙在1024科技日上舉了一個例子—行車過程中,前面一輛大卡車因為輪胎脫落與地面摩擦起火,這種情形在實際生活中是極為罕見的。對于這樣出現(xiàn)頻率極低的情形,實車采集很困難,即使小鵬已經(jīng)有了近十萬輛量產(chǎn)車,收集到足夠多的數(shù)據(jù)可能也需要數(shù)年時間。
對于這樣的情形,仿真數(shù)據(jù)可以起到很好的輔助作用。如下圖所示,小鵬的自駕團隊可以根據(jù)實車數(shù)據(jù),采用unreal5引擎產(chǎn)生成千上萬個類似的case ,模擬各種各樣車輪脫落的情形。
當然,仿真數(shù)據(jù)不能濫用,需要盡可能地貼近現(xiàn)實。小鵬的自駕團隊主要從光影真實和場景真實兩方面來盡量保證仿真數(shù)據(jù)的真實性。
小鵬的自駕團隊采用了技術(shù)上領(lǐng)先的unreal5作為渲染引擎,這樣通過仿真生成的圖片看起來比較真實,沒有卡通感,保證了“光影真實”。
此外,生成仿真數(shù)據(jù)時,是先找到模型的弱勢場景,然后對這些場景做數(shù)字孿生(digital twin),再在此基礎(chǔ)上進行定向修改。具體來說,可以先用4D自動標注從真實場景里提取4D結(jié)構(gòu)化信息—包括動態(tài)物體的4D軌跡、和靜態(tài)場景的3D布局等,然后用渲染引擎對結(jié)構(gòu)化信息進行渲染填充,形成仿真圖片。這樣,生成的場景就是在模擬真實世界可能發(fā)生的場景,保證了“場景真實”。
3.2標注
要訓練XNet,需要50萬到100萬個短視頻,其中的動態(tài)目標的數(shù)量可能是數(shù)億級甚至十億級的。按照當前人工標注的效率,需要1000人的團隊花兩年時間才能完成訓練XNet所需數(shù)據(jù)的標注。
小鵬汽車打造了全自動標注系統(tǒng),此系統(tǒng)的標注效率是人工的近45000倍,全自動標注系統(tǒng)僅需16.7天就可以完成標注工作。此外,全自動標注系統(tǒng)質(zhì)量更高,信息更全(包含3D位置、尺寸、速度、軌跡等信息),產(chǎn)量更大(峰值日產(chǎn) 30000 clips,相當于 15個NuScene數(shù)據(jù)集 )。
全自動標注系統(tǒng)是如何做到高效的呢?
首先,從人工標注到自動標注,人的角色發(fā)生了很大的變化。人工標注場景下,人是標注員;在自動標注場景下,人是質(zhì)檢員,只是去判別和糾正自動標注系統(tǒng)做的不好的地方,人效會有數(shù)量級的提升。
其次,在自動標注場景下,占數(shù)據(jù)集大多數(shù)的訓練數(shù)據(jù)是自動化質(zhì)檢的,只有評測數(shù)據(jù)集是人工質(zhì)檢,需要人工操作的數(shù)據(jù)量有數(shù)量級的減少。
最后,自動標注讓產(chǎn)出瓶頸從人力資源轉(zhuǎn)到了計算資源。在云端,計算資源可以很方便地拓展,可以靈活地按需部署大量資源進行生產(chǎn)。
3.3訓練
小鵬與阿里云合作打造了中國最大的自動駕駛計算中心—“扶搖”,“扶搖”的算力可達600PFLOPS,相當于成千上萬個Orin組成的訓練平臺。借助扶搖的強大算力,小鵬的自駕團隊采用云端大規(guī)模多機訓練的方式,把XNet的訓練時間從276天縮短到了11個小時,實現(xiàn)了602倍的訓練效率的提升。
如下圖所示,假如采用單機全精度方式,訓練整個XNet需要276天。小鵬的自駕團隊通過優(yōu)化訓練scheme從而減少epoch、優(yōu)化網(wǎng)絡結(jié)構(gòu)和算子、為Transformer定制混合精度訓練的方式,將單機訓練時間從276天縮短到了32天。然后,團隊充分利用云端算力,將單機訓練改為80機并行訓練,訓練時間從32天縮短到了11小時。
此外,團隊引入了Golden Backbone模型,將基礎(chǔ)網(wǎng)絡能力的提升和模型的發(fā)布解耦,實現(xiàn)了訓練效率的提升。具體來說,如下圖所示,Golden Backbone可以和數(shù)據(jù)挖掘、自動標注、自動駕駛超算平臺等形成一個閉環(huán)。在這個環(huán)里,只要有持續(xù)的數(shù)據(jù)輸入,Golden Backbone的能力就可以持續(xù)地得到優(yōu)化。需要發(fā)布模型的時候,只需在Golden Backbone的基礎(chǔ)上做一些優(yōu)化,而無需從頭開始訓練。
3.4部署
在部署層面,小鵬的自駕團隊有很多積累。經(jīng)過團隊優(yōu)化后,Transformer的運算時間減少到了原來的5%。此外,原本需要122%的Orin-X算力才能運行的模型,現(xiàn)在只需9%的Orin-X算力就能運行。
在部署上,小鵬的自駕團隊有哪些亮點呢?根據(jù)Patrick的介紹,主要是分三步走。
“首先是Transformers層的重寫。經(jīng)過對模型板端運行時間的分析,我們發(fā)現(xiàn)原版的Transformers層占用時長是大頭。于是,我們嘗試了很多種Transformers的變種構(gòu)建方法,找到了一個模型效果好,在板端運行快的版本?!?/p>
“然后是網(wǎng)絡骨干的剪枝。我們重寫了Transformers以后發(fā)現(xiàn),網(wǎng)絡骨干(backbone)是我們的性能瓶頸。于是我們對網(wǎng)絡骨干進行了剪枝,降低了骨干部分的運行時間?!?/p>
“最后是多硬件的協(xié)同調(diào)度。在我們的基于Orin-X的計算平臺上,有三種計算單元—GPU、DLA還有CPU。這三種硬件對網(wǎng)絡的不同算子的支持度各有不同。我們把網(wǎng)絡的不同構(gòu)件放到最適合它運行的地方,然后統(tǒng)一調(diào)度三種計算硬件,讓三者協(xié)同完成網(wǎng)絡推理。”