自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

萬字長文談自動駕駛BEV感知

人工智能 智能汽車
其實自動駕駛bev算法是個很寬泛的說法,bev也就是bird's-eye-view,是指從鳥瞰視角來做task的范式;從數(shù)據(jù)來說有純視覺的bev,純雷達的bev,也有視覺雷達or其他多傳感器融合的bev。

本文經(jīng)自動駕駛之心公眾號授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

prologue

這有可能是更的最長的文章系列了,先說為什么,一方面是看到分割大模型對小模型的提升效果需要時間,另一方面是之前對自動駕駛的BEV算法做了很長時間的預(yù)研,自己也應(yīng)該好好梳理一下了。

(很多事情都是環(huán)環(huán)相扣,都需要去決斷。比如分割大模型對小模型性能有沒有提升,效果提升的投入和輸出是否合適,提升不大還有有沒有必要繼續(xù)做,是換個方向還是繼續(xù)探索,繼續(xù)探索還有多少資源支撐,太多太多了。bev預(yù)研到什么時候才有可能落地,看過的paper有沒有轉(zhuǎn)化為產(chǎn)出的機會,產(chǎn)出能不能給自己帶來收益,這些也都是問題。雖然看起來問題很復(fù)雜,但不過也就是個隱馬爾可夫或者CRF,一切都還在變化之中,靜待靴子落地吧)

其實自動駕駛bev算法是個很寬泛的說法,bev也就是bird's-eye-view,是指從鳥瞰視角來做task的范式;從數(shù)據(jù)來說有純視覺的bev,純雷達的bev,也有視覺雷達or其他多傳感器融合的bev。

這也是有很多說法的,對于一個公司項目來說,走什么樣的技術(shù)路線,用什么樣的傳感器,運行在什么平臺上,都對相應(yīng)的算法有著要求,在現(xiàn)實的種種妥協(xié)之下最sota的算法也不一定就是最好的,指標高的算法也不見得就一定是能用的。

就先簡單說一下,也給大家share一下自己的一些paper list:

camera bev :

1. Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D

  • 點評:純視覺bev的開山鼻祖,在后續(xù)的文章里面但凡有用到將二維圖像feature提升到三維空間然后拍扁到bev空間都有用到其提出的lift-splat的操作,代碼也很干脆易讀。(shoot部分是做規(guī)劃的,代碼沒開出來)核心是將每個圖像單獨提升為一個特征的視錐,然后將所有視錐拍平到柵格化的BEV網(wǎng)格上,如下圖所示。

當然由于是初代版本也就不可避免的存在一些問題,最主要的兩個點,一是splat的過程中運算耗時,二是在深度估計部分由于給予每個點可能的深度時并沒有用深度真值監(jiān)督,導(dǎo)致不夠準確,越遠效果越差性能和現(xiàn)在的新一些算法比起來差很多。但這仍舊不妨礙其在bev算法中的份量。

題外話:我也有過對lss進行優(yōu)化,說來話長,可以給大家推一些我之前相關(guān)的博文。簡單說就是之前有想著打一打nuscenes的榜單,對公司對自己也都有好處,于是就打算從Lss入手來搞,當時主要考慮他是plug and play 的,基于lss的bev算法很多,如果能在這樣基礎(chǔ)算法上做出改進那就可以對所有使用了lss模塊的算法都帶來提升,這是一件有意義的事情。至于后面就不說了,都是汗與累??!

一個是對代碼的解讀

一個是對LSS做改進的nuscenes sota

一個是我之前搞得nuscenes 深度圖

