テキストから動画を生成できるTune-A-Videoのインストール

テキストから動画を生成できるTune-A-Videoのインストール 機械学習

「コンテンツ生成を効率化したい」
「AIを使ってテキストから動画を生成したい」

このような場合には、Tune-A-Videoがオススメです。
この記事では、Tune-A-Videoのインストールについて解説しています。

本記事の内容

  • Tune-A-Videoとは?
  • Tune-A-Videoのシステム要件
  • Tune-A-Videoのインストール
  • Tune-A-Videoの動作確認

それでは、上記に沿って解説していきます。

Tune-A-Videoとは?

Tune-A-Videoとは、テキストからビデオへの変換が可能なモデルのことです。
「テキストからビデオへの変換」について、まずは説明します。

例えば、次のようなテキストを用意します。

Keanu Reeves is surfing in the city

これをTune-A-Videoで動画に変換すると、次のような動画が生成されます。
動画と言っても、GIFアニメですけどね。

このようなことが、Tune-A-Videoを使うと簡単にできるようになります。
簡単にと言っても、動きの部分については学習済みモデルの存在が必要です。

上記で言うと、「is surfing」用の学習済みモデルが必要と言えます。
「is dancing」の動画を作成したいなら、「is dancing」用の学習済みモデルが必要ということです。

学習済みモデルを作成するには、Tune-A-Videoでは動画を用いています。
動画と言っても、たった1つの動画でOKです。

それも3秒程度の再生時間でも問題はありません。
もちろん、品質を求めるなら長い動画の方が良いでしょうけどね。

以上、Tune-A-Videoについて説明しました。
次は、Tune-A-Videoのシステム要件を説明します。

Tune-A-Videoのシステム要件

Tune-A-Videoは、バージョン管理が実施されていません。
2023年1月29日に、Githubでソースが公開されただけの状態です。

showlab/Tune-A-Video: Tune-A-Video
https://github.com/showlab/Tune-A-Video

システム要件としては、特に明記はされていません。
ただ、Windowsで動くことは確認済です。

Windowsで動けば、Linuxは問題なく動くでしょう。
macOSも問題ないとは思います。

Pythonのバージョンに関しては、Python公式開発サイクルに従っておきましょう。

バージョンリリース日サポート期限
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年10月25日2027年10月

あと、PyTorchは事前にインストールしておきましょう。
GPU版PyTorchでないと、おそらくまともには動かないはずです。

そのため、GPU版PyTorchをインストールします。

現時点では、1.13.1が最新バージョンとなります。
PyTorchは、なるべく最新版を利用することをオススメします。

また、xFormersのインストールが推奨されています。
xFormersは必須ではなく、オプションとなります。
Windowsへのインストールについては、次の記事で説明しています。

以上、Tune-A-Videoのシステム要件を説明しました。
次は、Tune-A-Videoのインストールを説明します。

Tune-A-Videoのインストール

Tune-A-Videoのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。

検証は、次のバージョンのPythonで行います。

> python -V  
Python 3.10.4

そして、システム要件であるGPU版PyTorchをインストール済という状況です。
このような状況において、次の手順でTune-A-Videoのインストールを進めます。

  • Tune-A-Videoの取得(GitHubから)
  • requirements.txtを使った一括インストール

それぞれを下記で説明します。

Tune-A-Videoの取得(GitHubから)

次のコマンドでGitHUbからリポジトリを取得します。

git clone https://github.com/showlab/Tune-A-Video.git

リポジトリをダウンロードできたら、リポジトリルートへ移動しておきます。

cd Tune-A-Video

基本的には、このリポジトリルートで作業を行います。

requirements.txtを使った一括インストール

リポジトリルートにおいて、以下のファイルを確認できます。

requirements.txt

torch==1.12.1
torchvision==0.13.1
diffusers[torch]==0.11.1
transformers>=4.25.1
bitsandbytes==0.35.4
decord==0.6.0
accelerate
tensorboard
modelcards
omegaconf
einops
imageio
ftfy

事前にPyTorchはインストール済みです。
そのため、PyTorch関連はコメントにします。

#torch==1.12.1
#torchvision==0.13.1

ファイルを変更できたら、次のコマンドで一気にインストールしましょう。

pip install -r requirements.txt

インストールには、そこまで時間がかからないはずです。

以上、Tune-A-Videoのインストールを説明しました。
次は、Tune-A-Videoの動作確認を説明します。

Tune-A-Videoの動作確認

