GeoNet閱讀筆記:點雲分析上的深度測地網絡

目的

  • 點和鄰近點的測地線距離估計。得到這樣的估計後,我們求一個點的鄰域時,就可以忽略那些歐氏距離很近,但測地線距離很遠的點,從而減小誤差。

大概過程

測地距離估計

  1. 得到Ground Truth:對每個點xix_i求出以rr爲半徑的鄰域Br(xi)B_r(x_i),對鄰域內的每個點求測地距離。
  2. Encoder-Decoder部分:特徵提取。基於PointNet++,得到每個採樣點的特徵;再通過插值+FC,得到每個點的C+3C+3維特徵。
  3. 按不同的半徑rlr_l,得到不同的鄰域,分別採樣KlK_l個點,因此每個點的鄰域特徵爲(N,Kl,3+C)(N, K_l, 3+C),將此鄰域特徵輸入FC,得到新的鄰域特徵,維度爲(N,Kl,C)(N, K_l, C)。和原C+3C+3維特徵broadcast後concatenate,得到(N,Kl,2C+3)(N, K_l, 2C+3)維特徵。
  4. 將特徵輸入到FC,得到(N,Kl,1)(N, K_l, 1)的張量,和Ground Truth求L1誤差,進行反向傳播。

PUF:GeoNet融合上採樣(PU-Net)

  1. 確定好採樣點的鄰域後,除了直接輸入每個點的座標,也輸入它們和採樣點之間的測地距離。注意到這裏的測地距離並不是已經求出得到的,而是GeoNet這個網絡結構,因此我們在訓練PU-Net的過程中,也同時在訓練GeoNet,而非分開成兩個階段。
  2. 因此損失函數由兩部分組成,GeoNet的L1測地距離損失,和原來PU-Net的損失。

POF:GeoNet融合法向估計與表面網格生成(PointNet++)

  1. 由GeoNet得到測地距離,選擇鄰域。和PUF相比,直接去掉了歐氏距離近而測地距離遠的點。(但我不知道在end-to-end訓練過程中怎麼做到這一點)
  2. 將GeoNet最後倒數第二個FC層的參數,作爲點的特徵輸入到PointNet++中。
  3. 將融合後的特徵用PointNet++的方式估計法向。
  4. 損失函數由GeoNet的L1測地距離損失,和原來PointNet++的L1法向估計損失兩部分組成。
  5. 由法向進行泊松重建,得到表面網格。

疑問

  • GeoNet融合網絡似乎都是end-to-end的,爲何不先訓完GeoNet,再將結果給到PU-Net或者PointNet++?另外,在GeoNet未算出來的時候,如何依賴測地距離得到鄰域?
  • PUF和POF在圖示上都有兩個分支,但從文本描述上它們應該融合在一起?

相關的思考

  • 這篇paper非常直觀非常有用。平時得到鄰域時,確實會有測地距離很大的情況,帶來很大的誤差。如果它被避免(即使是部分避免),也會取得很大的進步。它應該可以和很多點雲的方法做融合。
  • 期待這篇paper的代碼開源。

參考文獻

He, Tong, et al. “GeoNet: Deep Geodesic Networks for Point Cloud Analysis.” arXiv preprint arXiv:1901.00680 (2019).

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