Contenu connexe
Plus de Deep Learning JP (20)
[DL輪読会]Layered Neural Rendering for Retiming People in Video
- 1. DEEP LEARNING JP
[DL Seminar]
Layered Neural Rendering for Retiming People in Video
Hiromi Nakagawa ACES, Inc.
https://deeplearning.jp
- 6. 6
Person / Background Representation
• 各フレームに対しSMPL[Loper+ 15] モデルのUVマップを取得
• ナイーブにはDensePose[Guler+ 18]が利用可能だが 1)遮蔽部を推定できない 2)汎化性能が低く後処理も困難
• AlphaPose[Fang+ 17]等のKeypoint推定を経由してUVマップを出力するモデルを別データで学習し、利用
• PoseFlow[Xiu+ 18]によるトラッキングや線形補間も導入、それでも駄目なら手で修正(keypointなら容易)
1. 人物のUVマップを抽出し、
各レイヤーに割当
2. 学習可能なtexture map
からリサンプリング
3. Neural Rendererで
RGBA値にデコード
4. レイヤーを重ね合わせ、
元のフレームを再構成
UVマップのイメージ
Source | DensePose
- 7. 7
Learnable texture map
• Learnable texture map:学習可能なテクスチャマップ
– 関連研究[Thies+ 19]で利用されており、伝統的なRGB texture mapよりリッチな表現が可能
• SMPLで身体を24パーツに分割して表現 / 身体パーツごとに16x16ピクセル / 16チャンネルのマップ
– N人のtexture mapは 16 x 16 x 16 * (24N + 1) 次元で定義できる(+1は背景)
1. 人物のUVマップを抽出し、
各レイヤーに手動で割当
2. 学習可能なtexture map
からリサンプリング
3. Neural Rendererで
RGBA値にデコード
4. レイヤーを重ね合わせ、
元のフレームを再構成
- 8. 8
Neural Renderer
• Neural Renderer には pix2pix[Isola+ 17]の拡張版を利用
1. 人物のUVマップを抽出し、
各レイヤーに割当
2. 学習可能なtexture map
からリサンプリング
3. Neural Rendererで
RGBA値にデコード
4. レイヤーを重ね合わせ、
元のフレームを再構成
- 9. 9
Training
• Neural RendererとTexture mapのパラメータθを最適化:
– 入出力の再構成誤差:
– 透過マップと人物領域の誤差(学習初期のみ):
– 透過マップへのスパース正則化:
1. 人物のUVマップを抽出し、
各レイヤーに割当
2. 学習可能なtexture map
からリサンプリング
3. Neural Rendererで
RGBA値にデコード
4. レイヤーを重ね合わせ、
元のフレームを再構成
低解像度で学習し、軽量なネットワークで
別途Up-samplingも行う(各レイヤーごと
に入力画像との残差を効率的に利用)
- 13. • 1)複数人が同時に動く 2)多様な動作を含む 日常動画を収集し、実験
– 手持ちのスマホで撮影など、手ブレなどの条件を含む
• 動画1つ1つに対して学習を行う
– NVIDIA P100 x 2 で 1動画あたり5-12時間ほど学習
• (定量的な評価はなく、定性的な評価のみ)
13
Experimental Settings
- 18. • Image Matting の手法(c)は人物以外の要素の変化をモデリングできない
• Double DIP(d)は人物以外の要素もある程度捉えられているが、不完全
18
Results: Comparisons
- 19. • Keypoint-to-UV network vs. DensePose
– DensePose直接だとOcclusionを補完できない
– 前景人物のレイヤーを削除したときに、
Occlusionされている腕や顔の再構築に失敗する
19
Results: Ablations
- 20. • Layered vs. Non-layered
– Reconstructionはどちらでもうまくいく
– Non-layered はEditingで失敗する
• Non-layeredだと学習段階で未知のUVマップから
出力を生成する必要がある
(Layeredは各レイヤー生成後の後処理なので関係ない)
• Non-layeredだとそもそも人物ごとの影響要素を
disentangleする必要がなくなるので、
人物を削除しても影を削除できないなどの問題が生じる
– Non-layeredは高解像化が難しい
• Retimingの結果を直接出力してしまう
• 入力動画から変わってしまっているので転移できない
20
Results: Ablations