はじめに
ECCV 2018 から以下の論文
[1] A. Bansal, et. al. "Recycle-GAN: Unsupervised Video Retargeting"
のまとめ
- arXiv:
https://arxiv.org/abs/1808.05174 - github 公式コード:
https://github.com/aayushbansal/Recycle-GAN
こちらの方が既にまとめている:
https://medium.com/@crosssceneofwindff/recycle-ganを用いた行動模倣-b1116e318649
ので、ここでは従来手法(Cycle-GAN)を用いた場合の課題と、その対処法に焦点を当てて解説する。
概要
- GANを用いたビデオの変換タスク
- cycle-GANを改良し、時空間な制約を導入する
- これにより、contentを変換しながら、taget domain の styleを維持することができる
video変換でcycle-GANを用いた場合の問題点
以下の図では
1行目がInput画像、2行目がCycle-GANを用いた変換、3行目がその再変換。
2行目Outputではトランプがオバマになってる(contentは変換されている)。しかし表情は同じに見える(styleは維持されてない)。しかし3行目Reconstructionを見ると、再変換されたトランプは、表情も含めてinputを再現できている。
よく見るとOutputのpixelレベルでは各列微妙に違っているそう。よって、この情報を元にトランプの各表情を復元できてると考えられる。
最下段は本手法によるoutput。
次にドメイン変換でよく見られる図を用いる。以下は Cycle-GANの場合。
理想的にはこの図のように、トランプの半開きの口はオバマの半開きの口に変換され、トランプの閉じた口はオバマの閉じた口に変換される。
しかし、実際はこうなっている。
1)まずトランプの半開きの口、および閉じた口、いずれもオバマの半開きの口に変換される。(赤い矢印)
2)しかし半開きの口の中でもpixelレベルで微妙な違いがある。
3)その違いをもとに再変換した時にトランプの半開きの口、及び閉じた口にちゃんと復元される。(青い矢印)
そこで Recycle-GANでは以下のようにする。
まず、前のフレームから次のフレームを予測する $P_X, P_Y$ を考える。
1)トランプの「半開きの口」($X_t$)をオバマに変換する。
2)これに対して $P_Y$ で次のframeを予測する
3)予測した画像をさらに再変換する。
4)これと、実際の $X_{t+1}$ とでlossを計算する
こうすると、オバマの「半開きの口」の付近の領域はおおよそトランプの「半開きの口」に付近に変換されるよう学習するため、「半開きの口」が少しずれただけで「閉じた口」に変換されることは無くなるだろう。
Loss
なので、Cycle-GANの reconstruction error を Recycle な error に変える。
また 次フレーム予測器のLossも考えると、Lossは以下の3種類。
- adversarial loss
- recycle loss
- 予測器のrecurrent loss
1.adversarial な loss
- $G_Y$:X→Y の変換器
- $G_X$:Y→X の変換器
- $P_X$:Xの前frameから次frameを予測する予測器
- $P_Y$:Yの前frameから次frameを予測する予測器
- $D_X$:Xを識別するdiscriminator
- $D_Y$:Yを識別するdiscriminator
として、まずadversarial lossのうちYに関するものは
L_g(G_Y, D_Y) = \sum_s \log D_Y (y_s) + \sum_t log(1-D_Y (G_Y(x_t)))
2.recycle loss
recycle lossのうちX→Y→予測→X 経路のものは
L_r (G_X, G_Y, P_Y) = \sum_t \| x_{t+1} - G_X(P_Y(G_Y(x_{1:t}))) \|^2
3. recurrent loss
予測器に関するlossのうち、Xに関するものは
L_\tau (P_X) = \sum_t \|x_{t+} - P_X (x_{1:t}) \|^2
4. トータルのloss
以上からトータルのminmaxな式は
\underset{G,P}{\min} \underset{D}{\max} L_{rg} (G, P, D) = L_g(G_X, D_X) + L_g(G_Y, D_Y) + \lambda_{rx}L_r(G_X, G_Y,P_Y) + \lambda_{ry}L_r(G_Y, G_X,P_X) + \lambda_{\tau x}L_{\tau}(P_X) + \lambda_{\tau y}L_{\tau}(P_Y)
各 $\lambda$ は掛け率。
推論時の工夫
推論時は学習した変換器だけでなく、予測器も使う。つまり、t 時の Y を予測するのに、t 時の X を変換したものだけでなく、t-1 時までの X を変換して t-1時までのYとし、これを予測器 $P_Y$ で予測したものも用いる。
y_t = \frac{G_Y(x_t) + P_Y(G_Y(x_{1:t-1}))}{2}
実験と結果
定量的評価
Viper dataset を用いた評価は以下。
cycle-GANより精度がよい。
定性的評価
花が開いたり、散ったりするところのビデオで学習させた結果は以下。
うまく再現できている。