【CVPR 2020】Point-GNN 通過圖神經網絡實現3d目標檢測論文解讀

【CVPR 2020】Point-GNN (開源)通過圖神經網絡實現3d目標檢測論文解讀


注:摘要、介紹、相關工作僅僅爲翻譯,幫助讀者理解目前3D目標檢測的方法。其他部分爲解讀內容

摘要

在本文中,我們提出了一個圖神經網絡來從激光雷達點雲檢測目標。對這個目標,我們將點雲有效地編碼到一個固定半徑的近鄰圖中。我們設計了一個圖神經網絡,並稱爲點Point GNN,來預測類別和圖中每個頂點所屬的對象的形狀。在PointGNN裏,我們提出了一個自動配準的機制來保證平移不變性(reduce translation variance),並設計一個框合併和打分操作,以精確結合多個頂點的檢測結果。我們在KITTI數據集上做的實驗結果表明,該方法(僅使點雲)達到了領先水平,精確度甚至可以超過基於融合的算法。我們的結果證明了利用圖神經網絡作爲一種新的三維目標檢測方法的潛力。
代碼在這裏https://github.com/WeijingShi/Point-GNN

介紹

理解3D環境對機器人感知至關重要。三維點雲是一種廣泛應用於三維傳感器(如激光雷達)的數據格式。從點雲中準確地檢測目標對於自動駕駛等應用來說是至關重要的。
卷積神經網絡用來檢測圖像中的目標依賴於卷積運算。雖然卷積運算是有效的,但它需要一個規則的網格輸入(基於歐式距離)。與圖像不同,點雲通常是稀疏的且不均勻。把點雲放在規則網格會導致每個cell中點的數目不均勻。對這些網格進行相同的卷積操作,可能會導致擁擠網格中的信息丟失或者空網格浪費計算。
最近在神經網絡方面的突破允許以無序的點集作爲輸入。此類研究利用這種類型的神經網絡來提取點雲特徵,而不需要將點雲映射到網格。但是,它們通常需要迭代的對點進行取樣和分組(sample&group),以得到點集表示。在大型點雲上的重複分組和採樣計算代價非常昂貴。最近的三維檢測方法通常採用混合方法在不同的階段使用網格和點集表示。雖然它們展現一些較好的結果,但這種混合策略可能會受到兩種表現的缺點的影響。
在本文中,我們提出使用圖作爲一個點雲的緊湊表示,並設計一個稱爲PointGNN的圖神經網絡來檢測對象。**我們把點作爲圖頂點來編碼點雲。圖的邊將位於固定半徑內的鄰域點連接起來,使得特徵信息可以在鄰域之間流動。**這樣的圖表示可以直接適應點雲的結構,而不需要使它具有規則性。圖神經網絡在每一層都重複使用圖的邊,避免了對點的重複分組和採樣。
研究探討了利用圖神經網絡對點雲進行分類和語義分割。然而,利用圖神經網絡在點雲中進行三維目標檢測的研究很少。我們的工作證明了在點雲中使用GNN進行高精度目標檢測的可行性。
我們提出的圖神經網絡PointGNN以點圖作爲輸入。它輸出每個頂點所屬的對象的類別和邊界框。PointGNN是一種單階段檢測方法,可以在一個場景中檢測多個目標。爲了保證圖神經網絡中的平移不變性,我們引入了一種自動配準機制,該機制允許點根據其特徵對座標進行配準。我們進一步設計了一個框合併和打分操作,以精確的從多個定點結合得到檢測結果。
我們在KITTI的benchmark上對所提出的方法進行了評估。在KITTI測試中,Point GNN單獨使用點雲實現了最先進的精度,甚至超過了傳感器融合方法。我們的Point GNN顯示了一種利用圖神經網絡的新型三維目標檢測方法的潛力,可以作爲未來研究的有力基礎。我們對點GNN中各組成部分的有效性進行了廣泛的消融研究。
本文的貢獻:

  1. 提出了新的點雲目標檢測方法,利用圖神經網絡。
  2. 設計了PointGNN,一個有自動配準機制的在單幀檢測多個目標的圖神經網絡。
  3. 在KITTI benchmark的3D目標檢測模塊sota(現在不是了),深入分析了各部分的有效性。

相關工作

在這裏插入圖片描述

點雲數據規則化處理

最近的許多研究將點雲轉換爲規則網格,以利用卷積神經網絡。[20]將點雲投射到2D鳥瞰(BEV)圖像上,並使用2D CNN進行對象檢測。[4]將點雲投射到BEV圖像和FV圖像上。由於圖像分辨率的限制,這種投影會產生量化誤差。有些方法把點雲保留在三維座標。[23]把點用3d體素表示並用3d卷積來目標檢測。當體素的分辨率增大時,3D CNN的計算量也隨之增大,但由於點的稀疏性,許多體素是空的。稀疏卷積[19]等優化降低了計算成本。將點雲轉換爲2D/3D網格會遇到點的規則分佈與網格的規則結構不匹配的問題。

點雲直接處理

在PointNet[3]和DeepSet[22]等點集上的深度學習技術表明,神經網絡可以直接從無序的集合中提取特徵。在這種方法中,每一個點都經過多層感知器(MLP)處理以獲得點特徵向量。通過平均或最大池化函數將這些功能聚合起來,形成此點集一個全局的特徵向量。[14]進一步提出了點特徵的層次聚合,並通過對某些點的採樣來生成點的局部子集。然後將這些子集的特徵再次group到集合中,以進行進一步的特徵提取。許多三維目標檢測方法利用這種神經網絡來處理點雲,而不需要將點雲映射到網格。然而,在大尺度上對點的採樣和分組會增加額外的計算成本。大多數的目標檢測研究只使用這個網絡作爲框架的一部分。
[13]通過圖片生成提案,並使用[14]來從背景中分割屬於目標的點,來預測3d bbox。[16]用[14]作爲backbone生成框提案,然後用第二階段來優化框。混合方法如[23 19 10 21]使用[3]從局部點集提取特徵,並將特徵放在規則網格中進行卷積操作。儘管它們將點雲的不規則性降低了一定程度,它們仍然受到規則網格和整體點雲結構之間匹配的影響。

圖處理點雲

圖論神經網絡的研究[18]試圖將神經網絡推廣到圖的表示。GNN迭代的更新頂點特徵,通過聚合邊沿特徵。儘管集合模式有時類似於基於點集的深度學習,GNN允許沿邊緣確定更復雜的特性。它通常不需要重複採樣和分組頂點。在計算機視覺領域,有幾種方法將點雲表示爲圖。[15]使用遞歸GNN對RGBD數據進行語義分割。[9]將點雲劃分爲簡單的幾何形狀,並將它們鏈接到圖中進行語義分割。[2 17]研究使用GNN對點雲進行分類。迄今爲止,很少有研究探討設計一個圖神經網絡用於目標檢測,這需要對目標形狀進行顯式預測。我們的工作與以前的工作不同,我們設計了一個用於對象檢測的GNN。與將點雲轉換爲規則網格(如圖像或體素)不同,我們使用圖表示來保留點雲的不規則性。與重複採樣並將點分組的技術不同,我們只構建一次圖。該算法通過迭代更新同一圖上的頂點特徵來提取點雲的特徵。我們的工作是一種1-stage檢測方法,不需要第二階段的優化如[4 16 21 11 13]。

Point GNN在點雲數據目標檢測

在這裏插入圖片描述

關注點:從論文的題目可以直接看出,該論文的亮點爲通過圖神經網絡進行目標檢測的分割。

  1. 基於此,小編關心的重點則在與網絡如何構建點與點之間的邊關係
  2. 網絡的迭代的方式。

構建圖

下采樣

我們都知道且明白–車前目標檢測場景大約包含有數萬個點。如果不做任何處理直接將這麼龐大的點雲數據直接輸入場景中,以目前顯卡的計算能力來講是非常困難的,且實用性不高。**目前現存的網絡都會使用降採樣的方法來從原始點雲場景中提取一部分點,並對其進行目標檢測。在Point GNN網絡中同樣如此。

在這裏插入圖片描述

網絡是用voxel downsample對原始點雲進行下采樣。體素採樣是一種均勻採樣,但是其計算量是遠遠大於一般採樣算法的。fps最遠點採樣可以看做是一種近似均勻的採樣方法,並且相對於體素採樣的方法計算量減少很多。這一點是小編看這篇論文很疑惑的,文中並沒有闡述voxel downsample的任何對網絡益處,在原本網絡計算量如此高的情況下,任然使用如此高的計算量的採樣方法,有點讓人想不通。

找尋周圍臨近點,並將編碼臨近點的信息爲Si

在這裏插入圖片描述
文中使用一種單元列表的方法找到中心點周圍的臨近點,其計算複雜度爲O(cN),c爲在半徑r內臨近點的最大數量。這種方法真的沒有聽過,是否說這種方法是基於體素採樣的基礎上,使得每個點的算法複雜度均爲c,N個點的算法總複雜度爲cN,這點我覺得可能需要去看代碼才能夠明確知道。
Si爲一個K爲向量,初始化的公式按照論文中的文字闡述,小編自己編寫的應該如下,第i個點:

在這裏插入圖片描述

最終N個點都有一個K維的特徵向量Si,到此則完成了圖的構建。G = (P, E), P=(pi, Si)

在這裏插入圖片描述

Point GNN主體框架

先來根據論文的主線索,講講傳統圖神經網絡—>點雲圖神經網絡

