たけたけブログ

日々の活動をまとめています

📜MoCoGANに関して

f:id:ritorut18:20201103211501p:plain

どんなもの?

動画をmotionとcontentにわけて考えることで生成精度を向上させた動画生成GAN

内容
タイトル MocoGAN: Decomposing Motion and Content for Video Generation
年代 2017
著者 Sergey Tulyakov/Ming-Yu Liu/Xiaodong Yang/Jan Kautz
URL https://arxiv.org/pdf/1707.04993.pdf

先行研究と比べて何がすごい?

先行研究は二種類に分けることができる。

1.the future frame prediction problem

future frame predictionの目的は、ビデオの次のframeを予想すること。
GANの入力は乱数による入力ノイズだが、future frame predictionの入力は前のframeである。
-> 違うアプローチになってしまう

2.VGAN, TGAN系

ビデオを潜在空間上の一点と対応させようとするのは問題が複雑になってしまう

  • 同じactionでも動作速度が異なっていた場合、潜在空間上での対応する点が異なってしまう
  • 生成するビデオの長さが固定してしまう

-> 解決策を提示した

技術の手法や肝は?

潜在空間上の一点から画像を生成、それらを繋いで動画にする
潜在空間をmotion subspaceとcontent subspaceにわけることで前景と背景を分離
同動作で速度が異なる場合はmotion variable の変化速度をかえることで対応することができる

提案モデルに関して

MoCoGANは機能的に四層からなる。

R_M

入力ノイズをcontentとmotionに分けて考える。以下のように表現できる。

motionの流れに関してはRNNを使って補完する
RNNによってi.i.dである入力ノイズ εを相互関係のある変数z_M^{(k)}に変換する (MoCoGANでは一層のGRUで表現した)

G_I

D_I

こちらは1frameごとのビデオクリップを使用してこれがG_Iから生成されたものか本物のビデオクリップなのかを判断する
D_Iを導入した方が収束条件が改善するそう

D_V

こちらは適当な長さのビデオ(Tframe)を使用してG_Iから生成されたものか本物のビデオクリップなのかを判断する
D_Vはspatio-temporal CNNを使う。ここでmotionに関する評価を考える。

loss関数に関して

adversarial lossを改良して定義している。
改良点は、1frameでの識別(D_I)とTframeでの識別(D_T)を考慮する点

動作の分類について

RNNでmotionを改良するが、その時にどの動作をするのかを決めるlatent codeを導入する(ont-hot vector
その学習にInfoGANの考え方を導入してloss関数を改良する

どうやって有効だと検証した?

三つの実験を通して有効だと検証した。

Video Generation Performance

一番メインの部分。
一つの動画でcontentが一貫しているかどうかを示す指標ACD(Average Content Distance)を定義して一貫性の検証を行った。
また生成動画をAMTを利用して定性評価をおこなった。
どの検証も一番いい結果を残した。

Categorical Video Generation

提案したモデルの有用性のablation studyをおこなった。
contentの一貫性だけでなくmotionのリアルさを評価した。
行動認識の識別器を用意して生成動画の行動(今回は表情)を識別して数値化した。(MCS(Motion Control Score))

Image-to-Video Translation

一枚の画像をランダムで抽出して動画を生成するというタスクをMoCoGAN, C-VGAN, MCNETの三つで比較
MoCoGANが一番リアルな動画を生成するという結果になった

議論はある?

細かい部分がしっかり生成できていないみたい

次に読むべき論文は?

Decomposing Motion and Content for Natural Video Sequence Prediction

Unsupervised Learning for Physical Interaction through Video Prediction

  • 過去のframeのpixelをかき混ぜて新しいframeを作る
  • 画像をconv LSTM で畳み込んでフィルターを作り,そのフィルターを元画像に当ててpixelを再構築する

    Generating Videos with Scene Dynamics(VGAN)

  • 動画をforeground(動くもの)とbackground(動かないもの)に分割
  • 同一のnoiseからdeconvでそれらを生成し加重平均をとる
  • 画像で条件つけてfuture predictionさせることも可能

    Temporal Generative Adversarial Nets with Singular Value Clipping(Temporal GAN)

  • 3Dの畳み込みを批判 → 時間と空間の特性の違いを考慮すべき しかし,今回Discriminatorは3Dの畳み込みを利用している…Generatorのみ特別仕様

  • temporal generatorがframe数だけlatent variableを生成しそれを元にimage generatorが個々の画像を生成
  • 生成した二枚の画像間の中間画像も容易に生成できる
  • WGANを改良(singular value clipping)して学習を安定化