PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測


來源 | CV研習(xí)社


文章導(dǎo)讀


計(jì)算機(jī)視覺任務(wù)中,2D卷積神經(jīng)網(wǎng)絡(luò)得益于極其出色的性能不斷刷新著各大視覺任務(wù)的榜單,可謂是YYDS。隨著人工智能算法的不斷推進(jìn),更多的研究者將目光聚焦到了3D任務(wù),那么在3D視覺任務(wù)中,2D卷積神經(jīng)網(wǎng)絡(luò)的神話能否延續(xù)呢?答案是肯定的!今天小編將分享一篇3D點(diǎn)云檢測論文—Pointpillars,看看作者如何巧妙的只使用2D卷積,卻實(shí)現(xiàn)了高效的3D目標(biāo)檢測。


01 3D點(diǎn)云檢測的現(xiàn)狀如何


最近幾年點(diǎn)云的三維目標(biāo)檢測一直很火,從早期的PointNet、PointNet++,到體素網(wǎng)格的VoxelNet,后來大家覺得三維卷積過于耗時,又推出了Complex-yolo等模型把點(diǎn)云投影到二維平面,用圖像的方法做目標(biāo)檢測,從而加速網(wǎng)絡(luò)推理。


所以在點(diǎn)云上實(shí)現(xiàn)3D目標(biāo)檢測通常就是這三種做法:3D卷積、投影到前視圖或者鳥瞰圖(Bev)。


3D卷積的缺點(diǎn)是計(jì)算量較大,導(dǎo)致網(wǎng)絡(luò)的推理速度較慢。投影的方式受到點(diǎn)云的稀疏性的限制,使得卷積無法較好的提取特征,效率低下。而后來研究熱點(diǎn)轉(zhuǎn)向了采用鳥瞰圖(Bev)的方式,但存在的明顯的缺點(diǎn)就是需要手動提取特征,不利于推廣到其他的雷達(dá)上使用。


撥開那些花里胡哨的網(wǎng)絡(luò),有什么更靠譜的模型能夠權(quán)衡速度和精度做三維目標(biāo)檢測呢?


02橫空殺出的PointPillars


這是一篇前兩年的點(diǎn)云目標(biāo)檢測網(wǎng)絡(luò),為什么重溫它是因?yàn)樾【幵趯W(xué)習(xí)百度Apollo 6.0時發(fā)現(xiàn)它被集成進(jìn)去作為激光雷達(dá)的檢測模型了。在這里給大家解析一下該網(wǎng)絡(luò)模型,看看有啥特點(diǎn)!


Pointpillars的創(chuàng)新點(diǎn)在于:提出了一種新的編碼方式,利用柱狀物的方式生成偽圖像。


Pointpillars由三大部分組成:


  • 利用pillars的方式將點(diǎn)云轉(zhuǎn)化為稀疏偽圖像;
  • 使用2D網(wǎng)絡(luò)進(jìn)行特征的學(xué)習(xí);
  • 使用SSD檢測頭進(jìn)行Bbox的回歸。

如下圖所示:

PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖1
網(wǎng)絡(luò)結(jié)構(gòu)

Pointpillars的性能表現(xiàn):具有明顯的速度優(yōu)勢,最高也可達(dá)到105Hz,且對比僅使用點(diǎn)云作為輸入的3D目標(biāo)檢測的方法有精度上的提升。 

3 PointPillars的詳細(xì)分析

想要學(xué)習(xí)一個網(wǎng)絡(luò)模型,不管是圖像還是點(diǎn)云的檢測:

  • 首先需要看看它是怎么做數(shù)據(jù)處理的?
  • 然后了解它的特征提取模塊是怎么搭建的?
  • 接下來了解它的檢測頭選用的是什么?
  • 模型搭建完畢后需要分析損失函數(shù)如何權(quán)衡?
  • 最后當(dāng)然是看看實(shí)驗(yàn)的仿真效果如何?

數(shù)據(jù)處理環(huán)節(jié):

Pointpillar設(shè)計(jì)了一套編碼方式將激光雷達(dá)輸出的三維坐標(biāo)轉(zhuǎn)換到網(wǎng)絡(luò)輸入的形式,操作如下:

  1. 通常從激光雷達(dá)中獲取的點(diǎn)云表現(xiàn)形式一般是x,y,z和反射強(qiáng)度i。

  2. 將點(diǎn)云離散到x-y平面的均勻間隔的網(wǎng)格中,從而創(chuàng)建一組柱狀集P ,具有| P | = B,z軸不需要參數(shù)進(jìn)行控制。

  3. 將每個支柱中的點(diǎn)增加xc,yc,zc,xp和yp(其中c下標(biāo)表示到支柱中所有點(diǎn)的算術(shù)平均值的距離,p下標(biāo)表示從支柱x,y中心的偏移量)。激光雷達(dá)中的每個點(diǎn)就具有了九維的特征。

  4. 對每個樣本的非空支柱數(shù)(P)和每個支柱中的點(diǎn)數(shù)(N)施加限制,來創(chuàng)建大小為(D,P,N)的張量張量。如柱狀體中的數(shù)據(jù)太多,則進(jìn)行隨機(jī)采樣,如數(shù)據(jù)太少,則用0進(jìn)行填充。

  5. 簡化版本的PointNet對張量化的點(diǎn)云數(shù)據(jù)進(jìn)行處理和特征提取(即對每個點(diǎn)都運(yùn)用線性層+BN層+ReLU層),來生成一個(C,P,N)的張量,再對于通道上使用最大池化操作,輸出一個(C,P)的張量。

  6. 編碼后特征散布回原始的支柱位置,創(chuàng)建大小為(C,H,W)的偽圖像。

