メニュー

ランキング 24時間集計

目次

顔だけLoRA!誰でも理解できるLoRA Block Weightのすぐに使える簡単解説

SoreNutsからのお知らせ

 新規記事
5/3に既存のプロンプトをローカルLLMを使って拡張【ComfyUI IF AI tools】を公開!
5/1にWildcardでプロンプトとLoRAのランダム化【ComfyUI】を公開!
 更新記事
5/5に環境・背景・場所のプロンプト(呪文)一覧を更新!
5/3にカメラ・構図のプロンプト(呪文)一覧を更新!
5/1に服装のプロンプト(呪文)一覧を更新!

アップデート情報・この記事の注意点

LoRAの適用を途中で止める機能が追加されています。少し触ってみましたが使い勝手がかなりよさそうです。

使い方はシンプルで、:stop=step数を追加するだけです。

LoRAの適用を9ステップで止めたい場合

<lora:LoRAの名前:1:stop=9>

次のように使うこともできます。

<lora:LoRAの名前:1:1:lbw=1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0:stop=9>

また、この記事についてですが、筆者は現在LBWを使っておらず、検証を暫く行っていないため情報が古くなっている可能性が高いです。常に一番正確な情報は公式リポジトリなのでそちらをご確認ください。

目次

何ができるのか


・LoRAを顔だけに適用することができる。


・その他にも、画風、色、ポーズ、背景など、細かい調整が可能になる。


・LoRAだけでなく、LyCORIS(LoHa, LoCon, (IA)^3, LoKr, DyLoRA)や、SDXLにも対応している
※しかし使い方が少し異なるので注意。
使い方が統一されました。
違う点はLoRAは17個の層を変更できるのに対し、LyCORISは26個の層を変更できます。SDXL LoRAの場合は12個、SDXL LyCORISの場合は20個の層を変更できます。

・設定は基本被らないので、自分だけのLoRAの使い方をすることができる。






顔除外LoRA

LoRA Block Weightのインストール手順

Extensions タブから

Available タブに移動してLoad from:をクリックした後に

LoRA Block Weightと入力して
LoRA Block Weightをインストールしましょう。


隣にあるInstalledタブからApply and restart UIにて適用と再起動を行います。

インストールに成功するとLoRA Block Weightのタブが追加されます。

とにかく一回使ってみようのコーナー | LoRAを顔だけに適用してみよう。

↓LoRAの書き方を見てみましょう。

<lora:LoRAの名前:1>

ここに、LoRA Block Weightの設定を入れましょう。
:1の後に、この数列:1:lbw=0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0を書き加えてみて下さい。

つまり、

LoRAを顔だけに
適用する設定
:1:lbw=1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0
これを<lora:LoRAの名前:1>
こうする<lora:LoRAの名前:1:1:lbw=1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0>

↓軽く解説

<lora:LoRAの名前:1:1:lbw=1,1,1…>

LoRAの名前:TEncの重み:UNetの重み:lbw=階層別の重み17個

↓LoRA Block Weightが正常に適用された場合、cmdにいつもと見慣れない文字列が表示されます。

どうなったのか見ていきましょう。

顔だけにLoRAを適用しているはずなのに顔以外にもLoRAが適用されてます。

LoRAには階層が17個あるのですが、一つの階層に複数の要素(背景、画風、顔の形など)が組み込まれていることによってこのような結果になります。なので厳密に言うと、ある程度寄せることはできても”顔だけ”というのは不可能ということになります。

“階層”とはU-Netの階層のことであり、先ほど書いた数列17個にひとつづつ階層が割り当てられています。0,1,1,1←これです

他の設定集です。(プリセット)

プリセット名プリセット
顔11,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0
顔21,0,0,0,1,0,1,0,0.8,1,1,0.6,0,1,0,0,0
顔31,0,0,0,0,0,1,0.3,1,1,1,0.8,0,0.4,0,0,0
顔なし1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1
1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0
ポーズ1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0
画風1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1
キャラ1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0
背景1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,0,0
弱める1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1

