Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Occupancy Networks: Learning 3D Reconstruction in Function Space #90

Open
Yagami360 opened this issue Aug 15, 2020 · 0 comments
Open

Occupancy Networks: Learning 3D Reconstruction in Function Space #90

Yagami360 opened this issue Aug 15, 2020 · 0 comments

Comments

@Yagami360
Copy link
Owner

Yagami360 commented Aug 15, 2020

0. 論文情報・リンク

1. どんなもの?

  • 3D Reconstruction タスクにおいて、Occupancy Networks での分類境界面でメッシュ表面を暗黙的 [implicitly] に表現することで、メッシュ表面の詳細(細かな凹凸など)を3D再構築することを実現した 3D Reconstruction モデル

2. 先行研究と比べてどこがすごいの?

  • 近年の 3D Reconstruction モデルでは、DNN を採用したモデルが人気を博している。
    しかしながら、2D画像分野における DNN や生成モデルの大きな成功にも関わらず、3D分野では3D特有のデータ構造(ボクセル、点群、メッシュ)を DNN や生成モデルで3D再構築すると、計算効率や品質が不十分であるという問題が存在する。
    本手法では、Occupancy Networks での分類境界面でメッシュ表面を暗黙的 [implicitly] に表現することで、メッシュ表面の詳細(細かな凹凸など)を3D再構築することを実現し、3D再構築における品質や計算効率を向上させている。

3. 技術や手法の"キモ"はどこにある?

  • アーキテクチャの全体像

    上図は、Occupancy Networks の全体像を示した図である。
    Occupancy Networks は、入力された3D空間上のメッシュの各頂点に対して、分類境界面での分類確率を出力するネットワークであり、以下のように定式化される。

    encoder 部分のネットワークは、以下の図のように、3D再構築タスク(image-to-3D、点群推定、ボクセル推定)に応じて構成が変わる。
    Occupancy Networks の黄色枠には、この3D再構築タスクに応じた encoder からの出力 c∈Rc と T 個の3次元頂点座標が入力される。

  • Occupancy Networks の損失関数
    Occupancy Networks は、以下の式で定義された損失関数を最小化するように学習する。
    この損失関数は、対象メッシュの3Dバウンディングボックス内の点をランダムに K個サンプリングすることにより、計算される cross entropy 損失関数になっている。

    また、以下の KL ダイバージェンスの項が追加された損失関数を用れば、VAE のような probabilistic latent variable models の学習にも適用出来る。
    ※ この KL ダイバージェンス追加の損失関数は、Occupancy Networks の学習用の損失関数ではなく、別の VAE のようなモデル用の損失関数であるという理解でよい?

  • 推論処理

    本手法では、学習済み Occupancy Networks から、新しい観測点 x に対応する等平面 [isosurface](同じ値で構成される面)を抽出するために、上図のような Multiresolution IsoSurface Extraction (MISE) のアルゴリズムを導入している。
    ※ この等平面が Occupancy Networks での分離境界面に対応する?

    この MISE は、hierarchical isosurface extraction algorithm の一種で、octree(八分木)を繰り返し適用することで、空間内の全点をサンプリングすることなく、Occupancy Networks から高解像度のメッシュを構築することが可能となる。
    具体的には、以下のような処理を行う。

    1. 初期解像度で3D空間を分割し、分割した3D空間(=グリッド)内にある全てのメッシュ頂点 p に関して、学習済み Occupancy Networks で占有確率を推定する。
    2. 隣接する2つのグリッド点が、異なる占有確率になるような全てのボクセルを、活性化(上図赤点)してマークする。
      このボクセル点は、Marching Cubes algorithm を適用した場合に、メッシュと交差するボクセル点となっている。
    3. 活性化された全てのボクセル点を8つのサブボクセルに分割し、そのサブボクセル内で、学習済み Occupancy Networks で占有確率を推定する。
    4. これらの分割処理を目標解像度まで繰り返し、最後に Marching Cubes algorithm で近似等平面 [isosurface] を抽出する。
    5. 更に、Fast-Quadric-Mesh-Simplification algorithm でメッシュを単純化し、最後にメッシュの勾配情報に基づき、メッシュを refinement する。

4. どうやって有効だと検証した?

  • 既存の image-to-3D モデルとの定性比較検証

    既存の image-to-3D モデルと比較して、本手法では、最も品質の高いメッシュを3D再構築出来ている。

  • 既存の点群 3D Reconstruction モデルとの定量比較検証

    既存の点群 3D Reconstruction モデルと比較して、本手法では、最も高い品質スコアを実現している。

  • ボクセル高解像度化 [Voxel Super-Resolution] タスクでの定量検証

5. 議論はあるか?

  • 推論時の非 DNN での各種3Dメッシュ操作のためのアルゴリズム(Multiresolution IsoSurface Extraction, Marching Cubes algorithm, Fast-Quadric-Mesh-Simplification algorithm など)を用いたメッシュの高解像度化処理がよく理解できなかった。これらのアルゴリズムに関しての詳細は別途調べる必要がある
  • Deep Learning を用いた 3D 再構成手法全般に言えることだが、Deep Learning ・機械学習手法・3Dレンダリング以外での 3D CAD 的な知識(3Dメッシュ変形など)が必要となるケースが多く、その部分で理解が手こずる

6. 次に読むべき論文はあるか?

  • Multiresolution IsoSurface Extraction [MISE] :
  • Marching Cubes algorithm : 論文「Marching cubes: A high resolution 3D surface construction algorithm」
  • Fast-Quadric-Mesh-Simplification algorithm : 論文「Simplifying surfaces with color and texture using quadric error metrics」

7. 参考文献

  • xxx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant