cedro-blog

FILMで、2つの画像をつなぐ動画を作る

1.はじめに

 今回ご紹介するのは、似通った2つの画像をモーフィングするような動画を作成するFILM(Frame Interpolation for Large Motion)という技術です。

2.FILMとは?

 FILMとは、Frame Interpolation for Large Motion の略で、比較的大きな変化のある2つの画像の中間画像を推定する技術です。

 下記は、FILMのフローです。大きく分けると、特徴抽出(Feature Extraction)、フロー予測(Flow Estimation)、融合(Fusion)の3つで構成されています。

 特徴抽出では2つの画像をスケールを縮小しながら、それぞれ畳み込みで特徴量を抽出し、同じサイズの情報をまとめます。フロー予測ではサイズ毎に特徴量の差を元に中間画像の特徴量を予測します。そして、融合ではこれらの情報をU -Netのようなデコーダへ送り中間画像を出力します。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンクをクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。

 まず、セットアップを行います。

 

 それでは、補間動画を作成してみましょう。サンプル・フォルダは3つ(photo_1〜photo_3)あり、それぞれ開始フレームframe1.jpg)と終了フレームframe2.jpg)が含まれています。

 自分の用意した画像でやる場合は、開始フレームと終了フレームを含む新たなフォルダを追加して下さい。なお、このとき2つのフレームの縦横サイズは同じで偶数にして下さい。

 select_folderフォルダtimes_to_interpolate 補間回数(生成する画像数は補間回数の2の階乗−1)を指定します。ここでは、select_folder‘photo_2’times_to_interpolate6 を設定し実行します。

 

 せっかくですので、補間前・後の画像を付加した動画も作ってみましょう。補間前後の画像を上に付加したものと横に付加したものの2種類の動画を作成します。

 

 補間前・後の画像を横に付加した動画を再生します。これは、output2.mp4 に保存されています。

 

 フォルダは photo_3 を使って、補間前・後の画像を上に付加した動画を再生します。これは、output1.mp4 に保存されています。

 では、また。

(オリジナルgithub)https://github.com/google-research/frame-interpolation