Few shot video to video Synthesis

Source: Deep Learning on Medium

Video-to-Video Synthesis

概要

この論文では、領域分割マスクや線画スケッチを元に、リアルで高解像度な動画をGANであるvid2vidによって生成しています。この論文を要約すると以下のようになります。

動画を合成するGAN。先行研究のpix2pixHD・COVSTと比較すると、前のフレームの条件付き確率を用いて生成を行なっているため映像の乱れが少ない。学習が進むにつれて合成に使用するフレーム数を増やしていくtemporally progressive Trainingと、PG-GANの段階的に解像度を上げいくspatially progressive trainingを交互に行う”Spatio-temporally Progressive Training”がポイント。

下の例では、左下の領域分割マスクを元に2つの高解像度動画を生成した例です。

[3]より引用。city space datasetで生成した例

問題設定

時刻1から時刻Tにおける合成動画(合成画像の集合)xチルダを、時刻1から時刻Tの参照動画sで生成することを考えます。そうすると、下記のように各時刻tにおいて、直前の時刻t-1から数フレーム前の時刻t-Lまでの合成動画と、合成したい時刻tから時刻t-Lまでの参照動画の同時確率を条件にした生成モデルで動画の生成を定義できます。

この論文では、下の式に従って、順々に合成画像を生成していく問題を解いていきます。

Generator(F)

まず、時刻tのフレームを合成する関数Fの構造を示します。

Fの構造

ざっくりと説明すると、「optical flowで直前の時刻の合成画像を歪ませた画像(青)」と「それ以外の部分を合成した中間生成画像(赤)」の2つを0~1の連続値をもつマスクmを用いて場所ごとに構成しています。動画は連続しているので、optical flowを用いて表現できる部分とそうでない部分に分かれているとした、自然な仮定を入れています。

後者の中間生成画像hは以下のように、さらに分解することができます。添字Bは背景、添字Fは前景を示しています。

背景を構成する部分と、前景を構成する部分にhを分解する

時刻tにおける背景の位置を示すマスクm_Bによって、背景を構成するh_B, 前景を構成するh_Fに分解して画像を生成するという構造になっています。前景を構成する関数h_Fはoptical flowでは表現しにくい激しい動きをする部分の構成を担当し、背景を構成するh_Bは動きの少ないoptical flowで表現できる部分を担当します。optical flowを使って画像を歪ませる項がFの第1項に含まれているので、実質的にh_Bが担当するのは、時刻tで新たに出現する背景等のoptical flowだけでは表現できない部分になります。

これらを含めてFを書き直すと下記のようになります。

Discriminator

vid2vidでは、Image Discriminatorと Video Discriminatorという2つのDiscriminatorを導入しています。前者は(真の画像、対応する参照画像)or (生成画像、対応する参照画像)を判断するDiscriminatorで、参照画像から生成された画像が尤もらしいか、を判断します。後者は(真の画像、対応する1つ前の時刻のOptical Flow)or (生成画像、対応する1つ前の時刻のOptical Flow)を区別し、動画として自然かどうかを判断しています。

また、モード崩壊を防ぐために複数のスケールでDiscriminatorを導入すると良いことが知られており、複数のスケールでImage Discriminatorを導入しています。

[3]より引用

目的関数

このGenerator(F)とDiscriminatorを最適化するための目的関数は以下のようになっています。

vid2vidの目的関数

カッコで囲まれた第1項L_I、第2項L_Vは通常のGANの目的関数と同じく、Generator Fと2つのDiscriminatorのミニマックス問題でで、それぞれ下記のようになっています。添字IはImage Discriminator, 添字Vはvideo Discriminatorを表しています。

目的関数のうち、Image Discriminatorに関する部分(L_I)
目的関数のうち、Video Discriminatorに関する部分(L_V)

第3項L_WはOptical Flowに関する項です。第1項目は真のOptical Flowと予測Optical Flowの差分、第2項は予測Optical Flowを使って1つ先の時刻を予測した画像と真の1つ先の時刻の画像との差分です。

学習方法

学習はspatio-temporally progressive mannerと呼ばれる形式で行われます。簡単に言うと、少ないフレーム数・粗い解像度で学習を開始し、徐々にフレーム数・解像度を交互に上げていく学習方法です。

[3]より引用

結果

結果の一部を抜粋します。まず、同じ領域分割マスクを使って、2つのビデオを生成した例です。マスクが同じなので、車や背景(街路樹とビル)の位置は変わりませんが、ビル⇄街路樹や、車の種類を自由に変換できていることがわかります。

次に他の手法との比較です。前の時刻の条件付きで画像を生成しているため、他の手法と比較しても自然なビデオが生成できているのがわかります。

(Left)Pix2pixHD. (Center)COVST, (Right) vid2vid