作者:蔣天園Date:2020-04-18
Brief
paper地址:https://arxiv.org/pdf/2004.01389.pdf
code地址:https://github.com/yinjunbo/3DVID
這是一篇來自北理工和百度合作的文章,目前還未開源,只有項目地址,2020年3月份放置在arxiv上,已經被CVPR2020接收;從標題我們猜測該文采用的時空信息將多幀的點雲信息融合做3D目標檢測,目前的確是沒有研究是通過視頻流的方式做3D目標檢測,不過這也要求數據集是一些連續的幀才能使得這樣一個任務的完成,但是KITTI的確是沒有滿足這樣的要求,因此作者在Nuscence上進行的實驗。這是一個CVPR19年上的公布的數據集,這里先給出一張目前在公布的nuscence的榜單,如下,這里的榜一的文章目前將SECOND的代碼重構,加入了更多SOTA的方法開源了新的3Ddetection base,即Det 3D項目,鏈接為:https://github.com/poodarchu/Det3D,而MEGV則是采用了多尺度檢測的head,規定了不同大小的物體的檢測采用不同的head,同時采用了一種數據增廣方式緩解了nuscence中的longtail問題

本文主要內容
本文主要內容可以簡單總結為,在目前的SoTA的文章中,第一個采用3Dvideo點雲做3D目標檢測的,利用了前人所沒有用到的幀與幀之間的時間連續關系,為此,作者在pointpillars的基礎上添加了grap-basd的GNN卷積,使得每個節點的感受野擴大,以此設計了空間特征提取模塊;然后根據得到的空間特征送入由GRU為基礎模塊搭建的時空特征融合模塊得到連續幀之間的更加豐富的特征信息,在該模塊中,作者分別采用了空間注意力和“時間”注意力機制分別對前景物體加以更大注意和對運動物體加以配准。本文中並不是一個以問題為導向的思路,而是一種新奇的思想引入,但是文章任然指出,之前的方法會出現的FP問題在本文中會得到一定程度的環境。對比由問題為導向的文章3DSSD而言,本文的內容涉及更廣。
Abstract
-
當前的基於LiDar輸入的目標檢測網絡都是只使用了單幀的信息,都沒有使用連續點雲之間的時空信息。所以本文作者提出了一種處理點雲序列的end2end的online的視頻檢測方法。
-
本文提出的模型由空間特征編碼模塊和時空特征融合模塊兩部分組成。這里的空間特征編碼模塊——PMPNet(PillarMessage Passing Network)用於編碼獨立的每一幀的點雲特征,該模塊通過迭代消息傳遞,自適應地從相鄰節點處為該pillarnode收集節點信息,有效地擴大了該pillarnode的感受野。時空特征融合模塊則是采用的時空注意力結合GRU的設計(AST-GRU)來整合時空信息,該模塊通過一個attentivememory gate來加強傳統的ConvGRU。其中AST-GRU模塊又包含了一個空間注意力模塊(STA)和TTA模塊(TemporalTransformer Attention ),使得AST-GRU可以注意到前景物體和配准動態物體。
-
在nuscence上得到了sota的效果
1. Introduction
-
point cloud video的定義點雲視頻是一系列點雲幀的集合,在數據集Nuscence中,采用的32線每一秒可以捕獲20幀的點雲的激光雷達。
-
單幀檢測方法的弊端如果采用單幀圖像直接處理就受到單幀圖像就必須受到單幀圖像稀疏性過大的影響,再嚴重一點,距離和遮擋都會成為單幀檢測方法的重大阻礙。如下圖所示,最上一層的檢測經常處才能False-negative的結果,但是本文提出的online3D video 檢測方法就可以做到更好的效果。這是因為point cloud video具有更加豐富的物體特征。 當前比較流行的一些單幀檢測方法有可分為voxel-based的voxelnet、second、pointpillars和point-based的pointrcnn等方法,在本文中,作者也是采用的這種Pillar划分的方式提取特征,但是這種方法只會關注局部特征。所以作者對此提出了graph-based的方法PMPnet

