論文筆記:(2019CVPR)PointConv: Deep Convolutional Networks on 3D Point Clouds



PointConv: Deep Convolutional Networks on 3D Point Clouds

    Wenxuan Wu     Zhongang Qi     Li Fuxin
    CORIS Institute     Oregon State University

論文地址:https://arxiv.org/abs/1811.07246
代碼:https://github.com/DylanWusee/pointconv

摘要

  • PointConv是將動態濾波器擴展到點雲上的一個新的卷積運算。可以應用於點雲以構建深度卷積網絡。
  • 卷積核被視為由權重函數和密度函數組成的三維局部坐標的非線性函數。權重函數通過MLP學習得到。
  • 提出了一個公式,改寫權重函數的表達形式,可以有效地計算權重函數,從而能夠大幅擴展網絡並顯着改善其性能。
  • 學習的卷積核可用於計算3D空間中任何點集上的平移不變和置換不變卷積。
  • PointConv可用作反卷積運算符,以將特征從子采樣點雲傳播回其原始分辨率。
  • 在ModelNet40,ShapeNet和ScanNet上進行的實驗表明,基於PointConv構建的深度卷積神經網絡能夠在3D點雲上具有挑戰性的語義分割基准上達到最新水平。
  • 將CIFAR-10轉換為點雲,在PointConv上構建的網絡的性能可以與2D卷積網絡相當。

一、前言

1.1直接獲取3D數據的傳感器

  室內傳感器(例如激光掃描儀)
  飛行時間傳感器(例如Kinect,RealSense或Google Tango)
  結構光傳感器(例如iPhoneX上的傳感器)
  室外傳感器(例如LIDAR和MEMS傳感器)

1.2為什么用3D數據

  深度信息 可以消除2D圖像中的許多分割模糊性,並且表面法線 提供了場景幾何的重要線索。

1.3目前遇到的困難

  3D數據通常以點雲的形式出現,這是一組無序的3D點,每個點上有或沒有附加功能(例如RGB)。

  點雲是無序的,並且不符合2D圖像中的規則網格。

  在這種無序輸入上很難應用常規的CNN。

1.4現有的解決方法及存在的問題

  將3D空間轉換為體素網格,但是在高分辨率體積上,體積將稀疏而CNN則難以計算。

二、本文idea

2.1 idea來源

  2D圖像中,卷積神經網絡(CNN)從根本上改變了計算機視覺的格局。

  CNN通過利用平移不變性獲得成功,因此可以將同一組卷積濾波器應用於圖像中的所有位置,從而減少參數數量並提高泛化能力。

  希望將這種成功轉移到3D數據分析中。

2.2 初始思路

  本文提出了一種在非均勻采樣下對3D點雲進行卷積的新穎方法, 卷積運算可以看作是連續卷積算子的離散逼近。在3D空間中,我們可以把 卷積核的權重看作3D點相對於中心點的局部坐標的(Lipschitz)連續函數。該連續函數(即卷積核權重)可以用多層感知器(MLP)近似,如[33]和[16]所述。但是這些算法並沒有考慮非均勻采樣的問題,我們建議使用 反密度標度對MLP學習的連續函數(卷積核權重)進行加權,這與連續卷積的蒙特卡洛近似相對應,我們稱這種操作為PointConv。

  PointConv涉及將點雲的位置作為輸入並學習MLP以近似權重函數,並對學習的權重應用反密度標度以補償非均勻采樣。

注:
  Lipschitz連續:
  對於函數f(x) ,如果存在一個常數K,使得對於任意在f(x)定義域上的兩點x1,x2,滿足:|f(x1)-f(x2)|<=|x1-x2|*K 。那么成函數f(x)滿足Lipschitz連續條件,並稱K為f(x)的Lipschitz常數。
Lipschitz連續是比一致連續性更強的連續性,它限制了函數在某個局部區間內的變化幅度不能超過某常量。

注:
  帶有偏差樣本的蒙特卡洛估計:

  點雲通常是有偏差的樣本,因為許多傳感器很難測量平面邊界附近的點,因此需要重新加權。

2.3 改進的思路

  當輸出功能的通道大小非常大時,PointConv的簡單實現會導致內存效率低下,因此難以訓練和擴展到大型網絡。為減少PointConv的內存消耗,通過使用 更改求和順序 的重新構造來提高存儲效率。

  這種新結構能夠在3D點雲上構建多層深度卷積網絡,該網絡具有與柵格圖像上2D CNN相似的功能。

  可以實現與2D卷積網絡中相同的平移不變性,以及點雲中點的排列順序的不變性。

