【保存版】Kohya版LoRAインストール&設定、WebUIでの使用法まで解説 キャラ学習手順備忘録

【保存版】Kohya版LoRAインストール&設定、WebUIでの使用法解説 キャラ学習手順備忘録 ソフトウェア

Windows環境でkohya版のLora(DreamBooth)による版権キャラの追加学習をsd-scripts行いWebUIで使用する方法画像付きでどこよりも丁寧に解説します。また、おすすめの設定値を備忘録として残しておくので、参考になりましたら幸いです。

このページで紹介した方法で作成したLoraファイルはWebUI(1111)で使用することができます
(WebUIでLoraファイルを使用する方法も解説します)

コマンドライン版とポップアップGUI版がありますが、ここではsd-scriptsに直に設定値を入力して使用する手順を解説します。
(ポップアップGUIのスクリプトが、LoRAのアプデに追いつかなくなるリスクがあるので、昔はGUIでの手順を解説していましたが、現在はsd-scriptsに直接各種パラメーターを渡す方法を解説しています)

WebUI拡張機能を使用したLoRA学習が可能となりました。

設定できる項目は減りますが、現在はこちらの方が遥かに容易にできます。

  • 複雑なディレクトリ構成に悩まず
  • フォルダ名の命名規則を気にせず
  • 別の拡張機能でタグ付けする必要もなく
  • コマンド打ち間違いなどあり得ず
  • ポップアップのように無限クリックも不要です

なお、webuiでのLora学習ができるようになったため、以後kohya版Loraを直接sd-scriptsで動かす学習方法(後述の内容)については、アップデートに追従した追記・修正を行わないことにしました。
このまま下へスクロールする方はその点ご留意ください。

学習環境を一度作ってしまえば、手動のタグ付けをせずとも20分でこの程度の再現ができます。髪飾り…
(タグ付けを拡張機能でなく手動にして、学習元画像を厳選すればもっと精度は向上します)

学習を解像度を768pxにしたインデックスさん。同じようにしても精度が上がりますね。

以下におおまかな流れを示します。

  1. LoRAファインチューニング(学習)実行用スクリプトの準備
    • Gitをインストールしておく
    • LoRA_Easy_Training_Scriptsのbatファイルをダウンロード
    • それぞれを管理者権限で起動
  2. 学習用画像の準備
    • 学習元画像ファイル名を連番に
    • 拡張機能でタグ付け
    • 透明PNG画像を正則化画像にする
    • フォルダ名を命名規則に従い変更
  3. LoRA学習開始
  4. 完成したsafetensorsファイルを配置
  5. WebUIを起動し🎴ボタンから使用
  6. 完了!!

VRAMが多いグラボをお持ちで、タグ付けなどを面倒に感じた方は、NMKD版DreamBoothをお試しください。

正則化画像やタグ付けが不要かつ、手動でいくつもインストール・環境構築する必要がありません。

チェック!!
さくいん! 本サイトのAI関連記事まとめ どれから見れば良いのか?!


数十記事ある本サイトのAI関連記事を体系的にまとめました。

目的別にどれから見れば良いのかわかります!!

AI記事索引ページはコチラ

1,Lora学習を行うスクリプトをダウンロード&インストール

簡単インストーラー「LoRA_Easy_Training_Scripts」をダウンロード

Releases · derrian-distro/LoRA_Easy_Training_Scripts
A UI made in Pyside6 to make training LoRA/LoCon and other LoRA type models in sd-scripts easy - derrian-distro/LoRA_Eas...

簡単LoRAインストーラー(LoRA_Easy_Training_Scripts)を上記ページからダウンロードします。

追記:インストーラー実行にはGitが必要です。Gitがインストールされていないとエラーが出るようです

予めGitをインストールしてください。

  • install_sd_scripts_v5.bat

常にアプデされているのでバージョンは時期により異なります。

ダウンロードしたバッチファイルをインストールしたいフォルダ内に配置します。

インストーラーを実行

ダウンロードした.batのファイルを右クリック→管理者として実行します。

注意が出たら詳細情報→実行します。

「このアプリがデバイスに変更を加えることを許可しますか?」と聞かれたら、「はい」と選択します。

installing torch

上記のような表示のまま数分間画面が更新されませんが、特に問題はないので気長に待ちます。
でも10分以上かかる際は一度エンターキーを押してみたり、フォルダを消して最初からやり直すのも手です。

実行後特に操作はありませんが、一点だけ質問に答える必要があります。

Do you want to install the optional cudnn1.8 for faster training on high end 30X0 and 40X0 cards? [Y,N]?

上記のように聞かれたら、3000,4000シリーズのグラボをお持ちの場合「Y」キーを押してください。

続行するには何かキーを押してください . . .

この表示が出たらインストール完了です!!

エラーでできない時確認すべきこと

その1,フォルダパスのエラー

フォルダパスが長すぎるとエラーとるかもしれません。

インストール先のフォルダをCドライブ直下にするなどしてください。

また、フォルダ名に日本語などが含まれているとエラーが出るようです。

その2,pythonバージョンかパスのせい

WebUI(1111)も含め、現在の画像生成AI関連は大体Python 3.10.6で動作確認されています。

コマンドプロンプトで以下のコマンドを打ちpythonのバージョンを確認しましょう。

Python -V

下のように、3.10.xなら問題ありません。

>Python -V
Python 3.10.6

(※python 3.11系列だとエラーがでます。私は3.10.7で動かせているため、マイナーバージョンまで合わせる必要はなさそうですが、3.10系列にはしてください)

コマンドプロンプトの開き方

  1. Windowsキーを押す
  2. cmdと入力
  3. 「開く」をクリック

2,学習元画像や正則化画像を用意する

学習画像などの配置用フォルダ作成

sd-scriptsフォルダ内に適当なフォルダを作成します。

ここでは「loratest」 とします。

そのフォルダ内に3つフォルダを作ります。

  1. 学習元画像フォルダ
  2. 正則化画像フォルダ
  3. 出力用のフォルダ

学習画像のフォルダなどはコンピュータのどこに置いても良いのですが、sd-scripts内に全てまとめたいのでこうしています。

学習用画像の用意 連番化

Just a moment...

ダンボールで高品質なキャラの絵を探しましょう。

pixivで人気順ソートするのもおすすめです。(無料でできます)

なお、今解説しているlora(kohya-ss版lora)は学習画像のサイズをあわせなくてOK!!

512px正方形とかにしなくて構わないのです☆

学習元画像をまず1からの連番にします。

