はじめに
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")