機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

VideoFlow: A Flow-Based Generative Model for Videoを読んだのでメモ

はじめに

VideoFlow: A Flow-Based Generative Model for Videoを読んだのでメモ.Generative Flowを使って動画生成をしたよという論文.モチベーションとしてはgenerative flowだから尤度最大化として学習可能という点.

VideoFlow

基本的にはGlowを動画用に拡張したというだけで中身は非常にtrivial.Generativ Flowに関しては過去に色々論文読んだのでここを参照.

モデルの基本構成はRealNVPで提案されたmultiscale構造.具体的にはfigure 1のように段階的に中間出力をsplitしてガウス分布に従う確率変数として吐き出す.これによって計算コストの削減が実現可能.Glowでもやられてたように途中吐き出された変数が従うガウス分布のパラメータはsplitした時に出るもう一方をニューラルネットに突っ込んで推定する.尤度最大化の仕組みで学習すれば基本的に分散は小さくなっていくはずなので究極的にはほぼ決定的な値となる.論文には載ってないが式で表現すると次のような感じ.

\displaystyle
\mathbf{z}^{(l)}_1,\mathbf{z}^{(l)}_2 \\
\mu, \sigma^2 =NN_\theta(\mathbf{z}^{(l)}_1) \\
\mathbf{z}^{(l)}_2\sim\mathcal{N}(\mu,\sigma^2)

\mathbf{z}^{(l)}l層目の出力で\mathbf{z}^{(l)}_1,\mathbf{z}^{(l)}_2\mathbf{z}^{(l)}を二つに分けたもの.ただし,下付きの数字は論文中ではフレーム番号を表すためこの式のみの表現なので注意.後l層目と言う表現も適切ではなく実際には何層か変換を繰り返したのちにこの吐き出しを行う.

今回はこのl番目の潜在変数\mathbf{z}^{(l)}が各フレームtごとに存在する.なのでtフレーム目のl番目の潜在変数は\mathbf{z}^{(l)}_tとなる.ただし,lは元画像から潜在変数方向に向かって1からLまで存在する.

VideoFlowではfigure 2のようなグラフィカルモデルを考えるため,\mathbf{z}_t^{(l)}の分布は次のような条件付分布として表現される.

\displaystyle
p_\theta(\mathbf{z}_t|\mathbf{z}_{\lt t})=\prod_{l=1}^Lp_\theta(\mathbf{z}_t^{(l)}|\mathbf{z}_{\lt t}^{(l)},\mathbf{z}_t^{(\gt l)})

この時,p_\theta(\mathbf{z}_t^{(l)}|\mathbf{z}_{\lt t}^{(l)},\mathbf{z}_t^{(\gt t)})は次のようなガウス分布と仮定する.

\displaystyle
p_\theta(\mathbf{z}_t^{(l)}|\mathbf{z}_{\lt t}^{(l)},\mathbf{z}_t^{(\gt t)})=\mathcal{N}(\mathbf{z}_t^{(l)};\mathbf{\mu},\sigma)\\
(\mathbf{\mu},\log\sigma)=NN_\theta(\mathbf{z}_{\lt t}^{(l)},\mathbf{z}_t^{(\gt l)})

NN_\theta(\mathbf{z}_{\lt t}^{(l)},\mathbf{z}_t^{(\gt l)})ニューラルネットを表し,今回は3-DConvを使ったresidual blockを利用したとのこと.細かい部分は実装する気がないのとコードが公開された時にそれをみた方が早いので今回は割愛.一応4.3章に詳細がある.

まとめ

手法自体はtrivialでそんなにという感じ.ただよく考えてみればgenerative flowは動画生成に適していると気がつかされて,そう言う意味では個人的にはいい論文.内容として気になるのは学習にメモリをどれくらい使うかと言うところ.Glowも実験の最小構成ですらかなりのメモリを使ったので今回はgoogleの有り余る資源を活用したのか.