画像生成AIの情報を纏めるWikiです。


概要

Low-rank Adaptation for Fast Text-to-Image Diffusion Fine-tuning
簡単に言えば「省メモリで高速に学習できて容量も小さくて済む追加学習法」。作成方法はいろいろある。


他の学習法とどう違うねん? reddit民によればこんな感じのイメージらしい。
https://www.reddit.com/r/StableDiffusion/comments/...
kohya_ss版sd-scriptsの登場以来、sd-scripts及びそれの派生ツールが人気となっている。
このページではsd-scripts関連の情報について雑に書いてある。
ページの更新がほとんどされておらず、古くなっていることに留意。
このページもといローカル部のページのほとんどが更新停止で悲しい🥺
ここの情報はSD1.5に関するもの。現時点でSDXLの情報は無い。
SDXL関連はスレか他所のページを見ましょう。

公式情報

sd-scripts (kohya)

一番はじめは作者が詳しく書いてくれている公式READMEを見よう!話はそれからだ!

記事

LoRA学習用サンプルデータ
https://note.com/kohya_ss/n/nb20c5187e15a
  • 作者本人によるサンプル。
LoRA Training Guide
https://rentry.org/lora_train
  • 4chan有志によるLoRAトレーニング法ガイド(英語)
いろいろLoRA作成記録
https://rentry.co/irir_lora
  • 512,768,1024の違い、小物、シチュエーション、背景、画風とかいろいろ
LoRA 学習メモ
https://rentry.org/i5ynb
  • スレ住民によるLain・よしなが先生・野原ひろしLoRA作成者によるLoRAガイド(日本語)
    更新:2023-03-15|"--caption_extension=.txt"の引数を追加して明示的に指定しないとタグファイル(.txt)を読みにいかない仕様の注意喚起を追加しました。
    更新:2023-02-09|低リソース学習(NIKKE)、低dim学習(ゆるキャン 犬山あおい)などを追加しました。
ソウリンちゃんLoRAの作成記録
https://rentry.org/sourin_chan
  • スレ住民によるマルゼン式(ふたば有志のタグ付け手法の1つ)で作成したLoRA作成記録(日本語)
原神LoRA作成メモ・検証
https://rentry.org/genshin_lora
  • スレ住民によるkohya-ss氏制作のSDスクリプト(https://github.com/kohya-ss/sd-scripts )で次のキャラのLoRAを作成した。ポップアップ版使用。(日本語)
    • 筆者による追記:SD1.5時代の試行錯誤していた頃の情報で古くなっています。参考にしないでください。
スレ住民によるキャラクター学習のタグ付け一例(日本語)
https://rentry.org/dsvqnd
LAZY TRAINING GUIDE
https://rentry.org/LazyTrainingGuide
  • loraをいっぱい作ってる海外ニキの打率9割学習ガイド
あかちゃんLoRAノートブック
kohya_train_network_simple
  • 全然スレに書き込めないけどけなげに頑張っている
  • クラウドGPUを使う場合はリンク先の下の方に Colab Instructions がある
  • フォルダ命名方法に気をつけて、自前のファイルは半角スペース一切入れないようにすれば無料Colabでも回せる。頑張れ。


インストール、初回セットアップ編

sd-scripts (作: kohya)


純正のsd-scripts。コマンドプロンプトとか黒い画面にコマンドを打って使うやつや
  1. 最新機能を使いたい
  2. 安定した動作をのぞむ
こういう場合はこれを最初に試してな
インストールは下記を参考に

GUI・補助ツール

純正のsd-scriptsをかんたんに使えるようにしたものやで
bmaltais版GUIかKohya_lora_param_guiがおすすめ。Kohya_lora_param_guiは日本語で親切設計で使いやすい。

bmaltais版 GUI

https://github.com/bmaltais/kohya_ss
GUI といっても作者の sd-scripts にパラメータを渡すだけや。性能は変わらん。セットアップがちょっとだけ楽。
GUIのほうが更新が数日遅れるのが常やから我慢してや。
  • GradioベースのGUI。
  • 「Tools」タブにフォルダ配置補助機能がある。
  • スクリプト版のパラメータの一部は設定出来ないかも?
  • 起動は、powershellならactivate.ps1、gui-user.ps1を順番に呼ぶのが早い(自動でブラウザも立ち上がる)
  • アップデートは upgrade.ps1 をpowershellで実行

Kohya_lora_param_gui (スレ住民作)

https://github.com/RedRayz/Kohya_lora_param_gui
https://github.com/kohya-ss/sd-scripts の学習用のパラメータ設定してコマンドラインに渡すGUIです。
  • accelerate実行時のオプション(引数)「パラメーター設定をGUIで行えるようにした」もの。
  • 単体でsd-scriptsのインストール・更新ができるようになった。
  • LECOの学習もできる。
  • としあきbatやlora_train_command_lineを毎回編集してた人、accelerateの引数を色々メモってた人にオススメかも。GUI上で数値とか編集してそのままaccelerateに渡す感。捗る。

LoRA_Easy_Training_Scripts Installers

最初はまっさらなフォルダにインストールするんやで
https://github.com/derrian-distro/LoRA_Easy_Traini...
下記の学習の手順で使うEasyTrainScriptsの人が作った簡易インストールスクリプト
画面右の Releases の下の Installers をクリック > 下にスクロールして install_sd_scripts_v5.bat をダウンロードする
右クリックして管理者として実行すると sd-scripts 本体と Easy_Train_Scripts の両方をインストールして、インストール後の初期設定までやってくれる。
うまくいかなかったら Gitをインストール してリトライ
わからないとき用画像↓
アップデートはupdate.bat からの upgrade.bat (大きなバージョンアップのときは入れ直し)

あかちゃんLoraインストーラー

あかちゃんインストーラーで1111を入れた人向けにPYTHONとGITのPATHをいじってあるやつ
start.batと同じフォルダに入れて実行してください

AUTOMATIC1111 SD WebUI 拡張機能版 (作: ddPn08 GUI) ※更新停止

ttps://github.com/ddPn08/kohya-sd-scripts-webui
去年の六月を最後に更新が停止しています。現在も動作するかは不明です。

sd-webui-train-tools

https://github.com/liasece/sd-webui-train-tools
AUTOMATIC1111 SD WebUI 用の 拡張機能
画像をドロップしてパラメータを程よく埋めると出来る。簡単
動かんときは別にWebUIをセットアップして学習専用にしたほうがいい。
ReadMEが中国語なのでgoogle翻訳頑張れるなら
更新頻度が低く最新の機能は使えない

その他補助スクリプト

としあきbatや4chan製のスクリプトがある

アップデートは

クラウド

あかちゃんLoraノートブック
海外ニキのjupyter notebook
リンクのみ紹介。その都度最新版を取ってくるので動かなくても泣かない。
https://github.com/Linaqruf/kohya-trainer

学習用画像を置くフォルダの配置

sd-scripts で --dataset_config で設定ファイルを渡す場合は異なる
https://github.com/kohya-ss/sd-scripts/blob/main/c... を読んで
  • フォルダの配置例:

※要するに<繰り返し回数>_<インスタンスプロンプト>にリネームした学習画像データのフォルダは直接指定しないでねって話
例えば↓こういうこと
❌E:\kohya_ss\TrainDatas\001\img\40_kdy 1girl
🟢E:\kohya_ss\TrainDatas\001\img
間違うと画像が見つかりませんと怒られる

  • 同時に10まで概念を学習できるが、少なくとも1つはフォルダが必要。
  • フォルダの名前は <繰り返し回数>_<インスタンスプロンプト>
    • <繰り返し回数> 繰り返し回数×学習用画像の枚数を1セット(1 epoch)として学習する
※注 学習用の画像が50枚ある場合、繰り返し回数を20 にすると 20 x 50 = 1000 ステップ学習する
    • <インスタンスプロンプト> クラス 呼び出し用のキーワード クラスは英単語にない意味のないワードがよい
    • 上記kohya氏のサンプルだと「20_sls frog」 脳死で真似するなら 繰り返し回数_意味のないワード WEBUIでプロンプトとして書きたい単語 で設定しておく
    • キャプション ファイルは必須です。そうでない場合、LoRA は概念名をキャプションとして使用してトレーニングを行います。
    • キャプションについては以下

キャプション・タグを付ける

作者の詳しい画像付き説明
https://github.com/kohya-ss/sd-scripts/blob/main/d...
  • 学習用の素材画像それぞれに内容を説明するテキストファイルを作る。このテキストファイルには画像生成時のプロンプトと同じようにタグを記載する。
  • テキストエディターやメモ帳で1つずつ作っても良いのだが、WD1.4 Tagger 等のツールを使えば一気に自動生成できて捗る

WD1.4 Taggerで作成

先に学習用画像を連番にリネームしておく (01.png, 02.png, ...など)

画像

Web UI に拡張機能 stable-diffusion-webui-wd14-tagger https://github.com/toriato/stable-diffusion-webui-...をインストール
「Tagger」タブの「Batch from directory」
  • 入力ファイル:学習用画像の入っているフォルダ
  • Interrogator:wd-14convnext
  • アンダースコアの代わりにスペースを使用する:オン
  • 括弧をエスケープする:オン

画像

Interrogateを押すと学習用画像のフォルダにタグの付いた .txt ファイルが生成される

画像

Dataset Tag Editorで作成/編集

たぶんとしあきがつくったやつ。サブディレクトリまで読んで一括でタグ付けしたり、慣れればかなり快適にタグ付けできる。
タグ付け
  1. まずフォルダ指定してLoad なんちゃら2つチェックでOverwrite選択してInterrogatorsを好みのやつ選択
  2. Interrogator Settingsの下の閾値チェックしたら上のLoadで画像読み込みや
  3. ほんで画像読み込みと同時にタグも内部で生成しとるから終わったら次は右上のタブFile by Selectionでどの画像に適用するか選択や
  4. とりあえず右のAdd ALL Displayedですべての画像選択して下のApply selection filterで適用して最後に左上のSave all changeですべて適用や
これでタグテキストが生成される
空の000ファイルが出てくるのは編集前のテキストファイルのバックアップや

キャプション・タグの編集

  • タグは順序に影響を受けるので、一番最初に有効化したいタグを記述する
  • WD1.4Tagger等で自動生成したファイルには不要なタグが含まれたり誤認識されたタグが記載されたりするので編集する。
BooruDatasetTagManager
https://github.com/starik222/BooruDatasetTagManage...
学習用タグの入力を速く楽にするやつ
ローカルの「ツール」 https://uploader.cc/s/rdw0k6qd2766czgdwwwjtn2xtmhi...
WebUI用拡張機能 Dataset Tag Editor
https://github.com/toshiaki1729/stable-diffusion-w... 日本語READMEに使い方が書いてある
等の便利なツールを使えば捗る。必要なタグを追加、不要なタグの削除、順序の入れ替え等の編集をやる
  • taggerで生成したタグの順序のままでも構わないが、重要なタグだけ各ファイルの先頭の方に記載する。例えばコマンドライン版(lora_train_command_line.py)の場合、
        self.shuffle_captions: bool = True  # OPTIONAL, False to ignore ~~
        self.keep_tokens: Union[int, None] = 3  # OPTIONAL, None to ignore ~~
上記のように設定すれば先頭から3つのタグは順序固定として残りはタグの適当にシャッフルして学習できる。
  • Dataset Tag Editorを使った簡単タグ整理法
 1.WD1.4Taggerなどを使用してタグ付けを実施。
 2.Dataset Tag EditorでBatch Edit Captionsを選択し、さらにRemoveを選択。
 3.誤検出で生じる完全に不要なタグを選択し削除する。
 4.学習タグおよびそれに類するタグを一度削除する。
 5.RemoveからEdit tagsへ項目を移動、Common Tagsを空欄にしEdit Tagsに学習タグを記載。
 6.Prepend additional tagsにチェックを入れてApply Changes to filtered imagesを選択。
 このように作業すればどのファイルも学習タグを先頭に持ってこられている状態であるため、タグに学習内容を関連付けしやすくなる。

キャプションの付け方・考え方の参考サイト

lora training tagging faq
英語サイトだがブラウザの翻訳で読もう
キャラクター学習のタグ付け一例
実例を挙げての解説
一言で言えば「呼び出しキーワード」+「学習から外したいもの」をタグに書く
LoRAキャプション編集の話
住民作ブルマ体操服LoRAのタグ付けを解説
Danbooruタグにない1トークンのワード一覧
公式ドキュメントで言及されている「tokinizerで1トークンになる3文字以下でレアな単語」を使いたい場合に有用

学習用画像の加工

  • 本文で説明している kohya 版のLoRAではトリミングはしなくていい(画像のサイズ別に学習が行われる)
  • あまりにも小さい画像(200pxとか)はUpscaylなどで拡大しておくか bucket_no_upscale をオンにする
  • 背景の切り抜きは画像の大きさを揃えて下記のツールでやると楽。
  • 切り抜く場合の背景色について (折りたたみ)

  • キャラの切り出しだけやったら3Dペイント(Win10なら標準、11では標準からリストラされたけどストアにおるで)のマジック選択でええ感じに切り抜きやすいからそこからgimpなりで微調整。
  • 一枚一枚やんのめんどくさい言うんやったらABG_extension言うのが出たんでつこてみたらええんとちゃうかな…?しらんけど
ABG_extension
https://github.com/KutsuyaYuki/ABG_extension
WebUI公式extension。背景を自動で除去します。アニメ画像用に微調整されたonnxモデルを使用。GPUで動作します。
katanuki
https://github.com/aka7774/sd_katanuki
WebUI用extension。anime-segmentation を 1111 で使えるようにしたやつ。画像の背景を透過したり白背景にしたりマスク画像を出力する
stable-diffusion-webui-rembg
https://github.com/AUTOMATIC1111/stable-diffusion-...
WebUI用extension。rembg を 1111 で使えるようにしたやつ。動かんときはvenv消してみる。
u2net_human_seg あたりがちょうど良さげ
切り抜きノイズ除去ツール
https://12.gigafile.nu/0629-bc2ae51e82ab361567d60e...
174スレ>>294 切り抜きで残った半透明のノイズを削除したり白背景にしたりするツールを作ったで

Lama-Cleaner
https://github.com/Sanster/lama-cleaner
AIで不純物とかを消してでっち上げるやつ。割と重い。windows用インストーラーあり。
WebUI用extensionもある Extensions_URL

正則化画像

LoRAの用途を考えると基本的に不要。なお、透明正則化の効果は無いと思われる。
  • ChatGPTたん曰く「過学習を抑えるためのもの」
  • キャプションつけたらそのプロンプトで学習させるモデルを使って(適当なネガティブプロンプトをつけて)作成すればいい・・・のだが詳しくはわからないので誰か書いてクレメンス
  • 「鳥獣戯画のカエルちゃん」を覚える代わりに普通のカエルを忘れて書けなくなるのを防ぐために学習時に普通のカエルの画像を渡しておく感じ?
  • 他所のノートブックを利用しているので確かな事は言えないが、正則化画像を同じような画像で学習させすぎると正則化画像につけたクラストークンで正則化画像の内容を生成するようになる。単に「学習画像と正則画像を二つとも学習する」という挙動のように思われる。

正則化画像検証 (クリックして展開)

透明のPNGを正則化画像にする

透明正則化は効果を確認できないため、やる必要性はない。ただの都市伝説。
Web UI に拡張機能 Generate-TransparentIMG をインストールする
https://github.com/hunyaramoke/Generate-Transparen...
Generate TransparentIMG タブで、「出力フォルダ」には正則化画像の保存先を、「number_of_generation」には作成する枚数を入力して実行

画像

学習の手順 sd-scripts (直接指定)の場合

以下は一例(OptimizerにAdamW8bitを使った場合の例)
venvをactivate して
.\venv\Scripts\activate
accelerate launch の行を入力して実行
※長いので改行しているが、改行を取って全てを1行で書く事!
もしくは行末に ^ 記号を付けると ^直後の改行が無視され、複数行に分けたまま入力できる
accelerate launch --num_cpu_threads_per_process 1 train_network.py 
 --pretrained_model_name_or_path=D:\stable-diffusion-webui\models\Stable-diffusion\model.safetensors 
 --train_data_dir=D:\sd-scripts\training 
 --output_dir=D:\sd-scripts\outputs 
 --reg_data_dir=D:\sd-scripts\seisoku 
 --resolution=512,512 
 --save_model_as=safetensors 
 --clip_skip=2 --seed=42 
 --color_aug 
 --min_bucket_reso=320 
 --max_bucket_reso=1024 
 --lr_scheduler=cosine_with_restarts 
 --lr_warmup_steps=500 
 --keep_tokens=1 
 --shuffle_caption 
 --enable_bucket 
 --mixed_precision=fp16 
 --xformers 
 --lr_scheduler_num_cycles=4 
 --caption_extension=.txt 
 --persistent_data_loader_workers 
 --bucket_no_upscale 
 --caption_dropout_rate=0.05 
 --optimizer_type=AdamW8bit 
 --learning_rate=1e-4 
 --network_module=networks.lora 
 --network_dim=128 
 --network_alpha=64 
 --max_train_epochs=10 
 --save_every_n_epochs=1 
 --train_batch_size=2 
  • メモ帳などにコピペして
  • 必要部分を書き換えて
  • 最後に改行を取って1行にして
  • ターミナル(Powershell等)に貼り付けて
  • 実行
  • メモ帳で保存しておけば次回からコピペで使い回せる

備考

  • .txt拡張子のタグファイルを読ませる
"--caption_extension=.txt"の引数を追加して明示的に指定しないとタグファイル(.txt)を読みにいかない仕様があるっぽい。wd tagger等でタグ付けした.txt拡張子のタグファイルがを読ませたい場合、必ずaccelerate launch〜のコマンドに次の引数を追加しておこう
--caption_extension=.txt
なお学習したLoRAがタグファイルを読んでいるかは、Aditional network拡張機能をWEBUIにインストールして、Trainning infoのトグルを開いてタグリストの有無で判別できる。
詳しくはLoRAのメタデータの閲覧/編集の欄を参照
  • 'Triton'エラー
学習開始時に次のメッセージが出ても気にしなくていい。なくても問題なし。そもそもTritonはWindowsに対応してない。
A matching Triton is not available, some optimizations will not be enabled.
Error caught was: No module named 'Triton'


学習の手順 LoRA_Easy_Training_Scriptsの場合

ポップアップ版を使う場合

  1. run_popup.batを実行
  2. ポップアップにパラメーターを順次入力する
  3. 出来上がりを待つ
LoRA_Easy_Training_Scripts ポップアップ版の手順画像 参考程度 (2023-04-02時点)
クリックして展開 アップデートなどで内容は変わる
わからんパラメータが出たらcancelを押しとけばデフォルト値が入る。
英語がわからんときはスクリーンショット撮ってスレで聞いてクレメンス。動かしとるやつなら誰かわかるやろ。

動画(2023-03-04) すぐにアプデで役に立たなくなるが一応 2時間でゴミになりました。
わからんパラメータは キャンセルでデフォルト値が入る
研究心旺盛ニキはコマンドラインの訳を読むとええで lora_train_command_line.py
コマンドライン版を使う場合
  1. ArgsList.pyにパラメーターを書く
※2023/02/24版から設定ファイルがlora_train_command_line.pyからArgsList.pyに変更されているので注意
設定を書き込むのはArgsList.pyの最初の方あたり。学習ベースになるモデル、学習素材フォルダの場所、出力先は必ず設定する。わからんところはそのままにしとく。
記法は以下を参考に、文字列(str)は r"c:\hogehoge" のように入力、数値(float,int)はそのまま数値を入力、Falseとなっている部分はTrueで有効になる。
以下ArgsList.pyの日本語訳

  1. run_command_line.batを実行
  2. 出来上がりを待つ

オプティマイザー

Adafactor
完全自動Optimizer。AdamWより計算も収束も遅い。はっきり言ってLoRAでは使う価値はない。LoRAよりFinetuningなどの大規模学習に向いている。
Adなんとかを使って学習してみたらなんも学習してないのができて悲しかったので、スレでマークしておいたものを記録しておきます。クリックして展開

2023/02/22あたりのAdafactorの話題メモ

LoRAの種類とLyCORISについて

LyCORISについて
https://github.com/KohakuBlueleaf/LyCORIS
LoRAの新しい学習手法をまとめたリポジトリ。通常のLoRAより性能がいいかもしれない。計算速度(it/s)は遅い。
もともとLoConのみだったが、のちに新しいアルゴリズムも追加されLyCORISに統合された。

LyCORIS のインストールと使用方法

sd-scriptsのvenvで
pip install lycoris_lora
でインストールすることで使用可能。
学習時に使用するにはnetwork_moduleに lycoris.kohya を指定する。
python3 sd-scripts/train_network.py 
  --network_module lycoris.kohya 
  --network_dim ○○ --network_alpha ○○
  --network_args "conv_dim=○○" "conv_alpha=○○" "dropout=○○" "algo=lora"
注:1行で入力する事

○○は数値を入力
指定の例
--network_module lycoris.kohya 
--network_dim 64 --network_alpha 32
--network_args "conv_dim=64" "conv_alpha=32" "dropout=0.05" "algo=lora"
生成で使用するには1111のExtensionにa1111-sd-webui-locon、又はa1111-sd-webui-lycorisのインストールが必要。
標準のExtra Networksおよびkohya-ss氏作成のsd-webui-addtional-networksで使用できる。

LoRAの種類

LoRAはその種類によって、次のように分けられる
NOLoRAの種類LoRAの名称使用ネットワークモジュール
(network_module)
使用パラメータ
(network_args)
モデルマージ備考
LoRALierLa/リエラ
(kohya版LoRA)
networks.lora(なし)
kohya版マージスクリプト使用
狭義の意味でのLoRAでこれが大元
LoCon旧版LoConlocon.locon_kohyanetwork_args 'conv_dim=XXX' 'conv_alpha=XXX'
LyCORIS版マージスクリプト使用
LierLaを拡張した元祖LoCon
LyCORISになる前にリリースされた物
C3Lier/セリア
(kohya版LoCon)
networks.loranetwork_args 'conv_dim=XXX' 'conv_alpha=XXX'
kohya版マージスクリプト使用
kohya版LoCon
LyCORIS版LoConlycoris.kohyanetwork_args 'conv_dim=XXX' 'conv_alpha=XXX' 'algo=lora' 又は
network_args 'conv_dim=XXX' 'conv_alpha=XXX' 'algo=locon'

LyCORIS版マージスクリプト使用
'disable_conv_cp=True' で作成したものはマージ不可
LyCORIS版LoCon
その他LyCORISLoHalycoris.kohyanetwork_args 'conv_dim=XXX' 'conv_alpha=XXX' 'algo=loha'
LyCORIS版マージスクリプト使用
容量を小さく出来る
(IA)^3lycoris.kohyanetwork_args 'conv_dim=XXX' 'conv_alpha=XXX' 'algo=ia3'
LyCORIS版マージスクリプト使用
LoKRlycoris.kohyanetwork_args 'conv_dim=XXX' 'conv_alpha=XXX' 'algo=lokr'
LyCORIS版マージスクリプト使用
DyLoRAlycoris.kohyanetwork_args 'conv_dim=XXX' 'conv_alpha=XXX' 'algo=dylora'

画像生成する時の指定方法や使用extensions

🎴指定(プロンプト指定)必要extensions対応LoRATEnc/UNet等の個別パラメータ指定階層LoRA標準のファイル設定フォルダ
(変更は可能)
備考
<lora:>(無し)LoRA()
LoCon(,,)
LyCORIS(,,,)
不可(一括の強度指定のみ)models\LoRA1111標準機能を使用
v1.5.0以降でLyCORISにも対応
<lyco:>a1111-sd-webui-lycorisLoRA()
LoCon(,,)
LyCORIS(,,,)
可 (指定の仕方に注意)models\LyCORISv1.5.0から標準機能で生成出来るため、基本的に使う必要が無くなった
a1111-sd-webui-loconの機能更新版でLyCORISの全アルゴリズムに対応
🎴ボタンにLyCORISタブが新たに出来、<lora:>と同じように自動入力出来る
フォルダ位置に注意
プロンプト指定なしAdditional NetworksLoRA()
LoCon(,,)
不可extensions\sd-webui-additional-networks\models\loraプロンプト入力ではなく拡張タブで指定

階層LoRAの指定の方法

v1.5.0以降では指定の仕方が変わっているので注意
LoRAの場合でも lbw= を指定するようになった
種類指定例(IN02を指定する場合)解説
<lora:><lora:"lora name":1:1:lbw=IN02>"lora name"の後に TEnc:UNet の強度を指定してから lbw= で階層指定
<lyco:>DyLORAの場合<lyco:"lora name":1:1:1:lbw=IN02>"lora name"の後に TEnc:UNet:Dyn の強度を指定してから lbw= で階層指定
DyLORA以外<lyco:"lora name":1:1:lbw=IN02>"lora name"の後に TEnc:UNet の強度を指定してから lbw= で階層指定
省略したDynはデフォルト値としてNoneが内部セットされる

<lora:>と<lyco:>の使い分けについて

v1.5.0以降では、lycorisプラグインが不要になり、1111の内蔵のLoRAで生成が出来る用になった。
その為 a1111-sd-webui-lycoris を導入する必要はなく、<lyco:>を使う必要も無くなった

LoRA層別学習

U-Netの階層別に学習率やDim/Alphaを指定できるようになった。
特定の層のLRを下げたり削除することで画風への影響を減らしたりできる。

コピー機LoRA学習法

過学習させたLoRAをあれこれすることで、目を大きくしたり、アウトラインを太くしたりと非常に細かい部分のみを変更できるLoRAが作成できる手法。
正確な名称はない。複雑な工程があるため長い間謎に包まれていたが読解してくれたニキがいたので掲載↓

649: 今、天王星のwiki見てきたら軌道傾斜角(i) が0.774°だった2023/05/04(木) https://fate.5ch.net/test/read.cgi/liveuranus/1683...
>318
flat式のLora作成工程ってこんな感じであってる?
1:元モデルAで出力画像Bを出す
2:元モデルAに出力画像Bを1枚だけ過学習させて過学習LoraCを作る
3:元モデルAに過学習LoraCをマージしてコピー機モデルDを作る(プロンプト未入力だと出力画像Bしか生成されないモデル)
4:出力画像Bを加工して加工画像Eを作る(この加工部分が完成品LoraHに反映される)
5:コピー機モデルDに加工画像Eを学習させて加工LoraFを作る
6:2から5の工程を別の出力画像Bで行い加工LoraFを複数作る
7:元モデルAに複数の加工LoraFをマージさせて加工モデルGを作る(flatでは彩度明度上げる用のLoraも配合を調整してマージ)
8:元モデルAと加工モデルGでモデル差分からLora作成して完成品LoraHができる(dimの調整はここで行う)

▼Tips
1:元モデルAで出力画像Bを出す(加工画像Eとの差分がはっきりするように加工するとよい、レイヤー分けすれば加工画像Eも作りやすくなる)

▼加工画像サンプル
フラット化LoRAの場合。
←加工前|加工後→
出典:https://fate.5ch.net/test/read.cgi/liveuranus/1683...


その他にどのようなLoRAが作れるかは https://huggingface.co/2vXpSwA7/iroiro-lora/tree/m... をみると良い


コピー機学習法はこちらも参考になる。
https://rentry.co/kopiki_lora

Loraの使用方法


使い方その1とその2で、配置するフォルダが違うので注意!

使い方その1 WebUIに拡張機能をインストールして使う

stable-diffusion-webui\extensions\sd-webui-additional-networks\models\lora フォルダに 出来上がった .pt や .safetensorsをコピーする
(Web UI の 「設定」> 「Additional Nerwork」タブでフォルダの場所を追加出来る)
「txt2img」や「img2img」の画面の左下の方に「Additional Networks ▼」が追加されているので
Enable を押してmodelを選びmerge倍率をweightのスライダーで調整する

わからんとき用画像

使い方その2 WebUIの本体機能のみで使う

  • stable-diffusion-webui\models\lora に拾った .pt や .safetensorsをコピーする
「txt2img」や「img2img」の「生成」ボタンの下の花札みたいなマーク(🎴)を押すと
Texutual Inversion, Hypernetworks, Lora の3つのタブが出るので Lora を選択して
一覧から選ぶと <lora:ファイル名:倍率>みたいなタグがプロンプトに追加される
むかーしに作られたloraは動かんことがある

わからんとき用画像

画像にマウスオーバーして出る(i)をクリックするとloraの作成パラメータや使われたタグが表示される(埋め込んであれば)
WebUIや拡張機能の更新で調子悪くてもどっちかでは動くはず

LoRAのメタデータの閲覧/編集

  • WebUIのExtra Networks > Lora タブで 画像にマウスオーバーして出る(i)をクリックするとloraの作成パラメータや使われたタグが表示される(埋め込んであれば)
  • Additional-networks拡張機能をインストールすると増えるタブ(Additional-networks)からメタデータ編集とかトレーニングデータとか見れる

メタデータの閲覧(Additionak Networks Extension)

  1. タブ(Additional-networks)に移動する
  2. Model path filterに探したいLoRAの名前を入れてフィルタリングしておく
  3. Model から該当するLoRAを選ぶと情報が読み込まれます

図1:UIのサンプル


図2:トレーニングデータのサンプル。最新のsd-scriptsで学習されたLoRAは、Taggerで付けられたタグとそのタグがどれぐらい含まれているかがグラフで閲覧できるようです。
インターネッツの奥底で入手したり いつダウンロードしたか忘れた謎のLoRAもこれでタグを確認してプロンプトに入れれば使えるかもしれない。便利。

メタデータの編集

  1. 編集したいLoRAを読み込んだうえで、まんなかの下のほうにある「Editing Enabled」にチェックを入れる
  2. メタデータを編集する。
    とりあえずKeyword欄にトリガープロンプト、Descriptionに雑多な説明文、CoverImageにサムネ用画像を設定しておくと良いかと思う
  3. 「Save Metadata」でLoRAが保存されます。ちなみに編集前のものは「○○.safetensors.backup」で保存しておいてくれるようです。

なおLoRAはテキストエディタでふつうに開くことができ、トレーニングの設定等(network_dim":"16"とか) も一応確認することができます。
ただ仕様見る限りDescription等を直で編集するのはむずかしそうなので、GUIから設定するのが無難っぽいです。

LECO(Low-rank adaptation for Erasing COncepts)

https://github.com/p1atdev/LECO

プロンプトから特定の概念を消したり強くしたりできる。
例えば、mikoが原神のyae mikoに汚染されているのを取り除くといったことができる。

注意

学習時の精度のbfloat16はNVIDIAのAmpere世代(RTX30)以降のGPUのみ使用可能。それ以外のGPUではfloat32推奨。

メモ / Tips

途中から学習を再開したい


コマンドに以下の引数とパスを指定すれば学習前に学習済みのLoRAの重みを読み込み、そこから追加で学習できます。
--network_weights=

メモ


初めてのLoRA学習素材準備
枚数10〜20 成功するまでそれでいい
エポック もう5でいいや
ステップ 500以上にするな 成功するまで回転は速く
サイズ 2048x2048以上とかでなければそのまま放り込め
キャプション/タグ 編集無しでも何かしら覚えるまず回せ
正則化→なしでやれ 失敗の原因は多分そこじゃない
学習元と出力モデルは揃えろ

スペックに関するTips

VRAM8GBでは512x512、Batch size2は余裕で動く。
gradient_checkpointingを有効にすればVRAM8GBで1024x1024もできる。
瞬間的に物理メモリを20GB消費するので16GB以上あったほうが安心。
仮想メモリはtorchバージョンやmax_data_loader_n_workersの値によるが、20-60GB消費する。

注意点やで

  • 基本的にLoraは元々「DreamBoothみたいに学習した差分ファイルをモデルにマージするための差分パッチみたいなもんとして使う」事が前提で作られとるから、今の個別適用は元々の設計と違う使い方なんや、なんで色々制限事項がある。
    • Loraは原則「作ったモデルと同じ系統(SD-v1.x系 or SD-v2.x)」でしか適用できへんで。要するにAnyとかで作ったLoraはWD1.4以降とかには使われへんし、その逆もしかりや。
      • よく似た使い方するHyperNetworkは系統またいでも一応反映はされとるみたいやで?しらんけど。
      • Extra Netrowksで間違えてSD1.x用のLoRAをSD2.xで使うとWebUIを再起動するまでエラーで二度と使えなくなるから注意やで
    • また、Loraを複数1倍で重ねて使うと絵が崩壊しやすくなる。適用したい階層が違う場合、階層適用出来るエクステンションとかでずらしたらええんとちゃうかな?しらんけど。
    • 先にも書いた通り基本的に差分パッチみたいなもんやからモデルごとに最適な倍率はちゃうかったりするで。あっちのモデルでは1倍でちょうどよかったんがこっちのモデルでは絵が崩壊するとかも普通にあるで。倍率は適度に変えや。
    • 基本的に配布されとるんはkohya氏による拡張版Loraやけど元々の実装版のLoraもDreamBoothエクステンションとかで作れたりするから作った際にはごっちゃにせんようにな?
      • 拡張機能の方はkohya氏による拡張版Loraのみが対応や。本体機能の方は元々の実装版でも行けるんとちゃうかな?しらんけど。

このページへのコメント

SDXL(pony)でLoRA学習始めようとしている赤ちゃんですが、性質上ほぼ縦長になるものです。縦長LoRA作りたい場合はどうするのが良いとかありますでしょうか。
具体的には
学習画像: 縦長のまま入れる or 左右に白帯入れて正方形にする or 上下分割して正方形2ファイルにする
学習設定: 1024pxのまま or 白帯いれてるなら1216pxぐらいにする or アス比調整できるツール使う(使おうとしているこのスレのTrainingGUIアス比指定できない?)

0
Posted by 名無し(ID:/MlVTEOW7A) 2024年04月27日(土) 15:20:16 返信数(2) 返信

aspect ratio bucketingという画像のアスペクト比に合わせた解像度で学習する機能があるので画像そのまま学習できますよ。
引数に--enable_bucketつけると有効にできます

1
Posted by 名無し(ID:1NhN+40vQg) 2024年04月27日(土) 21:41:38

早急な回答ありがとう!! 無駄な検証時間が減りました!
失敗は付き物と言いますけど学習は失敗が多すぎる上に成功してるのか分かりづらい。

0
Posted by 名無し(ID:/MlVTEOW7A) 2024年04月27日(土) 23:50:21

だいぶ情報が古くなってきましたね
そろそろ更新しますか

2
Posted by 名無し(ID:TO97xkL/3Q) 2023年12月16日(土) 16:59:24 返信数(1) 返信

XLでの学習方法の解説なんかは
あると便利かも

bmaltais版 GUIだと
SDXLのプリセットの値が高すぎるんで
下げて使った方が、適度に作る分にも良い感じだし

あと過学習が起きやすいんで、
epochごとのセーブは、こまめに設定した方が良いかも

0
Posted by 名無し(ID:sfrkRBi+dw) 2024年01月23日(火) 15:15:24

Additional-networks拡張機能を使いたい?個々の前に説明書読め
自省を込めて

0
Posted by 名無し(ID:UkNtPSqMXA) 2023年11月26日(日) 06:30:40 返信

kohya方式で3~4000ステップで作るとできるのはできるんだけど、数百MBの容量になってしまいます。
civitaiに置いてあるLoRAファイル見ても一番大きくて144MBなのに……。
ググってもファイルサイズに関する情報はなかなか見当たらないんですが、
何か標準的にファイルサイズを抑える手法があるんでしょうか。

0
Posted by 名無し(ID:2HCfUTR0fQ) 2023年08月15日(火) 13:09:37 返信数(1) 返信

--save_precision "fp16"を指定すると容量が半減します

0
Posted by 名無し(ID:NC8+slIoxg) 2023年08月16日(水) 19:35:04

LoRA_Easy_Training_ScriptsのGUIがすげーGUIしててアップデートしたら。ぶったまげた。これは5月以降に大幅な更新が入ったみたい。

0
Posted by 名無し(ID:oxHqVNJBGQ) 2023年06月20日(火) 04:27:49 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

Prompts

  1. 非R18詠唱全文
  1. 顔(目・口・表情)
  2. 構図
  3. 場所・背景
  4. 環境表現
  5. 特徴・年齢・体型・髪型
  6. ポーズ集
  7. 服飾
  8. 亜人・モンスター娘・人外
  9. 食品
  10. その他
  11. 画風
  12. 絵文字
  13. 色一覧
  14. 頻用ネガティブプロンプト
  15. 大量検証結果
  16. 整理用倉庫

編集中メニュー

  1. 未発見のプロンプト
  2. 旧ページ

table拡張js

どなたでも編集できます

メンバー募集!