2. M2BEV: Multi-Camera Joint 3D Detection and Segmentation with Unified Bird's-Eye View Representation

  • 點評:這是一篇沒有開源的文章,和lss一樣也是nvidia的工作,也是從2d到3d再投影到bev空間但由于假設(shè)沿射線的深度分布是均勻的,這意味著沿相機射線的所有體素都填充與2D空間中單個像素對應(yīng)的相同特征,所以內(nèi)存高效速度更快,單從文章看效果比lss要好,號稱是第一個用統(tǒng)一框架同時做檢測和分割任務(wù)的,但沒開源。
  • 這里有一個點是,這篇文章假設(shè)沿著射線的深度分布是均勻的,這意味著沿著相機射線的所有體素都填充有與2D空間中的P中的單個像素相對應(yīng)的相同特征。好處是這種統(tǒng)一的假設(shè)通過減少學(xué)習(xí)參數(shù)的數(shù)量來提高計算和存儲效率。但lss卻不是這樣,他是a non-uniform depth distribution。

3. BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View

  • 點評:lss算法后來者,或者說包了一層皮(有點直白),改進了前處理和后處理核心沒變,之前l(fā)ss是做分割任務(wù),這篇是拿來做檢測任務(wù)。這篇工作是鑒智機器人做的,后續(xù)還有一系列文章與改進版本。雖然但是從這里開始后面的很多文章就會對lss中的所謂“棱臺求和”部分進行優(yōu)化和加速了。

題外話(+1):鑒智機器人還是可以的創(chuàng)始人都是清華背景,當初大概21年后半年的時候有面過,那時候他們剛開始創(chuàng)業(yè)也就幾十個人,說過去做感知后處理,非常可惜當時自己也還年輕,互相也都沒看上。后面再來看他們確實做了不少有意義的工作,點贊!不過現(xiàn)在自動駕駛環(huán)境也一般,大家也都過的不容易。

這里給大家放一下bevdet系列的發(fā)展歷程:

bevdet做出來以后,后面還有bevdet4d (BEVDet4D: Exploit Temporal Cues in Multi-camera 3D Object Detection)主要就是增加了時序,將過去幀與當前幀特征融合來提高精度,比較有趣的。主要原因有:在做特征融合的時候,BEVDet4D在BEVDet的基礎(chǔ)上,通過保留過去幀的中間BEV特征,并通過與當前幀對齊和拼接來融合特征。這樣,BEVDet4D可以通過查詢兩個候選特征來獲取時間線索,而僅需要可忽略的計算增加。對任務(wù)進行了簡化,BEVDet4D通過移除自我運動和時間因素來簡化速度預(yù)測任務(wù)。這使得BEVDet4D能夠減少速度誤差,使得基于視覺的方法在這方面首次與依賴LiDAR或雷達的方法相媲美。BEVDet4D的性能提升主要來源于速度估計更準確1。此外,小模型上的mAP有一定的增長,主要是小分辨率無法覆蓋50米的范圍,歷史幀提供了一定的線索。

在往后就是bevpoolv2主要做對于lift-splat的提速,用預(yù)處理來優(yōu)化計算流程做到了4.6 - 15.1倍速度的提升,同時也降低了內(nèi)存的占用。這個處理確實很高級,點贊!對于工程化落地來說真是太重要了。

截止到2023年12月22日,bevdet系列的最新發(fā)展是DAL(Detecting As Labeling:Rethinking LiDAR-camera Fusion in 3D Object Detection),是做視覺和lidar融合的,效果和速度都有提升。如果直接點說,和bevfusion(mit版本)的流程大同小異,只是在視覺雷達的分支上更加相信雷達,然后包了一個“模仿數(shù)據(jù)注釋過程”的故事,比較粗淺的來說就是這樣。當然這并不妨礙人家效果好,也還是做了很多細節(jié)上的工作的。也比較期待他們接下來的工作。

以下是DAL paper中的框架圖:

4. BEVFormer: Learning Bird's-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers

  • 點評:使用transformer和temporal來做bev感知任務(wù)(檢測和分割)提升性能,有一些設(shè)計比如bev queries,spatial cross-attention,temporal self-attention。主要注意的是這里的兩個attention并不是經(jīng)典的transformer,而是用的DeformAtt.這里我記得當時在看整個流程的時候廢了一點功夫,代碼也相對來說復(fù)雜一些。

