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を使用して実装していきます。
今回紹介するコードは以下のボタンからコピーして使用していただくことも可能です。
まずは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つの入力画像から複数の中間フレームを合成するフレーム補間のアルゴリズムについて紹介しました。