プリセットだけでも結構楽しめますが、LoRAによって影響する層が大きく違ったりするので、基本的には自分で影響する層を調べてプリセットを作ることが必要になります。

では次は影響する層を調べてみましょう。

影響している階層を調べることができる Effective Block Analyzer

バグ報告

※重要11/5追記

デフォルト状態でも「Active」になりました。

Effective Block Analyzerのバグにも対応してくれています。

現在は拡張機能を最新に更新すると、グリッドが正常に作成されます。

とにかく一回Effective Block Analyzerを使ってみようのコーナー

XYZ plotのメニューからEffective Block Analyzerを選択します。

↓それぞれの値の推奨設定です。

diff image colorblack
change X-Yチェックを入れる
difference threshold20
Range2,0
Blocks17ALL
number of seed1

↓次はご自身のプロンプトの、LoRAの設定を変更しましょう。
※↓これがない場合Effective Block Analyzerは動きません。

1のうしろに:1:lbw=XYZを追加
<lora:LoRAの名前:1><lora:LoRAの名前:1:1:lbw=XYZ>

この設定だとイラストが18枚生成されます。
Hires.fixも適用可能ですがLoRAの影響が分かりにくくなるのでおすすめはしません。

これで設定は以上です。生成ボタンを押すと開始されます。

生成された比較表の保存場所
stable-diffusion-webui/outputs/txt2img-grids

※グリッドを見たけど変化量が少ない場合、LoRAに問題があります。
別のLoRAで試してみましょう。

ここで少し解説を挟みます。

階層について解説

↓LoRAには17個の階層があり、階層ごとに名前が付いています。BASE,IN01,IN02…

スクロールできます
1234567891011121314151617
BASEIN01IN02IN04IN05IN07IN08MIDOUT03OUT04OUT05OUT06OUT07OUT08OUT09OUT10OUT11

先ほど使った1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0このプリセットは17個の数字が並んでおり、
左から順番にBASE,IN01,IN02,IN04…~OUT11のように並んでいます。


↓LyCORISでは26個の階層があり、より細かな設定が可能になっています。

スクロールできます
1234567891011121314151617181920212223242526
BASEIN00IN01IN02IN03IN04IN05IN06IN07IN08IN09IN10IN11MIDOUT00OUT01OUT02OUT03OUT04OUT05OUT06OUT07OUT08OUT09OUT10OUT11

↓SDXLは特殊で階層が少ないみたいです。

SDXL LoRAの場合(12)

123456789101112
BASEIN04IN05IN07IN08MIDOUT0OUT1OUT2OUT3OUT4OUT05

SDXL – LyCORISの場合(20)

スクロールできます
1234567891011121314151617181920
BASEIN00IN01IN02IN03IN04IN05IN06IN07IN08MIDOUT00OUT01OUT02OUT03OUT04OUT05OUT06OUT07

Effective Block Analyzerで調べた比較表から自分だけの設定を作る

バグ報告

※重要11/5追記

デフォルト状態でも「Active」になりました。

Effective Block Analyzerのバグにも対応してくれています。

現在は拡張機能を最新に更新すると、グリッドが正常に作成されます。

あとは自分が欲しい層を選択していく形になります。
比較表の一番上に階層名が書いてあります。IN05とIN07とOUT3と…
選択できたら17個の数列を書いてみましょう!

左から順番にBASEは0で、IN01は2で….
0,2,0,0,0,0,1,1,0,0,0,1,1,3,0,0,0

・・・めんどくさいですよね?

なんと、あるんです。sp8999さんが便利なスプレッドシートを書いてくれていました。
それを参考にさせて頂いて私もスプレッドシートを作ってみました。

LoRA Block Weight用 スプレッドシート

↑使い方は画像を見れば分かると思います。
一番下のタブを切り替えることでLyCORISでも使えます。

あとは列をコピーして自分のLoRAに組み込めば完成です。

入力する数値に関して

2,3など、1以外も可能です。単純に倍率が高くなります。
3まで行くと殆ど壊れてしまうので多くても2がいいですね。

