LoRAの学習でEpochとDimが高いLoRAとEpochとDimが低いLoRAで出力画像にどのような違いがあるか (SDXL版) - Stable Diffusion

LoRAの学習で高いDimと低いDimで出力画像にどのような違いがあるかを確認します。

経緯

こちらの記事では、 network_dimが低い場合は低い学習回数で学習が結果に反映されますが、network_dimが高い場合は、network_dimが低い場合と同じ学習回数でも、 結果に学習結果が反映されにくいことがわかりました。
この記事では、低いnetwork_dimと高いnetwork_dimで学習回数を変化させながら生成画像の違いを確認します。

LoRAの学習

学習データ

こちらのページの「学習データ (テスト用 ミニ v4)」を利用します。

パラメーター

SDXLで学習します。
exec.bat
accelerate launch --num_cpu_threads_per_process 1 sdxl_train_network.py --config_file=D:\data\lora-toricchi-xl4\config.toml
config.toml
[model_arguments]
pretrained_model_name_or_path = "D:\\data\\model\\sdXL_v10.safetensors"

[additional_network_arguments]
network_train_unet_only = true
cache_text_encoder_outputs = true
network_module = "networks.lora"

[optimizer_arguments]
optimizer_type = "AdamW"
learning_rate = 1e-4
network_dim = 2 #この値を変化させる (2,4,8,16,32,64,128,256)
network_alpha = 1

[dataset_arguments]
dataset_config = "D:\\data\\lora-toricchi-xl4\\dataset.toml"
cache_latents = true

[training_arguments]
output_dir = "D:\\data\\lora-toricchi-xl4\\output"
output_name = "toricchi"
save_every_n_epochs = 100
save_model_as = "safetensors"
max_train_steps = 10000
xformers = true
mixed_precision= "bf16"
gradient_checkpointing = true
persistent_data_loader_workers = true
keep_tokens = 1

[dreambooth_arguments]
prior_loss_weight = 1.0
dataset.toml
[general]
enable_bucket = true 

[[datasets]]
resolution = 1024
batch_size = 1

[[datasets.subsets]]
image_dir = 'D:\data\lora-toricchi-xl4\toricchi'
caption_extension = '.txt'
num_repeats = 1

学習

上記の設定で学習します。network_dimの値が大きいほどVRAMの使用量も増加し学習に時間がかかります。

プロンプト

次の3つのプロンプトで高いDimと低いDimのLoraで出力の違いを確認します。
Prompt1
Prompt: <lora:toricchi-000n00:1> toricchi, duck
Negative prompt: worst quality, low quality
Prompt2
Prompt: <lora:toricchi-000n00:1> toricchi, duck,1 girl, sunflower field background, blue sky
Negative prompt: worst quality, low quality
Prompt3
Prompt: <lora:toricchi-000n00:1> toricchi, duck, cyberpunk, dark city, battle
Negative prompt: worst quality, low quality

生成結果

Dim2:Epoch400

Prompt1
Prompt2
Prompt3

Dim4:Epoch600

Prompt1
Prompt2
Prompt3

Dim8:Epoch800

Prompt1
Prompt2
Prompt3

Dim16:Epoch800

Prompt1
Prompt2
Prompt3

Dim32:Epoch1000

Prompt1
Prompt2
Prompt3

Dim64:Epoch1400

Prompt1
Prompt2
Prompt3

Dim128:Epoch1400

Prompt1
Prompt2
Prompt3

所感・評価

Dimの値が4までは、Prompt3で背景が描画されますが、Dimの値が8以上になると、背景がグレー一色になってしまう出力が増えます。
背景がグレーになってしまうのは学習のし過ぎと推測されます。
こちらの記事では高いnetwork_dimでは学習の結果反映が弱いですが、 これは、Epochが70の場合での結果であり、Epoch1400まで学習を進めてしまうと学習のし過ぎであると推測できます。

他の比較結果と合わせた結果はこちらの記事も参照してください。
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2023-08-12
iPentec all rights reserverd.