なおあまりに大きな画像(学習解像度が512や768程度なのに2048 x 2048サイズなど)を使うと、上手く学習できないことがあります。

また、透過(透明)背景の画像は、ノイズが乗ったものが生成されやすくなるためおすすめしません
(白背景は別にOK、でも全く同じ背景のものばかりだと、出力画像の背景も固定されやすいため注意。)

タグ付け(キャプションファイル作成)

次に「WD 1.4 Tagger」をWebUIにインストールします。

あとは画像フォルダを指定して、タグ付けモデルは適当に「wd-v1-4-swinv2-tagger-v2」あたりを選択し、「Interrogate」クリック。

諸々の設定はデフォルトでOK.赤枠で囲んだ所だけいじりました。

ちなみに呼び出しトークンを先頭に置いておく場合、「Additional tags (split by comma)」に呼び出しトークンを記入してから「Interrogate」クリック。

キャラ学習の場合は特に呼び出しトークン(sls girl)とかを設定した方が良いです。

するとこのようになります。

透明png画像を正則化画像にする

リポジトリURL
https://github.com/hunyaramoke/Generate-TransparentIMG
から透明PNG画像を生成する拡張機能をインストールします。

URLからの拡張機能インストール方法は以下を参照。

正則化画像として透明PNGを使用すると何故か学習精度が上がるので不思議ですが、私としてはこの手間を惜しまずに透明正則化画像の使用をおすすめします。

ただし正則化を有効にすると学習速度は低下するためご注意ください。
また、透明正則化には懐疑的な意見もあるため強制はしません

正則化画像のフォルダを指定して、学習元画像と同じ枚数生成します。
(学習元画像より正則化画像が多い場合、余った正則化画像が使われないだけなので、適当に100枚くらい生成して使いまわせるようにするのがおすすめです)

サイズはデフォルトでOK.

なんともシュールですね。

学習epoch数に合わせて各フォルダ名を変える

kohya-ss版loraは最大で10の概念を一度に学習できますがここ例示として1つ(1キャラのある服装)とします。

kohya-ss版loraはGUIでepoch数を指定できるのに何故かフォルダ名もepoch数に応じて変える必要があります
これ↑は勘違いでした。
フォルダ名で指定しているのは「繰り返し」数で、GUIで指定するのが「epoch」数です。

ここまで「sozai」というフォルダ名でしたが、そのフォルダ内に新たなフォルダを
繰り返し回数_インスタンスプロンプト
という命名規則にしたがって作成
します。

なお、タグ付けしたファイルがある場合、フォルダ名のインスタンスプロンプトは無視されるようです。
タグ付けしていない場合は有効です。

インスタンスプロンプトとは、lora使用のトリガー文言です。sls girlとか有名ですね。

そしてそこに学習元画像を移します。

今回は「ぼっち・ざ・ろっく」の ぼっちちゃんなので、bottchiを小文字TDN表記で「btc girl」にします。

お試しで繰り返し数20回したいので、フォルダ名は「20_btc girl」です。

ちなみにsteps数は、
繰り返し回数 × 学習用画像の枚数 x epoch数

のため、今回は20回x7枚でx20epochで2800stepsになりますね。

なお20epochで学習して、1epochごとにLoraファイルを出力するように設定してもファイルが10個しか出力されなかったので想定の倍のepoch数がおすすめです。

追記:正則化画像を用いるとepoch数が半減する仕様でした。

例えば20epochと指定した場合、
正則化アリ→10epoch,正則化ナシ→20epochです。

正則化画像フォルダも以下の命名規則通りにします

正則化画像は「繰り返し数_クラスプロンプト」というフォルダに入れます。
例:「1_girl」(クラスプロンプトは、デカい概念です。正則化=過学習を避けるためのもののため、sls girlならgirl,sls boyならboyです)

seisokuフォルダの中に1_girlフォルダを作成し、そこに透明PNGを入れればOK。

いよいよ準備が終了!

学習のスタートです。

3,コマンド直打ちでの学習方法 (旧:ポップアップ版で学習)

sd-scriptsフォルダ内の「run_popup.bat」をクリックして起動します。

本家本元のコマンドを打つ方法を紹介します。
コマンドですが、詳しく説明するので迷うことはありません。簡単です!

  1. 本家のアプデ速度が早すぎてポップアップ版の更新が追いつかないリスクがある
  2. ポップアップ版にはオプション選択時の注釈があるが、最早読んでもイマイチ分からない項目が多すぎてGUIの利点が薄いこと
  3. 条件を少しずつ変えて試行錯誤する際に、毎回あまりにも冗長な選択作業が必要になること

以上の理由などから、私としてはポップアップ版の利用は非推奨とします。

本ページでもポップアップ版の解説を2023年2月中旬時点のものから更新せず、コマンドベタ打ち方法のみをアプデに追従して解説していきます。

当たり前ですが、本家本元のコマンドをベタ打ちする方法なら本家のアプデにいつまでも遅延なく追従できますからね!!

ポップアップ版の利用は非推奨です。

※ポップアップ版の解説は2023年2月中旬以降のアプデが反映されていません。

「WindowsによってPCが保護されました」が出た場合の対処

詳細情報→実行でOKです。

学習を開始する

各種設定

前に作った設定ファイル(jsonファイル)を読み込むか

まず設定ファイルはないので「いいえ」。

学習元のモデル選択

次にモデル選択。

今回はDB素体用と名乗るACertainThing.ckptを使用。

学習元画像フォルダ指定

次は学習元画像フォルダの指定。

LoRAファイル出力フォルダ指定

このように、「繰り返し数_インスタンスプロンプト」のフォルダ名が見える状態で「フォルダーの選択」を押す

出力フォルダは最初に作成しておいたoutputを指定。

ここまでの設定を保存する?

今の設定を記憶して、次回以降ここまでの入力を省略できるようにするか選択。

入力・出力フォルダを変えないなら、「はい」をおすすめします。

はい」を押すと設定ファイル保存先を選択することになるので、適当に指定します。

SD v2系モデルをファインチューニングしたい?

元となるモデルに合わせてください。

リアル系のモデルをファインチューニングしたい?

目的に合わせて選択します。

ワーカー数指定

数値を大きくするほど、RAM消費量が上がり、データの読み込みが高速になります。

正則化画像の使用・不使用&フォルダ指定

そして、正則化画像を使用するか訊かれるので「はい」を押し、このようにしてします。

「繰り返し数_インスタンスプロンプト」のフォルダ名が見える状態で「フォルダーの選択」を押しましょう。

