FILMは2022年2月にGoogle Researchより発表された、2つの入力画像から複数の中間フレームを合成するフレーム補間のアルゴリズムについて紹介します。

Google colabを使用して簡単に実装することができますので、ぜひ最後までご覧ください。

今回の内容

・frame interpolation(フレーム補間)とは

・FILM(Frame Interpolation for Large Motion)とは

・サンプル実装

・動画のフレーム補間

frame interpolation(フレーム補間)とは

フレーム補間(フレームほかん)とは、フレーム数の少ない動画に新たなフレームを挿入することで滑らかな動画を作り出す技術です。

前後のフレームから動きや色の変化を予測して新しいフレームを作り、例えば30fpsの動画が60fpsの動画になるように見かけ上のフレームレートを増やすことができます。

フレーム補間を活用することで、動画のリフレッシュレートを増やしたり、スローモーション効果を作成することもできます。

FILM(Frame Interpolation for Large Motion)とは

FILMは2022年2月にGoogle Researchより発表された、2つの入力画像から複数の中間フレームを合成するフレーム補間のアルゴリズムです。

すべてのスケールで重みを共有し、フレームのみからトレーニング可能なマルチスケール特徴抽出器によって、単一の統合ネットワークを提案しています。

詳細はリンクからご確認ください。

準備

ここからはGoogle colabを使用して実装していきます。

今回紹介するコードは以下のボタンからコピーして使用していただくことも可能です。

Open In Colab

まずはGPUを使用できるように設定をします。

「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更

GPUの設定が終わったら、Googleドライブをマウントします。

from google.colab import drive
drive.mount('/content/drive')
%cd ./drive/MyDrive

公式よりcloneしてきます。

!git clone https://github.com/google-research/frame-interpolation
%cd frame-interpolation

次に必要なライブラリをインポートします。

!pip install -r requirements.txt
!apt-get install -y ffmpeg

ランタイムを再起動します。

学習済みモデルをダウンロードする

学習済みモデルを格納するフォルダを作成します。

!mkdir -p pretrained_models

こちらのリンクから「film_net」をフォルダごと手動でダウンロードします。

ダウンロードが終わったら、先ほど作成した「pretrained_models」にそのままアップします。

サンプル実装

フレームの補間

まずはサンプル画像で実装してみます。

このサンプル画像に対して、フレーム補間を行います。

引数として2枚の画像を指定します。

!python -m eval.interpolator_test \
   --frame1 photos/one.png \
   --frame2 photos/two.png \
   --model_path pretrained_models/film_net/Style/saved_model \
   --output_frame photos/output_middle.png

実行すると、補間された画像が出力されます。

入力した1枚目と2枚目の画像の間に補間された画像を並べてみると、よくわかります。

動画を作成する

フレームを複数枚補間することで動画を作成することもできます。

今度は1枚目と2枚目の画像の間に複数枚の保管画像を作成し、それをつなげることで動画を作成します。

!python -m eval.interpolator_cli \
     --pattern "photos" \
     --model_path pretrained_models/film_net/Style/saved_model \
     --times_to_interpolate 6 \
     --output_video

実行すると、以下のような動画が出力されます。

2枚の画像から画像を補間することで、動画を作成することができました。

動画のフレーム補間

次に動画のフレーム補間を実装します。

今回はこちらの動画を使用します。

まずは動画を格納するフォルダを作成し、ここに動画を格納します。

!mkdir -p videos/frames

次にffmepにより、動画から画像に変換します。

!ffmpeg -i "./videos/sample.mp4" "./videos/frames/%04d.png"

変換した画像を元に、先ほどと同様に動画を作成してみます。

!python -m eval.interpolator_cli \
     --pattern "videos/frames" \
     --model_path pretrained_models/film_net/Style/saved_model \
     --times_to_interpolate 3 \
     --output_video

まとめ

最後までご覧いただきありがとうございました。

FILMは2022年2月にGoogle Researchより発表された、2つの入力画像から複数の中間フレームを合成するフレーム補間のアルゴリズムについて紹介しました。