実はマイナスの値も可能です。-1や-2など。
私も少し試しましたが、要素を除外している感じでしょうか。
マイナスを使って狙った結果を出すのは至難の業かもしれません。

プリセットの使い方

LoRA Block Weightタブの説明

ActiveLoRA Block Weightのオンオフ
Activeの隣の
テキストボックス
タグ。コピー用。
XYZ plot専用のXYZ plot(表が作れる)
Weights settingプリセットを保存しておける
Elementalsd-webui-supermerger

Weights settingタブを見ていきましょう。

Reload Presets保存しているプリセットを呼び出します。
Reload Tagsコピー用のタグをテキストボックスに呼び出す。
Save Presets現在のプリセットを保存します。
Open TextEditorテキストエディターで編集できます。
※私はなぜかバグでコンソールが開きます。

テキストボックスにはデフォルトで沢山のプリセットが入っています。
ここに追加したいプリセットを書き込んでいきます。

プリセット名はなんでも構いません。

↑NekoLora-face-1というプリセットを追加しました。
早速使ってみましょう。

<lora:LoRAの名前:1:1:lbw=NekoLora-face-1>

↑書き方は簡単で、:1の後に:1:lbw=NekoLora-face-1を追加するだけです。
cmdを見るとプリセットが適用されたか確認できます。

ここまでで簡単な使い方解説は終わりです。
次は設定の項目の解説をしていきます。

Effective Block Analyzerの詳しい解説

diff image color差分となる画像の背景の色を変更できます。
#黒のほうが見やすいです。
change X-Yチェックを入れると比較表が横長になります。
#チェック推奨
difference
threshold
差分が変化したと認識される閾値を設定できます。
←左の画像では46.233%となっています。
この値が変化し生成される差分に影響します。
#20推奨
Rangeデフォルトのままだと極めて分かりづらいです。
↑デフォルトでは0.5,1となっていますね。
仮にOUT05が生成されたとします。
その時OUT05のみ0.5として計算されます。
※つまり下記のようになります。
1,1,1,1,1,1,1,1,1,1,0.5,1,1,1,1,1,1
#2,0を推奨、この方が分かりやすいです。
※この場合下記のようになります
0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0
Blocks調べたい階層を入力します。
#詳細はまたこの後記載します。
number of seed1だと自分のシードで生成します。
162495504など
2だとランダムシードで2回比較表を生成します。
つまり3,4と増やせば大量の比較表が作れます。
#2推奨

※Blocksについての詳細

デフォルトではLyCORISの設定になっています。

つまり26枚の画像が作られるということです。
しかし、LoRAの階層は17個にしか影響しないので
LoRAでLyCORISの設定を使うと、意味のない9枚の画像が作られることになります。

LoRAの場合17ALLと入力すれば自動的に17個の階層に絞ってくれます。
26ALLだとLyCORIS、12ALLだとSDXL LoRA、20ALLだとSDXL LyCORISに対応しています。

↓手動で階層を選択したい場合、下記を参考にしてください。

LoRAの場合BASE,IN01,IN02,IN04,IN05,IN07,IN08,M00,OUT03,OUT04,OUT05,OUT06,OUT07,OUT08,OUT09,OUT10,OUT11
LyCORISの場合BASE,IN00,IN01,IN02,IN03,IN04,IN05,IN06,IN07,IN08,IN09,IN10,IN11,M00,OUT00,OUT01,OUT02,OUT03,OUT04,OUT05,OUT06,OUT07,OUT08,OUT09,OUT10,OUT11
SDXL LoRABASE,IN04,IN05,IN07,IN08,MID,OUT0,OUT1,OUT2,OUT3,OUT4,OUT05
SDXL LyCORISBASE,IN00,IN01,IN02,IN03,IN04,IN05,IN06,IN07,IN08,MID,OUT00,OUT01,OUT02,OUT03,OUT04,OUT05,OUT06,OUT07

XYZ plotの解説

※10/4に新機能が追加されたみたいです。

新機能について気になる方はgithubをご覧ください。

https://github.com/hako-mikan/sd-webui-lora-block-weight#Original-Weights%E3%81%AE%E5%90%88%E7%AE%97

※筆者的にはEffective Block Analyzerで十分なので、特別な理由がない限りこちらを使う必要はないと思います。

こちらはデフォルトでStable Diffusionに搭載されているXYZ plotとは別で、
LoRA Block Weight専用のXYZ plotです。

比較表を作ることができます。
Effective Block Analyzerと同じですが、比較できる項目が違うというだけです。

使い方は簡単でEffective Block Analyzerと同様

<lora:LoRAの名前:1:1:lbw=XYZ>

:1:lbw=XYZを追加するだけです。

↓Xは赤色、Yは緑色、Zは比較表の数に影響します。

Zのテキストボックスに3つの値が入っていると、3枚比較表が作られます。
※例: Z Types=seed値, Z Values=1,2,3,4 これだと4枚の比較表が作られます

↓Typesメニューと対応するValuesの解説

TypesTypesの意味Values
Block IDブロックとは層のことです。
指定した層をTypesメニューのvaluesの値に変化させます。
ここでは層を指定します。
IN05OUT05とは
IN05,IN07,IN08,MID,OUT03,OUT04,OUT05
この階層を変化させます。
またNOT IN05-OUT05を使うことで
IN05-OUT05以外を変化させます。
valuesBlock IDとセットで使います。この値がBlock IDを変化させます。
2や3にするとBlock IDの値が2や3になります。
デフォルト設定でvaluesの値を2にすると
0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0
この設定で書き出されます。
seedシード値を指定します。1,2,3と入力したら、シード値の1,2,3が指定されます。
Original Weightsプリセット名を使います。
全ての層の初期値を決めます。
Original Weightsがない場合
初期値は1になります。
デフォルトにあるプリセットのNONEと書けば
初期値が全て0になります。
※NONEが全て0で登録されているため。
elementssd-webui-supermerger

掲示板

コメント一覧 (5件)

  • 非常にわかりやすい説明で簡単に導入できました。
    またスプレッドシートも大変便利に触らせていただきました。
    質問なのですがLoRAのデフォルトで特定のblock weightをプリセットにしておく方法はないでしょうか?
    つまりサムネイル画像をクリックしたときに、のように設定した値が自動で入ってほしいのです。
    それとも何かしらのLora Mergeでweightを書けた状態で別保存しておくしかないのでしょうか?

    • プロンプト部分がコメントのルールで削除されてしまいましたが、:lbw=0…1部分も自動挿入してほしいということです

  • こんにちは。先日まではLoRA Block Weightを使用出来ていたのですが、昨日の夜から同じようにインストールしても
    LoRA Block Weight : Not Activeと表示されてしまい、反映されなくなってしまいました。
    試しに使用出来ていたころの画像を同じプロンプト、同じシードで生成したところやはり画像が違ってしまいました。
    下記の画像のように表示されてしまいます。
    https://imgur.com/6KADlBV.jpg
    私はpaperspaceを利用して画像を生成しています。
    不慣れなため、説明に不備がありましたら申し訳ございません。解決方法がありましたら、教えて頂ければ幸いです。

    • 最新パッチの変更によって初期状態だと、「Not Active」がデフォルト状態になりましたね。LoRA Block Weightのメニューを開いて一番上にある「Active」のチェックボックスを入れ直すことで有効化されるみたいです。初期状態ではチェックが入っているのに「Not Active」と表示されて無効化されているので誤解しますねこれは。一応記事にも書いて置きました。

      • 先程教えて頂いた通りに試しましたら、LoRA Block Weightが今までと同じように有効化出来ました。
        チェックを入れなおすだけで良かったとは盲点でした。助けていただき感謝しています。ありがとうございます!

コメントする

このフォームは reCAPTCHA によって保護されており、Googleのプライバシーポリシー利用規約が適用されます。
目次