前回トレーニングしたLoRAを元に学習するか

前回トレーニングしたloraを対象にさらにトレーニングを行うか?です。

通常はいいえ。

画像反転する?

全ての学習元画像を反転しますか?

データセット内のバイアスを減らすことができますが、非対称な要素の学習を台無しにする可能性もあります。

通常いいえ。

バッチサイズ指定

並列で何枚学習するか?

VRAMが少ない方は1と入力します。

当方の環境での最大バッチサイズ(解像度ごと)も参考にしてください。

エポック数指定

何epoch学習するか?

ここは今回は20を入力。

次元数を指定(dim size)

dimのサイズをどうするか?

学習時の次元数のことです。

(4chanでは256が主流っぽい?!大きいほど高精度です。逆に4など極端に小さい値にしてモデルの絵柄を維持しつつ大まかな特徴を学習させる手法もあります。)

とりあえずデフォルト128で。

アルファを指定

アルファをどうするか?

アルファは選択肢が以下の2つあり、それにより後で設定する推奨学習率が大きく変わります。

  • アルファをdimサイズと同じ値(128とか)→学習率(learning rate):推奨1e-4程度
  • アルファの値を1にする→学習率(learning rate):推奨1e-3程度
学習解像度指定(resolution)

学習解像度はどうするか?

4090以上をお持ちなら768も可能です。通常512ですが大きいほど高品質になります。
特にキャラ学習時は瞳の描写が向上する感じがします。
追記:3090でも768でできました

VRAM24GBなら768でbatch size6くらいが限界?もうちょい試行して限界を見極めたいですね。
→追記:解像度ごとの最大バッチサイズと、その時の学習速度を検証しました。

学習率(lerning rate)指定

学習率はどうするか?
学習率が小さくほど学習ステップ数が多く必要ですが、その分高品質になります。

デフォルトは1e-4 (= 0.0001) ですが、これはネットワークアルファの値がdimと同じ(128とか)の場合の推奨値です。この場合5e-5 (=0.00005)くらいまで下げることもあります。

ネットワークアルファの値が1の時は、1e-3(0.001)が推奨値です。

テキストエンコーダの学習率(text encorder Lr)

テキストエンコーダも基本は上で設定した学習率と同じでOK

階層の学習率(unet Lr)

U-Net層での学習率。ここも上で設定した学習率と同じでOK

階層別マージ級の沼の深さを体感できる設定。

スケジューラーの選択(scheduler)

いまいち効能が分からないが、以下から1つ選択できます。

  • cosine_with_restarts ←デフォルト
  • cosin
  • polynomial
  • constant_with_warmup
  • linear
サイクル数(Cycle Count)

1epoch内で学習率を変動させる回数です。

3や4あたりが良さげですが、実装直後のため具体的効能は不明です。

https://github.com/kohya-ss/sd-scripts/pull/121

この画像の紫線みたいな上下をします。

途中のエポックを保存するか?&何エポック単位でセーブするか?

エポック単位でセーブするか?

はいを選んで、1epochずつにしまた。始めたてなので

キャプションをランダムする?(shuffle captions)

キャプションをランダムに混ぜる?

はい推奨。

キャプション先頭のトークンをいくつか保持する?

キャプションのいくつかのトークン(タグ的な)を保持する?

はいを選び、1と入力。
こうすると呼び出しトークンを先頭に置いている場合呼び出しトークン以外のタグがシャッフルされることでタグの重みが分散され、Lora使用時に呼び出しトークンでない特定の単語に強く反応しすぎるのを防げます。

序盤の学習率を下げる?(warmup ratio)

学習の序盤だけ学習率を下げる?

はいでとりあえずやってみます。

値はデフォルトで。

LoRAファイル保存名をどうする?

出力エポック名を変更する?

デフォルト名でいいので、いいえ

コメント

メモ。適当にキーワードとか設定書いてもいいかも。

単一のU-net層とテキストエンコーダを対象にする?

通常はいいえ。

どう学習したかテキストに保存する?

データセットの全タグのリストをテキストに保存する?

はいにしました。

  • アルファベット順
  • 出現順

キャプションをドロップアウトさせる?

キャプションの一部を脱落させて使わないか?

試しにはい、としたらランダムに脱落させるか聞かれました。

これもはい、とするとドロップアウトの確率を選べます。

0なら0%,100なら100%って具合です。ここでは20としてみました。

キャプションなし版もいる?

キャプションの有無による効果が簡単に比較できますね。

タグをドロップアウトさせる?

キャプションについてと同様のことが訊かれます。

ノイズオフセットを使用しますか?

ノイズオフセットによりStable Diffusion は通常よりも暗いor明かるい画像をより適切に生成できるようになります。

とりあえずはい。

ノイズオフセットの値、おすすめは0.1です。

別のトレーニングもするつもり?

寝る前にいくつもトレーニング設定しておくなら、はい。

今回はいいえ

コマンドを作成する

メモ帳などを開き、とりあえず以下の全文をコピペしてください。

主要な設定項目は抑えられているはずです。

accelerate launch --num_cpu_threads_per_process 1 train_network.py
 --pretrained_model_name_or_path=C:\SD\stable-diffusion-webui\models\Stable-diffusion\7th_anime_v3_A.safetensors
 --train_data_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\sozai
 --output_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\outputs
 --reg_data_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\seisoku
 --resolution=512,512
 --save_every_n_epochs=6
 --save_model_as=safetensors
 --clip_skip=2
 --seed=42
 --network_module=networks.lora
 --caption_extension=.txt
 --mixed_precision=fp16
 --xformers
 --color_aug
 --min_bucket_reso=320
 --max_bucket_reso=1024
 --train_batch_size=6
 --max_train_epochs=6
 --network_dim=128
 --network_alpha=128
 --learning_rate=1e-4
 --optimizer_type=AdaFactor
 --optimizer_args "relative_step=True" "scale_parameter=True" "warmup_init=True"
 --lr_scheduler=cosine_with_restarts
 --lr_scheduler_num_cycles=4
 --shuffle_caption
 --keep_tokens=1
 --caption_dropout_rate=0.05
 --lr_warmup_steps=1000
 --enable_bucket
 --bucket_no_upscale 

そして各項目について自身の環境に合わせて書き換えていきます。

最後に改行を全て削除し、1行にしたコマンドを所定の方法で「黒い画面」にコピペ→エンターで学習が行えます

なお、各項目の順番は自由です。

私が勝手にジャンル別(ファイルパス入力系、いつも使い回す系、学習epochや学習率などの根幹系等など)にざっくりグループ分けしただけなので、好みの順に変えてください。