2.4 進一步創新

  大多數最先進的算法pointnet,pointnet++無法執行反卷積,這限制了它們在分割任務上的性能。

  PointConv是卷積的完全近似,因此可以很自然地將PointConv擴展到PointDeconv,它可以完全利用粗層信息並傳播到較細的層。

  通過使用PointConv和PointDeconv,可以提高語義分割任務的性能。

2.5 本文貢獻

  • 提出PointConv,一種密度重加權卷積,可以完全模擬3D連續卷積,彌補不均勻采樣帶來的影響。(通過S的加權使得點雲均勻,進而可視為是對3D連續卷積函數的近似);
  • 通過優化求和順序,設計出一種PointConv的高效內存實現;即把權重計算分為兩部分(MLP最后一層的輸入M和權重H)來減少計算量,降低內存占有率,提升網絡運行效率。
  • 將PointConv擴展到反卷積版本(PointDeconv),獲得更好的分割結果,插值-skip connection-PointConv組成PointDeConv。

三、PointConv

3.1 2D圖像與3D點雲的區別

  對於d維向量x的函數f(x)和g(x),定義卷積如下:

  圖像可以解釋為2D離散函數,通常表示為網格狀矩陣。在CNN中,每個濾波器都限於一個小的局部區域,例如3×3,5×5等。在每個局部區域內,不同像素之間的相對位置始終是固定的,如圖1(a)所示。而且,對於局部區域內的每個位置,可以輕松地將濾波器離散化為具有實值權重的總和。

  點雲表示為一組3D點{ pi∣i = 1,. . .,n },其中每個點都包含位置矢量(x,y,z)及其特征,例如顏色,表面法線等。與圖像不同,點雲具有更靈活的形狀。點雲中某個點的坐標p =(x,y,z)∈ R3不在固定網格上,而是可以采用任意連續值。因此, 每個局部區域中不同點的相對位置是不同的。柵格圖像上的常規離散卷積濾波器無法直接應用於點雲。圖1顯示了圖像中的局部區域和點雲之間的差異。

3.2 3D連續卷積 -> 點雲卷積

3.2.1 原始PointConv

3D卷積的連續版本:

  其中W和F均為連續函數,F是以點p(x,y,z)為中心的局部區域G中點的特征。

3D卷積的離散版本:

  一組點雲可以視為從一個連續空間R^3進行非均勻采樣的結果。在每個局部區域中,(δx, δy, δz)可能是局部區域的任何可能的位置,上式可以離散化到一個離散的3D點雲上:

  F 是每個點的特征,理解的是這里初始是把點雲坐標xyz作為輸入,也就是說,Cin是3。S(δx, δy, δz) 是點(δx, δy, δz)處的逆密度估計,可以理解為密度的相反數,一個點周圍的密度越大,權重越小,因為有冗余。S(δx, δy, δz)是必須的,因為可以非常不均勻地對點雲進行采樣(涉及到蒙特卡洛估計)。然后使用逆密度估計對學到的權重進行加權,補償不均勻采樣。

  圖2(a)是學習的連續權重函數;圖(b)和(c)是二維點雲中的不同局部區域。給定二維點,我們可以得到特定位置的權值。同樣的道理也適用於3D點。在圖2(c)中,點p3,p5,p6,p7,p8,p9,p10彼此非常接近,因此每個點的貢獻會更小。常規的離散二維卷積可以看作是連續卷積權重函數的離散化,如(d)。

主要思想:

權重函數W(δx, δy, δz):

  • 通過MLP從三維坐標(δx, δy, δz)中近似
  • 權重函數高度依賴於輸入點雲的分布

