【語義分割】3D Graph Neural Networks for RGBD Semantic Segmentation

3D Graph Neural Networks for RGBD Semantic Segmentation

image.png

原文章:https://www.yuque.com/lart/papers/wmu47agit

動機

主要針對的任務是RGBD語義分割, 不一樣於往常的RGB圖像的語義分割任務, 這裏還能夠更多的考慮來自D通道的深度信息. 因此對於這類任務須要聯合2D外觀和3D幾何信息來進行聯合推理.github

深度信息編碼

關於將深度信息編碼爲圖像的方法有如下幾種:算法

  1. 經過HHA編碼來將深度信息編碼爲三通道: horizontal disparity, height above ground and norm angle(水平視差、地面上方高度和範數角度).
  2. 直接將深度圖像做爲一個1通道圖像輸入.

以後FCN直接在編碼圖像上進行特徵提取.編程

RGBD圖像分割

關於如何進行RGBD圖像的分割, 以往有的工做主要有如下的幾種方法:網絡

  1. 將深度圖直接做爲另外一個輸入圖像. 使用兩個CNN結構來分別處理顏色與深度信息來提取特徵. 這樣形成須要雙倍的計算和存儲消耗. 並且這樣的設定將2D圖像像素與3D空間中的真實位置割裂開來, 可能會帶來必定的錯誤. 由於單獨考慮2D空間中的像素, 其得出的鄰居關係, 在空間中可能並不能對應表示很好的鄰近關係.
  2. 另外一種選擇是使用3D CNN, 使用在 voxelized 3D space 中, 這類方法更好地利用了3D空間中的上下文信息, 然而因爲3D體素網絡的計算成本很高, 所以在高分辨率和複雜場景中進行擴展具備必定的挑戰. 另外, 3D空間的量化也可能致使額外的偏差.
  3. 各向異性卷積提供了一個更好的對於形狀分析學習非歐濾波器的方法. 然而它對於大尺度RGBD圖像的密集語義分割任務的處理仍是有些困難, 由於點之間的關聯很複雜, 它們一般依賴於定義明確的點關聯, 例如網格, 這些網格不容易用於複雜的RGBD分割數據.

爲了處理上述挑戰, 文章提出了一個端到端的3D圖神經網絡, 這直接從3D點中學習表示.app

圖神經網絡

當前不少工做已經努力將神經網絡推廣到圖數據上.dom

一個方向是將卷積神經網絡(CNN)應用於圖. 在譜方法中, CNN用於依賴於拉普拉斯矩陣的譜域. 然而[6]使用哈希函數, 所以能夠將CNN應用於圖. 另外一個方向是將神經網絡循環應用於圖的每一個節點, 產生了「圖形神經網絡」. 該模型包括一個傳播過程, 它相似於圖模型的消息傳遞. 這種模型的最終學習過程能夠經過BPTT算法來實現.ide

這裏使用的消息傳播模型的圖神經網絡, 基礎更新公式爲:函數

image.png

其中h爲隱藏狀態, m對於當前節點的鄰居信息的彙總後的結果, 具體如何匯聚, 看具體不一樣的模型的設定, 文章是使用的均值. 函數M是計算消息的函數, 而F是用來更新隱藏狀態的函數. 和循環卷積神經網絡相似, M, F是不一樣的時間步上是共享權值的. 簡單的M和F可使用像素級加法和全鏈接層來分別表示 這些更新函數指定了圖內信息的傳播模型. 也可使用多個M來包含來自有着不一樣類型的邊的圖的更多信息.性能

經過執行上述傳播模型必定數量的步驟來執行推斷, 最終預測能夠在節點處或在圖級別產生, 具體取決於任務. 例如, 能夠將隱藏表示(或其聚合)提供給另外一個神經網絡以執行節點(或圖)分類.

圖神經網絡與許多現有模型密切相關, 例如條件隨機場(CRF)和循環神經網絡網絡(RNN). 文章專一於成對CRF, 但請注意, 這裏的鏈接擴展到了高階模型上.GNN能夠被看做是一個RNN從序列到圖數據上的泛化.

  1. 當輸入圖是鏈式結構的時候, 鄰居被從當前節點的單個父節點來生成;
  2. 當輸入圖是樹時, GNN也與Tree-LSTM密切相關. 在這種狀況下, 消息計算是全部子節點的隱藏表示的總和. 與常見圖神經網絡的主要區別在於每一個子節點會計算其本身的遺忘門輸出副本-它們在其父單元內存更新中被聚合在一塊兒.

貢獻

  1. 首先基於深度信息將2D像素投射到3D空間中, 而且將每一個3D點與一元特徵向量(即, 2D分割CNN的輸出)相關聯.
  2. 而後, 咱們構建一個圖, 其節點是這些3D點, 並經過在3D空間中找到最近的鄰居來構造邊.
  3. 對於每一個節點, 將圖像特徵向量做爲初始表示, 並使用循環函數迭代地更新它.

這種動態計算方案的關鍵思想是節點狀態由其歷史狀態和其鄰居發送的消息共同肯定, 同時將外觀和3D信息同時考慮在內.

使用每一個節點的最終狀態來執行每一個節點的分類任務. 採用BPTT算法計算圖形神經網絡的梯度. 此外, 經過傳播梯度到一元CNN促進端到端的培訓.

圖構建

給定圖像, 基於像素的2D位置和深度信息來構建有向圖, 讓[x, y, z]表示相機座標系中的點的3D座標, 而且讓[u, v]表示其根據針孔相機模型投影到圖像上的座標. 根據透視投影幾何產生式子:

image.png

這裏的fx和fy表示沿着x和y的焦距長度(focal length), 而且cx和cy表示主點(the principal point). 爲了造成圖, 將每一個像素視爲一個節點, 並經過有向邊緣將其鏈接到3D空間中的K近鄰(KNN), 在咱們的實驗中K設置爲64. 注意, 這個過程產生不對稱結構, 即, 自A到B的邊的存在不必定意味着自B到A的邊的存在.

傳播模型

在構造完圖後, 使用CNN做爲一元模型來計算每一個像素的特徵, 這些特徵做爲對應節點的初始隱藏層表示, 從而編碼外觀信息. 給定已經編碼好幾何上下文信息的3D圖, 圖神經網絡能夠用來利用外觀和幾何信息.

信息傳遞過程以下:

image.png

這裏的g是一個多層感知機, 文章是用的是ReLU做爲對應的非線性激活函數. 每一個時間步, 每一個節點收集來自鄰居節點的消息. 消息首先被匯聚平均後, 與節點原始隱藏狀態進行融合更新.這裏關於F的選擇, 主要有兩種:

  1. Vanilla RNN Update. 使用多層感知機做爲更新函數.
  2. 表示爲: image.png
  3. 這裏將隱藏狀態和消息拼接後傳入MLP q.
  4. LSTM Update. 使用LSTM來進行更新. 它可以維持自身的記憶來幫助從接受的信息中提取更爲有用的信息.

image.png

網絡的大體狀況如上.

預測模型

對於每一個節點v在得分圖中對應的像素, 這裏預測語義類別yv的機率pyv使用下面的公式計算:

image.png

這裏的s是一個全部節點共享的有着softmax層MLP. 注意這裏拼接了一元CNN輸出的初始隱藏狀態和T個時間步以後的迭代輸出隱藏狀態.

最終使用一個softmax交叉熵損失函數來對每一個節點進行損失計算, 使用BPTT進行訓練.

效果

實驗細節

We evaluate our method on two popular RGBD datasets: NYUD2 and SUN-RGBD.
NYUD2 contains a total of 1,449 RGBD image pairs from 464 different scenes. The dataset is divided into 795 images from 249 scenes for training and 654 images from 215 scenes for testing. We randomly split 49 scenes from the training set as the validation set, which contains 167 images. The remaining 654 images from 200 scenes are used as the training set.

劃分比例: tr:val:te = 654:167:654 = 1:0.25 :1

SUN-RGBD consists of 10,335 images, which are divided into 5,285 RGBD image pairs for training and 5,050 for testing.

All our hyperparameter search and ablation studies are performed on the NYUD2 validation set.

For most of the ablation experiments, we use a modified VGG-16 network, i.e., deeplab-LargeFov with dilated convolutions as our unary CNN to extract the appearance features from the 2D images. We use the fc7 feature map. The output feature map is of size H×W×C where H, W and C are the height, width and the channel size respectively. Note that due to the stride and pooling of this network, H and W are 1/8 of the original input in terms of size.** 所以, 咱們的 3D 圖形是創建在向下採樣的特徵圖之上的.**

爲了進一步合併上下文信息, 咱們使用全局池從特徵圖計算另外一個 C 維向量. 而後將向量附加到全部空間位置, 從而生成一個 H×W×2C 特徵圖.

In our experiment, C=1024 and a 1×1 convolution layer is used to further reduce the dimension to 512.

We also experimented by replacing the VGG-net with ResNet-101 or by combining it with the HHA encoding.

  1. We initialize the unary CNN from the pre-trained VGG network.
  2. We use SGD with momentum to optimize the network and** clip the norm of the gradients such that it is not larger than 10**.
  3. The initial learning rates of the pre-trained unary CNN and GNN are 0.001 and 0.01 respectively.
  4. Momentum is set to 0.9.
  5. We initialize RNN and LSTM update functions of the Graph Neural Network** using the MSRA method**.
  6. We randomly scale the image in scaling range [0.5, 2] and randomly crop 425×425 patches.
  7. For the multi-scale testing, we use three scales 0.8, 1.0 and 1.2.
  8. In the ResNet-101 experiment, we modified the network by reducing the overall stride to 8 and by adding dilated convolutions to enlarge the receptive field.
  9. We adopt two common metrics to evaluate our method: mean accuracy and mean intersection-over-union (IoU).

對比結果

image.png

image.png

image.png

消融實驗

  • 傳播時間步數: 當傳播步長較大時, 振盪可能與優化過程有關. 咱們發現 3 到 6 個傳播步會產生合理的良好結果.
  • 更新方程: 比較了描述的兩個更新方程. 普通 RNN 的性能與 LSTM 類似. LSTM 更新的計算複雜度遠遠大於香草 RNN. 根據這個發現, 因而全部的實驗使用普通 RNN 更新.
  • 2D VS.3D 圖: 爲了研究 3D 圖的增長帶來了多大的改進, 將其與基於二維像素位置的二維圖進行了比較. 使用相同的圖神經網絡進行實驗, 並在表 4 中顯示不一樣傳播步驟的性能. 整個測試集的結果如表 5 所示. 代表, 使用 3DGNN, 能夠捕獲更多的三維幾何上下文, 從而使預測更加準確. 另外一個有趣的觀察是, 即便簡單的 2DGNN 仍然優於採用普通 CNN 的方法.
  • 性能分析: 如今將3DGNN與一元CNN進行比較, 以便研究如何經過利用3D幾何信息來加強GNN. 基於單尺度數據輸入的結果列於表5中. 3DGNN模型優於一元和2DGNN模型, 這再次支持3D上下文信息在語義分割中很重要的事實.
    • 爲了進一步理解3D信息帶來的優點, 文章統計了對於各個類別帶來的性能提高. 對於特定的類別, 因爲在2D空間中很容易被誤分類, 而結合空間信息後, 反而容易分類了.
    • 爲了進一步理解什麼致使了提高, 分析了不一樣大小的物體的性能增益如何變化. 特別地, 對於每一個語義類, 首先將真實分割圖劃分爲鏈接組件的集合, 其中每一個組件被從新構造爲該類中對象的一個實例. 而後計算全部類的對象實例的大小. 就像素數而言, 對象大小的範圍高達10,200個不一樣的值. 咱們將它們分紅34個bins, bin寬爲3,000. 記錄每一個bin中對象實例的預測精度的平均改進. 如圖6所示, 3DGNN處理最好的是大中型對象而不是小對象. 這一結果證實3DGNN能夠克服一元CNN的感覺域的有限大小, 並捕獲圖像中的長程依賴性.

image.png

  • 定性分析: 在圖7中的SUN-RGBD數據集上顯示了模型的示例結果, 並將其與一元CNN進行了比較. 能夠看出, 3DGNN利用3D幾何上下文信息, 而且與一元CNN相比, 學習到更好的分類表示.

image.png

  • 失敗案例分析. 最後, 展現和分析了模型的表明性失敗案例.
    • 首先, 當物體具備類似的深度時, 模型有時沒法作出良好的預測, 特別是對於小物體. 在圖8的第一行中, 因爲這一事實, 燈被錯誤分類爲百葉窗.
    • 第二種類型的失敗案例是因爲形狀複雜的對象形成的. 不連續的深度可使3D鄰域至關嘈雜. 如圖8的第二行所示, 該表被識別爲其餘對象的片斷.
    • 此外, 當兩個對象的2D外觀和3D上下文類似時, 咱們的方法不能很好地工做. 例如白板混淆成白牆, 如圖8第三排所示.

總結

提出了一種用於RGBD語義分割的新型3D圖神經網絡. 圖神經網絡創建在從RGB圖像中提取顏色和深度的點之上. 咱們的3DGNN利用2D外觀信息和3D幾何關係, 它可以捕捉圖像中的長距離依賴, 這在傳統方法中難以建模. 各類實證結果代表, 咱們的模型在標準RGBD語義分段基準上實現了良好的性能.

未來, 咱們計劃調查反饋以調整構造圖的結構.

思考

  • 如何編程實現梯度裁剪?
  • MSRA方法初始化如神經網絡的更新函數有什麼好處? 如何初始化?
  • Pytorch如何設置參數的初始化?

相關連接

相關文章
相關標籤/搜索