各種設定パラメーターを解説

学習元のモデル選択 pretrained_model_name_or_path

ベースとなる画像生成モデルを指定します。

おすすめはDB素体用と名乗るACertainThing.ckptか概念を覚えやすいと評判のNAIあたりですがNAIはうん。。。

一例ですが、下のように書きます。(他のオプション・設定項目についても同様です)

pretrained_model_name_or_path=C:\SD\stable-diffusion-webui\models\Stable-diffusion\7th_anime_v3_A.safetensors

学習元画像フォルダ指定 train_data_dir

次は学習元画像フォルダを指定。

「繰り返し数_インスタンスプロンプト」のフォルダ名が見える状態でのファイルのパスを指定します。

train_data_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\sozai

LoRAファイル出力フォルダ指定 output_dir

LoRA学習成果の出力先フォルダを指定。

output_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\outputs

正則化画像のフォルダ指定 reg_data_dir

正則化画像のフォルダを指定。

「繰り返し数_クラスプロンプト」のフォルダ名が見える状態でフォルダーのパスを指定しましょう。

reg_data_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\seisoku

学習解像度 resolution

基本512,512か768,768の2択です。

大きいほど高性能というわけでもなさそうですが、resolutionが大きいほど細部(瞳など)の品質が上がりやすいです。

resolution=512,512

LoRAファイルの保存頻度 save_every_n_epochs

何EpochごとにLoRAファイルを保存するか指定します。

ストレージと相談しながら決めましょう。

私はあまり高頻度に出力しても、大抵最終Epoch以外を試すのは面倒でやらないので意味がありませんでした。。。

save_every_n_epochs=5

あまり変えない指定をまとめて設定
  1. save_model_as=safetensors
  2. clip_skip=2
  3. seed=42
  4. network_module=networks.lora
  5. caption_extension=.txt
  6. mixed_precision=fp16
  7. xformers
  8. color_aug

color_augはよくわからないです。。。

全部常時同じ値・設定でOKです。

学習時の自動リサイズ解像度上限下限 bucket_reso

学習元画像の解像度を自動で変更してくれるので、その上限と下限を決めます。

min_bucket_reso=320 –max_bucket_reso=1024

バッチサイズ指定 train_batch_size

並列で何枚学習するか決めます。

大きいほど正則化効果が働くと聞いたこともありますが、とりあえずVRAMサイズに合わせてデカい値にするのがおすすめです。

steps,epoch数などが同じなら、バッチサイズがデカいほど早く学習が終わります。

VRAMが少ない方は1と入力します。

当方の環境での最大バッチサイズ(解像度ごと)も参考にしてください。

–train_batch_size=10

エポック数指定 max_train_epochs

何epoch学習するか指定します。

ここは今回は20を入力。

max_train_epochs=20

次元数を指定 network_dim

dimのサイズをどうするか?

学習時の次元数のことです。

4chanでは128や256が主流っぽい?!大きいほど高精度のハズです。

逆に4など極端に小さい値にしてモデルの絵柄を維持しつつ大まかな特徴を学習させる手法もあります。最近32も地味に流行ってるような…?

とりあえずデフォルト128で。

network_dim=128

アルファを指定 network_alpha

アルファをどうするか?

アルファは選択肢が以下の2つあり、それにより後で設定する推奨学習率が大きく変わります。

  • アルファをdimサイズと同じ値(128とか)→学習率(learning rate):推奨1e-4程度
  • アルファの値を1にする→学習率(learning rate):推奨1e-3程度

network_alpha=128

学習率(lerning rate)指定 learning_rate

学習率はどうするか?
学習率が小さくほど学習ステップ数が多く必要ですが、その分高品質になります。

1e-4 (= 0.0001) ネットワークアルファの値がdimと同じ(128とか)の場合の推奨値です。この場合5e-5 (=0.00005)くらいまで下げることもあります。

ネットワークアルファの値が1の時は、1e-3(0.001)が推奨値です。

learning_rate=1e-4

オプティマイザー関連
  1. optimizer_type=AdaFactor
  2. optimizer_args
    • “relative_step=True”
    • “scale_parameter=True”
    • “warmup_init=True”

オプティマイザーは適当に「AdaFactor」にしてますが、これにする場合はnetwork_alphaをdimの半分程度にするのが良さそうです。
network_alpha=1などでは品質が低下するので、network_alpha=128とかがおすすめです。

LoRAデフォルトは「AdamW」のため、特に指定しなければそれを使用します。

オプティマイザーの品質への影響などを比較検証していないため、選択理由は何となくです。
ご了承ください。

また、optimizer_type=AdaFactorの際はlearning_rateが自動決定されるため設定しなくて良いという話もありますが、とりあえず私はlearning_rateを設定しています。
それでエラーになりませんでした。

オプティマイザーの設定はよくわからないので3つとも有効化・Trueです。

–optimizer_type=AdaFactor
–optimizer_args “relative_step=True” “scale_parameter=True” “warmup_init=True”

スケジューラーの選択 lr_scheduler

いまいち効能が分からないが、以下から1つ選択できます。

  • cosine_with_restarts
  • cosin
  • polynomial
  • constant_with_warmup
  • linear

lr_scheduler=cosine_with_restarts

サイクル数 lr_scheduler_num_cycles

1epoch内で学習率を変動させる回数です。

3や4あたりが良さげですが、実装直後のため具体的効能は不明です。

https://github.com/kohya-ss/sd-scripts/pull/121

この画像の紫線みたいな上下をします。

lr_scheduler_num_cycles=4

キャプションをランダムする? shuffle_caption

キャプションをランダムに混ぜた方がインスタンスプロンプト(sls girlとか)以外のタグと結びつきにくくなり、特定のタグで予期せぬキャラ召喚を防げます。

–shuffle_caption

※–shuffle_caption=Trueではなく、ただ「–shuffle_caption」と書くだけでシャッフル有効化を指定します。

キャプション先頭のトークンをいくつか保持 keep_tokens

キャプションのいくつのトークン(タグ的な)を保持するか指定します。

はいを選び、1と入力するとインスタンスプロンプト(sls girlなど)をキャプションファイルのタグ付けの先頭に置いている場合それ以外のタグがシャッフルされることでタグの重みが分散され、Lora使用時に呼び出しトークンでない特定の単語に強く反応しすぎるのを防げます。

このスクリプトにおいては、トークン数はカンマ「,」区切りごとのタグ数と理解しておけば大丈夫です。

