---
title: [DL輪読会]Layered Neural Rendering for Retiming People in Video
tags:  #deep learning  
author: [Deep Learning JP](https://www.docswell.com/user/DeepLearning2023)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4EQ8LKNLJP.jpg?width=480
description: 2020/09/25 Deep Learning JP: http://deeplearning.jp/seminar-2/
published: September 25, 20
canonical: https://www.docswell.com/s/DeepLearning2023/ZP9X9L-dllayered-neural-rendering-for-retiming-people-in-video
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4EQ8LKNLJP.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/KJ42DPG5E1.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/LE1MZ9D27G.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/GEW39QY2E2.jpg)

Proposed Method


# Page. 5

![Page Image](https://bcdn.docswell.com/page/47ZV9WX4E3.jpg)

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


# Page. 6

![Page Image](https://bcdn.docswell.com/page/YJ65KG4G7V.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/GJ5YPVQXJ4.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LE353DV4J5.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/8EDD4P85EG.jpg)

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


# Page. 10

![Page Image](https://bcdn.docswell.com/page/V7PXMN8DE8.jpg)

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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/2JVL9KNG7Q.jpg)

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


# Page. 12

![Page Image](https://bcdn.docswell.com/page/5EGXZQ5DJL.jpg)

Experiments


# Page. 13

![Page Image](https://bcdn.docswell.com/page/K742DP32J1.jpg)

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


# Page. 14

![Page Image](https://bcdn.docswell.com/page/LJ1MZ91KEG.jpg)

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


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GJW39Q8PJ2.jpg)

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


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4EZV9W86J3.jpg)

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


# Page. 17

![Page Image](https://bcdn.docswell.com/page/Y765KGPLEV.jpg)

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


# Page. 18

![Page Image](https://bcdn.docswell.com/page/G75YPVKM74.jpg)

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


# Page. 19

![Page Image](https://bcdn.docswell.com/page/9J2G63WRJR.jpg)

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


# Page. 20

![Page Image](https://bcdn.docswell.com/page/DEYV91L5EM.jpg)

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


# Page. 21

![Page Image](https://bcdn.docswell.com/page/VJNML24478.jpg)

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


# Page. 22

![Page Image](https://bcdn.docswell.com/page/YE9N41Q4E3.jpg)

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


# Page. 23

![Page Image](https://bcdn.docswell.com/page/GE8KQ4GV7D.jpg)

Conclusion


# Page. 24

![Page Image](https://bcdn.docswell.com/page/LELZX6GRJR.jpg)

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


# Page. 25

![Page Image](https://bcdn.docswell.com/page/4JMVL5QPJW.jpg)

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


