【Diffusers】DiffusersからMultiDiffusionを使ってみる(パノラマ画像が作れます)


はじめに

DiffusersからMultiDiffusion(Fusing Diffusion Paths for Controlled Image Generation)を使ってみました。

横長や縦長の画像を作成可能です。
デフォルトサイズは2048x512です。

通常ならVRAM不足になりそうですがこちらを使うとVRAM使用量は少なく済みます(後述)

PC環境

Windows 11
CUDA 11.6.2
Python 3.10.9

環境構築

pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install  diffusers[torch]==0.13.1
pip install transformers==4.26.1
pip install safetensors==0.2.8
pip install xformers==0.0.17.dev465

Pythonスクリプト

import torch
from diffusers import StableDiffusionPanoramaPipeline, DDIMScheduler

model_ckpt = 'stabilityai/stable-diffusion-2-1-base'

scheduler = DDIMScheduler.from_pretrained(model_ckpt, subfolder="scheduler")
pipe = StableDiffusionPanoramaPipeline.from_pretrained(model_ckpt, scheduler=scheduler, torch_dtype=torch.float16)

pipe.to('cuda')
pipe.enable_xformers_memory_efficient_attention()

prompt = 'a photo of mountain range'
image = pipe(
    prompt= prompt).images[0]
image.save('result.png')

これだけで冒頭の画像が作成されます。

VRAM使用量

float16を指定してxFormersを使うとVRAM使用はたったの4.4GBでした。