絵文字1文字が5や7トークンを消費云々のトークンではないので一々悩まなくてOK。

例えばタグ付けファイルに「sls girl,1girl,solo,nanika,hoge,以下略」と書かれていて、
keep_tokens=2なら
「sls girl」と「1girl」が順番そのまま使用されて、「solo」「nanika」「hoge」などは順不同となります。

上記の–shuffle_captionと併用します。

keep_tokens=1

キャプションを確率でドロップアウトさせる caption_dropout_rate

キャプションの一部を脱落させて使わない設定もできます。

脱落させる理由は、上記のようにキャプションをシャッフルする理由と同様です。

caption_dropout_rate=0.15なら15%のように確率を指定します。

caption_dropout_rate=0.05

序盤何stepsの学習率を下げるか lr_warmup_steps

学習の序盤だけ学習率を下げ、何stepsまで下げた状態にするか指定します。

lr_warmup_steps=1000

画像サイズを変える bucket

画像リサイズを有効化するには –enable_bucket 。

さらにアップスケールにより元画像から劣化しかねないので、 –bucket_no_upscale と書きます。

これがないと学習元画像のサイズが大きすぎる場合、以下のようなエラーがでます。

assert self.random_crop, f”image too large, but cropping and bucketing are disabled / 画像サイズが大きいのでface_crop_aug_rangeかrandom_crop、またはbucketを有効にしてください: {image_info.absolute_path}”
AssertionError: image too large, but cropping and bucketing are disabled / 画像サイズが大きいのでface_crop_aug_rangeかrandom_crop、またはbucketを有効にしてください

–enable_bucket –bucket_no_upscale

各種パラメーターを設定したら、コピペ用コマンドに形成し学習開始

上記を参考に各種設定値を決めたら、このようになりました。

accelerate launch --num_cpu_threads_per_process 1 train_network.py
 --pretrained_model_name_or_path=C:\SD\stable-diffusion-webui\models\Stable-diffusion\7th_anime_v3_A.safetensors
 --train_data_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\sozai
 --output_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\outputs
 --reg_data_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\seisoku
 --resolution=512,512
 --save_every_n_epochs=6
 --save_model_as=safetensors
 --clip_skip=2
 --seed=42
 --network_module=networks.lora
 --caption_extension=.txt
 --mixed_precision=fp16
 --xformers
 --color_aug
 --min_bucket_reso=320
 --max_bucket_reso=1024
 --train_batch_size=6
 --max_train_epochs=6
 --network_dim=128
 --network_alpha=128
 --learning_rate=1e-4
 --optimizer_type=AdaFactor
 --optimizer_args "relative_step=True" "scale_parameter=True" "warmup_init=True"
 --lr_scheduler=cosine_with_restarts
 --lr_scheduler_num_cycles=4
 --shuffle_caption
 --keep_tokens=1
 --caption_dropout_rate=0.05
 --lr_warmup_steps=1000
 --enable_bucket
 --bucket_no_upscale 

あとは1行になるまでひたすら改行を消していきます。
(詳しい人は一斉置換してください。)

なお、各オプションごと半角スペースを1つ空けて、1行にします。
以下のようにしましょう。
(本サイト上では折り返し表示がされてぱっと見改行されてるみたいに見えますが、以下の全文をメモ帳などに貼り付けるとちゃんと1行となっていることが分かります)

accelerate launch --num_cpu_threads_per_process 1 train_network.py --pretrained_model_name_or_path=C:\SD\stable-diffusion-webui\models\Stable-diffusion\7th_anime_v3_A.safetensors --train_data_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\sozai --output_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\outputs --reg_data_dir=C:\loratest\LoRA_Easy_Training_Scripts\sd_scripts\loratest\seisoku --resolution=512,512 --save_every_n_epochs=6 --save_model_as=safetensors --clip_skip=2 --seed=42 --network_module=networks.lora --caption_extension=.txt --mixed_precision=fp16 --xformers --color_aug --min_bucket_reso=320 --max_bucket_reso=1024 --train_batch_size=6 --max_train_epochs=6 --network_dim=128 --network_alpha=128 --learning_rate=1e-4 --optimizer_type=AdaFactor --optimizer_args "relative_step=True" "scale_parameter=True" "warmup_init=True" --lr_scheduler=cosine_with_restarts --lr_scheduler_num_cycles=4 --shuffle_caption --keep_tokens=1 --caption_dropout_rate=0.05 --lr_warmup_steps=1000 --enable_bucket --bucket_no_upscale 

「LoRA_Easy_Training_Scripts\sd_scripts」フォルダを開き、右クリックメニュー→ターミナルで開くを選択します。

まず以下のコマンドを入力してエンター。

venv/Scripts/Activate.ps1

そして超長い1行コマンドを貼り付けエンター。

各種パラメーターが正しく設定されていたら、学習が始まります。

学習途中の様子

スタートしました。

768サイズbatch size1でVRAMが4割余ってるのでもうちょいデカくても大丈夫そう?
(512,batch size2とか)

全てが終わるとこのように表示されました。

今回はRTX3090を使用して、7枚20エポックで17分でした。

追記:768サイズでもやってみた

上記手順通りで、学習解像度768、batch size1,epoch30,繰り返し20,画像12枚をやってみました。

1girl, solo, index \(toaru majutsu no index\), safety pin, long hair, smile, green eyes, nun, habit, blue hair, robe, <lora:lora-index-3e-5-key-index girl:0.75>,(index girl:0.8),looking at viewer,
Steps: 52, Sampler: DPM++ SDE Karras, CFG scale: 6.5, Seed: 2589242428, Size: 512×768, Model hash: f6957e654e, Model: 7th_anime_v3_C, Clip skip: 2, ENSD: 31337

首から上はかなりいい感じ。服装もかなり良さそう。
DreamBoothと違いLoraは強度を調整できるので、過学習させて弱めるほうがいいのかも?

おまけ 探求者向け:すべての設定項目とその意味まとめ

上で紹介したのは、主な設定項目に過ぎません。

LoRA関連の設定項目数は60以上あり、その全て(記事制作時)の項目の設定方法と和訳付きの意味を表にしました。
表はコチラより制作。
https://github.com/derrian-distro/LoRA_Easy_Training_Scripts#list-of-arguments

一応翻訳したものの、解釈ミスが怖いので原文も併記しています。

下の表のような形でまとめました。

