はちみつブログ

趣味や生活の話を好きなタイミングで書いていきたいと思います。

Google ColabでFILMを動かす

次の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を選択。

次にgithubのリポジトリをcloneしてくる

!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でインストールしたものについても、バージョン等の確認をしていきたいと思う。

参考資料