はじめに
先日の記事『【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版)に基づき動画を生成する.

動画の分割とアップロード
以下のコマンドで動画を分割した(ローカル環境で実施した).
ffmpeg -i 分割したい動画.mp4 保存先/%06d.jpg

その後,Paperspaceのワークスペース(/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`

最後に,必要に応じて,生成した画像ファイルを消す.
!rm -r /notebooks/photos/interpolated_frames
得られた動画
以下に得られた動画を掲載する.
非常に遅かったので,ffmpegで60倍速にした.recursion_timesは6で十分かもしれない.
背景の動きが変.無地の方が良いかも.腕の位置が極端に変わって,ワープした感じになってる時もある.
下半分(足の部分)だけ見れば,それなりにアニメーションしてるようにも見える.

まとめ
FILMを使うことで,動画をぬるぬる動くようにできた.某パズルソシャゲの動くアニメーションっぽい.
人が描いたアニメと比較すると違和感がある.すべての物体が同じ速度で動いてるからかな?
入力画像の背景が無い方が自然な感じになるのかもしれない.
コメント