-
核心問題 (1)構建3D video 目標檢測的關鍵問題在於如何對連續的時空特征信息進行建模表示,本文中,作者提出了融合graph-based空間編碼特征的模塊並結合時空注意力感知模塊,來捕獲視頻一致性。 (2)上文提到作者為了改變pillars特征提取僅僅提取一個Pillar中的特征的問題,自己設計了PMPnet,該網絡把每一個非空的pillar當做圖的一個節點,通過mesh從旁邊節點融合特征的方式來擴大感受野,因此PMPNet通過在K-NNgraph中采用迭代的方式可以深度挖掘不同pillar節點之間的相對關系,該網絡是在同一幀的點雲中進行空間的特征融合。 (3)上面的PMPnet僅僅在同一幀的空間中提取到感受野更多的特征信息,然后將這些單幀的特征在作者設計的第二個網絡結構AST-GRU中進行融合,ConvGRU這一篇ICLR16年的文章證實了在2Dvideo中ConvGRU是非常有效的,作者設計的AST-GRU則是把該工作通過一個注意力內存門機制來捕獲連續幀點雲之間的依賴關系來擴展到三維點雲中處理中。 (4)在俯視圖下,前景物體僅僅只占一小部分區域,背景點占據了大部分的區域,這會使得在迭代過程中,背景噪聲會越來越大,因此作者采用了空間注意力模塊來緩解背景噪聲並強調前景物體。(5)更新memory時,舊的空間特征和新的輸入之間存在沒配准的問題,如果是靜態物體,可以采用ego-pose信息配准,但是具有很大運動幅度的動態物體則是不能的,為了解決這問題,作者采用了短暫注意力機制(TTA)模塊,自適應的捕捉連續幀中的運動關系。
-
整體設計作者首先通過PMPNet模塊自適應擴大感受野的提取每一幀的空間特征,再將輸出的特征序列送入AST-GRU模塊。
2. Related Work
本文的這一章節主要運用了基於點雲的檢測方法的backbone和graph-based的方法,因此主要介紹這兩方面內容。
1.LiDAR-based 3D Object Detection
作者一樣把基於lidar的方法分為了三類,point-based、voxel-based和multi-sensors的方法,前面兩種方法已經在前面的博文中有了挺詳細的介紹,這里不再介紹。而multi-sensor的研究方法更多的是在18年以前,最新的文章有19年的MVF和AAAI的PIRCNN,采用的都是結合圖像和lidar輸入的檢測方法,不同的是,目前這樣做的方法主要有兩類,其一是特征融合后在提proposals,第二種是都先提出proposals再融合。后者更像是打比賽中的模型融合的方法。
2.Graph Neural Networks
圖神經網絡(Graph Neural Networks, GNNs)最早是由Gori等人引入的,用來對圖結構數據的內在關系進行建模。然后Scarselli等人將其擴展到不同類型的圖。之后的GNN研究可以分為兩個方向:(1)第一個研究方向是使用選通機制使信息能夠在圖中傳播,比如利用RNN描述每個節點的狀態或者將圖形推理概括為參數化的消息傳遞網絡。(2)另外一個研究方向是則是將CNN引入到GNN中,因此GNN在該方向下也可以叫GCNN。本文作者的PMPnet屬於第一個方向中的內容,通過門控消息傳遞策略來捕獲pillar特征,用於對每一幀的點雲做特征提取。
3. Model Architecture
整體結構圖如下,可以看出主包含了空間特征編碼和時空特征融合兩個模塊。前者是對每一幀的點雲提取空間特征,后者是采用空間和時間上的注意力機制對提取到的特征序列做融合。
作者首先當前幀的前一幀點雲通過GPS信息將其對應的坐標轉換到當前幀來,目的是消除運動影響,使靜態物體在幀間對齊。然后再采用PMPnet提取空間特征和AST-GRU進行時空特征融合。

3.1 PMPnet
作者指出之前的提取voxel特征的方法VFE(被提出在voxelnet,其中SECOND1.0和pointpillars也都有使用)由於感受野的問題並不能完全挖掘voxel的特征(實際上后續有采用3DCNN或者稀疏卷積再次提取,相當於是做了感受野的擴大吧,只是在VFE層僅僅是對單個voxel進行了特征提取);因此這一部分則是為了來解決這樣一個問題,即將非空的pillar當做節點,然后將其構建成圖結構(怎么構建,距離?),作者稱這種圖結構有效的保留了非歐式的原始結構。(流型結構就是一個非歐式結構,因為點雲掃描得到的都是表面點,可以這樣理解)。我們記通過pillar構建的圖結構為

,前者表示非空的pillar,后者表示的是邊的特征。這里作者表示本文采用的是K-NN建圖,采用周圍的最近的幾個pillar作為鄰居節點。采用迭代的方式更新特征,我們假設一個pillar節點為,其對應是初始特征為,該初始特征是通過pillar內采用PFE(簡化版的pointnet)提取到,整體運行流程為:
1.得到初始特征:

,這里的表示的是一個pillar節點內的點。
2.特征在圖網絡中傳遞:
(1)如下圖所示,假設在第s次迭代的時候表示為坐邊的形式,左上表示的是當前圖的感受范圍,可以看出此時的僅僅與有關,與 的特征無關,在點雲中表示為左上的形式;在第s+1次迭代后,該可以看出 的特征被融合,得到了新的更大感受野的特征。

(2)上圖中的mj,i表示的是兩節點之間的傳遞信息,作者把第s+1次的信息傳遞定義為:

這里的hi表示的是節點特征,
是邊的特征,邊的特征直接定義為 ,上式表示的是從第s次的邊和節點特征得到第s+1次的信息傳遞特征,采用的方式是FC層連接。但是一個節點相鄰的節點可能不止一個,因此,在通過
更新當前節點特征之前,需要周圍所有節點的傳遞信息進行融合得到最終的傳遞信息;采用最大池化:



而后再根據
對當前的節點特征進行更新:


通過上述的迭代后,節點vi就算是包含了所有鄰居節點的特征信息,同時,鄰居節點也包含了它鄰居節點的特征;所以第s次迭代完全結束后,該點的特征也聚集了鄰居的鄰居的特征,使得每個節點的特征對應的感受野信息更加擴大了。
(3)傳遞完特征后,再采用二維卷積進一步提取高維語義信息。總結一下,上述的backbone,僅僅比pointpillars多了一步信息傳遞,其余的兩步(PFE ,2DCNN)都是一樣的。
3.2 AST-GRU
如果直接采用傳統的ConvGRU對上文backbone得到的特征進行融合會得到兩個問題:
1.BEV視圖下的點雲的的前景占比很小,在feamap中統計出來是18×8個像素值,背景點過多會導致背景噪聲會主導哦Menory。
2.問題2是在連續幀中,靜態物體可以通過GPS信息配准,但是動態物體卻不能。針對上述的兩個問題,作者的應對方法分別是在空間和時間上采用注意力機制即STA(spatial transformer attention)和TTA(temporal transformer attention)。如下圖所示,STA模塊專注空間中的前景信息,輸出的是新的GRU的輸入fea map;TTA模塊配准memory中和輸入的特征中的動態物體,輸出配准后的memory信息。

上圖的核心組件分為如下三部分:
(1)VanillaConvGRU:ConvGRU是卷積形式的GRU,相比FC的GRU具有更少的參數和更好的空間表達能力,同時比LSTM具有更少的收斂時間,其工作模式如下,動態圖講解GRU,LSTM運行模式,鏈接:https://towardsdatascience.com/animated-rnn-lstm-and-gru-ef124d06cf45

本文中,采用如下的公式表示使用舊memory中的狀態和輸入得到新memory中的狀態的過程:

其中字符表示的含義由如下的表格顯示:

配合上文的動態圖,就可以比較清晰的知道本文中的GRU的運行流程了。
(2)STA 空間注意力模塊
和以往的空間注意力機制類似,作者設計了對於輸入的fea map的每一個像素采用一個加權的方式,如下公式:

其中代表的含義表示如下:

也就是說,上式表示的內容是對目標pix的輸出為:和鄰域Pix的加權值再和鄰域信息卷積。(3)TTA 時間注意力機制前文提到,這個模塊是為了對運動的物體進行配准,作者采用的是改進的DCN結構,也就是可變型卷積結構,目的是通過融合運動信息自適應的篩選出關鍵支持區域。DCN簡化表達為下式子:

其中,下表表示字符含義:

如果將TTA模塊中的輸入和空間注意力模塊中的輸出帶入,可以表示為:

可以看出實際上在TTA模塊中,鄰域信息也是起到了非常重要的作用的,該TTA模塊由偏移量
決定,上表格中提到這里的偏移通過卷積層學習到,表達為如下:


這里面有:

ils總的來講,該模塊為了配准動態物體,采用上一次memory和本次feamap作為輸入,預測了偏移值
,和下一個的menory特征結合出得到新的輸入。

3.3 Network Deta
(1)PMPNet
1.在提取pillar的特征時,采用的也是max-pooling的形式
2.中間graph-based的消息傳遞采用的K-NN進行建圖,其中從邊到節點的特征采用1×1卷積代替全連接層。
(2)Backbone Module
和以往的lidar-based的方法一樣,不多介紹。
(3)AST-GRU Module
這其中采用的卷積核大小都是3×3的,除非是用1×1卷積代替全連接的形式。
(4)Detection Head
該結構的輸入是經過AST-GRU迭代到最后的menory feature,loss函數和其他的lidar-based的方法一致,采用的是L1 loss和focal loss.
4. Experimental Results
nuscenes簡單介紹
作者在nuscenes數據集上進行了測試, Nuscene數據集簡單介紹:這個數據采集是由6個攝像頭,1個LIDAR,5個RADAR,GPS,IMU采集得到,與KITTI相比,nuScenes包含7倍以上的對象注釋。重要信息:
-
1000個場景,每個場景20s,這些場景使用人類專家進行了仔細注釋
-
傳感器安裝位置和采集的數據命名:

-
數據注釋:
(1)以2Hz對同步良好的關鍵幀(圖像,激光雷達,雷達)進行采樣,並將它們發送到我們的注釋軟件Scale進行注釋。
(2)nuScenes數據集中的所有對象都帶有語義類別,以及它們出現的每個幀的3D邊界框和屬性。
(3)一共有23個對象(截圖並不完整)

-
數量一共有1000多個場景,其中700個提供為訓練,150個場景作為測試,大概是KITTI的7倍左右視頻中關鍵幀每隔0.5s標注,由10個非關鍵幀融合得到。信息包含為,其中最后一個信息是KITTI不含有的,表示離關鍵幀的時間從0~0.45.
更多細節大家可以去官網上的文檔細細研究,這里不做過多介紹。本文采用在nuscenes而不在KIITTI上進行實驗的原因正是KITTI並不提供3D video.
實現細節
-
對於關鍵幀,輸入場景大小設置為[−50,50] × [−50, 50] ×[−5, 3],Pillar的划分為[0.5×0.5]。
-
點雲數量的輸入為16384,從原始的2w+的點雲中采樣得到,每個pillar中最多包含點雲數量為60
-
最初的輸入維度是5,在GNN中的維度變為64
-
最終在backbone中的fea map為100 × 100 × 384(和voxelnet一樣的兩層concat)
Qualitative Performance
如下圖,對於nuscenes的10類目標檢測得到的結果如下,可以看出效在大部分物體上都是達到的sota的

消融實驗
下圖展示了在pointpillars的基礎上添加本文提出的模塊后的性能提升,最后的指標不僅僅是檢測的IOU值,還和很多其他指標加權得到的結果,在官網中有介紹。

推薦閱讀文獻
[1]Delving deeper into convolutional networks for learning videorepresentations
[2] Fast point r-cnn
[3] graph convolutional networks: Semisupervised learning via gaussianprocesses
[4]Deep hough voting for 3d object detection in point clouds