次のGoogle Colabでの動作検証として、フレーム補間技術のFILM (FILM: Frame Interpolation for Large Motion)を試してみた。もう少し、丁寧にいろいろと検証して、その内容を書こうかと思ったのだが、そもそも動かすのに多少苦労したので、2025年1月現在、Google Colabで動いた内容を記録に残すこと自体も意味があるかな、というところで、とりあえずの内容にはなるが残すことにする。
FILMについて
FILM: Frame Interpolation for Large MotionはGoogle Researchが2022年にECCVというコンピュータビジョン系のトップカンファレンス(らしい)で発表したフレーム補間アルゴリズム。FILM自体は結構有名なのではないかと思う。リンクはGithubリポジトリにしてしまったが、Apache-2.0 licenceで結構使いやすいのではないかと思う。これだけ見ると…笑
同じGoogle Researchが2024年に発表した(はず)のVideo Interpolation with Diffusion Modelsというのもあるようなのだが、Githubのリポジトリなどは見つからず…こっちが気にはなるのだが、そのうち使えるようになるのだろうか…まあ、その中で比較されているアルゴリズムの中でも比較的新しく、情報も豊富なFILMを選んだ。
今回は動作させる環境としてGoogle Colabを選んだ。理由としては、Colab上の開発の練習としても良いかな、という部分、NVIDIAのGPUが利用できた方がトラブルも少ないかな、という部分から(ローカル環境はMacのため)。
Google Colabでのコード
いつもそうにはなるかもだが…まずは ランタイムのタイプを変更 → ハードウェアアクセラレータ をGPUへ。自分の場合は無料版なのでT4を選択。
!git clone https://github.com/google-research/frame-interpolation
次に、ディレクトリを移動
%cd frame-interpolation
Colabでは(というよりipynb全てなのかもだが…)、一時的ではなくその後の処理実行でも継続させる処理は %で囲んで実行するようだ。そのため cdは %で囲むことになる。
次に、 pipで必要なライブラリをインストールしたいのだが、 requirements.txtをそのままインストールしようと失敗する。現状動作を確認しているのは、主にこちらのサイトを参考にしたが、以下のライブラリのみを pipでインストール。
!pip install apache-beam==2.48.0 mediapy==1.1.8
バージョンを細かく変えて動作するかは確認していない。今回動作したバージョンの参考情報としていただければ。ちなみにバージョンを指定しないとエラーでインストールできなかったので、2025年1月のそれぞれの最新バージョンは相性が良くないようだ。
おそらく、ランタイムが再起動するので、ディレクトリを元に戻す。
%cd frame-interpolation
次に、学習済みのモデルをダウンロードする。作者がGoogle Driveでモデルを公開しているのでそちらをダウンロードする。Google Driveからのダウンロードには gdownが利用できる。少し前の情報だと、アップデートが必要なようだが、自分の環境では特にアップデートなく gdownが利用できた。
!gdown https://drive.google.com/drive/folders/131_--QrieM4aQbbLWrUtbO2cGbX8-war -O ./pretrained_models --folder !gdown https://drive.google.com/drive/folders/1gKgBfCQyOeweALLf7YAzWqh3ZkPgu5e5 -O ./pretrained_models --folder
サンプル画像から、中間フレームを生成してみる。
!python -m eval.interpolator_test \ --frame1 ./photos/one.png \ --frame2 ./photos/two.png \ --model_path ./pretrained_models/Style/saved_model \ --output_frame ./photos/middle.png
ちなみに
- one.png (貼り付けやすいようにjpgへ)

- two.png (貼り付けやすいようにjpgへ)

- 生成されたmiddle.png

では、このフレームを利用して動画を作成してみる。
順番通り読み込めるように、先ほどの画像を one.png → middle.png → two.png の順で連番のファイル名に変更した後、以下を実行。
!python -m eval.interpolator_cli \ --pattern ./photos \ --model_path ./pretrained_models/Style/saved_model \ --times_to_interpolate 6 \ --output_video
出力された動画 (はてなブログへ貼るためにmp4からgifへ)

一旦こちらの通り。 eval.interpolator_cliが何をするものかなど、今後中身を確認していきたい。
まとめ
今回はGoogle Colabを使って、フレーム補間技術のFILM (FILM: Frame Interpolation for Large Motion)を動かしてみた。本当は、手元にあるオリジナルの画像や動画から、フレームレートを上げるような構成を組みたかった。が、インストール自体にもなかなか手こずったこともあり、一度現状で動くものを紹介するのも、情報として有用なのかな、という結論になった。
個人的には、もう少し時間をかけて丁寧に中身を深掘りたい意思があるので、何回かかけて中身を見ていき、できれば pipでインストールしたものについても、バージョン等の確認をしていきたいと思う。
参考資料
- [FILM] 動かしながらざっくり理解するフレーム間の中間画像生成
- ほぼ、こちらの記事で解決した
- とはいえ、今後もこちらや、自分の検証通りで動作するのか保証はできない
- FILMのGithubリポジトリ
- まずこちらを載せるべきかもだが、そのままでは動かないものもあり…というところ。