【DL輪読会】Monocular real time volumetric performance capture

>100 Views

March 26, 21

スライド概要

2021/03/26
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

Monocular Real-Time Volumetric Performance Capture Naruya Kondo (もうすぐM1) 1

2.

https://twitter.com/shiropen2/status/1374239206415822848 https://twitter.com/r_natsume/status/1232870844738633728 2

4.

Monocular Real-Time Volumetric Performance Capture • • • • ECCV 2020, SIGGRAPH 2020 real-time live best in show award 著者:Ruilong Li, Yuliang Xiu, Shunsuke Saito, Zeng Huang, Kyle Olszewski, Hao Li 機関:University of Southern California, Pinscreen スポンサー:DARPA, Adobe, Sony… • モチベーション – 「VRがあるのにビデオ会議が盛んなの、時代錯誤のはずだよね。」 ⇨もっとリアルアバターを便利にしよう • ひとことで言うと – PIFuをリアルタイムに動かせるようにした (450倍高速化 (まじか)) 4

5.

PIFu 5

6.

PIFu (ICCV 2019) 6

7.

PIFu • 単眼のRGB画像から3Dモデルを高精度で生成 • ポイント – 陰関数で形を表現(予測)している • Voxelは高解像度無理。推論時にテンプレの形を仮定するとディティールが死ぬ。 – データセットの作り方が賢い (力技感はある) 7

8.

Mesh推定系 / テクスチャ推定系 8

9.

PIFu • 2つのPIFuモジュール(SurfaceとTexture)からなる。 9

10.

データセット • https://renderpeople.com/jp/free-3d-people/ – ⇧すごいリアルな人間モデル+アニメーション • 466体 • yaw軸周りに10度ずつ回転。 – 各角度で、 • ①画像 • ②回転された座標軸での3Dモデル – を学習に使う • 一度学習すれば だれでも使える! 10

11.

Train時 • 画像から、空間の各座標の in/out と rgb を推定 – CNN(後述)で特徴抽出、z値とconcatしてMLP(後述)で出力 512 128x128x256 512 x,y,z 512 256 x,y 11

12.

Loss • Surface PIFu の loss – Fv, Fc: CNN – fv*(Xi): 真のin/out (0/1) – C(Xi): 真のrgb • Texture PIFu の loss – Surfaceを単体で学習後、固定してTextureを追加で学習 • Surface側から特徴量をconcatしてくる – 陰関数的には、fv == 0.5 が境界面 • 実際には0/1バイナリ化されて、Marching Cube 法で境界を見つけてつないでいく 12

13.

Test時 • ① 全格子点で in/out を予測 • ② inの点群からメッシュを生成 (Marching Cube 法) • ③ メッシュ上の点のみrgbを予測し、頂点に色を付ける 512x512x256 512 256 512 x,y,z 512 x,y 13

14.

Marching Cubes Algorithm • 点群(今回の場合内側だと判定した点群)を適切につないでメッシュを作る方法 – (メッシュは3Dモデルの一般的な表現) • 3D格子上に並んだ点は、局所的には8つのパターンしかない。 • ⇨ それぞれのパターンで、点を内側に内包するように面を引く 14

15.

PIFuHD • CVPR 2020 (Oral) • 解説記事 – https://qiita.com/masataka46/items/d717a9d57eaa44ea197d • ポイント – Front-to-Back inference • Pix2Pixで正面と背面の面法線(表面の向き)を先に予測する – Multi-level PIFu • ネットワークサイズの大きいCNNとMLPを追加で用意してrefineする 15

16.

PIFuHD • Front-to-Back inference – Pix2Pixで正面と背面の面法線を先に予測する • Multi-level PIFu – ネットワークサイズの大きいCNNとMLPを追加で用意してrefineする 16

17.

本題の PIFu (Enhanced PIFu?) 17

19.

Real Avatar 一派 • Google (Facebookも) – しっかり不気味の谷感 – https://www.youtube.com/watch?v=anBRroZWfzI • ⇨ 単眼RGBでreal-time real avatarを実現する 19

20.

