概要
「Tune-A-Video」はテキストからビデオを生成する為に、画像生成のモデルをファインチューニングする手法。
この手法により、テキストから下記のようなGIF画像を生成できる。
"a panda is surfing"
環境
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")