逆密度函數S(δx, δy, δz):

  • 用一個核密度估計以及一個非線性變換(MLP實現)近似

  PointConv中的MLP的權重在所有點之間共享,以便保證置換不變性。為了計算反向密度尺度估計函數S(δx, δy, δz),我們首先使用核密度估計(KDE)離線估算點雲中每個點周邊的密度,然后將密度值輸入到一個1D非線性變換的MLP中。使用非線性變換的原因是有必要讓網絡自適應地決定是否使用密度估計。

  PointConv學習一個網絡用以近似卷積的連續權重。對於每個輸入點,我們可以使用其相對坐標來計算MLP的權重。圖2(a)展示了一個用於卷積的連續權重函數。不妨將點雲輸入視作對連續輸入的離散化采樣,一個離散卷積可以通過圖2(b)所示的方式進行計算,用以提取局部特征,這對於不同的點雲采樣集合都有作用(可能具有不同的近似精度)(圖2)(b-d)),其中的一個例子包括規則網格(圖2(d))。注意,在柵格化圖像中,局部區域中的相對位置是固定的。這時,PointConv(僅采用各點的相對位置作為權重函數的輸入)將在整個圖像上輸出相同的權重和密度,此時它退化成為傳統的離散化卷積。

  為了聚合整個點集中的特征,我們使用層次化的結構,該結構能夠整合細粒度的小區域特征進而組合成覆蓋更大空間范圍的抽象特征。我們使用的層次結構由幾個特征編碼模塊組成,類似於PointNet ++ [28]中使用的模塊。每個模塊大致相當於卷積CNN中的一個層。每個特征編碼模塊中的關鍵層是采樣層,分組層和PointConv。

  這種方法的缺點是每個濾波器需要由一個網絡近似,因此效率非常低。

3.2.2 高效的PointConv

  原始的PointConv實現內存消耗巨大和比較低效。我們提出了一種新的重構方法,這種方法通過將PointConv減少到兩個標准操作來實現PointConv:矩陣乘法和2d卷積。這種新穎的技巧不僅利用了GPU的並行計算,而且可以使用主流深度學習框架輕松實現。因為反密度估計函數不存在內存問題,所以下面的討論主要集中在權重函數上。

  將訓練階段的mini-batch size記為B,點雲中的點的個數記為N,每個點的鄰域中點的個數記為K,C_in為輸入點的通道數,C_out為點的輸出通道通道數。對一個點雲而言,每部分局部區域都共享從MLP習得的相同的權重函數。但是對不同位置的不同點而言,運算得到的權重應當是不同的。由MLP生成的權重卷積核參數大小約為B × N × K × (C_in × C_out)。為此,本文提出高效版PointConv。

  假設B = 32, N = 512, K = 32, Cin = 64, Cout = 64,濾波器存儲具有單點精度。然后,僅一層濾波器的內存大小只有8GB的。這樣高的內存消耗會使網絡難以訓練。[33]使用非常小的網絡和很少的過濾器,這大大降低了它的性能。為了解決這個問題,我們提出了一個基於以下引理的內存效率版本的PointConv:

  內存大小變為:B×N×C_mid×C_in,內存開銷為原始PointConv的C_mid/(K*C_out)倍。

注:
(1)分類
  網絡架構相當於PointNet++,只是用PointConv替換PointNet層。
  PointConvDensitySetAbstraction()層-全連接層。
(2)分割
  網絡架構如圖4所示。
  通過四層 編碼-解碼層-全連接層-1×1卷積層 組成。

3.2.3 PointDeConv

  對於分割任務,我們需要逐點預測。為了獲得所有輸入點的特征,需要一種將特征從子采樣點雲傳播到更密集的點雲的方法。 PointNet ++ [28]提議使用基於距離的插值來傳播特征,由於局部區域內的局部相關性,這是合理的。但是,這並沒有充分利用反卷積操作的優勢,該反卷積操作從粗糙級別捕獲傳播信息的局部相關性。我們建議添加一個基於PointConv的PointDeconv層,作為反卷積操作來解決此問題。

  如圖4所示,PointDeconv由兩部分組成: 插值和PointConv。首先,我們采用插值法傳播來自上一層的粗略特征。繼[28]之后,通過線性插值來自3個最近點的要素進行插值。然后,使用skip-links將內插特征與來自具有相同分辨率的卷積層中的特征連接起來。連接后,我們對連接的特征應用Point-Conv以獲得最終的去卷積輸出,類似於圖像去卷積層[24]。我們應用此過程,直到所有輸入點的特征都傳播回原始分辨率為止。

四、實驗

  三維數據集:ModelNet40,ShapeNet,ScanNet
  二維數據集:CIFAR-10

4.1 在ModelNet40上的分類

  使用PointNet的源代碼對1,024個點進行均勻采樣,並根據網格模型計算法向矢量。   采用與PointNet相同的數據增強策略,即沿z軸隨機旋轉點雲,並通過均值為零且標准偏差為0.02的高斯噪聲使每個點抖動。

