SDXL 1.0 (Stable Diffusion XL 1.0) にLoRAを適用させてみました

はじめに

SDXLで使えるLoRAがCIVITAIに公開されていたので使ってみました。

最近公開されたDiffusers==0.22.0からLoRAの使い方が変わったようです。

SDXL 1.0の基本的な使い方はこちらを参照して下さい。
touch-sp.hatenablog.com

Pythonスクリプト

「LoRA」という名前のフォルダを作成し、その中にLoRAファイルをダウンロード、保存しました。

今回は「pixel-art-xl-v1.1.safetensors」というのを使わせて頂きました。

Weightを変えながら比較してみました。

from diffusers import DiffusionPipeline
import torch

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

prompt = "portrait of young japanese girl, 20 years old, 8k, detailed, standing on street, smiling, plain white t-shirt, eye level angle, pixel art"
negative_prompt = "worst quality, low quality"

seed = 20000

# no lora
generator = torch.manual_seed(seed)
image = pipe(
    prompt, 
    negative_prompt=negative_prompt, 
    generator=generator,
    num_inference_steps=25).images[0]

image.save("no_lora_result.png")

# with lora
pipe.load_lora_weights("lora/pixel-art-xl-v1.1.safetensors", adapter_name="pixel")
weight_list = [0.3, 0.5, 1.0]

for weight in weight_list:
    pipe.set_adapters(["pixel"], adapter_weights=[weight])

    generator = torch.manual_seed(seed)
    image = pipe(
        prompt, 
        negative_prompt=negative_prompt, 
        generator=generator,
        num_inference_steps=25).images[0]

    image.save(f"with_lora_result_{weight}.png")

結果


ちゃんと動作していることがわかります。

補足

Image2Image + LoRA の記事も書いています。よかったら見て下さい。
touch-sp.hatenablog.com

補足2

LoRAの学習についても記事を書いています。良かったら見て下さい。
touch-sp.hatenablog.com



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