「Tune-A-Video」をWindows11で試す

概要

Tune-A-Video」はテキストからビデオを生成する為に、画像生成のモデルをファインチューニングする手法。

この手法により、テキストから下記のようなGIF画像を生成できる。

"a panda is surfing"

github.com

環境

OS Windows11
GPU NVIDIA GeForce RTX 3080Ti

セットアップ

実行するにはGPUを使用する必要がある為、WindowsでGPUが使用できるようにする。

CUDA+cuDNNをインストールしPyTorchでGPUを認識させるまでの手順(Window11) - テク×てく ブログ

プロジェクトのダウンロード

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

StableDiffusionのモデルをダウンロード

mkdir checkpoints
cd checkpoints
git clone https://huggingface.co/CompVis/stable-diffusion-v1-4

環境設定

venvを作成。

python -m venv venv
.\venv\Scripts\activate

pytorchを自分のcudaのバージョンに合わせてインストール。

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

各種ライブラリをインストール。

pip install -r requirements.txt

xformersをインストール。こちらもpytorchと同様に自分のcudaのバージョンに合わせてインストール。

pip install -U -I --no-deps https:*//github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl*

学習

下記のコマンドで学習開始。

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

推論

学習完了後、下記のコードを実行することでGIF画像の生成が行える。

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

model_id = "学習したモデルデータのパス"
unet = UNet3DConditionModel.from_pretrained(model_id, subfolder='unet', torch_dtype=torch.float16).to('cuda')
unet.enable_xformers_memory_efficient_attention()
pipe = TuneAVideoPipeline.from_pretrained("checkpoints/stable-diffusion-v1-4", unet=unet, torch_dtype=torch.float16).to("cuda")

torch.cuda.manual_seed(0)
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, f"{prompt}.gif")