目前學(xué)術(shù)圈還是用“打榜”來對(duì)自動(dòng)駕駛算法評(píng)分,所謂“打榜”是指在某一數(shù)據(jù)集上利用其訓(xùn)練數(shù)據(jù)集測(cè)試算法的優(yōu)劣勢(shì),目前自動(dòng)駕駛?cè)?nèi)最常用的打榜數(shù)據(jù)集是安波福Aptiv旗下的nuScenes。nuScenes數(shù)據(jù)集的任務(wù)包括六大類,分別是3D目標(biāo)檢測(cè)(Detection)、目標(biāo)追蹤(Tracking)、目標(biāo)軌跡預(yù)測(cè)(Prediction)、激光雷達(dá)目標(biāo)分割(Lidar Segmentation)、全景(Panoptic)、決策(Planning)。
其中,3D目標(biāo)檢測(cè)是自動(dòng)駕駛最基礎(chǔ)的任務(wù),全球有近300個(gè)團(tuán)隊(duì)或企業(yè)參加了比試,也是全球自動(dòng)駕駛數(shù)據(jù)集參賽者最多的,足見其權(quán)威性。華為的TransFusion出自2021年10月,當(dāng)時(shí)也曾在nuScenes數(shù)據(jù)集上打榜,并奪得第一名的位置,不過最近華為沒有打榜。
3D目標(biāo)檢測(cè)(Detection)又可分為融合算法和單一傳感器算法,其中純視覺算法第一名就是地平線Sparse4D,NDS得分高達(dá)0.719;純激光雷達(dá)算法第一名是浪潮信息和中科院的Real-Aug++,NDS得分是0.744;而激光雷達(dá)和視覺融合的第一名是零跑汽車的EA-LSS,NDS得分0.776。不難看出傳感器融合性能提升非常有限。很多人會(huì)說,特斯拉才是純視覺第一名,不過根據(jù)特斯拉AI Day的資料,特斯拉目標(biāo)感知算法骨干是META開發(fā)的Regnet,脖頸是谷歌的BiFPN,感測(cè)頭是Transformer,但特斯拉描述的比較模糊,Transformer似乎只是2D到BEV變換。特斯拉的純視覺基礎(chǔ)似乎是來自Facebook的論文《End-to-End Object Detection with Transformers》(發(fā)表于2020年5月),稀疏化之后就是DETR3D,2021年10月打榜(實(shí)際DETR3D在2020年初就有了),DETR3D曾經(jīng)打榜,NDS得分0.479,在當(dāng)年確實(shí)是第一,不過第一的位置只保持了近大半年。 ?
再就是什么是所謂端到端。傳統(tǒng)的自動(dòng)駕駛系統(tǒng)通常會(huì)采用級(jí)聯(lián)式的架構(gòu),在模塊與模塊之間通常傳遞的是結(jié)構(gòu)化信息,同時(shí)在系統(tǒng)內(nèi)存在著海量人工設(shè)計(jì)的復(fù)雜規(guī)則。這使得整體的自動(dòng)駕駛系統(tǒng)復(fù)雜性高、難以聯(lián)合優(yōu)化以及迭代周期比較長(zhǎng)。而端到端的設(shè)計(jì)思路則帶來了全新的可能性。在端到端架構(gòu)中,首先各個(gè)主要的模塊都是基于神經(jīng)網(wǎng)絡(luò)的形式設(shè)計(jì);其次模塊間也不再只是傳遞結(jié)構(gòu)化信息,而是同時(shí)傳遞稀疏實(shí)例特征表示,這使得從感知到規(guī)控的整體系統(tǒng)可以進(jìn)行聯(lián)合優(yōu)化;最終的決策規(guī)劃模塊也能從更加靠前的階段獲得更豐富的信息。BEV就是端到端的典型代表。
還有一種徹底的端到端,就是英偉達(dá)在2016年的論文《End to End Learning forSelf-Driving Cars》,不產(chǎn)生中間結(jié)果,可以直接通過圖像輸入,直接輸出控制信號(hào)的徹底端到端技術(shù)路線。貌似很高大上,不過神經(jīng)網(wǎng)絡(luò)或者說AI本身就是黑盒,加上這個(gè)徹底黑盒的流程,完全不具備任何可解釋性,成敗完全取決于運(yùn)氣,無法迭代,因此2020年以后再也無人提及。從自動(dòng)駕駛產(chǎn)品安全性的角度來看,把每個(gè)模塊都網(wǎng)絡(luò)化并串聯(lián)在一起的技術(shù)路線,會(huì)更加可靠可行,感知的結(jié)果必須有顯式的。
與科研機(jī)構(gòu)不同,地平線是要考慮產(chǎn)品落地商業(yè)化的,從名字就可看出,地平線是要“稀疏”,從圖像空間到BEV空間的轉(zhuǎn)換,是稠密特征到稠密特征的重新排列組合,計(jì)算量比較大,與圖像尺寸以及BEV特征圖尺寸成正相關(guān)。在大家常用的nuScenes 數(shù)據(jù)中,感知范圍通常是長(zhǎng)寬 [-50m, +50m] 的方形區(qū)域,然而在實(shí)際場(chǎng)景中,我們通常需要達(dá)到單向100m,甚至200m的感知距離。若要保持BEV Grid 的分辨率不變,則需要大大增加BEV 特征圖的尺寸,從而使得端上計(jì)算負(fù)擔(dān)和帶寬負(fù)擔(dān)都過重;若保持BEV特征圖的尺寸不變,則需要使用更粗的BEV Grid,感知精度就會(huì)下降。因此,在車端有限的算力條件下,BEV 方案通常難以實(shí)現(xiàn)遠(yuǎn)距離感知和高分辨率特征的平衡。此外,BEV 空間可以看作是壓縮了高度信息的3D空間,這使得BEV范式的方法難以直接完成2D相關(guān)的任務(wù),如標(biāo)志牌和紅綠燈檢測(cè)等,感知系統(tǒng)中仍然要保留圖像域的感知模型;這也正是馬斯克展示特斯拉的v12版時(shí),紅綠燈檢測(cè)出現(xiàn)明顯的錯(cuò)誤,Occupancy Network忽略了部分2D相關(guān)任務(wù)。
特斯拉的OccupancyNetwork在找尋自由空間方面優(yōu)勢(shì)明顯,策略是避障而非減速剎車,但也有缺點(diǎn),大量的無意義的靜態(tài)目標(biāo)如路兩邊的建筑物浪費(fèi)了不少運(yùn)算資源,按照特斯拉2022 AI Day上的資料,特斯拉的幀率大概是12fps,通常智能駕駛是30fps以上,顯然是運(yùn)算資源不足導(dǎo)致的。
地平線追求一個(gè)高性能、高效率的長(zhǎng)時(shí)序純稀疏BEV感知算法,既能提高效率也不降低性能?;A(chǔ)還是首個(gè)稀疏的BEV感知模型,即DETR3D?!禗ETR3D:3D Object Detection from Multi-view Images via 3D-to-2D Queries》,作者來自五湖四海,包括麻省理工學(xué)院(MIT)、清華大學(xué)、卡梅隆大學(xué)、理想汽車(不過作者留的郵箱是斯坦福大學(xué),應(yīng)該還是學(xué)生)豐田北美研究院和斯坦福大學(xué)。
DETR3D是第一個(gè)端到端的目標(biāo)檢測(cè)模型,不需要眾多手工設(shè)計(jì)組件,如anchor、固定規(guī)則的標(biāo)簽分配策略、NMS后處理等),也是首先將tranformer引入目標(biāo)檢測(cè)的。DETR3D模型包含3個(gè)關(guān)鍵組件。第一,遵循 2D 視覺中的常見做法,使用共享的 ResNet主干從相機(jī)圖像中提取特征,視需要使用特征金字塔FPN加強(qiáng)這些特征。第二,一個(gè)以幾何感知方式將計(jì)算的2D特征和3D包絡(luò)框預(yù)測(cè)集合進(jìn)行連接的檢測(cè)頭,檢測(cè)頭的每一層都從一組稀疏的目標(biāo)查詢開始,這些查詢是從數(shù)據(jù)中學(xué)習(xí)的。每個(gè)目標(biāo)查詢編碼一個(gè)3D位置,該位置投影到相機(jī)平面并通過雙線性插值用于收集圖像特征。DERT類似,然后我們使用多頭注意力通過合并目標(biāo)交互來優(yōu)化目標(biāo)查詢。這一層會(huì)重復(fù)多次,在特征采樣和目標(biāo)查詢優(yōu)化之間交替。最后,我們使用set-to-set損失來訓(xùn)練網(wǎng)絡(luò)。
DETR3D架構(gòu)
圖片來源:網(wǎng)絡(luò)
與Transformer那種全局(global)&密集(dense)的注意力機(jī)制相比,DETR3D提出了新思路:每個(gè)參考點(diǎn)僅關(guān)注鄰域的一組采樣點(diǎn),這些采樣點(diǎn)的位置并非固定,而是可學(xué)習(xí)的(與可變形卷積一樣),從而實(shí)現(xiàn)了一種局部(local)&稀疏(sparse)的高效注意力機(jī)制。Transformer在計(jì)算注意力權(quán)重時(shí),伴隨著高計(jì)算量與空間復(fù)雜度。特別是在編碼器部分,與特征像素點(diǎn)的數(shù)量成平方級(jí)關(guān)系,因此難以處理高分辨率的特征(這點(diǎn)也是DETR檢測(cè)小目標(biāo)效果差的原因),說白了就是計(jì)算量太大,高分辨率攝像頭沒法用。DETR的第一波改進(jìn)就是Deformable DETR。它提出可變形注意力模塊,相比于Transformer那種方式,在這里,每個(gè)特征像素不必與所有特征像素交互計(jì)算,只需要與部分基于采樣獲得的其它像素交互即可,這就大大加速了模型收斂,同時(shí)也降低了計(jì)算復(fù)雜度與所需的空間資源。另外,該模塊能夠很方便地應(yīng)用到多尺度特征上,連FPN都不需要。
地平線做了二次改進(jìn),就是Sparse 4D。
Sparse4D概覽
圖片來源:地平線
Sparse4D提出instance特征,即實(shí)例特征,應(yīng)該是車的實(shí)例,然后重新定義anchor盒尺寸。
圖片來源:地平線
Sparse4D也采用了Encoder-Decoder 結(jié)構(gòu),其中Encoder包括imagebackbone和neck,用于對(duì)多視角圖像進(jìn)行特征提取,得到多視角多尺度特征圖。同時(shí),cache 多張歷史幀的圖像特征用于在decoder 中提取時(shí)序特征;Decoder為多層級(jí)聯(lián)形式,輸入時(shí)序多尺度圖像特征圖和初始化instance,輸出精細(xì)化后的instance,每層decoder包含self-attention、deformable aggregation和refine module三個(gè)主要部分。
學(xué)習(xí)2D檢測(cè)領(lǐng)域DETR改進(jìn)的經(jīng)驗(yàn),重新引入了Anchor的使用,并將待感知的目標(biāo)定義為instance,每個(gè)instance主要由兩個(gè)部分構(gòu)成:目標(biāo)的高維特征,在decoder 中不斷由來自于圖像特征的采樣特征所更新;目標(biāo)結(jié)構(gòu)化的狀態(tài)信息,比如3D檢測(cè)中的目標(biāo)3D框(x, y, z, w, l, h, yaw, vx, vy);通過kmeans 算法來對(duì)anchor 的中心點(diǎn)分布進(jìn)行初始化;同時(shí),在網(wǎng)絡(luò)中會(huì)基于一個(gè)MLP網(wǎng)絡(luò)來對(duì)anchor的結(jié)構(gòu)化狀態(tài)進(jìn)行高維空間映射得到 Anchor Embed 并與instance feature 相融合。
Anchor源自RPN,在深度學(xué)習(xí)時(shí)代,大名鼎鼎的RCNN和Fast RCNN依舊依賴滑窗來產(chǎn)生候選框,也就是Selective Search算法,該算法優(yōu)化了候選框的生成策略,但仍會(huì)產(chǎn)生大量的候選框,導(dǎo)致即使是Fast RCNN算法,在GPU上的速度也只有三、四幀每秒。直到Faster RCNN的出現(xiàn),提出了RPN網(wǎng)絡(luò),使用RPN直接預(yù)測(cè)出候選框的位置。RPN網(wǎng)絡(luò)一個(gè)最重要的概念就是anchor,啟發(fā)了后面的SSD和YOLOv2等算法,雖然SSD算法稱之為default box,也有算法叫做prior box,其實(shí)都是同一個(gè)概念,他們都是anchor的別稱。anchor就是在圖像上預(yù)設(shè)好的不同大小,不同長(zhǎng)寬比的參照框。(其實(shí)非常類似于上面的滑窗法所設(shè)置的窗口大小)。
anchor有點(diǎn)定制的意味,首先你要知道你檢測(cè)的最重要的目標(biāo)類型是什么,是車還是小貓,再根據(jù)這個(gè)確定anchor,大大提高計(jì)算效率,也提高準(zhǔn)確度,而缺點(diǎn)就是可能出現(xiàn)漏檢。對(duì)智能駕駛來說,最重要的目標(biāo)是車和行人,這個(gè)anchor很好確定,也可以讓網(wǎng)絡(luò)自己確定。
圖片來源:地平線
在Sparse4D的decoder 中,最重要的是Deformable 4D Aggreagation模塊。這個(gè)模塊主要負(fù)責(zé)instance與時(shí)序圖像特征之間的交互,如上圖所示,主要包括三個(gè)步驟:
4D關(guān)鍵點(diǎn)生成:首先,基于每個(gè)instance的3D anchor信息,生成一系列3D關(guān)鍵點(diǎn),分為固定關(guān)鍵點(diǎn)和可學(xué)習(xí)關(guān)鍵點(diǎn)。將固定關(guān)鍵點(diǎn)設(shè)置為anchor box的各面中心點(diǎn)及其立體中心點(diǎn),可學(xué)習(xí)關(guān)鍵點(diǎn)坐標(biāo)通過instancefeature接一層全連接網(wǎng)絡(luò)得到。在Sparse4D 中,采用了7個(gè)固定關(guān)鍵點(diǎn) + 6個(gè)可學(xué)習(xí)關(guān)鍵點(diǎn)的配置。然后結(jié)合instance自身的速度信息以及自車的速度信息,對(duì)這些3D關(guān)鍵點(diǎn)進(jìn)行運(yùn)動(dòng)補(bǔ)償,獲得其在歷史時(shí)刻中的位置。結(jié)合當(dāng)前幀和歷史幀的3D關(guān)鍵點(diǎn),我們獲得了每個(gè)instance的4D關(guān)鍵點(diǎn)。
4D 特征采樣:在獲得每個(gè)instance在當(dāng)前幀和歷史幀的3D關(guān)鍵點(diǎn)后,根據(jù)相機(jī)的內(nèi)外參將其投影到對(duì)應(yīng)的多視角多尺度特征圖上進(jìn)行雙線性插值采樣。從而得到Multi-Keypoint,Multi-Timestamp, Multi-Scale, Multi-View的特征表示。
然后是層級(jí)融合,F(xiàn)use Multi-Scale/View:對(duì)于一個(gè)關(guān)鍵點(diǎn)在不同特征尺度和視角上的投影,采用了加權(quán)求和的方式,權(quán)重系數(shù)通過將instance feature和anchor embed輸入至全連接網(wǎng)絡(luò)中得到;Fuse Multi-Timestamp:對(duì)于時(shí)序特征,采用了簡(jiǎn)單的recurrent策略(concat + linear)來融合;Fuse Multi-Keypoint:最后,采用求和的方式融合同一個(gè)instance不同keypoint的特征。
即便是已經(jīng)稀疏化、輕量化,由于時(shí)間T的導(dǎo)入,依然導(dǎo)致計(jì)算量偏大,第一代Sparse 4D使用ResNet50做骨干網(wǎng),輸入圖像尺寸704*256,使用英偉達(dá)RTX3090顯卡,RTX3090擁有10496個(gè)CUDA核心,328個(gè)Tensor張量核心,F(xiàn)P32算力是35.58TOPS,F(xiàn)P16張量算力是285TOPS,INT8是570TOPS,論FP32算力比A100還高,價(jià)格不到A100的1/5。
幀率偏低,消耗內(nèi)存也太多,地平線提出第二代Sparse4D。
圖片來源:地平線
在Sparse4D-V2中,將decoder分為單幀層和時(shí)序?qū)?。單幀層以新初始化的instance作為輸入,輸出一部分高置信度的instance至?xí)r序?qū)樱粫r(shí)序?qū)拥膇nstance除了來自于單幀層的輸出以外,還來自于歷史幀(上一幀)。將歷史幀的instance投影至當(dāng)前幀,其中,instance feature保持不變,anchor box通過自車運(yùn)動(dòng)和目標(biāo)速度投影至當(dāng)前幀,anchor embed通過對(duì)投影后的anchor進(jìn)行編碼得到。這樣避免消耗內(nèi)存的多幀采樣,改為歷史幀重復(fù)利用,用遞歸recurrent的方式取代了多幀采樣。
最新的Sparse4D -V3也已經(jīng)出現(xiàn),對(duì)骨干網(wǎng)和訓(xùn)練策略都進(jìn)行了升級(jí),最終達(dá)到了純視覺第一名。
最后要說的是人人都說大模型,實(shí)際略大一點(diǎn)的模型無法在車端使用,存儲(chǔ)帶寬和算力最終變?yōu)槌杀鞠拗?,骨干網(wǎng)幾乎沒有例外都還是2015年微軟研究院的何愷明、張祥雨、任少卿、孫劍等人提出的ResNet,何愷明后來去了Facebook (Meta),最近又回MIT教書,基本上何凱明引領(lǐng)了計(jì)算機(jī)目標(biāo)檢測(cè)視覺的發(fā)展潮流,真正的大神。
自動(dòng)駕駛需要走的路還很長(zhǎng),感知的問題還未完全解決。不過欣慰的是,中國在感知方面是穩(wěn)居第一的,如果中國都無法完成自動(dòng)駕駛,那么其他國家更不可能。
編輯:黃飛
?
評(píng)論
查看更多