自前の画像でSDXL 1.0 (Stable Diffusion XL 1.0) のLoRA学習 (DreamBooth fine-tuning via LoRA) を行う

はじめに

今回の学習は「DreamBooth fine-tuning of the SDXL UNet via LoRA」として紹介されています。

いわゆる通常のLoRAとは異なるようです。

以前にサンプル画像を使って学習を行いました。
touch-sp.hatenablog.com
今回は自前の画像を学習させてみました。

やりたいこと

今回やりたかったことはファインチューニングしたモデルに「sks robot」というpromptを与えて以下のようなオリジナルのロボットを出力することです。




以前Stable Diffusion 1.4で同じことをやっています。今回はSDXLで挑戦です。
touch-sp.hatenablog.com

用紙した画像

36枚の画像を用意しました。

学習の実行

$ accelerate config
------------------------------------------------------------------------------------------------------------------------
In which compute environment are you running?
This machine
------------------------------------------------------------------------------------------------------------------------
Which type of machine are you using?
No distributed training
Do you want to run your training on CPU only (even if a GPU / Apple Silicon device is available)? [yes/NO]:NO
Do you wish to optimize your script with torch dynamo?[yes/NO]:NO
Do you want to use DeepSpeed? [yes/NO]: NO
What GPU(s) (by id) should be used for training on this machine as a comma-seperated list? [all]:all
------------------------------------------------------------------------------------------------------------------------
Do you wish to use FP16 or BF16 (mixed precision)?
fp16
accelerate launch train_dreambooth_lora_sdxl.py \
  --pretrained_model_name_or_path="stable-diffusion-xl-base-1.0"  \
  --instance_data_dir="robo-images" \
  --pretrained_vae_model_name_or_path="madebyollin/sdxl-vae-fp16-fix" \
  --output_dir="robo-trained" \
  --mixed_precision="fp16" \
  --instance_prompt="a photo of sks robot" \
  --resolution=1024 \
  --train_batch_size=2 \
  --gradient_accumulation_steps=4 \
  --gradient_checkpointing \
  --learning_rate=1e-4 \
  --lr_scheduler="constant" \
  --lr_warmup_steps=0 \
  --max_train_steps=1500 \
  --checkpointing_steps=300 \
  --seed="0" \
  --enable_xformers_memory_efficient_attention \
  --use_8bit_adam

結果

promptは「a photo of sks robot on the beach」としました。

左から学習ステップ 300→600→900→1200→1500です。



学習が進むにつれて狙ったロボット画像に近づいています。

続き

続きの記事を書きました。
touch-sp.hatenablog.com



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