CVPR2020 | PV-RCNN: 3D目標檢測
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
本文轉載自知乎,已獲作者授權轉載。
https://zhuanlan.zhihu.com/p/148942116
本文簡單介紹一下我們關于點云3D物體檢測方向的最新算法:PV-RCNN (Point-Voxel Feature Set Abstraction for 3D Object Detection)。
我們的算法在僅使用LiDAR傳感器的setting下,在自動駕駛領域Waymo Open Challenge點云挑戰(zhàn)賽中取得了(所有不限傳感器算法榜單)三項亞軍、Lidar單模態(tài)算法三項第一的成績,以及在KITTI Benchmark上保持總榜第一的成績超過半年。
(順帶聊一下我對現(xiàn)在LiDAR點云3D檢測方向的一些看法)
論文鏈接 (代碼鏈接在最后):https://arxiv.org/abs/1912.13192

?
我們先看看PV-RCNN 3D檢測框架的性能如何。說到底,做high-level的,大多數(shù)還得硬碰硬 (不然難免故事吹的天花亂墜,一跑AP只有0.5。。
1. 到目前為止,3D檢測算法上競爭最激烈的莫過于KITTI榜單了(近兩年每次DDL都能涌現(xiàn)很多新方法。。
我們是去年11月提交的PV-RCNN結果,大幅領先之前的SoTA算法,且保持第一大半年一直到現(xiàn)在(最近出現(xiàn)很多新方法,估計也該被別人擠下去了。。

2. 除了KITTI以外,自動駕駛業(yè)界巨頭Waymo也在去年release了超大的點云數(shù)據(jù)集Waymo Open Dataset。據(jù)我們所知,除了Waymo/Google以外,我們應該是最早在Waymo數(shù)據(jù)集訓練+測試的論文(之一),同樣大幅領先了Waymo論文的算法:

3. 此外,Waymo還于CVPR2020舉辦了點云3D物體檢測等比賽,因為我們剛好有去年投稿PV-RCNN時準備的各種現(xiàn)成Waymo代碼(以及覬覦其豐厚的獎金233),所以就直接跑了一下。由于實驗室機器有限,我們并沒有太多資源(與時間)投入到比賽中,我們提交的方法基本就是裸的論文原版PV-RCNN+一些簡單trick,在僅使用LiDAR點云作為輸入的情況下,我們最終取得了3D Detection、3D Tracking、Domain Adaptation三項比賽中單模態(tài)算法三項第一,所有(不限傳感器)算法三項第二。
在KITTI/Waymo上的出色性能,證明了我們PV-RCNN 3D檢測框架的有效性,接下來簡單介紹一些我們是怎么做的,以及為什么要這么做。
點云數(shù)據(jù)的稀疏性與不規(guī)則性,以及如何從點云數(shù)據(jù)中提取特征
眾所周知,相比圖像,點云數(shù)據(jù)的不規(guī)則性和稀疏性需要我們設計更特殊的網(wǎng)絡結構去點云中提取特征。我們一般采用下面兩種方式提取點云特征,一個是PointNet++[1]中提出的point-based Set Abstraction (以及各種魔改版本SA),另一個是轉化為規(guī)則voxel以后的voxel-based Sparse Convolution [2]。

這兩種方式各有各的優(yōu)點:
(1) SA在原始點云上做,保留了準確的位置信息,且通過自定義球的半徑使得感受野更為靈活。
(2) Sparse conv在voxel上做,速度往往更快,并且在自動駕駛場景下結合anchor可以產(chǎn)生更高質(zhì)量的3D Proposal (室內(nèi)場景一般來講通過PointRCNN[3]中提出的anchor-free策略提Proposal更為高效且直觀)。
?
為了綜合利用上面兩種特征提取操作各自的優(yōu)勢,我們就在考慮怎么能將這兩種點云特征提取算法深度結合到一個網(wǎng)絡中,提升網(wǎng)絡的結構多樣性以及表征能力。從另一個方面講,我們之前一直專注于二階段的高性能3D網(wǎng)絡檢測框架(PointRCNN[3], PartA2-Net[4]),經(jīng)驗告訴我們,在point上進行3D RoI pooling比BEV map上效果更好(保留更精細的特征)。所以,怎么得到表征能力更強的point-wise特征,也是我們需要做的。
因此,我們接著考慮,怎么能將整個場景編碼到少量的keypoint上,用這些point-wise的keypoint特征來做第二階段的RoIPooling,也就是將其作為橋梁,來連接檢測框架的兩個階段。
然后我們就自然而然的關注到了Set Abstraction這個操作上了。在Set Abstraction的原本設計中,球中心的點是從整個點云中采樣出來的,其與周圍的點同宗同源,中心點的特征即通過球內(nèi)周圍點的特征聚合而來。然而,我們發(fā)現(xiàn),其實球中心點無需與周圍的點同宗同源,球中心點是可以任意給定的。所以,Set Abstraction本身就可以作為一個很好的操作,來結合上面兩種點云特征提取操作(球中心與周圍點可以分別來自于point與voxel)。
?
有了上面的思路,還需要一些具體實現(xiàn)的設計。簡單來講:

(1) 我們提出了Voxel Set Abstraction操作,將Sparse Convolution主干網(wǎng)絡中多個scale的sparse voxel及其特征投影回原始3D空間,然后將少量的keypoint (從點云中sample而來) 作為球中心,在每個scale上去聚合周圍的voxel-wise的特征。這個過程實際上結合了point-based和voxel-based兩種點云特征提取的結構,同時將整個場景的multi-scale的信息聚合到了少量的關鍵點特征中,以便下一步的RoI-pooling。
(2) 我們提出了Predicted Keypoint Weighting模塊,通過從3D標注框中獲取的免費點云分割標注,來更加凸顯前景關鍵點的特征,削弱背景關鍵點的特征。

(3) 進一步,我們設計了更強的點云3D RoI Pooling操作,也就是我們提出的RoI-grid Pooling: 與前面不同,這次我們在每個RoI里面均勻的sample一些grid point,然后將grid point當做球中心,去聚合周圍的keypoint的特征。這樣做的好處有兩個:
(1) 球半徑靈活,甚至可以包括proposal框外圍的關鍵點,從而獲取更多有效特征。
(2) 球互相覆蓋,每個keypoint可以被多個grid point使用,從而得到更緊密的RoI特征表達。另一方面,這其實也是另一個point (keypoint)與voxel (grid point)特征交互的過程。
通過Voxel-to-keypoint與keypoint-to-grid這兩個point-voxel特征交互的過程,顯著增強了PV-RCNN的結構多樣性,使其可以從點云數(shù)據(jù)中學習更多樣性的特征,來提升最終的3D檢測性能。
?
前段時間我們release了一個通用3D檢測代碼庫,PCDet:https://github.com/sshaoshuai/PCDet
最近我們正在重新整理PCDet代碼庫,方便更好的進行排列組合,同時包含更多的model與dataset。我們的PV-RCNN代碼也將于近期整合到PCDet中,敬請關注。
?
最后簡單聊一下我覺得點云3D檢測還有哪些方向可以試一下。隨著越來越多優(yōu)秀的人涌入做基于點云的3D物體檢測,以及越來越多的開源codebase和數(shù)據(jù)集(KITTI, NuScenes, Waymo等),3D物體檢測的性能在短短兩三年間已經(jīng)被提升了好幾個檔次。
從目前的情況來看,由于多sensor的同步等問題,純LiDAR的3D檢測算法受到追捧,且達到了媲美多sensor甚至更強的性能。但我們都知道點云3D物體檢測算法最大的應用場景就是自動駕駛,其對可靠性要求很高。而LiDAR捕獲的點云場景包含更多的幾何信息,其語義信息遠不如圖像,這使得純LiDAR感知算法經(jīng)常出現(xiàn)奇怪的誤檢,且由于點云的稀疏性導致純LiDAR檢測器能識別的類別有限。所以多模態(tài)的LiDAR+RGB結合的檢測算法從長遠來看還是有很大的發(fā)展空間的。
而大部分人之所以醉心于純LiDAR 3D物體檢測,是因為基于LiDAR+RGB的3D物體檢測算法面臨一些問題:
(1) 比如LiDAR點云和RGB圖像是來自于不同view的場景表征,如何融合兩者的特征?融合了特征又如何做檢測?之前也有一些方法探索了這個問題,但還沒看到比較優(yōu)雅的解決方案。
(2) 另一個問題是純LiDAR的3D物體感知可以做各種各樣的數(shù)據(jù)增強,比如將一個場景中的GT "copy"到另一個場景。而如果結合RGB圖像,"copy"的GT在RGB圖像上的特征如何處理,也是一個難解的問題。
另一方面,隨著Waymo等大規(guī)模的點云數(shù)據(jù)集的發(fā)布(Waymo Open Dataset的每個scene的檢測范圍已經(jīng)比最早的KITTI大了近4倍),以及自動駕駛車上的時延需求,我們期待出現(xiàn)更高效的3D物體檢測框架。同時隨著LiDAR傳感器的發(fā)展,如何更高效的檢測更大范圍的點云場景(更密的點+更大的范圍),也是一個值得探索的方向。
下載1:OpenCV-Contrib擴展模塊中文版教程 在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺實戰(zhàn)項目52講 在「小白學視覺」公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。 下載3:OpenCV實戰(zhàn)項目20講 在「小白學視覺」公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。 交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

