忘備録的に作りましたが、技術的な所が詳しいわけではないので間違っていたらご指摘ください。
2023/4/30時点の情報になります。
この記事ではExtensionのインストールが出てきます。
方法がわからない方はこちらを参考にしてください。
LoRAとは?
ちょっとした学習で絵柄やポーズやシチュエーションなどなどを再現できるようになります。
うちの子がある人はうちの子LoRAを作ればプロンプトが1ワードで済んでしまうということです。
また、色々なLoRAが公開されているので、それを使うことで手軽に色々なものを試せます。
なんかLoRAの種類? いっぱいあってややこしいんだけど
LyCORIS,LoHa,LoRA,LoCon,(IA)^3,LoKR,DyLoRAなど色々あってなんのこっちゃ!
ってなりますよね。わかります。
これらはファインチューニングの手法の分類とそのアルゴリズムになります。
LoRA,LyCORIS,LoConは手法のプロジェクト名みたいな感じです。
そしてLoConはLyCORISに吸収されて今はありません。
昔あった拡張のLoConも今は不要でLyCORISの拡張を入れればOKです。
そして、LoHa,(IA)^3,LoKR,DyLoRAはLyRORISの学習用アルゴリズムの一種です。
学習時に指定して使います。
これらは基本的に使う時は気にしなくて良いのですが、LyCORISとLoConで学習したLoRAを使うにはLyCORIS専用のExtensionが必要になるので注意です(後述)
使い方
複数適用すると崩壊しやすくなる、全部のLoRAの重み(Weight)の総和が1を超えると崩壊しやすくなるなど、色々な説がありますがモデルなども影響するので自分で確かめてください。
重みは0~1の間で指定する事が一般的ですが、1以上やマイナスも指定できます。
また層別適用する事で重みが1を超えても崩壊しないようにしたりできます(後述)
LoConについては通常版とLyCORIS版があるらしい?
ので適用方法はどちらを使うのが正解かはファイルによるかと思われます?
今の所は通常の<lora>適用のものしか知らないので真偽不明です。
通常版
LoRAファイルの置く場所
通常のままの場合:stable-diffusion-webui\models\Lora
これはwebui-user.batから変更可能です。
気になる方はこちらの記事を参考にしてください。
プロンプトへの挿入方法
構文:<lora:LoRAの名前:WEIGHT>
実例:<lora:hipoly3DModelLora_v10:0.5>
花札マークから使いたいLoRAを選んで選択したほうが楽です。
プロンプトに自動で挿入されるのでそのまま使用できます。
花札からの使い方がわからない方はこちらの記事を参考にしてください。
(モデルを題材で説明していますがLoRAも同じです)
LyCORIS版
まず追加Extensionが必要
コレ↓をインストールしてください(a1111-sd-webui-lycoris)
https://github.com/KohakuBlueleaf/a1111-sd-webui-lycoris.git
インストール後、適用してUIを再起動では反映されないのでwebui-user.batから再起動してください。
花札マークを押した後LoRAの横のタブにLyCORISがあれば成功です。
LyCORIS版LoRAファイルの置く場所
通常のままの場所:stable-diffusion-webui\models\LyCORIS
これはwebui-user.batから変更可能です。
入れたら検索ウィンドウの横のリフレッシュボタンを押せばLoRAが読み込まれます。
あとは他と同じようにリストで出てきているものをクリックすればプロンプトへ挿入されるのでそのまま使えます。
プロンプトへの挿入方法
構文:<lyco:LoRAの名前:WEIGHT>
実例:<lyco:hipoly3DModelLora_v10:0.5>
他の引数も指定する方法
<lyco:LoRAの名前:arg1:arg2:arg3...:argn>
arg1:テキストエンコーダー
arg2:unet
arg3:dylora(ごめんこれはよくわからん)
変数名省略:<lyco:LoRAの名前:1:0.5:13>(数値のみ指定の場合はte/unet/dynの順で固定)
全部指定:<lyco:LoRAの名前:dyn=13:te=1:unet=0.5>(全部書く場合は変数の順番を変更可能)
LyCORISで作られたLoRAは<lora>では呼び出せないので注意してください。
階層適用について(LoRA Block Weight)
階層適用とは?
塗りだけを反映、ポーズだけを反映、顔には適用しない。などLoRAを効かせる場所の重みを変更できます。
詳しくは5chwikiのLoRA階層を確認すると良いと思います。(URL貼るの禁止なので探してください)
こちらも参考になります。
Extensionをインストール
こちら↓の拡張(LoRA Block Weight)をインストール
https://github.com/hako-mikan/sd-webui-lora-block-weight.git
使い方
まずLBWで階層適用するためのプリセットを作成する
t2i画面の下の方にあるLBWを開くとこんなUIが出てきます。
このままのプリセットを使用してもいいですが、自分で追加することもできます。
作る場合はOpen TextEditorがを押すとメモ帳でテキストが開かれるので、直接入力します。
テキストファイルの更新が終わったら上書き保存して、Reload presetsとReload Tagsのボタンを押してリストに反映させます。
構文
プリセット名:階層別の数値をカンマ区切りで記入
プリセット名は何でも構いませんが大文字小文字が区別されるので、プロンプト入力時は注意してください。
階層の内訳
左から順にBASE、IN層、MID層、OUT層となっています。
通常のLoRAは17層
LyCORISは26層
となっており、階層の数が違うので注意です。
プロンプトだけ見た時にもLyCORIS版のプリセットである事をわかりやすくするために、頭にLyを入れてLyNOFACEとかにすると良いと思います。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
BASE | 01 | 02 | 04 | 05 | 07 | 08 | MID | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
IN | OUT |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
BASE | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | MID | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
IN | OUT |
どこの層が何に関係するかは4chに貼られていたこちらの画像を参考にしてみてください。
私も全部検証しきれていないので、各自チャレンジしてください…。
闇雲に総当りするより楽なはずです!
構文については通常の指定時の最後に
:LBWでつけたプリセット名
を追加します。
通常のLoRAを適用する場合
プリセットの設定例
NOFACE:1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1
実例
<lora:hypolylora:0.6:NOFACE>
LyCORISのLoRAを適用する場合
※2023.5.12の書式変更で重みまとめて+LBWの指定とDyLoRAの指定を省いた記入ができるようになりました。
またlbw=の入力が必須になりました。
以前のように1:1:0:LyNameだと適用されません。
プリセットの設定例
LyNOFACE:1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,1,1,1,1,1,1
実例
<lyco:hypolylora:1:1:0:lbw=LyNOFACE>
<lyco:hypolylora:1:1:lbw=LyNOFACE>
<lyco:hypolylora:1:lbw=LyNOFACE>
※hypolyloraのLyCORIS版は今はありません。
(あくまでサンプル用にわかりやすくするために名称を揃えただけです)
階層適用の数値ジェネレーター
IN層の何番目だっけ…数えるの面倒ですよね? わかります。
というわけで作りました。(スプレッドシートURL)
テンプレ枠はロックしましたが、数値入力は編集可能となっていますので、自分で吟味した階層をここに入力して頂けると後続の人が助かります。(備考欄に何を目指したかをメモしてくれると更にいいでしょう。丸投げ)
もちろん非公開にしたい人は自分のドライブへコピーしてからご使用して頂いて全く構いません。
カンマ区切りになっているテキストをここにコピペしたい時は、貼付けしたあとにバインダーみたいなアイコンをクリックして、テキストを列に分割を選ぶと列に分割されて配置されます。
その際にプリセット名:があるとコロンが区切り文字として先に認識されてうまくいかないので数値だけコピーしてNo.1の所にカーソルを置いてから貼り付けしてください。