ArgumentTypeRequired何をするのかWhat It Does
base_modelstrYESベースモデルのパスPath to the base model
  • Argument:指定する際に用いる
  • Type:設定値の指定方法
    • str:文字列
    • list[str]:文字列のリスト
    • bool:真偽値(True,Falseのどっちか)
    • int:整数
    • float:小数
  • Required:指定必須か否か
  • What It Does:項目の意味説明
ArgumentTypeRequired何をするのかWhat It Does
base_modelstrYESベースモデルへのパスPath to the base model
img_folderstrYES画像フォルダへのパスは、1_somethingという名前のフォルダではなく、画像フォルダにあるフォルダを設定してください。Path to the image folder, make sure to set the folder your image folders are in, not the folders named 1_something
output_folderstrYES完成したすべてのチェックポイントの出力パス。Path to the output of all of your checkpoints
save_json_folderstrNO作成された json 設定ファイルが配置されるフォルダへのパス。Path to the folder where your generated json config files will be placed
load_json_pathstrNOロードする json ファイルへのパス。Path to the json file to be loaded
json_load_skip_listlist[str]NOjsonファイルを読み込むときにロードされない項目のリストは、正確なarg名を入力してください。例: [“base_model”, “img_folder”, “output_folder”]。Is the list of items that will not get loaded when you load a json file, make sure that you type in the exact arg name. example: [“base_model”, “img_folder”, “output_folder”]
multi_run_folderstrNOrowa_train_command_line.py 専用の、キュートレーニング用にロードされる JSON ファイルを含むフォルダへのパスです。Is the path to the folder that contains the JSON files to be loaded for queued training. This is exclusive to lora_train_command_line.py
save_json_onlyboolNOJSONファイルの生成だけして、トレーニングを行わないためのスイッチです。Is a switch to prevent training so that you can generate a JSON file
net_dimintYESこれはLoRA内に存在するデータポイントの量であり、より多くのデータを追加したり、より大きなサイズを追加したりできますが、持っているほど、ジャンクデータも多くなります。This is the the amount of datapoints that exist within the LoRA, the more you have the more data can be added, as well as the bigger size. However the more you have, the more junk data can be added as well
alphafloatYESこれは net_dim に基づくスカラーです。
alpha/dim_size の簡単な計算を行うことで、それがどの程度スケーリングしているかを理解できます。
This is the scalar based on the net_dim. you can figure out how much it is scaling by doing the simple calculation of alpha / dim_size.
schedulerstrYESスケジューラのリスト:linear, cosine, cosine_with_restarts, polynomial, constant, and constant_with_warmupThis is the way the learning rate is modified as it trains. the list of schedulers are as follows: linear, cosine, cosine_with_restarts, polynomial, constant, and constant_with_warmup
cosine_restartsintNOこれは、cosine_with_restarts が設定されている場合にのみ設定される値です。
この値は、スケジューラが学習率をデフォルトにリセットする回数を表します。
This is a value that is only set when cosine_with_restarts is set. This value represents how many times during training the scheduler will reset the learning rate back to default
scheduler_powerfloatNOこれは多項式が設定されている場合にのみ設定される値です。
この値は多項式関数でXを表すので、これが高いほど学習速度が低下し、1はそれが「正常」に崩壊することを意味します。2は減衰が非常に速く、0.5は減衰が遅くなります。
This is a value that is only set when polynomial is set. This value represents the X in the polynomial function, the higher this is, the faster the learning rate decays, 1 means that it decays “normally”, 2 means it decays very fast, and 0.5 means it decays slower
warmup_lr_ratiofloatNOこれはウォームアップステップとなるステップの比率で、与えられたステップの総数に基づいて動的に計算されます。This is the ratio of steps that will be warmup steps, it is dynamically calculated based on the total number of steps that was given
learning_ratefloatNOこれは基本学習率で、1ステップあたりの学習量を決定し、設定されていない場合、デフォルトは1e-3になります。This is the base learning rate, it determines how much is learned per step. If it is not set, it defaults to 1e-3
text_encoder_lrfloatNOこれはテキストエンコーダの lr で、base lr を上書きします。This is the lr for specifically the text encoder. it overwrites the base lr
unet_lrfloatNOこれは特に unet の lr で、base lr を上書きします。This is the lr for specifically the unet. it overwrites the base lr
num_workersintYESこれは、データ処理に使用されるスレッドの数です。
低い数値は、より速いエポック開始時間を意味しますが、データロードが遅くなると考えられます。
This is the number of threads that are used for data processing, lower numbers mean faster epoch starting time, but supposedly slower data loading
save_every_n_epochsintNOn のエポックごとにチェックポイントを保存するので、save_every_n_epochs = 1 は、すべてのエポックを保存することを意味します。Saves a checkpoint every n epochs, so save_every_n_epochs = 1 means that it saves every epoch
shuffle_captionsboolNOこれは shuffle_captions をオンにするスイッチです。
そうすると、 キャプションファイル内のすべてのタグをシャッフルします。
This is a switch to turn on shuffle_captions, doing so will shuffle all of the tags in the caption files
keep_tokensintNOこれは、シャッフル時にキャプションファイルの前面に特定のトークンを保持する方法であり、キャプションをシャッフルする場合にのみ重要です。This is a way to keep certain tokens at the front of the captions files when shuffling. This only matters if you are shuffling captions
max_stepsintNOこれは計算する必要のないステップの量を指定する方法です。
完全なエポックを終了しないステップの量である場合、最後のステップに達するまでトレーニングし、最後のエポックを出力します。
This is a way to specify an amount of steps without needing to calculate it. If it is a step amount that doesn’t end it a full epoch, it will just train until it hits the final step, then output the final epoch, even if it was not a full epoch
tag_occurrence_txt_fileboolNOトレーニング中に使用するタグのリストを含む txt ファイルを作成します。Creates a txt file that contains the list of tags used during training in the order of most to least
train_resolutionintYESトレーニングを行う解像度。The resolution that is trained at
min_bucket_resolutionintYESバケットを作成するときの最小バケットサイズthe minimum bucket size when creating buckets
max_bucket_resolutionintYESバケットを作成する際の最大バケットサイズthe maximum bucket size when creating buckets
lora_model_for_resumestrNO「ハイパーネットワーク」をトレーニングモデルにロードします。
これはLoRAでも機能します。
Loads a “Hypernetwork” into the training model, also works for LoRA, which is why I have it here, this is not the intended way to continue training though
clip_skipintYESwebui を使用するときにクリップスキップが行うように動作し、トレーニングしたレイヤーを定義します。Works the same way clip skip does when using webui, defines what layer its trained on
test_seedintYES「再現可能な種子」を表し、トレーニング中に使用されたRNGの種子を決定します。represents the “reproducable seed” as well as decides the seed for the RNG used while training, sometimes changing this value is enough to improve a bake
priot_loss_weightfloatYESLoRAはDreambooth-yの方法でトレーニングされているので、これも必要だと思いますが、正直なところそれが何であるかは理解できません。Is something directly related to how Dreambooth is trained, LoRA are trained in a Dreambooth-y way so I guess this is required as well, I honestly don’t understand what it is though
gradient_checkpointingboolNOグラデーションチェックポインティングを有効または無効にし、低いvramでより大きなバッチサイズを許可しますが、はるかに遅くなります。enables or disables gradient checkpointing, allows bigger batch sizes for lower vram, much slower though
gradient_acc_stepsintNO正直なところ、これが何を意味するのか正確には分かりませんが、バッチサイズの大きさと関係があると思います。honestly, I don’t exactly know what this means, but I believe it has to do with the size of the batch size
mixed_precisionstrYESfp32とfp16の両方でトレーニングすることを意味します。唯一のオプションはfp16、bf16、およびnoneです。Is a modification to how it is trained, having mixed precision means that it trains in both fp32 and fp16, the only options are fp16, bf16, and none
save_precicionstrYES保存方法を決定します。
float(fp32)、fp16、bf16で保存できます。
Determines how it is saved, it can be saved in float(fp32), fp16, and bf16
save_asstrYESデフォルトでは.safetensorsに設定されているため、保存されるファイルタイプはそのままですが、他の2つのオプションは.ckptと.ptです。the file type that it gets saved as, by default this is set to .safetensors, and should stay that way, but the other two options are .ckpt and .pt
caption_extensionstrYESキャプションが格納されているファイルタイプは、デフォルトでは .txt に設定されています。the file types the captions are in, by default this is set to .txt, but it can accept any filetype it looks like
max_clip_token_lengthintYES75、150、または225のいずれかに設定できます。can be set to any of 75, 150, or 225. 150 is default, and generally, unless you have really long prompts, don’t need it to be higher
bucketsboolNO通常、特に画像をトリミングしなかった場合は、バケットを有効/無効にします。enables/disables buckets, usually you want this on, especially when you didn’t crop your images
xformersboolNOxformersを有効/無効にします。
AMDカードは使用できないと思いますので、使用している場合は無効にしてください。
enables/disables xformers, I don’t believe that AMD cards can use them, so make sure to disable it if you are using one
use_8bit_adamboolNOenables/diables 8bit Adam、オプティマイザとして素晴らしいですが、一部のカードはサポートしていません。enables/diables 8bit Adam, great as an optimizer but some cards don’t support it, if the program fails with it on, try turning it off
cache_latentsboolNOenables/disables 入力画像の潜伏をキャッシュし、これを有効にすると、トレーニング中にvramスパイクが減少しますが、特定のものが有効にならないようにします。enables/disables caching the latents of the input images, having this enabled will reduce the vram spikes as you train, but it prevents certain things from being enabled
color_augboolNOこれは、キャッシュ潜伏で動作できないものの1つで、イメージを色分けして、入力に異なる色を提供する。enables/disables color augmentation, this is one of the things that are unable to work with cache latents. it hue shifts the images, so that they provide different colors to input
flip_augboolNOフリップ拡張を有効/無効にし、潜伏状態を反転させることですべてのイメージを反転させる。enables/disables flip augmentation, flips every image by reversing it’s latents, I believe, good to have on usually, but turn it off if you are dealing with something asymetric
random_cropboolNOランダムなトリミングを有効/無効にします。バケットで使用するために新たに使用でき、バケットに収まると画像をランダムにトリミングできます。enables/disables random cropping, newly available to use with buckets, it is able to crop the images randomly when it fits them into the buckets, this also doesn’t work with cache latents
vaestrNOトレーニング時に使用するvaeを設定することができます。
特定のvaeでトレーニングしないことをおすすめします。
allows you to set a vae to train with, You are better off not training with one.
no_metaboolNOこれを無効にしておくことで、メタデータがモデルに追加されるのを防ぐことができます。Keep this disabled, enabling it prevents the metadata from being added to the model
log_dirstrNOトレーニングログを出力できるので、ほとんどの人はそれを理解できませんので、あまり役に立ちません。allows you to output training logs, most people won’t be able to make sense of it, so It’s not really useful.
bucket_reso_stepsintNO新しい Bucket が作成される頻度を変更できます。
デフォルトは 64 です。
allows you to change how often a new bucket is created, default is 64, under that is untested, can be any value 1 or up
bucket_no_upscaleboolNOバケット適用時に画像のスケールアップを有効/無効にします。enables/disables upscaling images when applying buckets.
v2boolNOSD2をベースとしたモデルでトレーニングしている場合に設定するスイッチですか?Is the switch to set if you are training on a model that is based on SD2
v_parameterizationboolNOv2が有効で、SD2の768xバージョンに基づくモデルを使用している場合にのみ有効にします。Enable this only if you have v2 enabled and are using a model based on the 768x version of SD2
caption_dropout_ratefloatNOトレーニング中にキャプションファイルがドロップされる速度は、画像にキャプションファイルを使用しないことがあります。The rate at which caption files get dropped while training, not entirely sure what this does, except for the fact that it will occasionally not use the caption file for images
caption_dropout_every_n_epochsintNOエポックがトレーニング中にキャプションを無視する頻度は、すべてのNエポックがキャプション(EX:3 = (3, 6, 9, …))を無視していることを意味します。How often an epoch ignores captions while training, the number set means that every N epochs have ingored captions, EX: 3 = (3, 6, 9,…)
caption_tag_dropout_ratefloatNOキャプションファイル内のタグが無視される速度は、keep_tokens引数によって保持されているタグをドロップしません。The rate at which tags within caption files get ignored, this will not drop tags that are being kept by the keep_tokens argument.
noise_offsetfloatNO一見、通常の画像よりも暗く軽く見えるのです。コヤはこの技術に関する論文と同様に0.1を提案しているので、これをオウムにし、使用すれば0.1に設定することを提案します。Seemingly allows generation of darker and lighter than usual images. Kohya suggests 0.1, as does the paper on this technique, so I will parrot this and also suggest that you set it to 0.1 if you use it.
lowramboolNOモデルがvramにロードされるように、モデルのロード方法を変更します。Changes how the model is loaded so that it loads into vram, pretty much only useful for people with a lot of vram and no system ram, or colab users.
use_lionboolNO新しいLionオプティマイザの使用を有効にするフラグです。8bit_adamはどちらもオプティマイザであるため、明らかに使用できません。Is the flag to enable using the new lion optimizer. it obviously can’t be used with 8bit_adam as they are both optimizers.
save_json_namestrNOconfig ファイルの出力の最後に追加される名前です。Is the name that will be appended to the end of the config file output
loconboolNO新しくなったloconトレーニングは、基本的にLoRAのように機能するが、より多くの情報を保持する。Enables locon training, which is new, basically works like LoRA but holds more information.
locon_dimintNO通常のネットワーク dim に分離された dim は、デフォルトの LoRA レイヤではない他のレイヤの dim サイズとして機能する。十分なテストが行われていないため、推奨されない。The dim that is seperate to the normal network dim, it serves as the dim size for the other layers that aren’t the default LoRA layers. No recommendation because not enough testing has been done.

