[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images

292 Views

October 12, 18

スライド概要

2018/10/12
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images PSI B3 近藤生也

2.

余談 - - https://www.crowdai.org/c hallenges/marlo2018/leaderboards エントリーまだ受付中だ そう

3.

アジェンダ ● ● ● ● ● ● ● ● ● ● ● ● 書誌情報 モチベーション データセット 既存手法 GCN コンセプト Mesh deformation (graph based ResNet) Graph unpooling loss4種 評価指標 実験 所感 3

4.

書誌情報 ● Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images (ECCV2018) ←ヨーロッパのCV系 ● Fudan University(中国), Princeton University(米), Intel Labs ● ポイント ○ 単一画像から3Dメッシュを復元する。 ○ 定量定性的にかなりよさそう 4

5.

モチベーション ● 単一の視点から3D形状を推論したい ● ボクセルでもポイントクラウドでもなく、メッシュで。 ● メッシュだと、テクスチャを貼りやすい レイトレーシングもしやすい。 テクスチャ 5

6.

モチベーション (メッシュ系って実際何 に使うんだよ……) ● 個人的にはこれを→ one-shotでやりたいの だと思う(やりたい) ● 仮想空間, オブジェク トを作成するコスト を(劇的に?)下げる, 3D情報を(明示的に)理 解した上でactionを考 える ↑ Google mapの3D機能。 恐らくSLAMをベースにした手法で3Dを復元し、 テクスチャを貼り付けている 6

7.

データセット ● ShapeNet ● WordNetの構造に従っている ● 数が凄い ● (使わない手はない) 7

8.

既存手法 ● [DL輪読会]MeshとDeep Learning Surface Networks & AtlasNet ● AtlasNetはsurfaceを分けて生成。枚数はハイパラ。 ● Surface Networksは変形に強い(?)。ShapeNet等で実験をしていない。 どちらかというとsiggraph系(CG系)な気がする(?)。 ● これらとは違うアプローチを提案 8

9.

コンセプト ● GCNベース(メッシュの頂点と辺が、グラフの頂点と辺に対応) ● 徐々に頂点数を増やす(点: 156→618→2466, 面: 308→1232→4928) ○ ~~MH3Gのリオレウスのポリゴン数が約6500~~ ● GCNとは別にCNNを用意し、入力画像から情報を抽出する。 9

10.

GCN ● GCN一層の処理 fp^l: あるレイヤーでの、ノードpの特徴量ベクトル N(p): pの隣接頂点の集合, m次元→n次元と特徴量数が変化する場合、w0, w1はm*n行列 どの隣接頂点に対して使うw1も共通。 (ほとんど全結合で、自分自身と隣接してるノードの特徴量で次の層が決まる) ● https://colab.research.google.com/drive/1O4SiC5wEZn_98RSdalNJ92fJu1yo chJe#scrollTo=O8lpjeHictaG ● GCN実装の本家様のkerasサンプルコードをさらにシンプルにしてコメント を付けてみました。 10

11.

Pixel2Mesh ● ● ● ● ● ● 入力:156個の頂点座標 ⊕各頂点に対するCNNからの特徴量 →Mesh Deformation(GCN) →Graph Unpooling(頂点増やす) ⊕各頂点に対するCNNからの特徴量 →Mesh Deformation(GCN) : : ● →Mesh Deformation(GCN) ● →GCN ● 出力:2466個の頂点座標 11

12.

Mesh deformation (graph based ResNet) ● ● CNNの3箇所のfeature mapから、入力画像に頂点を投影した場所の特徴量を とってきて、各頂点の特徴量とする。 ● GCN部分では残差接続を使う。 12

13.

Graph unpooling ● NN的にはUpsamplingと同じノリで、点の数を増やす。 ● 各面の中心ではなく辺上に点を増やすことで、均一な密度で点を増やせる × ○ 13

14.

Loss1: Chamfer loss (面取りloss) p: predicted vertex, q: ground truth vertex (ユークリッドノルム) ● 一番近い頂点が正しいペアだと仮定して、二乗誤差をとる。 ● 片方のΣだけだと、lossに登場しないpまたはqが出現しうる! 14

15.

Loss2: Normal loss (法線loss) 各予測頂点pとすべての隣接頂点kについて、『線分pk』と『点qでの接平面 の垂線』との内積をとる。 ● これは、点qでの接平面上に点pとその隣接頂点が全て存在したときに 0に なる。 15

16.

Loss3: Laplacian regularization (ラプラシアンで正規化) ● ラプラシアンδpを定義 δp=「予測頂点p(x,y,z)」と「その隣接頂点の平均」の差 (dx,dy,dz) ● Mesh Deformationの前と後のラプラシアンをδp, δ’p。 ● 隣接頂点との関係性が、G-Resの前と後であまり 変わらないようにする。 ● 特異点みたいな頂点が生成されにくくなる 16

17.

Loss4: Edge length regularization (辺の長さで正規化) ● すべての予測頂点pとその隣接頂点kの組み合わせについて、 距離の和をとる。 ● 形の収束が安定しやすくなる。 17

18.

実験 ● それぞれのlossがいい仕事をして いる。 18

19.

実験 ● SOTA 19

20.

feature work ● 初期入力メッシュと目標物のトポ ロジーが違う場合、この手法は最 適ではないので拡張していきたい 20

21.

所感 ● 暗黙的に3Dを学習する手法が流行ってる気がするけど、明示的に3Dを作れ るほうが強い気がする…? ● いろいろlossを設計していたが、mesh系のGANが出たらあっさりSOTAだっ たりするのでは? 21

22.

参考 ● GCN本家 https://arxiv.org/pdf/1609.02907.pdf 22