[DL輪読会]Layered Neural Rendering for Retiming People in Video

>100 Views

September 25, 20

スライド概要

2020/09/25
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

DEEP LEARNING JP [DL Seminar] Layered Neural Rendering for Retiming People in Video Hiromi Nakagawa ACES, Inc. https://deeplearning.jp

2.

Information • Authors: • SIGGRAPH Asia 2020 • 動画の人物動作のRetimingを可能にする研究 – See demo – https://www.youtube.com/watch?v=KAVCHR1mucw 2

3.

Introduction • 動画内の人物動作のRetiming(タイミングの操作)ができれば、多様な映像加工が可能になる – 特定の人物のみ速く/遅く動かす、他の人物の動作と同期させる、特定の人物の動作を止める • アニメーションの分野では同様の研究もあったが、本研究では自然動画を扱う – 1)人物の動作に伴う関連要素への影響のモデリングが必要 2)3Dモデルの正解がない などの課題 • 動画のフレームを人物ごとのレイヤーに分解する学習を行うLayered Neural Renderingを提案 3

4.

Proposed Method

5.

Overview • ゴール:動画Vが与えられたときに、各時刻のフレームI_tをRGBAレイヤーの集合L_tに分解する t:時刻、i: レイヤー番号、C:カラー画像、α:透過マップ • 課題:そのままでは制約条件が少なすぎて、期待する(人物ごとの)レイヤー分割を学習することが難しい – 解決策:人物は明示的にモデリングしレイヤーに割り当て、レイヤーごとに独立にレンダリング 1. 人物のUVマップを抽出し、 各レイヤーに割当 2. 学習可能なtexture map からリサンプリング 3. Neural Rendererで RGBA値にデコード 4. レイヤーを重ね合わせ、 元のフレームを再構成 5

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 6

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. レイヤーを重ね合わせ、 元のフレームを再構成 7

8.

Neural Renderer • Neural Renderer には pix2pix[Isola+ 17]の拡張版を利用 1. 人物のUVマップを抽出し、 各レイヤーに割当 2. 学習可能なtexture map からリサンプリング 3. Neural Rendererで RGBA値にデコード 4. レイヤーを重ね合わせ、 元のフレームを再構成 8

9.

Training • Neural RendererとTexture mapのパラメータθを最適化: – 入出力の再構成誤差: 低解像度で学習し、軽量なネットワークで 別途Up-samplingも行う(各レイヤーごと に入力画像との残差を効率的に利用) – 透過マップと人物領域の誤差(学習初期のみ): – 透過マップへのスパース正則化: 1. 人物のUVマップを抽出し、 各レイヤーに割当 2. 学習可能なtexture map からリサンプリング 3. Neural Rendererで RGBA値にデコード 4. レイヤーを重ね合わせ、 元のフレームを再構成 9

10.

Why It Works • 時空間的に相関の強い要素ほど早期に学習される 自然画像のほうがノイズよりも 再構成の学習が早い →CNNの特性、Deep Image Prior[Ulyanov+ 18]の発想に一致 – 左:人物の動きに相関する物体が早期に学習される – 右:人物に近い物体が早期に学習される [Ulyanov+ 18] 10

11.

Why It Works • 複数人いても、関連するオブジェクトを適切に割り当てて学習できている – Rendererは、単一人物レイヤーのUVマップのみを入力として、該当人物のレイヤーを出力 – 人物情報のみから、どのオブジェクトがその人物の動きに関連しているかを説明する必要がある – 各レイヤーは、そのレイヤーに最も相関した効果を、他のレイヤーより先に学習する • レイヤーを分割せずに直接出力を学習すると、人をdisentangleできない(編集可能性が低下) 11

12.

Experiments

13.

Experimental Settings • 1)複数人が同時に動く 2)多様な動作を含む 日常動画を収集し、実験 – 手持ちのスマホで撮影など、手ブレなどの条件を含む • 動画1つ1つに対して学習を行う – NVIDIA P100 x 2 で 1動画あたり5-12時間ほど学習 • (定量的な評価はなく、定性的な評価のみ) 13

14.

Results: Layer Decomposition • 人ごとに適切にレイヤーを分離、髪や服などの細部、影や反射などの変化も捉えている 14

15.

Results: Retiming and Editing • レイヤーごとの再生速度をいじることで、人物ごとのRetimingが可能 15

16.

Results: Retiming and Editing • レイヤーごとの再生速度をいじることで、人物ごとのRetimingが可能 16

17.

Results: Retiming and Editing • レイヤーを取り除くことで、人物(と人物に関連する要素)を動画から取り除くことも可能 17

18.

Results: Comparisons • Image Matting の手法(c)は人物以外の要素の変化をモデリングできない • Double DIP(d)は人物以外の要素もある程度捉えられているが、不完全 18

19.

Results: Ablations • Keypoint-to-UV network vs. DensePose – DensePose直接だとOcclusionを補完できない – 前景人物のレイヤーを削除したときに、 Occlusionされている腕や顔の再構築に失敗する 19

20.

Results: Ablations • Layered vs. Non-layered – Reconstructionはどちらでもうまくいく – Non-layered はEditingで失敗する • Non-layeredだと学習段階で未知のUVマップから 出力を生成する必要がある (Layeredは各レイヤー生成後の後処理なので関係ない) • Non-layeredだとそもそも人物ごとの影響要素を disentangleする必要がなくなるので、 人物を削除しても影を削除できないなどの問題が生じる – Non-layeredは高解像化が難しい • Retimingの結果を直接出力してしまう • 入力動画から変わってしまっているので転移できない 20

21.

Results: Limitations • レイヤーの割当ミス – Layer1に相当する人物の起こした水しぶきが、 Layer2に割り当てられてしまう – 水しぶき全体を覆うように数フレーム分の 入力のtrimapを手動で修正してあげれば解決 21

22.

Results: Limitations • どの人物にも紐付かないが時間変化する背景 – 例:ライトの点滅 – 時間変化する背景を考慮するレイヤーを追加することで対応できるはず (現状は背景レイヤーは時間変化しない前提で固定されている) 22

23.

Conclusion

24.

Conclusion • 動画内の人物動作のRetiming(タイミングの操作)を可能にするシステムを提案 – 特定の人物のみ速く/遅く動かす、他の人物の動作と同期させる、特定の人物の動作を止める • 動画のフレームを人物ごとのレイヤーに分解する学習を行うLayered Neural Renderingを提案 – 個別の人物/グループごとのUVマップなどを入力として、動画の各フレームを再構成 – 内部で人物ごとのRGBAのレイヤーに分解するように学習、人物ごとの動作とその関連要素を表現可能 • 髪の毛や服、半透明な影や反射 • 人物以外の物体への汎化や、スタイル変換などのより高度な後処理への活用が期待される 24

25.

感想 • 映像編集/レンダリング界隈(?)の論文をちゃんと読んだのは始めてだったが、表現学習界隈(?)とは、 (似たようなことかと思っていたけど)前提やモチベーション、評価なども結構違うんだなという印象 – 1画像1モデル、対象を人物に限定、入力の時点で人物を明示的にレイヤー割当、manual editingもアリ、etc • 表現学習的な文脈だと、このあたりを頑張って教師なしでdisentangleする、down streamタスクへの転用と かでの定量評価、わりと低画質でしかうまくいっていない(?)...などある気がする – レイヤーの分解方法や効率的な中間表現の利用、高解像化のテクニックなど部分的に参考にできそう – うまくモデル/タスク設計すれば、画像ごとに最適化ではなく、いい感じの共通表現(prior?)を学習できそうな気も? • 人で入力を条件づけているとはいえ、周辺要素まできれいにレイヤー分離を学習できているのはすごい • 検証やデモ用の素材動画、見せ方がわかりやすくてよい – 人物どうしの交差が生じる・遮蔽してるけど影は見えているケースなど、推しポイントの関連要素のモデリングがで きていることが伝わりやすい 25