おまけ2 上手く学習できないときは…???

LoRAを使用して、インスタンスプロンプト(ここではbtc girl)をプロンプト欄に入力したのに、まったく学習された気配がない時は、次のことを試しましょう。

学習の精度(細部まで学習できているか、多様な姿勢・背景でもキャラを再現できるか)を追い求める前に、とりあえず低精度でもいいから効果を実感したい方向け対処法です。

  1. --reg_data_dir=C:\中略\seisokuを削除(正則化画像は過学習を防ぐもの。なくても良い)
  2. --learning_rate=1e-3など学習率を強くする
  3. --max_train_epochs=12などepoch数を増やす

精度の高いLoRA作成は、何を学習させるかで千差万別なうえ、日々アプデで学習設定自体が追加・更新されていくので、万能な最適値は存在しません

ぶっちゃけガチ勢に怒られそうですが、コピー機LoRA(過学習しすぎて学習元画像が出力されちゃうLoRAのことを一部掲示板で呼ぶ)の一歩手前まで学習させて、それを適宜弱めて使用していくのがキャラLoRAの楽な作成・運用方法です。

4,完成品LoRAをWebUI(1111版)で使用してみる

loraファイルの配置場所

outputフォルダ内に全部保存してあります。容量は150MB程度です。(dimサイズ(次元数)・fp16かfp32かなどに拠り変動)

拡張子がsafetensorsだからといって、画像生成AIのモデルフォルダに入れないように!

Stable Diffusion Webui(AUTOMATIC1111)のloraファイルの配置先は「stable-diffusion-webui\models\Loraです。

完成したLoRAをWebui(AUTOMATIC1111)で使用する方法

Loraファイルを配置し終えたら、いつもどおりWebUIを起動します。

Generate」ボタン下の「花札マーク🎴ボタン」をクリックします。

花札マーク🎴がない場合、WebUIのバージョンが古すぎるので下記ページ通りにアプデしてください。

Loraタブ内から使用したいloraを選択しクリックします。

すると自動でプロンプトに<lora:last:1>などと挿入されるので、それで生成すると学習が若干反映されています。

ちなみにLoraを適用せず、シード値などを上と同じにして、btc girlと入力すると下のような全く別の人物になるので、学習自体は行えていることがわかります。

シード値などを上と同じにしてインスタンスプロンプトbtc girlを文頭に追加すると以下のように。

少しepoch回しすぎたようです。過学習感。。。

なおLoRAは学習元モデル以外でも使用できるので、上のような残念感ある絵柄になってもモデルを変えると案外いい感じになる(こともあります)

7th_anime_v3_C.safetensorsならこんな具合に。

体感ですが50stepsくらいで出力した方がよく反映されます。

lora強度は「<lora:last:1>」の数字部分を変えて調整(0.7とかにして弱めたり、1.2にして強めたり)できます。

※なお、loraは常にプロンプトの最初に記入されたものとみなされて反映されます。

つまり、loraを弱めようとプロンプトの後半に配置するのは無意味です。

たとえば下のような長めのプロンプトでも、最初の方に「<lora:last:1>」を配置した場合と最後に配置した場合で何ら結果は変わりません。

btc girl ,<lora:last:1>,  hiten_1, (masterpiece:1.15763), best quality, illustration,(beautiful detailed girl:1.05), beautiful detailed glow,detailed ice,beautiful detailed water,(beautiful detailed eyes:1.05), expressionless,beautiful detailed white gloves, (floating palaces:1.2:1.05), azure hair,disheveled hair,long bangs, hairs between eyes, (skyblue dress:1.05), black ribbon,white bowties,midriff,(half closed eyes:1.15763), big forhead,blank stare,flower,large top sleeves,(ice crystal texture wings:1.15763), (Iridescence and rainbow hair:2.5:1.47746), (detailed cute anime face:1.3401), (loli:1.1025), (watercolor_:1.27628), (medium:1.05), (masterpiece:1.15763),
btc girl ,,  hiten_1, (masterpiece:1.15763), best quality, illustration,(beautiful detailed girl:1.05), beautiful detailed glow,detailed ice,beautiful detailed water,(beautiful detailed eyes:1.05), expressionless,beautiful detailed white gloves, (floating palaces:1.2:1.05), azure hair,disheveled hair,long bangs, hairs between eyes, (skyblue dress:1.05), black ribbon,white bowties,midriff,(half closed eyes:1.15763), big forhead,blank stare,flower,large top sleeves,(ice crystal texture wings:1.15763), (Iridescence and rainbow hair:2.5:1.47746), (detailed cute anime face:1.3401), (loli:1.1025), (watercolor_:1.27628), (medium:1.05), (masterpiece:1.15763),<lora:last:1>

まとめ kohya版LoRAをsd-scriptsで動かし、WebUI(1111)で使用する手順

大雑把な手順は以下の通りです。

  1. LoRA学習実行用スクリプトの準備
    • LoRA簡単インストーラーを使用
  2. 学習用画像の準備
    • 学習元画像ファイル名を連番に
    • 拡張機能でタグ付け
    • 透明PNG画像を正則化画像にする
    • フォルダ名を命名規則に従い変更
  3. LoRA学習開始
  4. 完成したsafetensorsファイルを配置
  5. WebUIを起動し🎴ボタンから使用
  6. 完了!!

4chanを中心に盛んなLoRA学習ですが、これで皆さんも自宅でできますね!!

解像度ごとの最大バッチサイズなどはコチラを参考にしてみてください。

VRAMが潤沢ならコチラのDreamBoothもおすすめです。

タグ付けや手動で色々インストールする手間がありません。

タイトルとURLをコピーしました