「少ない枚数の写真から動画を作成したい」
「AIで自動的にフレーム補間を実行したい」
このような場合には、FILMがオススメです。
この記事では、フレーム補間が可能なFILMのインストールを解説しています。
本記事の内容
- FILMとは?
- FILMのシステム要件
- FILMのインストール
- FILMの動作確認
それでは、上記に沿って解説していきます。
FILMとは?
FILMとは、フレーム補間を行うAIと言えます。
FILMは、Googleが開発して公開しています。
Googleということで、PyTorchではなくTensorflowが利用されています。
現在、AIプロジェクトにおいてはPyTorchの採用が圧倒的です。
フレーム補間については、説明が必要でしょう。
フレーム補間は、それぞれで使われるワードになります。
- 動画
- 画像
動画の場合は、次の記事で説明しています。
そもそも、動画自体が画像で作成されています。
その意味では、画像と動画を区別する必要はないのかもしれません。
ただ、ソフトウェア的には対象(入力データ)とするモノが異なります。
FILMに関して言うと、画像をフレーム補間の対象としています。
そのため、FILMでは画像が2枚だけで済みます。
その点で、FILMは簡単にフレーム補間が可能と言えます。
以上、FILMについて説明しました。
次は、FILMのシステム要件を説明します。
FILMのシステム要件
FILMは、バージョン管理は行われていません。
ただし、メンテナンスは随時実施されているようです。
FILMのシステム要件としては、次の2点がポイントになります。
- TensorFlow
- FFmpeg
OSやPythonバージョンは、自ずとTensorFlowに準拠します。
ただ、TensorFlowはGPU版であることはほぼ必須です。
CPUで動かすと、処理が遅くて耐えられません。
TensorFlowのインストールは、次の記事で解説しています。
Windowsへのインストールの方が、基本的には難しくなります。
上記に従えば、TensorFlowのインストールは可能です。
幸い にも、2.6.0から2.11.0までは同じCUDAとcuDNNで対応できます。
Pythonに関しては、Python 3.10を使っておけばよいでしょう。
FFmpegに関しては、以下でインストールを説明しています。
以上、FILMのシステム要件を説明しました。
次は、FILMのインストールを説明します。
FILMのインストール
FILMのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。
検証は、次のバージョンのPythonで行います。
> python -V Python 3.10.4
そして、システム要件であるTensorFlowとFFmpegをインストール済という状況です。
このような状況において、次の手順でFILMツールのインストールを進めます。
- FILMの取得(GitHubから)
- requirements.txtを使った一括インストール
- 学習済みモデルのダウンロード
それぞれを下記で説明します。
FILMの取得(GitHubから)
公式からリポジトリをクローンします。
git clone https://github.com/google-research/frame-interpolation cd frame-interpolation
ダウンロードできたら、リポジトリのルートへ移動しておきます。
requirements.txtを使った一括インストール
リポジトリのルートには、requirements.txtを確認できます。
requirements.txt
# Docker base image: `gcr.io/deeplearning-platform-release/tf2-gpu.2-6:latest` tensorflow==2.6.2 # The latest should include tensorflow-gpu tensorflow-datasets==4.4.0 tensorflow-addons==0.15.0 absl-py==0.12.0 gin-config==0.5.0 parameterized==0.8.1 mediapy==1.0.3 scikit-image==0.19.1 apache-beam==2.34.0 google-cloud-bigquery-storage==1.1.0 # Suppresses a harmless error from beam natsort==8.1.0 gdown==4.5.4 tqdm==4.64.1
この情報は、すでに若干古くなっています。
システム要件として、tensorflowはすでにインストール済みになります。
仮に指定のバージョンをインストールしようとしても、次のようなエラーになるだけです。
ERROR: Could not find a version that satisfies the requirement tensorflow==2.6.2 (from versions: 2.8.0rc1, 2.8.0, 2.8.1, 2.8.2, 2.8.3, 2.8.4, 2.9.0rc0, 2.9.0rc1, 2.9.0rc2, 2.9.0, 2.9.1, 2.9.2, 2.9.3, 2.10.0rc0, 2.10.0rc1, 2.10.0rc2, 2.10.0rc3, 2.10.0, 2.10.1, 2.11.0rc0, 2.11.0rc1, 2.11.0rc2, 2.11.0) ERROR: No matching distribution found for tensorflow==2.6.2
ライブラリのバージョン指定は、よほどのことがない限りすべきではないと思います。
このようなインストールエラーになりますからね。
そのため、次のようにバージョンを指定しない形にrequirements.txtを書き換えます。
tensorflow-gpu tensorflow-datasets tensorflow-addons absl-py gin-config parameterized mediapy scikit-image apache-beam google-cloud-bigquery-storage natsort gdown tqdm
「tensorflow-gpu」に関しては、念のために記述しています。
GPU版TensorFlowが動作確認済みであれば、「tensorflow-gpu」は除去してOK。
学習済みモデルのダウンロード
まずは、学習済みモデルを設置する場所を作成します。
リポジトリルートで次のコマンドを実行します。
mkdir pretrained_models
モデルのダウンロードは、次のURLから可能です。
https://drive.google.com/drive/folders/1q8110-qp225asX3DQvZnfLfJPkCHmDpy
Googleドライブ上に、次の2ファイルが公開されています。
これらのzipをダウンロードして、解凍します。
その中身を作成したディレクトリに設置します。
このような構成になるように設置します。
以上、FILMのインストールを説明しました。
次は、FILMの動作確認を説明します。
FILMの動作確認
最初に、画像を作成しましょう。
中間画像と言えるようなモノです。
リポジトリには、デフォルトで画像が用意されています。
左:one.png、右:two.png
これらの画像は、それぞれ開始と終了とします。
この画像の真ん中の状態である画像を作成するということです。
そのためのコマンドが、以下。
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
上記を実行すると、すぐに処理が完了します。
そして、指定した出力先に画像が作成されています。
output_middle.png
確かに、満面の笑みの途中段階に見えます。
次に、今作成した中間画像を含めて動画を作成してみましょう。
python -m eval.interpolator_cli ` --pattern "photos" ` --model_path pretrained_models/film_net/Style/saved_model ` --times_to_interpolate 6 ` --output_video
ディレクトリを指定して、上記コマンドを実行します。
さすがに中間画像よりは、処理に時間がかかります。
100%|█████████████████████████████████████████████████████████████| 126/126 [00:43<00:00, 2.90it/s] 100%|█████████████████████████████████████████████████████████████| 129/129 [00:16<00:00, 7.70it/s]
それでも、1分程度で次のようにMP4が作成されました。
「interpolated_frames」には、連番で画像が保存されています。
連番画像さえあれば、自分で動画を作成することも可能です。
以上、FILMの動作確認を説明しました。