(D, P, N)--> (C, P, N) --> (C, P) --> (C, H, W)

上述的轉(zhuǎn)換流程流程如圖所示:

PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖2
生成偽圖像的過程

特征提取環(huán)節(jié):

本文中的編碼器的輸出特征維度C=64,除了第1個Block中汽車的步幅S=2,行人和騎自行車的人的步幅為1,第2和第3個block中采用了相同的步幅。并對3個塊進(jìn)行上采樣,最后將3個上采樣的塊進(jìn)行通道拼接,可以為檢測頭提供6C維度的特征。

數(shù)據(jù)流在下采樣和上采樣的過程中并不復(fù)雜:

下采樣:Block1(S,4,C),Block2(2S,6,2C),和Block3(4S,6,4C)

上采樣:Up1(S,S,2C),Up2(2S,S,2C)和Up3(4S,S,2C)。

如下圖所示

PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖3
特征層結(jié)構(gòu)

檢測頭模塊

論文中作者使用SSD進(jìn)行3D目標(biāo)檢測。與SSD相似,使用了2D聯(lián)合截面(IoU)將先驗(yàn)盒和地面的真實(shí)情況進(jìn)行匹配。Bbox的高度和高程沒有用于匹配,取而代之的是2D匹配,高度和高程成為附加的回歸目標(biāo)。

損失函數(shù)部分

檢測網(wǎng)絡(luò)的損失函數(shù)一般都是有分類和回歸兩部分組成,分類損失用于給出目標(biāo)的類別,回歸損失用于給出目標(biāo)的位置,而三維目標(biāo)檢測相比圖像的二維檢測多了3個參數(shù)。

3D Box由(x,y,z,w,h,l,0)進(jìn)行定義:

PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖4

其中分類損失:

PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖5

回歸損失:

PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖6

通過加權(quán)和的方式得到總的損失函數(shù):

PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖7

實(shí)驗(yàn)仿真結(jié)果

最后我們看一下文章給出的仿真結(jié)果:

PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖8
PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖9

不管從速度上還是精度上相比于幾種經(jīng)典模型還是有一定程度的提高,但其實(shí)我們可以發(fā)現(xiàn)在行人等檢測仍然徘徊在50%左右,和圖像的目標(biāo)檢測動仄80%~90%的mAP還有很大的提升空間。

這里是運(yùn)行源碼的一份評估報告,不過源碼中將車輛和行人等分開到兩份配置中訓(xùn)練,估計(jì)是因?yàn)榇笮√卣鞑灰?,怕合起來影響刷榜精度吧?/span>

PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖10

4 PointPillars的優(yōu)缺點(diǎn)在哪里?

梳理一遍這個檢測網(wǎng)絡(luò)后,我們回顧對比一下其他方法,不難發(fā)現(xiàn)它的優(yōu)勢不外乎以下幾點(diǎn):

  1. 提出了一種新的點(diǎn)云編碼器,不依靠固定編碼器進(jìn)行學(xué)習(xí)特征,可以利用點(diǎn)云的所有信息。

  2. 在柱狀體而非體素(voxel)上進(jìn)行操作,無需手動調(diào)整垂直方向的分箱。

  3. 網(wǎng)絡(luò)中只使用2D卷積,不使用3D卷積,計(jì)算量小運(yùn)行高效。

  4. 不適用手工特征,而是讓網(wǎng)絡(luò)自動的學(xué)習(xí)特征,因此無需手動的調(diào)整點(diǎn)云的配置,即可推廣到其他的激光雷達(dá)中使用。


該網(wǎng)絡(luò)側(cè)重于三維數(shù)據(jù)形式的轉(zhuǎn)換編碼,所以在后續(xù)幾個環(huán)節(jié)仍然有不少優(yōu)化的空間,比如:


  • 特征融合部分采用的FPN是否可以換成PAN
  • 檢測頭采用的SSD是否可以換成更新的檢測器
  • 回歸損失函數(shù)是否可以將角度和BBox緊耦合


通過閱讀開源工程,發(fā)現(xiàn)它提供了一個效果展現(xiàn)的可視化工具,和小編以前做的聯(lián)合標(biāo)注工具很相似,如下圖所示,針對同步后的激光雷達(dá)和攝像頭數(shù)據(jù),在可視化三維點(diǎn)云空間的同時,將感知的結(jié)果投影到圖像的透視投影視角上以及點(diǎn)云的鳥瞰圖視角中。


PointPillar:利用偽圖像高效實(shí)現(xiàn)3D目標(biāo)檢測的圖11


最主要的是這個工具可以用于其他的檢測模型,只要在右側(cè)的配置欄提供輸入輸出信息即可,強(qiáng)烈推薦!

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP