2021年2月6日 星期六

DGCNN 簡介:Dynamic Graph CNN for Learning on Point Clouds

DGCNN 與之前介紹的 Pointnet 一樣是處理點雲分類或分割的深度學習模型。與 Pointnet 不同的是設計了 EdgeConv operator,可以用來描述點雲的局部資訊。

簡介 EdgeConv

EdgeConv 的概念是利用一個點與鄰近的點之間的關係來描述此點的局部資訊。而實作的方法是針對每一個點都找出 k-nearest neighbor (kNN),因此這個點與其 k 個鄰居共有 k 個邊,也就是 EdgeConv 中的 edge,而取出邊的資訊後再計算 convolution,就可以學習到此點與其 k 個鄰居點的局部資訊。

EdgeConv 的實作細節

  • 輸入是 \(B \times 3 \times N\) ,代表一個 batch 中的 N 個點。
  • 找 k-nearest neighbor,產生 \(B \times 3 \times N \times k\) 的 tensor \(T_1\)。
  • 將輸入重複 k 次,也產生 \(B \times 3 \times N \times k\) 的 tensor \(T_2\)。
  • 將前兩步驟合併,變成 \(B \times 6 \times N \times k\) 的 tensor,其中 6 維的前 3 維是點與其鄰居的差,也就是 \(T_1 - T_2\),而後 3 維是 \(T_2\),這個設計將 global 跟 local 的資訊結合在一起。
  • 用 \(1 \times 1\) convolution,將 6 維變成 64 維,因此 convolution 後的結果會是 \(B \times 64 \times N \times k\)。
  • 加一層 pooling,因此輸出的維度是 \(B \times 64 \times N \times 1\)。
  • 以上便是一次 EdgeConv 所做的事情,而本篇文章的實作用了數個 EdgeConv 層。

 

模型架構

DGCNN

經由數個 EdgeConv 層後將每次 EdgeConv 的輸出接在一起代表從粗略到細節的特徵,最後搭配 pooling 及 mlp 就可以分類此點雲。本篇文章用的 benchmark 是 ModelNet40,在使用 1024 點的情況下可以達到 92.9% 的分類正確率,若使用 2048 個點則可達到 93.5%,相較之下 Pointnet 的分類正確率是 89.2%。


參考資料

[1] Dynamic Graph CNN for Learning on Point Clouds


沒有留言:

張貼留言