1、傳統的圖神經網絡:

在這裏插入圖片描述

t表示第幾次迭代,e表示邊的特徵,v表示頂點的特徵。f(.)表示生成兩個頂點之間邊的關係,p(.)生成中心點與所有鄰近點之間的邊關係,g(.)加入第t次迭代改中心點的特徵後,生成第t+1次迭代的頂點特徵。

2、點雲圖神經網絡:

在這裏插入圖片描述
根據傳統的圖神經網絡經過細微的改變之後所得,也沒啥差別,就是一種簡單的修訂。畫個簡單的示意圖來理解一下這個公式:

在這裏插入圖片描述

加入數據增強後的公式

在這裏插入圖片描述

∆x 就是通過計算邊的狀態值所得的座標位移差。

**論文中給的數據增強有四個:整個點雲場景的旋轉、整個點雲場景基於x軸的翻轉、box和其內部的點加上外部10%的點旋轉、通過體素下采樣造成點的抖動。**因爲有這些的數據增強,所以增加了∆x,當然你也可以不用。

具體的公式:

在這裏插入圖片描述

這就沒什麼好解釋了,上下兩個公式放在一起對比一下就看得出來具體的對應關係。

講完所有內部結構後,就看看整體的框架內容:圖中顯示的是一次迭代的內容,安裝實驗細節闡述,T=3

在這裏插入圖片描述

對照公式看圖,應該很簡單的看出來,看不出來對應關係,留言吧。沒有手寫筆畫圖實在是很麻煩。

框的合併以及打分

在這裏插入圖片描述

文中應該是對每個點生存一個框,但我好像沒找到對應的字眼。那就找到的時候在回來補。但是下采樣後應該還是有上萬個點或者說接近一萬,那麼對每個點都要生成框就會造成大量的相似框。**爲了更好的合併,文中提出一種合併框的方法。**同時也給出該方法的設計的原因: 部分遮擋的物體可以有一個很強的線索來指示物體的類型,但缺乏足夠的形狀信息,分類的分數不能夠總是正確對應着框的質量,所以作者認爲要加上遮擋的因素。

合併框的方法通常爲NMS,文中作者改進了這一方法,綠色爲作者改進的部分。

在這裏插入圖片描述
median: 具體的函數內容作者沒有給出來,從文中和代碼的意思推斷大概是從這一些重疊框中,選擇中間位置和尺寸的重疊框。感覺是所有寬的參數的平均值所構成的框。

occlusion: 框內物體體積 / 框的體積, 是一個0~1的比率。

在這裏插入圖片描述
輸出: M是合併的後所得框,Z是對應框的分數 。分數是中間框與其他框的IOU的和值,再加上這個和值乘遮擋值爲分數。(匪夷所思,前所未見。文中都沒詳細解釋爲啥這呢做,一句話帶過。。。)

Loss

類別的loss:
在這裏插入圖片描述

兩個類別:背景或所關心的物體。y真實值的標籤,p預測的標籤。M爲預測改點預測的可能性有幾種。

box的loss: 該loss與通常用的loss有所不同

在這裏插入圖片描述

x、y、z、l、h、w、角度爲預測的框的參數,xm、ym、zm、lm、hm、wm、角度m爲文中給的超參數。

xu, yu,zu爲預測該預測框的頂點。

什麼時候才計算loss呢?即興趣點是什麼: 預測該預測框的頂點在預測框內

在這裏插入圖片描述

**總loss: **

在這裏插入圖片描述

Lreg爲L1正則化loss,在每個一個MLP後面加上L1正則化,L1 loss計算這些MLP的權重和,以防止過擬合。

實驗

3D檢測的精度:
在這裏插入圖片描述

BEV檢測的精度:
在這裏插入圖片描述

精度細節什麼的就各位自己去看吧,看不懂的留言探討。

個人總結(優點太多講不完,只談一些自認爲的不足)

1、不得不說這篇論文給了我們一個很好的思路從點與點之間的關係出發進行目標檢測。但我個人覺得這種臨近點的特徵提取得到局部特徵來構成邊有的信息有點過於少。

2、一階段的網絡呢他的優勢就是速度快,但是這篇論文就優點失去這一相對於二階段網絡的優勢。沒有當初這篇文章當時在kitti登頂的截圖,就隨意看看現在的截圖吧。

些自認爲的不足)

1、不得不說這篇論文給了我們一個很好的思路從點與點之間的關係出發進行目標檢測。但我個人覺得這種臨近點的特徵提取得到局部特徵來構成邊有的信息有點過於少。

2、一階段的網絡呢他的優勢就是速度快,但是這篇論文就優點失去這一相對於二階段網絡的優勢。沒有當初這篇文章當時在kitti登頂的截圖,就隨意看看現在的截圖吧。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章