SDXL 1.0 (Stable Diffusion XL 1.0) で Image2Image + LoRA を試す

はじめに

Text2Image + LoRAは以前書きました。
touch-sp.hatenablog.com
今回は Image2Image + LoRA に挑戦しました。

注意

Diffusers==0.19.3までは以下のエラーが出ます。

from diffusers import AutoPipelineForImage2Image
import torch

pipe = AutoPipelineForImage2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", 
    torch_dtype=torch.float16).to("cuda")

pipe.load_lora_weights("lora/pixel-art-xl.safetensors")
    raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'ModuleList' object has no attribute '4

github.com
Diffusers==0.19.3までを使う場合にはこのようにして下さい。

from diffusers import AutoPipelineForImage2Image, DiffusionPipeline
import torch

pipe = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", 
    torch_dtype=torch.float16).to("cuda")

pipe.load_lora_weights("lora/pixel-art-xl.safetensors")

img2img_lora = AutoPipelineForImage2Image.from_pipe(pipe)



この先はDiffusers==0.19.3以降(0.19.3を含まない)を使っています。

結果

元画像

こちらで作成した画像を使用しました。


Pythonスクリプト

from diffusers import AutoPipelineForImage2Image
from diffusers.utils import load_image
import torch

pipe = AutoPipelineForImage2Image.from_pretrained(
    "model/stable-diffusion-xl-base-1.0", 
    torch_dtype=torch.float16).to("cuda")

pipe.load_lora_weights("lora/pixel-art-xl.safetensors")

prompt = "young japanese woman, pixel art"
negative_prompt = "worst quality, low quality"

init_image = load_image("girl.png").resize((1024,1024))

seed = 20000
generator = torch.manual_seed(seed)
image = pipe(
    prompt=prompt, 
    negative_prompt=negative_prompt,
    image=init_image,
    generator=generator,
    strength=0.4).images[0]

image.save("img2img_lora.png")

作成画像





このエントリーをはてなブックマークに追加