Warning!遠(yuǎn)距離LiDAR感知
本文經(jīng)自動(dòng)駕駛之心公眾號(hào)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。
一、引言
去年開了圖森ai day之后,一直想以文字形式總結(jié)一下這幾年在遠(yuǎn)距離感知方面所做的工作,正好最近有時(shí)間了,就想寫一篇文章記錄一下這幾年的研究歷程。本文所提到的內(nèi)容都在圖森ai day視頻[0]和公開發(fā)表的論文中,不涉及具體的工程細(xì)節(jié)等技術(shù)秘密。
眾所周知,圖森是做卡車自動(dòng)駕駛的,而卡車不論是剎車距離還是變道時(shí)間都遠(yuǎn)比轎車要長,所以如果說圖森有什么與其他自動(dòng)駕駛公司不同的獨(dú)門技術(shù),遠(yuǎn)距離感知必然是其中之一。我在圖森負(fù)責(zé)LiDAR感知這一塊,就專門聊一聊使用LiDAR進(jìn)行遠(yuǎn)距離感知的相關(guān)內(nèi)容。
剛加入公司時(shí),主流的LiDAR感知一般是BEV方案。不過此BEV不是大家熟悉的那個(gè)BEV,特斯拉的那個(gè)BEV感知我個(gè)人認(rèn)為應(yīng)該叫作“多視角相機(jī)在BEV空間下的融合技術(shù)”,而這里的LiDAR BEV是指將LiDAR點(diǎn)云投影到BEV空間下,然后接2D卷積+2D檢測頭進(jìn)行目標(biāo)檢測的方案。我能查到最早關(guān)于BEV方案的記錄是在百度發(fā)表在CVPR17的論文MV3D[1],后續(xù)的大部分工作,包括我所了解的大部分公司實(shí)際使用的方案,最后都要投影到BEV空間進(jìn)行檢測,大致也都可以歸在BEV方案之中。
MV3D[1]使用的BEV視角特征
BEV方案的一大好處是可以直接套用成熟的2D檢測器,但也有一個(gè)很致命的缺點(diǎn):它限制住了感知范圍。從上圖可以看到,因?yàn)橐?D檢測器,它必須形成一個(gè)2D的feature map,此時(shí)就必須給它設(shè)置一個(gè)距離閾值,而在上圖范圍之外其實(shí)也還是有LiDAR點(diǎn)的,只是被這個(gè)截?cái)嗖僮鹘o丟棄了。那可不可以把這個(gè)距離閾值拉大,直到包住所有點(diǎn)呢?硬要這么做也不是不行,只是LiDAR在掃描模式、反射強(qiáng)度(隨距離呈4次方衰減)、遮擋等問題作用下,遠(yuǎn)處的點(diǎn)云是非常少的,這么做很不劃算。
BEV方案的這個(gè)問題在學(xué)術(shù)界并沒有引起關(guān)注,這主要是數(shù)據(jù)集的問題,主流數(shù)據(jù)集的標(biāo)注范圍通常只有不到80m(nuScenes 50m、KITTI 70m,Waymo 80m),在這個(gè)距離下BEV feature map并不需要很大。但工業(yè)界使用的中距離LiDAR普遍已經(jīng)可以做到200m的掃描范圍,而近幾年也有幾款遠(yuǎn)距離LiDAR問世,它們可以做到500m的掃描范圍。注意到feature map的面積和計(jì)算量是隨距離呈二次方增長的,在BEV方案下,200m的計(jì)算量幾乎都無法承受,更不用說500m了。

