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