4.2 在ShapeNet上的部件分割

  任務的輸入是由點雲表示的形狀,目標是為點雲中的每個點分配零件類別標簽。 給出了每種形狀的類別標簽。 通常,通過使用已知的輸入3D對象類別將可能的零件標簽縮小到特定於給定對象類別的部分標簽。並且還 **將每個點的法線方向計算為輸入特征**,以更好地描述基礎形狀。

  我們使用點交叉點聯合(IoU)來評估我們的PointConv網絡,與PointNet ++ [28],SPLATNet [35]和其他一些部分分割算法[45、18、44、7]相同。結果顯示在表2中。Point-Conv獲得的類平均mIoU為82.8%,實例平均mIoU為85.7%,與僅將點雲作為輸入的最新算法相提並論。根據[35],SPLATNet2D-3D還采用了渲染的2D視圖作為輸入。由於我們的PointConv只接受3D點雲作為輸入,為了公平比較,我們只將我們的結果與[35]中的SPLATNet3D進行比較。

4.3 場景語義標注

  諸如ModelNet40 [43]和ShapeNet [2]之類的數據集是人造的合成數據集。正如我們在上一節中看到的那樣,大多數最新算法都能在此類數據集上獲得相對較好的結果。為了評估我們的方法處理包含大量噪聲數據的現實點雲的能力,我們使用ScanNet數據集評估了基於語義場景分割的PointConv。任務是在給定由點雲表示的室內場景的情況下,預測每個3D點上的語義對象標簽。 ScanNet的最新版本[5]包含所有1513個ScanNet掃描和100個新測試掃描的更新注釋,其中所有語義標簽均不公開,我們將結果提交給官方評估服務器以與其他方法進行比較。

  我們將算法與Tangent卷積[37],SPLAT Net [35],PointNet ++ [28]和ScanNet [5]進行了比較。所有提到的算法均在新的ScanNet數據集上將其結果報告給基准,並且僅輸入算法使用3D坐標數據加上RGB。在我們的實驗中, **我們通過從室內房間隨機采樣3m×1.5m×1.5m立方體來生成訓練樣本,並在整個掃描過程中使用滑動窗口進行評估。**我們將結合交會(IoU)報告為主要措施,這是與基准相同。我們在圖7中可視化了一些示例性的語義分割結果。表3中列出了mIoU。mIoU是所有類別中IoU的平均值。我們的PointConv大大優於其他算法(表3)。 PointConv在一台GTX1080Ti上在Scan-Net上訓練一個紀元的總運行時間約為170s,而8×8192點的評估時間約為0.5s。

4.4 在CIFAR-10上的分類

  在第3.1節中,我們聲稱PointConv可以與2D CNN等效。如果是這樣,則基於PointConv的網絡的性能應等同於光柵圖像CNN的性能。為了驗證這一點,我們使用CIFAR-10數據集作為比較基准。我們將CIFAR-10中的每個像素視為 具有xy坐標和RGB特征的2D點。在訓練和測試之前, 將點雲縮放到單位球上

  實驗表明,CIFAR-10上的PointConv實際上具有與2D CNN相同的學習能力。 表4顯示了圖像卷積和Point-Conv的結果。 從表中可以看出,在CIFAR-10上PointCNN [21]的准確度僅為80.22%,遠低於圖像CNN。 但是,對於5層網絡,使用PointConv的網絡可以達到89.13%,與使用圖像卷積的網絡相似。而且,具有VGG19 [34]結構的PointConv與VGG19相比也可以達到同等精度。

五、消融實驗和可視化

  在本節中,我們將進行其他實驗以評估PointConv各個方面的有效性。 除了對PointConv的結構進行消融研究以外,我們還對ScanNet數據集上PointConv的性能進行了深入分析。 最后,我們提供了一些學習的過濾器用於可視化。

5.1 MLP結構

  在本節中,我們設計實驗以評估PointConv中MLP參數的選擇。為了快速評估,我們從ScanNet數據集中生成一個子集作為分類任務。 該子集中的每個示例均從原始場景掃描中隨機抽取1,024個點進行采樣.ScanNet數據集有20種不同的場景類型。根據經驗,我們遍歷了不同的Cmid選擇和PointConv中不同數量的MLP層。每個實驗進行了3次隨機試驗,結果可在補充中找到。 從結果可以看出, 較大的Cmid不一定提供更好的分類結果,而MLP中不同的層數在分類結果中並沒有太大差異。由於Cmid與每個PointConv層的內存消耗呈線性關系,因此該結果表明,我們 可以選擇一個較小的Cmid以提高內存效率