公開數(shù)據(jù)集中激光雷達(dá)的掃描范圍。KITTI(紅點(diǎn), 70m) vs. Argoverse 2 (藍(lán)點(diǎn), 200m)
在認(rèn)識(shí)到BEV方案的局限之后,我們進(jìn)行了多年的研究,最終才找到了可行的替代方案。研究過程并非一帆風(fēng)順,經(jīng)歷了很多次挫折,論文和報(bào)告中一般都只會(huì)講成功而不會(huì)說失敗,但失敗的經(jīng)驗(yàn)也是彌足珍貴的,所以博客反而成了更好的媒介,下面就按時(shí)間線依次講述一下。
二、Point-based方案
CVPR19上,港中文發(fā)表了一篇Point-based檢測器PointRCNN[2],它是直接在點(diǎn)云上進(jìn)行計(jì)算的,點(diǎn)云掃到哪它算到哪,沒有拍BEV的過程,所以這類point-based方案理論上是可以做到遠(yuǎn)距離感知的。

但我們試下來發(fā)現(xiàn)了一個(gè)問題,KITTI一幀的點(diǎn)云數(shù)量可以降采樣到1.6萬個(gè)點(diǎn)來檢測而不怎么掉點(diǎn),但我們的LiDAR組合一幀有10多萬個(gè)點(diǎn),如果降采樣10倍顯然檢測精度會(huì)大幅度受影響。而如果不降采樣的話,在PointRCNN的backbone中甚至有O(n^2)的操作,導(dǎo)致它雖然不拍bev,但計(jì)算量仍然無法承受。這些比較耗時(shí)的op主要是因?yàn)辄c(diǎn)云本身的無序性,導(dǎo)致不論是降采樣還是檢索鄰域,都必須遍歷所有的點(diǎn)。由于涉及到的op較多且都是沒有經(jīng)過優(yōu)化的標(biāo)準(zhǔn)op,短期內(nèi)感覺也沒有能優(yōu)化到實(shí)時(shí)的希望,所以這條路線就放棄了。
不過這段研究也并沒有浪費(fèi),雖然backbone計(jì)算量過大,但它的二階段因?yàn)橹辉谇熬吧线M(jìn)行,所以計(jì)算量還是比較小的。把PointRCNN的二階段直接套用在BEV方案的一階段檢測器之后,檢測框的準(zhǔn)確度會(huì)有一個(gè)比較大的提升。在應(yīng)用過程中我們也發(fā)現(xiàn)了它的一個(gè)小問題,解決之后總結(jié)發(fā)表成了一篇文章[3]發(fā)表在了CVPR21上,大家也可以到這篇博客上看看:
王峰:LiDAR R-CNN:一種快速、通用的二階段3D檢測器
三、Range-View方案
在Point-based方案嘗試失敗之后,我們將目光轉(zhuǎn)向了Range View,當(dāng)年的LiDAR都是機(jī)械旋轉(zhuǎn)式的,比如64線激光雷達(dá)就會(huì)掃描出64行具有不同俯仰角的點(diǎn)云,比如每行都掃描到2048個(gè)點(diǎn)的話,就可以形成一張64*2048的range image。
RV、BEV、PV的對比
在Range View下,點(diǎn)云不再是稀疏的形式而是致密地排列在一起,遠(yuǎn)距離的目標(biāo)在range image上只是比較小,但并不會(huì)被丟掉,所以理論上也是能檢測到的。
可能是因?yàn)榕c圖像更相似,對于RV的研究其實(shí)比BEV還早,我能找到的最早記錄也是來自于百度的論文[4],百度真的是自動(dòng)駕駛的黃埔軍校啊,不論是RV還是BEV的最早應(yīng)用都來自于百度。
于是當(dāng)時(shí)我就隨手試了一把,結(jié)果跟BEV方法相比,RV的AP狂掉30-40個(gè)點(diǎn)...我發(fā)現(xiàn)其實(shí)在2d的range image上檢測得還可以,但輸出出來的3d框效果就非常差了。當(dāng)時(shí)分析RV的特性,感覺它具備圖像的所有劣勢:物體尺度不統(tǒng)一、前背景特征混雜、遠(yuǎn)距離目標(biāo)特征不明顯,但又不具備圖像語義特征豐富的優(yōu)勢,所以當(dāng)時(shí)對這個(gè)方案比較悲觀。
因?yàn)檎絾T工畢竟還是要做落地的工作,對于這種探索性問題還是交給實(shí)習(xí)生比較好。后來招了兩名實(shí)習(xí)生一起來研究這個(gè)問題,在公開數(shù)據(jù)集上一試,果然也是掉了30個(gè)點(diǎn)...還好兩位實(shí)習(xí)生比較給力,通過一系列的努力,還有參考其他論文修正了一些細(xì)節(jié)之后,將點(diǎn)數(shù)刷到了跟主流BEV方法差不多的水平,最終論文發(fā)表在了ICCV21上[5]。
雖然點(diǎn)數(shù)刷上來了,但問題并沒有被徹底解決,當(dāng)時(shí)lidar需要多幀融合來提高信噪比的做法已經(jīng)成為共識(shí),遠(yuǎn)距離目標(biāo)因?yàn)辄c(diǎn)數(shù)少,更加需要疊幀來增加信息量。在BEV方案里,多幀融合非常簡單,直接在輸入點(diǎn)云上加上一個(gè)時(shí)間戳然后多幀疊加起來,整個(gè)網(wǎng)路都不用改動(dòng)就可以漲點(diǎn),但在RV下變換了很多花樣都沒有得到類似的效果。
并且在這個(gè)時(shí)候,LiDAR從硬件的技術(shù)方案上也從機(jī)械旋轉(zhuǎn)式走向了固態(tài)/半固態(tài)的方式,大部分固態(tài)/半固態(tài)的LiDAR不再能夠形成range image,強(qiáng)行構(gòu)造range image會(huì)損失信息,所以這條路徑最終也是被放棄了。
四、Sparse Voxel方案
之前說過Point-based方案的問題在于點(diǎn)云不規(guī)整的排列使得降采樣和鄰域檢索等問題需要遍歷所有點(diǎn)云導(dǎo)致計(jì)算量過高,而BEV方案下數(shù)據(jù)規(guī)整了但又有太多空白區(qū)域?qū)е掠?jì)算量過高。這兩者結(jié)合一下,在有點(diǎn)的地方進(jìn)行voxelization使其變得規(guī)整,而沒點(diǎn)的地方不進(jìn)行表達(dá)來防止無效計(jì)算似乎也是一條可行的路徑,這也就是sparse voxel方案。
因?yàn)镾ECOND[6]的作者閆巖加入了圖森,所以我們在早期就曾經(jīng)嘗試過sparse conv的backbone,但因?yàn)閟pconv并不是一個(gè)標(biāo)準(zhǔn)的op,自己實(shí)現(xiàn)出來的spconv仍然過慢,不足以實(shí)時(shí)進(jìn)行檢測,有時(shí)甚至慢于dense conv,所以就暫時(shí)擱置了。
后來第一款能掃描500m的LiDAR:Livox Tele15到貨,遠(yuǎn)距離LiDAR感知算法迫在眉睫,嘗試了一下BEV的方案實(shí)在是代價(jià)太高,就又把spconv的方案拿出來試了一下,因?yàn)門ele15的fov比較窄,而且在遠(yuǎn)處的點(diǎn)云也非常稀疏,所以spconv勉強(qiáng)是可以做到實(shí)時(shí)的。
但不拍bev的話,檢測頭這塊就不能用2D檢測中比較成熟的anchor或者center assign了,這主要是因?yàn)閘idar掃描的是物體的表面,中心位置并不一定有點(diǎn)(如下圖所示),沒有點(diǎn)自然也無法assign上前景目標(biāo)。其實(shí)我們在內(nèi)部嘗試了很多種assign方式,這里就不細(xì)講公司實(shí)際使用的方式了,實(shí)習(xí)生在之后也嘗試了一種assign方案發(fā)表在了NIPS2022上[7],可以看看他寫的解讀:
明月不諳離苦:全稀疏的3D物體檢測器

但如果要把這個(gè)算法應(yīng)用在向前500m,向后和左右各150m的LiDAR組合下,還是力有不逮。恰好實(shí)習(xí)生之前追熱度曾經(jīng)也借鑒Swin Transformer的思想做過一篇Sparse Transformer的文章[8],也是費(fèi)了好大的功夫從掉20多個(gè)點(diǎn)一點(diǎn)點(diǎn)刷起來(感謝實(shí)習(xí)生帶飛,tql),當(dāng)時(shí)覺得Transformer的方法還是很適合不規(guī)整的點(diǎn)云數(shù)據(jù)的,所以在公司數(shù)據(jù)集上也試了一下。
可惜的是,這個(gè)方法在公司數(shù)據(jù)集上一直刷不過BEV類方法,差了接近5個(gè)點(diǎn)的樣子,現(xiàn)在回想起來可能還是有一些trick或者訓(xùn)練技巧沒有掌握,按理說Transformer的表達(dá)能力是不弱于conv的,但后來也并沒有再繼續(xù)嘗試。不過這個(gè)時(shí)候已經(jīng)對assign方式進(jìn)行了優(yōu)化降低了很多計(jì)算量,所以就想再嘗試一把spconv,結(jié)果令人驚喜的是,直接把Transformer替換為spconv就可以做到近距離與BEV類方法的精度相當(dāng),同時(shí)還能檢測遠(yuǎn)距離目標(biāo)的效果了。
也是在這個(gè)時(shí)候,閆巖同學(xué)做出了第二版spconv[9],速度有了大幅度提升,所以計(jì)算延遲不再是瓶頸,終于遠(yuǎn)距離的LiDAR感知掃清了所有障礙,能夠在車上實(shí)時(shí)地跑起來了。
后來我們更新了LiDAR排列方式,將掃描范圍提升到了向前500m,向后300m,向左向右各150m,這套算法也運(yùn)行良好,相信隨著未來算力的不斷提升,計(jì)算延遲會(huì)越來越不成問題。
下面展示一下最終的遠(yuǎn)距離檢測效果,大家也可以看看圖森ai day的視頻的01:08:30左右的位置看一下動(dòng)態(tài)的檢測效果:

雖然是最終的融合結(jié)果,但因?yàn)檫@天起霧圖像能見度很低,所以結(jié)果基本上都來自于LiDAR感知。
五、后記
從point-based方法,到range image方法,再到基于sparse voxel的Transformer和sparse conv方法,對于遠(yuǎn)距離感知的探索不能說是一帆風(fēng)順,簡直就是滿路荊棘。最后其實(shí)也是隨著算力的不斷提升加上很多同事的不斷努力才做到了今天這一步。在此感謝圖森首席科學(xué)家王乃巖和圖森的各位同事、實(shí)習(xí)生們,這里面大部分的idea和工程實(shí)現(xiàn)都不是我做出來的,很慚愧,更多地是起到了承上啟下的作用。
很長時(shí)間不寫這么長的文章了,寫得跟個(gè)流水賬似的而沒有形成一個(gè)動(dòng)聽的故事。近年來,堅(jiān)持做L4的同行越來越少,L2的同行們也逐漸轉(zhuǎn)向純視覺的研究,LiDAR感知肉眼可見地逐步被邊緣化,雖然我仍然堅(jiān)信多一種直接測距的傳感器是更好的選擇,但業(yè)內(nèi)人士似乎越來越不這么認(rèn)為??粗迈r血液們的簡歷上越來越多的BEV、Occupancy,不知道LiDAR感知還能再堅(jiān)持多久,我又能堅(jiān)持多久,寫這么一篇文章也是起到一個(gè)紀(jì)念作用吧。
深夜涕零,不知所云,見諒。















 
 
 






 
 
 
 