不過大家也可以從這里開始,順便看一看detr的發(fā)展脈絡(luò)。這里的bev queries 是隨機生成初始化的,然后我記得后面有一篇nvidia打榜cvpr 2023 挑戰(zhàn)賽的時候的fb-bev or fb-occ來著,對于queries的初始化這部分有做改進,能學(xué)的快一點。

上面是論文出處,不是我亂說哦!這里沒有把這篇文章放進來主要是最開始fb-occ是做占用網(wǎng)格用的,后面做bev放出來的fb-bev效果反倒沒有很驚艷,再加上打榜的工作本來就不是為了產(chǎn)品化來設(shè)計的,前向投影查一遍反向投影(2d-3d,3d-2d)速度當然就很慢了,所以就沒說。(不過也有懶得成分了)

后續(xù)還有一些改進的版本,比如BEVFormer++,bevformerv2當然這個工作不是原班人馬,所以就簡單說一下bevformerv2。這篇主要就是沒開源,paper說要開但是還沒,所以也就只能看看idea;bevformer++

則是一篇技術(shù)報告,原班人馬拿了Waymo Open Dataset Challenge 2022的第一名,可以看一看吧。

5. BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection

  • 點評:bevdepth是我非常欣賞的一篇工作,在lss的基礎(chǔ)上用雷達作為深度的真值,深度估計網(wǎng)絡(luò)考慮到相機內(nèi)參,深度細化模塊專門對深度估計部分進行了優(yōu)化,更重要的是使用gpu并行對原來lss的"cumsum trick"進行了優(yōu)化,大大提升了lss環(huán)節(jié)的速度,在gpu下相較原版lss快了80x。真是把lss depth估計的效果提升了一個檔次(其實這也是我當時想在lss深度上做文章的靈感來源,ps這句話不重要)

6. CVT:Cross-view Transformers for real-time Map-view Semantic Segmentation

  • 點評:前視圖投影頂視圖的原理,用transformer的注意力機制搞跨視圖分割。

7. GKT:Efficient and Robust 2D-to-BEV Representation Learning via Geometry-guided Kernel Transformer

  • 點評:之前有注釋過核心代碼https://blog.csdn.net/weixin_46214675/article/details/131169769?spm=1001.2014.3001.5501,不是什么很出名的paper,像其他的可能都是cvpr,eccv,iccv啥的,之所以會搞這個主要是當時有項目在地平線的芯片上,他們對這個算法有支持,然后一看原來是人在地平線實習(xí)的時候搞得,目前為止沒看到有中稿,就他們自家東西支持一下我覺得也很正常。感興趣大家可以自己看看,簡單說是bev投到圖像,然后在投影周邊一定范圍內(nèi)做注意力,當然也有一些其他的比如對外參加一些噪聲讓網(wǎng)絡(luò)更魯棒,建查找表加速。

lidar det:

對于雷達來說,bev其實就沒有那么必須,雷達bev和detection關(guān)系比較密切。一般用雷達做檢測有幾個范式?不知道咋說,要么就是基于點來做,像pointnet,pointnet++;基于視角來做的話就可以是頂視這就是bev,也可以是前視圖,這兩種視角變化做雷達圖像融合也會看到的;也可以基于體素來做。當然這么說并不準確,不管什么范式總有互相借鑒的地方。

1. pointpillar

  • 點評:https://blog.csdn.net/weixin_46214675/article/details/125927515?spm=1001.2014.3001.5502,很久之前淺淺有做過個ppt,當時主要是當科普來講,所以沒有很細,但確實是篇對工業(yè)界有用的paper,點贊!

2. centerpoint

  • 點評:CenterPoint使用標準的基于激光雷達的主干網(wǎng)絡(luò),VoxelNet或PointPillars。CenterPoint預(yù)測連續(xù)幀之間物體的相對偏移(速度),然后貪婪地連接這些幀。因此,在CenterPoint中,3D物體跟蹤簡化為貪婪的最近點匹配。這種檢測和跟蹤算法既高效又有效。在nuScenes基準測試中,CenterPoint實現(xiàn)了最先進的性能。在Waymo開放數(shù)據(jù)集上,CenterPoint的性能超過了所有以前的單一模型方法。
  • 青出于藍勝于藍,也是一篇很不錯的paper,工業(yè)界目前還有在使用的,點贊!

fusion bev:

1.BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View Representation [code]

  • 點評:bevfusion是一篇圖像激光雷達融合的bev算法,支持同時檢測和分割任務(wù)。在nuScenes detection task

榜單上有許多該方法的變體,從總體架構(gòu)上來看基本方法很清晰,camera分支和lidar分支分別提取特征,然后轉(zhuǎn)移到共享的bev空間下,再提取bev特征來做多任務(wù),真可謂是大道至簡。值得一提的是,bevfusion對于camera to bev 部分的優(yōu)化做了不少工作,預(yù)計算部分減少了13ms,gpu計算間隔優(yōu)化減少了498ms,真是把優(yōu)化做到了極致,很多公司都做不到這樣。

此外,從paper實驗對比部分我們也能看出bevfusion的強大,對于許多想學(xué)習(xí)bev的工程師來說bevfusion真是一個很優(yōu)秀的框架了,正如團隊所說希望BEVFusion可以作為一個簡單但強大的基線,啟發(fā)未來多任務(wù)多傳感器融合的研究。但遺憾的是,盡管團隊針對速度做了很多工作但仍不能達到實時。(8.4 FPS)

在實際的工程項目中,如果想要使用bevfusion最大的問題其實還是優(yōu)化問題,因為作者的優(yōu)化都是基于cuda是做的,一旦離開nvidia的平臺很多地方會受到影響,這部分就需要針對不同平臺來編寫定制化的算子。

2. Cross Modal Transformer: Towards Fast and Robust 3D Object Detection [code]

當然算法永遠是在進步更新的,新算法往往會更快更強,就比如CMT也是在nuscenes 榜上有名的。既然都說到這里了,那就簡單說一下cmt精髓,屬實是把位置編碼玩明白了。

對于圖像,先把pixel左乘內(nèi)參的逆然后乘外參轉(zhuǎn)到雷達坐標系下,然后用mlp輸出其位置編碼

對于雷達則是用voxelnet或者pointpillar編碼為點云token后在bev feature gird上沿著高度簡單采樣,然后也是用Mlp輸出其位置編碼.

Position-guided Query 則是先隨機選點A,A:(ax,i ,ay,i ,az,i)是[0,1]之間隨機生成的,然后乘以范圍加上最小值轉(zhuǎn)到the region of interest (RoI) of 3D world space.

然后把這個坐標投影到圖像和雷達模態(tài)中獲取相應(yīng)的位置編碼,相加得到Q查詢

代碼如下:這個參考點是可以學(xué)習(xí)的

最主要的操作就是這個了。在paper里面也寫的很清楚,bevfusion是兩個模態(tài)轉(zhuǎn)到bev空間后拼接,transfusion先在lidar特征中生成Q取top-k再查圖像特征。而CMT則是對象查詢直接與多模態(tài)特征同時交互,使用位置編碼來對齊兩個模態(tài)。當然也取得了不錯的效果。

3.TransFusion: Robust LiDAR-Camera Fusion for 3D Object Detection with Transformers [code]

  • 點評:transfusion當然也是一篇不錯的工作,而且除檢測外還做了跟蹤,當時在nuScenes跟蹤排行榜上排名第一。一個主要的亮點是,使用了一種軟關(guān)聯(lián)機制,可以處理圖像質(zhì)量較差和傳感器未配準的情況。這種機制使得模型能夠自適應(yīng)地確定從圖像中獲取何處和何種信息,從而實現(xiàn)了一種魯棒且有效的融合策略。簡單說就是利用cross-attention建立了激光雷達和圖像之間的soft association。翻譯一下論文就是:

(Spatially Modulated Cross Attention,SMCA)模塊通過在每個查詢的投影2D中心周圍使用一個2D圓形高斯掩膜來加權(quán)交叉注意力。權(quán)重掩膜M的生成方式與CenterNet[66]類似,使用了以下公式:

。其中,是權(quán)重掩膜M的空間索引,是通過將查詢預(yù)測投影到圖像平面上計算得到的2D中心,是3D邊界框投影角的最小外接圓的半徑,是用來調(diào)節(jié)高斯分布帶寬的超參數(shù)。然后,這個權(quán)重圖與所有注意力頭之間的交叉注意力圖進行元素級的乘法操作。這樣,每個對象查詢只關(guān)注到投影2D框周圍的相關(guān)區(qū)域,使得網(wǎng)絡(luò)可以更好、更快地學(xué)習(xí)根據(jù)輸入的LiDAR特征選擇圖像特征的位置。

當然他的問題在于如果圖像質(zhì)量極差,例如在照明條件較差的情況下,其性能可能會受到影響。由于使用了Transformer解碼器,因此會增加計算復(fù)雜度和內(nèi)存需求。(不過畢竟是fusion的bev跑實時確實不容易,更不用說之后的占用網(wǎng)格)

從上面對比的一系列表格也可以看出,bev相關(guān)的paper還是很多的,大家感興趣可以隨便找一篇相關(guān)文章,然后從對比表格中找到一連串同類型文章。此外,這篇博客也只是粗淺的寫一些與我相關(guān)的見過的部分paper,也只是個開篇,等有空的時候會陸續(xù)再更新吧。

Interesting thing

寫到這里了就再分享個自己覺得有趣的事情,那就是有一件看似很反直覺的事情,單從fusion bev的三個算法來看cmt明顯性能不錯,速度也可以,其次是bevfusion,最后是transfusion。但如果去看這三者的github就會發(fā)現(xiàn),最好的cmt其實是受關(guān)注最少的,transfusion是fork最多的,bevfusion是star最多的。以下數(shù)據(jù)截止到2023年12月27日.

  • Transfusion 1.4k fork,539 star

  • CMT 30 fork,259 star

  • bevfusion 322 fork,1.8k star

至于為什么會出現(xiàn)這樣的情況,大家可以各抒己見,正所謂三個臭皮匠,賽過諸葛亮。讓我想起來當初學(xué)社會心理學(xué)的時候,也是很有趣了。扯了這么久終于有上萬字了,這也算是萬字長文章了,哈哈哈。大家有什么想交流的想聊的都歡迎!我其實也有在想要不要也搞一下nlp,后面搞Embodied AI,還在猶豫,不過我覺得都能搞,沒什么不能搞得!

原文鏈接:https://mp.weixin.qq.com/s/QXLUuoxnkGkcaZnCA2cf9Q

責任編輯:張燕妮 來源: 自動駕駛之心
相關(guān)推薦

2023-01-09 16:31:43

2023-06-08 09:37:44

模型自動駕駛

2022-01-20 11:17:27

自動駕駛智能汽車

2021-10-18 11:58:56

負載均衡虛擬機

2022-09-06 08:02:40

死鎖順序鎖輪詢鎖

2022-03-24 11:40:01

自動駕駛技術(shù)深度學(xué)習(xí)

2021-01-19 05:49:44

DNS協(xié)議

2022-09-14 09:01:55

shell可視化

2020-07-15 08:57:40

HTTPSTCP協(xié)議

2020-11-16 10:47:14

FreeRTOS應(yīng)用嵌入式

2020-07-09 07:54:35

ThreadPoolE線程池

2022-07-19 16:03:14

KubernetesLinux

2022-10-10 08:35:17

kafka工作機制消息發(fā)送

2024-03-07 18:11:39

Golang采集鏈接

2018-06-11 08:40:41

游戲程序員修煉

2024-05-10 12:59:58

PyTorch人工智能

2023-06-12 08:49:12

RocketMQ消費邏輯

2021-08-26 05:02:50

分布式設(shè)計

2024-01-11 09:53:31

面試C++

2022-09-08 10:14:29

人臉識別算法
點贊
收藏

51CTO技術(shù)棧公眾號