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