Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Deep 3D Reconstruction / Completion

7bbb6e8cd78042f30a37c29771002d2a?s=47 neno
June 04, 2021

Deep 3D Reconstruction / Completion

深層学習ベースの3D Reconstruction / Completionの手法およびデータセットの紹介。過去の有名どころから最新の手法まで。

データセット

NYU (ECCV 2012)
ShapeNet (arxiv only)
ModelNet (CVPR 2015)
SUN CG (CVPR 2017)
ScanNet (CVPR 2017)
Pix3D (CVPR 2018)
Scan2CAD (CVPR 2019 Oral)

手法

3D ShapeNets: A Deep Representation for Volumetric Shapes (CVPR 2015)
3D-R2N2 (ECCV 2016)
Semantic Scene Completion from a Single Depth Image (CVPR 2017)
Pixel2mesh (ECCV 2018)
Im2struct (CVPR 2018)
Occupancy Networks (CVPR 2019)
Mesh R-CNN (ICCV 2019)
PIFu (ICCV 2019)
RevealNet (CVPR 2020)
CoReNet (ECCV 2020)
RfD-Net (CVPR 2021)

7bbb6e8cd78042f30a37c29771002d2a?s=128

neno

June 04, 2021
Tweet

Transcript

  1. Deep 3D Reconstruction/Completion 2021/06/04 何縫ねの。

  2. 自己紹介 1 • 電気通信大学大学院 修士2年 • 研究テーマ : 食事の3次元復元 などなど。

    • 好き: ドール, 一眼レフ, C# 何縫ねの。 Hungry networks: 3D mesh reconstruction of a dish and a plate from a single dish image for estimating food volume (ACM MM Asia 2020) https://dl.acm.org/doi/10.1145/3444685.3446275 とかやってます。 GitHub: github.com/nenoNaninu blog : blog.neno.dev
  3. 目次 2 • タスク • Object reconstruction/completion • Semantic Scene

    completion • Semantic instance completion • 指標 • IoU/Chamfer distance/AP/mAP • データセット • NYU (ECCV 2012) • ShapeNet (arxiv only) • ModelNet (CVPR 2015) • SUN CG (CVPR 2017) • ScanNet (CVPR 2017) • Pix3D (CVPR 2018) • Scan2CAD (CVPR 2019 Oral) • 手法 • 3D ShapeNets: A Deep Representation for Volumetric Shapes (CVPR 2015) • 3D-R2N2 (ECCV 2016) • Semantic Scene Completion from a Single Depth Image (CVPR 2017) • Pixel2mesh (ECCV 2018) • Im2struct (CVPR 2018) • Occupancy Networks (CVPR 2019) • Mesh R-CNN (ICCV 2019) • PIFu (ICCV 2019) • RevealNet (CVPR 2020) • CoReNet (ECCV 2020) • RfD-Net (CVPR 2021)
  4. タスク/指標 3

  5. Object reconstruction/completion 4 • 物体の三次元再構成。 • 0から復元する手法/不完全なスキャンや欠損のある物体の穴埋めする手法が存在。 • 入力はRGB/RGB-D/Depth/voxel/point cloudなどいろいろ。

    • 手法の大まかな分類。 • volumetric space (三次元空間上の場)の 何某かを予測するもの。 • differentiable renderingを用いるもの。 • Mesh templateを用いるもの。 • オブジェクトのクラスは分類したり しなかったり。 [16]から引用
  6. Semantic Scene completion 5 • シーンの三次元再構成。 • シーン内の物体はもちろん、壁や床なども。 • 入力はRGB/RGB-D、もしくは複数のRGB-DをFusionしたもの

    が多い。 • Object completionと違って クラス分類は必須。 • 出力はだいたいボクセル。 • Retrievalやalignmentなどが 結構身近なところにある。 [5]から引用
  7. Semantic instance completion 6 • Semantic Scene completionはインスタンスは区別しない。 • Semantic

    instance completionはインスタンスレベルで認識。 • オブジェクトの向きなども推論したりする。 [17]から引用
  8. 指標 7 • Volumetric IoU • 3D objectの重なり具合。 • 2DのIoUのそのままんま3次元版。

    • Chamfer distance • 一方のobjectの表面からもう一方のmeshの表面までの最短距離の平均。 • 距離、と言っているわりに計算方法の都合上、 object表面AからBとBからAで値が一致しなかったりする。 • AP/mAP • 良くある他のタスクと同じ。
  9. データセット 8

  10. NYU (ECCV 2012) [1] 9 • アノテーション付き1449枚のRGB-D屋内画像。 • ピクセルレベルのオブジェクトレベルのクラスアノテーション。 •

    [R i , R j , type]という形でsupport もアノテーションされている。 • R i がサポートされているオブジェクト • R j がサポートしているオブジェクト • typeがサポートのされ方:below(e.g. cup on table), behind(e.g. picture on a wall) • https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html [1]から引用
  11. ShapeNet (arxiv 2015) [2] 10 • https://shapenet.org/ • 大量のラベル付きCADモデル。 •

    デファクトスタンダード。Object completionの場合はだいたいコレ。 • ベンチには3D-R2N2でvolumetric/renderingしたものが良く 使われる。 [2]から引用
  12. ModelNet (CVPR 2015) [3] 11 • https://3dshapenets.cs.princeton.edu/ • 3D ShapeNets(CVPR

    2015)の論文で発表されたデータセット。 • あんまり使われている印象がない。 [3]から引用 [3]から引用
  13. SUNCG (CVPR 2017) [4] 12 • Semantic Scene Completion from

    a Single Depth Imageのために構築 された屋内CGデータセット。 • ひと昔前の論文ではよく使用されているものの、公開停止されている。 [4]から引用
  14. ScanNet (CVPR 2017) [5] 13 • RGB-Dを撮影して、Fusionすることで屋内の三次元形状データ セットを作成。 • インスタンスレベルでクラスがアノテーションされている。

    • ごく一部にはCADのアライメントのアノテーション。 • https://youtu.be/Olx4OnoZWQQ&t=45s [5]から引用
  15. Pix3D (CVPR 2018) [6] 14 • 3Dモデルとそれが写っている実写の画像のデータセット。 • 画像と3Dモデル間には姿勢等がアノテーションされているため、 ピクセルレベルの位置合わせが可能。

    • IKEA objects(というデータセット)も使われている。 • http://pix3d.csail.mit.edu/ [6]から引用
  16. Scan2CAD (CVPR 2019 Oral) [7] 15 • ScanNetのシーンデータセット中の家具領域にShapeNetの CADモデルを手動でalignしたデータセット。 •

    シーン内のモデルとCADモデルは完全に一致してはいない。 • depthの表面だけではないのでcompletion系にも使われたり。 • https://youtu.be/PiHSYpgLTfA&t=59s [7]から引用
  17. 手法/ネットワーク 16

  18. 3D ShapeNets: A Deep Representation for Volumetric Shapes (CVPR 2015)[3]

    17 • Task: 深度画像からのcompletion, recognition • Convolutional Deep Belief Networkを使用。 • 損失関数じゃなくてエネルギー関数が登場する。 • 深度画像から表面、見えてない領域、空っぽの領域で ある事を示すvolumetric grid表現を生成。 • このあたりは今でも通じる所がある。 • 引用数: 2646 [3]から引用 [3]から引用
  19. 3D-R2N2 (ECCV 2016) [8] 18 • Task: object completion •

    初のDeep Conv Netを使った、object completionを行う研究。 • RNNベース。 • 1枚以上の画像を入力にとり、精度向上を図る。 • 最終的な出力はvoxel occupancy map • 引用数: 897 [8]から引用
  20. 3D-R2N2 (ECCV 2016) [8] 19 • 2D Convで得られた特徴量は各セルに入力される。 • 3D-LSTMは各セルの数だけ存在する。

    • つまり、解像度がN3の場合、N3個の3D-LSTMが存在する。 • ロスはvoxel-wise cross entropy • 実質binary cross entropy [8]から引用
  21. Semantic Scene Completion from a Single Depth Image (CVPR 2017)

    [4] 20 • Task: Semantic Scene completion • 入力: 深度画像のみ。 • 出力: ボクセル。 • Occupancy + semantic labels • Semantic Scene completionを行った 最初の研究。 • 学習のためにSUNCGデータセットを作成。 • 公開停止に。 • 引用数: 696 [4]から引用
  22. Semantic Scene Completion from a Single Depth Image (CVPR 2017)

    [4] 21 深度画像を 3D volumeに エンコードしてから入力 Camera view frustum内の Occupancy, class probability を推論 RGBは使わない。 [4]から引用
  23. Semantic Scene Completion from a Single Depth Image (CVPR 2017)

    [4] 22 • depthのエンコードもただ単にTSDFを使うだけではない。 • Flipped TSDFの提案。 • 値の変化が物体表面だけで起こるように工夫。勾配的にはこっちのほ うが良いでしょう。 [4]から引用
  24. Semantic Scene Completion from a Single Depth Image (CVPR 2017)

    [4] 23 • dilation-based 3D Convを使って受容野を拡大し、より多くの コンテキストを拾えるようにすることで精度を向上させる。 [4]から引用
  25. Pixel2mesh (ECCV 2018) [9] 24 • Task: object completion •

    入力: RGB画像, カメラパラメータ • GCNを使って、Mesh templateの頂点位置を移動させる事で 再構成を行う。 • Meshはエッジとノードから成るので実質グラフ。 • ノードの数を増やしてmeshとしての解像度を高める。 • 引用数: 460 [9]から引用
  26. Pixel2mesh (ECCV 2018) [9] 25 • 頂点の位置に対応した画像の特徴量と、前のレイヤーのグラフ の頂点の位置と特徴量を使って変形。 • 頂点と画像の位置合わせにカメラパラメータが必要。

    Image featureから poolingしてきたもの 前のレイヤからの ノードの座標 前のレイヤの ノードの特徴量 ノードに対応する画像の 座標から特徴量をpool [9]から引用
  27. Pixel2mesh (ECCV 2018) [9] 26 • グラフの解像度の上げ方。(Graph Unpooling) • エッジの途中に新しいノードを作成。

    • 新しく作成したノードどうしをエッジで接続する。 [9]から引用
  28. Im2struct (CVPR 2018) [10] 27 • Task: 単一画像からの3Dの構造の復元。 • 3Dの構造物を立方体の組み合わせで表現。

    • 階層構造になった表現で復元されるため、パーツ間の関係が分かる。 • 階層的に復元する部分はGRASS (SIGGRAPH 2017) という研究がベース • RvNNと呼ばれるデコーダ部分の基本的な作りは同じ。 • この研究はエンコーダ部分を画像用に挿げ替えた感じ。 • 引用数 53 失敗例 [10]から引用
  29. Im2struct (CVPR 2018) [10] 28 マスクを推論することで 構造を理解しやすくなる Domain-adaptationが しやすくなる効果も。 全体の特徴量と

    細かな特徴を別々に抽出。 RvNNを使って、画像から抽出された特徴量から 再帰的に階層構造のグラフを作成 ネットワーク [10]から引用
  30. Im2struct (CVPR 2018) [10] 29 [11]から引用 階層的な構造を推論。 構造の接続、対称性などが 考慮されている。 ベースになってるGRASS[11]のお話。

    GRASSの引用数: 160 [11]から引用
  31. Im2struct (CVPR 2018) [10] 30 RvNNの構造 Boxのパラメータ。 これだけ葉 次のノードに伝播する特徴量と 対称性を示すパラメータ

    [11]から引用 となりあう要素 それぞれの特徴量 葉にたどり着くまで 再帰的に推論 [10]から引用
  32. Occupancy Networks (CVPR 2019) [12] 31 • Task: object completion

    • 入力: RGB/point cloud/voxel • Latent spaceに落とし込めればOK。 • 今まで3D Convでvoxelのような離散化した形でoccupancyを 推論していたが、この研究では実数値(連続)を入力に occupancyを推論。 • 引用数: 430 連続的 実質2値分類 離散的 Occupancy flow(ICCV 2019), Convolutional Occupancy Networks (ECCV2020 spotlight) などいろいろやってるグループ。 [12]から引用
  33. Occupancy Networks (CVPR 2019) [12] 32 • ネットワークは極めてシンプルなencoder decoderモデル。 観測値

    (要するに画像等) 観測と三次元の座標から Occupancyを推論 0: オブジェクトの外側 1: オブジェクトの内側
  34. Occupancy Networks (CVPR 2019) [12] 33 • 連続的なvolumetric spaceからどうやって3D objectを取り出

    すか。 • 閾値に従って境界面を見つけていく。 • 最終的にはMarching Cube 一番最初は粗い解像度 赤い点は閾値以上 (つまり物体の内側) 赤い点と緑の点の間に 境界面があると分かる オブジェクトの境界面の 解像度のみを高めて再度推論 新たな境界面が判明… というのをN回やる。 最終的に高い解像度での 境界面が得られる。 [12]から引用
  35. Occupancy Networks (CVPR 2019) [12] 34 • パラメータ数と精度 精度もさる事ながら、 パラメータ数が解像度に

    影響されないので素敵 3D Convでボクセルを出力する場合 普通パラメータ数が爆発する [12]から引用
  36. Occupancy Networks (CVPR 2019) [12] 35 • 生成結果。 • 素敵。

    [12]から引用
  37. Mesh R-CNN (ICCV 2019) [13] 36 • Task: Object completion

    + Detection • 入力: RGB/camera intrinsic • リアル画像に適用していい感じの精度が得られている。 • 今までの研究はShapeNetなどの単体オブジェクトの合成画像 • Mesh R-CNNはPix3Dでも実験。 • 動的にMesh Templateを作成、 それをPixel2Meshと同様にGCNに通し、 詳細なMeshを生成。 • 引用数: 130 [13]から引用
  38. Mesh R-CNN (ICCV 2019) [13] 37 動的にMesh templateを生成 Pixel2Mesh同様 GCNで頂点位置をrefine

    Pixel2Mesh同様 Meshの頂点位置に対応する 画像の特徴量を活用 Pixel2Meshを知っていれば理解は簡単。 [13]から引用
  39. Mesh R-CNN (ICCV 2019) [13] 38 • Triangle meshでlossを取るのは難しいので、Mesh表面から点 群をサンプリングしてロスを取る。

    Mesh Loss 2つの点群から最小距離の 点のペアの集合を定義 Chamfer-distanceの損失項 法線の損失項 エッジの損失項 これが面白い
  40. Mesh R-CNN (ICCV 2019) [13] 39 • エッジ損失を加える事でself-intersectionがだいぶ防げる。 • 最高精度出すにはエッジ損失

    は邪魔。だけどアプリとかに 使うにはbestじゃなくて prettyの方が良い。 [13]から引用
  41. Mesh R-CNN (ICCV 2019) [13] 40 • 生成結果 [13]から引用

  42. PIFu (ICCV 2019) [14] 41 • Task: 人型限定のcompletion. • PIFuHDとかHuman

    Digitization系で続編(?)がいろいろある。 • http://www-scf.usc.edu/~saitos/ • 手法は別に人型に限定したものではない(Skelton必要としたりしない) • 一枚の画像から3D surfaceとtexture(頂点カラー)の両方を推論。 • Occupancy Networksと同様の陰関数表現。 • meshの抽出とかは概ね同じ。概ね。 • 複数画像の入力にシンプルに対応。 • 引用数: 236 [14]から引用
  43. PIFu (ICCV 2019) [14] 42 三次元上の点Xに対応する xを計算 • Globalな特徴ではなく、ピクセルレベルで一致するところから 特徴量を拾ってくる。

    xに対応する特徴量をから occupancyとRGBを推論 [14]から引用
  44. PIFu (ICCV 2019) [14] 43 • 複数画像の入力に対するアプローチ • 同じ三次元位置Xに対応する特徴量を 拾ってきて、average

    poolingする。 • average poolingしたものからRGBと occupancyを推論 [14]から引用
  45. PIFu (ICCV 2019) [14] 44 • 生成結果 [14]から引用

  46. PIFu (ICCV 2019) [14] 45 • 複数入力していくと精度が良くなる。 [14]から引用

  47. RevealNet(CVPR 2020) [15] 46 • Task: semantic instance completion •

    入力: RGB-D/ RGB-DをFusionしたもの • Completionを同時に学習する事でdetectionの精度を超える。 • 引用数: 8 • 3D-SISは146 3D-SIS(CVPR2019 oral)と同じ著者。 [15]から引用
  48. RevealNet(CVPR 2020) [15] 47 1. RGB-Dを入力 2. object bounding boxesの回帰

    3. クラス分類 4. complete object geometryの推論 おおよその処理の流れ。 [15]から引用
  49. RevealNet(CVPR 2020) [15] 48 おおよその処理の流れ。 DepthはTSDFにエンコード RGBは2D convで特徴量を 抽出した後、back-projectで 3D

    volume gridに射影 anchor baseの物体検出 2回のRPNはそれぞれAnchorの サイズが違う。 検出されたbboxの領域から クラス分類 要するに各グリッドに 対応するピクセルを カメラ行列を用いて計算。 微分可能 Cropした領域のボクセル単位の occupancyを推論。 Geometry全体のloss [15]から引用
  50. RevealNet(CVPR 2020) 49 • Scan2CADで学習 した結果。 [15]から引用

  51. CoReNet(ECCV 2020) [16] 50 • Task: object completion • 入力:

    RGB画像, camera intrinsic • One stageで複数オブジェクトの再構成を達成。 • 既存の研究では単一オブジェクトを オブジェクト座標系で復元していた。 • CoReNetではRoI Poolingなど無しに 相対位置を保持したまま復元。 • OccNetなどの良さと3D Convの 良さがいい感じに融合してる。 • 引用数: 4 [16]から引用
  52. CoReNet(ECCV 2020) [16] 51 • たとえば最終的なボクセルの出力が1283とした場合、 ネットワークの出力は643でも、offsetをconditionとして入れ て8回推論することで最終的な1283のボクセルを得る。 各セルの出力はVoidを含む クラス確率

    極めて分かりずらい図だと思いますが…。 [16]から引用
  53. CoReNet(ECCV 2020) [16] 52 Ray traced skip connections • いままで3D->2Dの逆変換をエンコーダに頼っていた。

    • 3D->2Dの逆変換は定式化されている • その知識をネットワークに利用。 発想はPixel2MeshやPIFuと ほとんど同じ。 (だと勝手に思っている) [16]から引用
  54. CoReNet(ECCV 2020) [16] 53 IoU training loss • Voxel-wiseにクロスエントロピーなどを取らず、IoUをロスと して使ってしまえ、というアイディア。

    • 実際精度に多少貢献している。
  55. CoReNet(ECCV 2020) [16] 54 • 結果 • 複数オブジェクトの相対位置を保持したまま復元できている事が確認 できる。 [16]から引用

  56. CoReNet(ECCV 2020) [16] 55 • リアルなデータセットであるPix3Dでも良さげな生成結果が。 [16]から引用

  57. RfD-Net (CVPR 2021) [17] 56 • Task: semantic instance completion

    • 入力: point cloud • 既存の研究ではdepthやpoint cloudをTSDFなどのvolumeに 変換してから3D Convをしていた。 • 点群を直接扱う。ボクセル化しない。 Total3DUnderstanding(CVPR2020 oral)と同じ著者。 Total3DUnderstandingと比較するとだいぶスッキリな手法 [17]から引用
  58. RfD-Net (CVPR 2021) [17] 57 VoteNet(CVPR2020) ベースの検出器 ネットワーク 最終的な出力は Occupancy

    学習時は検出した オブジェクトの 上位いくつかだけを ピックアップ。 領域内の点群の Alignment/正規化 推論時は 3D NMS [17]から引用
  59. RfD-Net (CVPR 2021) [17] 58 Shape Generation M p はクラスタ内の点の数

    D p は特徴量の次元 N d はobject proposalの数 背景とかの余計な 情報を削ぐ Occupancy Networks とほぼ同じ。 検出器で得られたproposal毎の 特徴量をskip connectionで伝播 [17]から引用
  60. RfD-Net (CVPR 2021) 59 • Scan2CADでの結果。 • https://youtu.be/RHHFC2UaZtQ [17]から引用

  61. References 60 • [1] N. Silberman, D. Hoiem, P. Kohli,

    and R. Fergus, “Indoor segmen-tation and support inference from rgbd images,” Proc. of EuropeanConference on Computer Vision, 2012. • [2] A.X. Chang, F. T., L. Guibas, P. Hanrahan, Q. Huang, Z. Li,S. Savarese, M. Savva, S. Song, H. Su, J. Xiao, L. Yi, and F. Yu,“Shapenet: An information- rich 3d model repository,” 2015. • [3] Z. Wu, S. Song, A. Khosla, F. Yu, L. Zhang, X. Tang, and J. Xiao, “3D ShapeNets: A deep representation for volumetric shapes,” Proc.of IEEE Computer Vision and Pattern Recognition, 2015 • [4] S. Song, F. Yu, A. Zeng, A.X. Chang, M. Savva, and T. Funkhouser,“Semantic scene completion from a single depth image,” Proc. ofIEEE Computer Vision and Pattern Recognition, 2017 • [5] A. Dai, A.X. Chang, M. Savva, M. Halber, T. Funkhouser, andM. Niessner, “Scannet: Richly-annotated 3d reconstructions of in-door scenes,” Proc. of IEEE Computer Vision and Pattern Recogni-tion, 2017 • [6] S. Xingyuan, W. Jiajun, Z. Xiuming, Z. Zhoutong, Z. Chengkai,X. Tianfan, J.B. Tenenbaum, and W.T. Freeman, “Pix3d: Datasetand methods for single-image 3d shape modeling,” Proc. of IEEEComputer Vision and Pattern Recognition, 2018 • [7] A. Avetisyan, M. Dahnert, A. Dai, M. Savva, A.X. Chang, andM. Niessner, “Scan2cad: Learning cad model alignment in rgb-dscans,” Proc. of IEEE Computer Vision and Pattern Recognition,2019. • [8] C.B. Choy, D. Xu, J. Gwak, K. Chen, and S. Savarese, “3D-R2N2: Aunified approach for single and multi-view 3d object reconstruction,”Proc. of European Conference on Computer Vision, 2016 • [9] N. Wang, Y. Zhang, Z. Li, Y. Fu, W. Liu, and Y.G. Jiang,“Pixel2mesh: Generating 3d mesh models from single rgb images,”Proc. of European Conference on Computer Vision, pp.52–67, 2018. • [10] C. Niu, J. Li, and K. Xu, “Im2struct: Recovering 3d shape structurefrom a single rgb image,” Proc. of IEEE Computer Vision and PatternRecognition, 2018. • [11] J. Li, K. Xu, S. Chaudhuri, E. Yumer, H. Zhang, and L. Guibas,“Grass: Generative recursive autoencoders for shape structures,”ACM Transactions on Graphics (Proc. of SIGGRAPH), 2017 • [12] L. Mescheder, M. Oechsle, M. Niemeyer, S. Nowozin, and A. Geiger,“Occupancy Networks: Learning 3d reconstruction in functionspace,” Proc. of IEEE Computer Vision and Pattern Recognition,pp.4460–4470, 2019. • [13] G. Gkioxari, J. Malik, and J. Johnson, “Mesh R-CNN,” Proc. of IEEEInternational Conference on Computer Vision, pp.9785–9795, 2019 • [14] S. Saito, Z. Huang, R. Natsume, S. Morishima, A. Kanazawa, andH. Li, “PIFu: Pixel-aligned implicit function for high-resolutionclothed human digitization,” Proc. of IEEE International Conferenceon Computer Vision, 2019 • [15] J. Hou, A. Dai, and M. Nießner, “Revealnet: Seeing behind ob-jects in rgb-d scans,” Proc. of IEEE Computer Vision and PatternRecognition, 2020 • [16] S. Popov, P. Bauszat, and F. V., “Corenet: Coherent 3d scene recon-struction from a single rgb image,” Proc. of European Conference onComputer Vision, 2020 • [17] Y. Nie, J. Hou, X. Han, and M. Niessner, “Rfd-net: Point sceneunderstanding by semantic instance reconstruction,” Proc. of IEEEComputer Vision and Pattern Recognition, 2021.