Files
Kohya-ss-sd-scripts/docs/train_lllite_README-ja.md
2023-08-20 18:30:49 +09:00

4.8 KiB
Raw Blame History

ControlNet-LLLite について

きわめて実験的な実装のため、将来的に大きく変更される可能性があります。

概要

ControlNet-LLLite は、ControlNet の軽量版です。LoRA Like Lite という意味で、LoRAからインスピレーションを得た構造を持つ、軽量なControlNetです。現在はSDXLにのみ対応しています。

サンプルの重みファイルと推論

こちらにあります: https://huggingface.co/kohya-ss/controlnet-lllite

ComfyUIのカスタムードを用意しています。: https://github.com/kohya-ss/ControlNet-LLLite-ComfyUI

生成サンプルはこのページの末尾にあります。

モデル構造

ひとつのLLLiteモジュールは、制御用画像以下conditioning imageを潜在空間に写像するconditioning image embeddingと、LoRAにちょっと似た構造を持つ小型のネットワークからなります。LLLiteモジュールを、LoRAと同様にU-NetのLinearやConvに追加します。詳しくはソースコードを参照してください。

推論環境の制限で、現在はCrossAttentionのみattn1のq/k/v、attn2のqに追加されます。

モデルの学習

データセットの準備

通常のdatasetに加え、conditioning_data_dir で指定したディレクトリにconditioning imageを格納してください。conditioning imageは学習用画像と同じbasenameを持つ必要があります。また、conditioning imageは学習用画像と同じサイズに自動的にリサイズされます。

[[datasets.subsets]]
image_dir = "path/to/image/dir"
caption_extension = ".txt"
conditioning_data_dir = "path/to/conditioning/image/dir"

現時点の制約として、random_cropは使用できません。

学習データとしては、元のモデルで生成した画像を学習用画像として、そこから加工した画像をconditioning imageとするのが良いようです。元モデルと異なる画風の画像を学習用画像とすると、制御に加えて、その画風についても学ぶ必要が生じます。ControlNet-LLLiteは容量が少ないため、画風学習には不向きです。

もし生成画像以外を学習用画像とする場合には、後述の次元数を多めにしてください。

学習

スクリプトで生成する場合は、sdxl_train_control_net_lllite.py を実行してください。--cond_emb_dim でconditioning image embeddingの次元数を指定できます。--network_dim でLoRA的モジュールのrankを指定できます。その他のオプションはsdxl_train_network.pyに準じますが、--network_moduleの指定は不要です。

学習時にはメモリを大量に使用しますので、キャッシュやgradient checkpointingなどの省メモリ化のオプションを有効にしてください。また--full_bf16 オプションで、BFloat16を使用するのも有効ですRTX 30シリーズ以降のGPUが必要です。24GB VRAMで動作確認しています。

conditioning image embeddingの次元数は、サンプルのCannyでは32を指定しています。LoRA的モジュールのrankは同じく64です。対象とするconditioning imageの特徴に合わせて調整してください。

サンプルのCannyは恐らくかなり難しいと思われます。depthなどでは半分程度にしてもいいかもしれません。

推論

スクリプトで生成する場合は、sdxl_gen_img.py を実行してください。--control_net_lllite_models でLLLiteのモデルファイルを指定できます。次元数はモデルファイルから自動取得します。

--guide_image_pathで推論に用いるconditioning imageを指定してください。なおpreprocessは行われないため、たとえばCannyならCanny処理を行った画像を指定してください背景黒に白線--control_net_preps, --control_net_weights, --control_net_ratios には未対応です。

謝辞

ControlNetの作者である lllyasviel 氏、実装上のアドバイスとトラブル解決へのご尽力をいただいた furusu 氏、ControlNetデータセットを実装していただいた ddPn08 氏に感謝いたします。

サンプル

Canny kohya_ss_girl_standing_at_classroom_smiling_to_the_viewer_class_78976b3e-0d4d-4ea0-b8e3-053ae493abbc

im_20230820104253_000_1

im_20230820104302_000_1

im_20230820104310_000_1