5.2 逆密度尺度

  在本節中,我們研究密度反比S的有效性。我們選擇ScanNet作為評估任務,因為ScanNet中的點雲是從真實的室內場景生成的。我們遵循作者提供的標准訓練/驗證拆分。我們分別在Sec3.1中描述了在有和沒有逆密度標度的情況下訓練網絡。表5示出了結果。如我們所見,具有逆密度標度的PointConv的性能比不具有逆密度標度的PointConv的性能好大約1%,這證明了逆密度標度的有效性。在我們的實驗中,我們觀察到反密度標度在靠近輸入的層中趨於更有效。在深層,MLP傾向於學會減少密度標度的影響。 一個可能的原因是,使用最遠的點采樣算法作為我們的子采樣算法,更深層的點雲傾向於更均勻地分布。如表5所示,與ScanNet數據集上沒有密度的方法相比,不使用非線性變換直接應用密度的結果較差,這表明非線性變換能夠學習數據集中的逆密度標度。

5.3 在ScanNet上的消融研究

  可以看到,我們的PointConv大大優於其他方法。由於我們只允許將算法的一個最終結果提交給ScanNet的基准服務器,因此我們使用[5]提供的公共驗證集對PointConv進行了更多消融研究。對於分割任務,我們用從3m×1.5m×1.5m中隨機采樣的8,192個點訓練PointConv,並通過滑動窗口的方式詳盡地選擇3m×1.5m×1.5m立方體中的所有點來評估模型。具有不同步幅大小的xy平面。為了魯棒性,我們在所有實驗中均使用5個窗口的多數票。從表5中,我們可以看到 較小的步幅可以改善分割結果,而ScanNet上的RGB信息似乎並不能顯着改善分割結果。即使沒有這些額外的改進,PointConv仍大大超過基准。

5.4 可視化

  圖8展示了我們PointConv中從MLP中學到的過濾器。 為了更好地可視化過濾器,我們通過平面z = 0對學習的函數進行采樣。從圖8中,我們可以看到學習的連續過濾器中的一些模式。

六、結論

  在這項工作中,我們提出了一種在3D點雲上執行卷積運算的新穎方法,稱為PointConv。 PointConv在局部點坐標上訓練多層感知器,以在卷積濾波器中近似連續的權重和密度函數,這使其自然地具有排列不變和平移不變的特性,這允許直接在3D點雲上構建深度卷積網絡。 我們提出了一種有效的實現方式,極大地提高了其可伸縮性。 我們在多個具有挑戰性的基准上展示了其強大的性能,並具有與2D圖像中基於網格的卷積網絡的性能相匹配的功能。 在以后的工作中,我們希望使用PointConv(例如ResNet和DenseNet)將更多主流圖像卷積網絡體系結構引入點雲數據中。可以在這里找到代碼:https://github.com/DylanWusee/pointconv

總結:

  • 目前所有的基於點雲上的算法,第一步做的都是 最遠點采樣(FPS) ,從宏觀上來看,最遠點采樣的方法在 減少點雲樣本數量的同時也極大的 保留點雲的原始的空間結構。但是從微觀上看,最遠點采樣的算法屬於 非均勻采樣,這樣就會導致某些局部區域點大量聚集,而某些區域的的點的數量只有寥寥無幾。而PointConv正是發現這一問題,嘗試着通過 核密度估計方法來解決這個問題,所以博主認為這也是PointConv提出的最大的一個貢獻。
  • 傳統的或者可以說是常用的方法一般是通過 三個點進行線性插值的方法來進行特征傳播,但PointConv的作者認為這並不能夠很好的做到點雲的特征的傳播。所以作者重新設計了一個更好的特征傳播層。 作者將Pointconv的部分加入了線性插值之后,這使得網絡能更好的特征的傳播。

參考:https://blog.csdn.net/Dujing2019/article/details/107016494
https://blog.csdn.net/john_bh/article/details/103959200
https://yongqi.blog.csdn.net/article/details/103175381
https://blog.csdn.net/sinat_37532065/article/details/101061465
https://blog.csdn.net/weixin_42956785/article/details/91880225
https://blog.csdn.net/weixin_43026096/article/details/103527901
https://blog.csdn.net/weixin_43026096/article/details/103282320


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM