【Paperspace Gradient】FILM(Frame Interpolation for Large Motion)で動画の補間をしてみた

はじめに

先日の記事『【Paperspace Gradient】Text2Video-ZeroとAnything v4.0を用いて,テキストからアニメ動画を生成してみた』ではText2Videoで動画の生成を行った.そこで得られた動画をFILM(Frame Interpolation for Large Motion)というフレーム間補間の技術を用いることで,動画を滑らかにすることができたので,その方法を記述する.

ちなみに,基本的には以下のGoogle Colabのノートブックの通りで実行できた.

 https://colab.research.google.com/drive/1NuaPPSvUhYafymUf2mEkvhnEtpD5oihs

方法

動画の生成

先日の記事(Paperspace版Colab版)に基づき動画を生成する.

生成直後の動画.プロンプトは「A girl walks in the woods」とした.

動画の分割とアップロード

以下のコマンドで動画を分割した(ローカル環境で実施した).

ffmpeg -i 分割したい動画.mp4 保存先/%06d.jpg
分割後

その後,Paperspaceのワークスペース(/notebooks)直下に「photos」というフォルダを作成し,分割して得られた画像ファイルをすべてアップロードする.

/notebooks/photosを作成して,そこに画像ファイルをアップロードする.

FILMの実行

上記のColabのノートブックとほぼ同じだが,ディレクトリが異なるのでそこだけ修正した.

「/tmp」ディレクトリをHOMEに指定する.

import os
%cd /tmp
HOME='/tmp'
!nvidia-smi

コードをGithubからクローンする.

if not os.path.isdir(f'{HOME}/frame-interpolation'):
  !git clone https://github.com/google-research/frame-interpolation
%cd frame-interpolation

FILMをインストールする.あと,事前学習モデルをダウンロードする.

!pip install -r requirements.txt
if not os.path.isdir(f'{HOME}/frame-interpolation/pretrained_models'):
  !gdown 1C1YwOo293_yrgSS8tAyFbbVcMeXxzftE -O pretrained_models-20220214T214839Z-001.zip
  !unzip -o "pretrained_models-20220214T214839Z-001.zip"
  !rm -rf pretrained_models-20220214T214839Z-001.zip

実行する.生成する動画のフレーム数を決定するrecursion_times は最大の10とした.緑色のバーが2本終了すると処理が終わる.画像が8枚で,A6000を使用した場合,25~30分ほどで処理が終わった.

今回の場合,処理して作成した動画は「/notebooks/photos/interpolated.mp4」に保存される.

input_folder = '/notebooks/photos' 
recursion_times = 10 #@param {type:"slider", min:1, max:10, step:1}

model_path = f'{HOME}/frame-interpolation/pretrained_models/film_net/Style/saved_model'
!python3 -m eval.interpolator_cli \
   --pattern $input_folder \
   --model_path $model_path \
   --times_to_interpolate $recursion_times \
   --output_video

# Interpolated frames will be saved at `${input_folder}/interpolated_frames`
# and the output video will be at `${input_folder}/interpolated.mp4`
緑色のバーが2本終了すれば,処理が終わる.recursion_timesを10にした場合は画像8枚で25分~30分かかった.recursion_timesが6の場合は,その16分の1ぐらいの時間で終了した.

最後に,必要に応じて,生成した画像ファイルを消す.

!rm -r /notebooks/photos/interpolated_frames

得られた動画

以下に得られた動画を掲載する.

非常に遅かったので,ffmpegで60倍速にした.recursion_timesは6で十分かもしれない.

背景の動きが変.無地の方が良いかも.腕の位置が極端に変わって,ワープした感じになってる時もある.

下半分(足の部分)だけ見れば,それなりにアニメーションしてるようにも見える.

得られた動画(60倍速)

まとめ

FILMを使うことで,動画をぬるぬる動くようにできた.某パズルソシャゲの動くアニメーションっぽい.

人が描いたアニメと比較すると違和感がある.すべての物体が同じ速度で動いてるからかな?

入力画像の背景が無い方が自然な感じになるのかもしれない.

コメント

  1. test より:

    こちらのコード使わせて頂きましたが
    コードが動かずエラー出ます
    何が悪いでしょうか?
    Paperspace Gradient使用中です

    • test様

      ご連絡いただきありがとうございます.
      返信が遅くなり申し訳ありません.

      エラーに関しては,コードを確認しないと分かりません.

      ただ,Google Driveのリンクなどが切れてるのかと思いましたので,私の環境で動作させたところ,実行可能でした.

      記事中のコードを間違えている可能性はあるので,以下よりipynbファイルをダウンロードして実行してみてください.
      https://colab.research.google.com/drive/1yUX8Zizz5SeTMttHISaL_NLktxlvac4g?usp=sharing

      以上よろしくお願いします.

    • test様

      ブログを更新する時間が無く,返信が遅れました.

      エラー内容を拝見しました.
      どちらのエラーもpythonのモジュールのインストールの失敗に起因したものだと思われます.

      pipをupgradeする方法が良いかもしれませんので,ひとまず以下のブログを参考にpipをupgradeした後に「!pip install -r requirements.txt」を実行してみてください.
      https://www.curict.com/item/5a/5ac72d2.html

      上記をやってもダメなら,tensorflowに関しては以下のサイトを参考にインストールしてみてください(FILMSのrequirementが2.6.2なので,そのバージョンを)
      https://kajindowsxp.com/pip-unable/

      mediapyに関しても,個別にインストールすれば有効になる可能性はあります.

      !pip install -q mediapy

      ちなみに,notebookの作成時にどの項目を選んでいますでしょうか.
      私はすべて「Start from Scratch」で作成しておりますが,その辺りの設定が異なると環境が変わる可能性があるので,notebookの作成方法も確認してみてください.

タイトルとURLをコピーしました