Enhanced PIFu • PIFuからの改善点 (for 高速化) – Efficient Surface Localization – Direct Rendering – Online Hard Example Mining – ネットワーク周りの工夫 • その他ポイント – 各フレームは独立して処理 • 動画としては扱っていない • 誤差の蓄積を避けたいよね、初期情報に頼るのはよくないよね 20

21.

Efficient Surface Localization • 512x512x512全点でSurface (in/out) を評価するのは大変 (ボトルネックだった) • Octree法(改)で、サンプリング 数を劇的に減らす 一様で疎なサンプリング 境界付近を 重点サンプリング 21

22.

Efficient Surface Localization 点線は境界の正解 一様で疎なサンプリング、 評価 バイナリ化した点 境界の候補点 (次に評価される ) 赤を実際に評価してバイナリ化 調べた結果結果が裏返った点 補完した点 まだ調べてない候補点 のうち、結 果が変わった点の周辺の点 (次に評価される ) 補完の結果 O > 0 の点と、 その1マス周辺の0が候補になる 22

23.

Efficient Surface Localization • 全点でメッシュを推定した結果と同じ精度のまま、180倍の高速化を達成 – OursはOctree改 ⇧ Octree比で36%オフ baselineの点 and Octreeの点 / baselineの点 or Octreeの点 ⇨ 23

24.

Direct Rendering • さようならMesh – ある方向から見える場所のみ色を推定。(meshでなく)画像として扱う 24

25.

Direct Rendering • (視点に合わせて点群を回転) • 最初に1が現れた点のみ色を評価 – 他の表面の点は無視 25

26.

Online Hard Example Mining • データの偏りをどうするか – ⇨ Data Augmentation ✖ • domain知識が必要&他のdomainで使えなくなる – ⇨ Online Hard Example Mining • 各データのサンプリング確率を動的に変える 0.15 10.0 – Surfaceでのサンプル確率 ~ ⇦ 4096点でIoUを評価 – Textureでのサンプル確率 ~ 0.7 • IoU が0だとexp(10) ≈ 22000 , IoUが1だとexp(3.4) ≈ 30 0.0 26

27.

ネットワーク周り • HRNet (Encoderの工夫) • Soft Z (z座標の与え方の工夫) 27

28.

HRNet(V2) • 岡田さんの輪読会資料が詳しかったです – https://www.slideshare.net/DeepLearningJP2016/dldeep-highresolution-repres entation-learning-for-human-pose-estimation • segmentation, pose estimation系でSoTA出せるモジュール • 実装はPyTorch (MIT License) 28

29.

HRNet(V2) • もともとのPIFuではhourglassを使っていた 29

30.

Soft Z • Depth Regression の先行研究を参考に – Deep Ordinal Regression Network for Monocular Depth Estimation (CVPR 2018) – 回帰と分類の間くらいの表現が良いらしい(?) • 0~255のスカラーをN次元のベクトルに変える – (0 < z < 255 ⇨) -1 < Pz < 1 ⇨ 0 < P’z < 1 • z = 192 ⇨ P’z = 0.75 ⇨ - 変なカッコは整数部分 N = 64 Z47 = 0.75 Z48 = 0.25 Zその他 = 0 30

31.

データセット (追加分) • PIFu の 466体 • 追加 – 167体 (ボーンあり) – 32アニメーション • 全部で 466 + 167 * 32 * 3 = 16196 シーン – (各アニメーションからランダムに3フレーム使う) 31

32.

結果 (Surfaceとfps) • Chamfer:点と(一番近い)点の距離 • P2S (point to surface):点と面の距離 • P, I: surface, color の ohem (online hard example mining) • ohemは “すごく悪い”を防いでいる 32

33.

limitation • まだぼやけてる • 複数人 • オクルージョン 33

34.

コードが公開されてる • https://github.com/Project-Splinter/MonoPort • (2GPU必要らしい) 34

35.

まとめ • PIFuがリアルタイムになったとは驚き • GAN系でもっとリアルになりそう? • 特定の人について事前学習しなくてよい方向性はどれくらい 伸びしろがあるのだろう…? 35