Tune-A-Videoの動作確認とは、以下の処理を指します。

  • 学習(Training)
  • 推論(Inference)

それぞれを以下で説明します。

学習(Training)

「is surfing」の動画生成には、「is surfing」用の学習済みモデルが必要と述べました。
その学習済みモデルを作成することから、自分で行う必要があります。

学習用の動画や設定ファイルは用意されているので、安心してください。
まずは、学習に必要なStable Diffusionモデルを用意します。

そのモデルを設置するディレクトリをリポジトリルートで作成しましょう。

mkdir checkpoints

作成したディレクトリへ移動。

cd checkpoints

移動先で次のコマンドを実行。
このコマンドでStable Diffusionモデルをダウンロードできます。

git lfs install
git clone https://huggingface.co/CompVis/stable-diffusion-v1-4

ここでは、しばらく時間がかかります。
ダウンロードできたら、次のような構成になります。

ところで、「なぜ、stable-diffusion-v1-4なんだ?」という疑問はあるでしょう。
疑問はあっても、初めは公式の手順通りに進めましょう。
そうしないと、何かトラブルがあったときに原因究明に時間がかかります。

では、一旦リポジトリルートに戻りましょう。

cd ..

リポジトリルートにおいて、次のコマンドによって学習を行います。

accelerate launch train_tuneavideo.py --config="configs/man-surfing.yaml"

「accelerate launch」が機能しない場合は、次の記事で確認してみてください。

次のように学習が開始されれば、あとは待つだけです。

Steps:   5%|███

マシンスペックによると思いますが、私の環境では10分ほどかかりました。
なお、GPU環境は以下となります。

> python -m xformers.info
WARNING:root:A matching Triton is not available, some optimizations will not be enabled.
Error caught was: No module named 'triton'
xFormers 0.0.14.dev
memory_efficient_attention.flshatt:      available - requires GPU with compute capability 7.5+
memory_efficient_attention.cutlass:      available
memory_efficient_attention.small_k:      available
is_triton_available:                     False
is_functorch_available:                  False
pytorch.version:                         1.13.1+cu116
pytorch.cuda:                            available
gpu.compute_capability:                  8.6
gpu.name:                                NVIDIA GeForce RTX 3090

学習が完了すると、「output」ディレクトリ以下は次のようになっているはずです。

「2023-02-01T07-46-40」が、学習済みモデルとなります。
保存場所は、「man-surfing.yaml」に記載されています。

推論(Inference)

学習済みモデルが準備できたら、推論が可能になります。
公式で公開されているコードを少し変更しています。

from tuneavideo.pipelines.pipeline_tuneavideo import TuneAVideoPipeline
from tuneavideo.models.unet import UNet3DConditionModel
from tuneavideo.util import save_videos_grid
import torch

save_dir = "./gif/"

model_id = "path-to-your-trained-model"
unet = UNet3DConditionModel.from_pretrained(model_id, subfolder='unet', torch_dtype=torch.float16).to('cuda')
pipe = TuneAVideoPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", unet=unet, torch_dtype=torch.float16).to("cuda")

prompt = "a panda is surfing"
video = pipe(prompt, video_length=8, height=512, width=512, num_inference_steps=50, guidance_scale=7.5).videos

save_videos_grid(video, save_dir + f"{prompt}.gif")

このコードは、基本的にはリポジトリルートで実行することが想定されています。
そのため、「test_Inference.py」としてリポジトリルートに保存します。

以下は、先ほど作成した学習済みモデルのパスに変更しましょう。

model_id = "path-to-your-trained-model"

model_id = "./outputs/man-surfing_lr3e-5_seed33/2023-02-01T07-46-40" 

そして、実行前に「gif」ディレクトリをリポジトリルートに作成しておきます。
ここに生成された動画が保存されることになります。

また、「”CompVis/stable-diffusion-v1-4″」が気になるかもしれません。
ここも、まずは公式の通りに行きましょう。

コードを実行すると、「”CompVis/stable-diffusion-v1-4″」のダウンロードが始まります。
これは、初回時(キャッシュに存在しない場合)のお約束です。

動画生成の処理自体は、30秒程度で終わっています。
これもマシンスペックに依存します。

処理が完了すると、「gif」の下にファイルが保存されていることを確認できます。

指定したプロンプトが、ファイル名になる仕様です。
実行日時をファイル名に足してもよいかもしれません。

生成されたGIFアニメは、以下。

これは、そこそこいい感じで生成できましたね。

以上、Tune-A-Videoの動作確認を説明しました。

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