【フレーム補間】2枚の画像から動画を生成できるFILMのインストール

【フレーム補間】2枚の画像から動画を生成できるFILMのインストール 機械学習

「少ない枚数の写真から動画を作成したい」
「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の動作確認を説明しました。

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