Stable Diffusionの重みを階層別に付けられる拡張機能『LoRA Block Weight』の使い方

LoRA

「LoRA Block Weightを使ってみたいけど、使い方が分からない」といった疑問を持っている方も多いのではないでしょうか。

こういった疑問にお答えするため、この記事ではLoRA Block Weightの導入方法や使い方を解説していきます。

実際にLoRA Block Weightを使った結果も紹介しているので、読んで参考にしてください。

※Stable Diffusionの立ち上げ方・使い方については、以下の記事で詳しく解説しています。

拡張機能「LoRA Block Weight」とは?

「LoRA Block Weight」とは、LoRAの階層を調査できる拡張機能です。応用させれば、LoRAの重みを調整して、顔や服など一部分のみに反映させられます。

LoRAは17階層に位分かれており、それぞれの階層が顔や服、背景などに反映される仕組みです。

例えば「Yae Miko | Realistic Genshin LORA」を調査すると、以下のようなプリセットが表示されます。

NONE:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
ALL:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
INS:1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
IND:1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0
INALL:1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
MIDD:1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0
OUTD:1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0
OUTS:1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1
OUTALL:1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1
ALL0.5:0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5

上記10項目のプリセットがLoRAの階層で、0や1といった数字が適用されているかを表しています。

「0」が適用されていない階層で、「1」が適用されている階層です。

しかしどの階層がどこに影響しているかは分かりません。「LoRA Block Weight」を使って画像を生成すれば、以下のような画像が生成されます。

見比べると、それぞれの画像に違いがあるのが分かりますね。

このように「LoRA Block Weight」を使えば、どの項目がどこに反映されているかが、画像で比較できるわけです。

拡張機能「LoRA Block Weight」の導入方法

以下の手順で、「LoRA Block Weight」をStable Diffusionに導入します。

  1. Stable Diffusionを立ち上げる
  2. 「Extension」→「Install from URL」と進む
  3. https://github.com/hako-mikan/sd-webui-lora-block-weightをコピペ
  4. 「Install」をクリック
  5. 「Installed」のタブに移動し、「Apply and restart UI」をクリック
  6. 再起動されて導入完了

まずStable Diffusionを立ち上げて、「Extension」→「Install from URL」と開きます。

Install from URL内に「URL for extension’s git repository」の項目があるので、以下のURLをコピペしてください。

https://github.com/hako-mikan/sd-webui-lora-block-weight

URLをコピペしたら「Install」をクリックします。

「Installed」内に「sd-webui-lora-block-weight」の項目があればインストールされているので、「Apply and restart UI」をクリックして再起動すれば導入完了です。

今回紹介するLoRA Block Weight以外にも、優秀な拡張機能があるので、興味がある方は以下の記事を参考にしてください。

拡張機能「LoRA Block Weight」の使い方

まず、下の方にある「LoRA Block Weight」の項目を開いてください。

開くと、以下の画像のような画面が表示され、「LoRA Block Weight」で階層の調査を行います。

調査方法は、主に「Effective Block Analyzer」か「XYZ plot」のどちらかを使います。使うのは、使いやすい方でOKです。

「Effective Block Analyzer」の使い方

「Effective Block Analyzer」は、以下の手順で使います。

  1. 「Effective Block Analyzer」にチェック
  2. 「black」「change X-Y」にチェック
  3. 「difference threshold」「Range」は20に
  4. 「number of seed」は1
  5. LoRAのプロンプトに” :1:lbw=XYZ”を追加 (一例: <lora:YaeMiko_Test:1:1:lbw=XYZ>
  6. 画像を生成(約1分)

「XYZ plot」の使い方

「XYZ plot」は、以下の手順で使います。

  1. 下にある「LoRA Block Weight」を開く
  2. 「XYZ plot」にチェック
  3. 「X types」を『Original Weights』に変更
  4. 「Y Types」に”NONE,ALL,INS,IND,INALL,MIDD,OUTD,OUTS,OUTALL,ALL0.5”をコピペ (上に表示されている)
  5. LoRAのプロンプトに”1:lbw=XYZ”を追加(一例” <lora:YaeMiko_Test:1:1:lbw=XYZ>”)
  6. 生成

実際に「LoRA Block Weight」を試してみた!

今回LoRA Block Weightを利用して、顔だけにLoRAを適用させてみました。まずLoRA Block Weightで画像を生成します。

全ての階層を適用させている「ALL」と、顔が近い画像を探しましょう。比較すると、「MIDD」が一番近いと感じました。

MIDDのプリセットの”1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0”を、以下のようにLoRAのプロンプトに追加します。

 <lora:YaeMiko_Test:1:1:lbw=1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0>

結果が、以下の画像です。

 <lora:YaeMiko_Test:1:1:lbw=1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0>, 1 girl,standing pose,face up,looking at viewer,facing front,break,smile,(open mouth:1.3),black hair,Blue eyes, acing front,evening walk

顔や髪型は近いですね。

続いて、服が近い「OUTD」で、服を再現してみました。

 <lora:YaeMiko_Test:1:1:lbw=1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0>, 1 girl,standing pose,face up,looking at viewer,facing front,break,smile,(open mouth:1.3),black hair,Blue eyes, acing front,evening walk

なんとなく服は似ている、という結果でした。

このように、一部だけLoRAを適用させれるので、いろいろ試してみてください。

まとめ

いかがでしたでしょうか?

今回は、LoRA Block Weightについて解説してきました。

今回のポイントをまとめると、以下のようになります。

  • 「LoRA Block Weight」は、LoRAの階層を調査する拡張機能
  • 応用で、顔や服などの一部だけにLoRAを適用させられる

LoRA Block Weightで調査した結果とプロンプトを組み合わせて、一部だけにLoRAを適用させた画像を生成してみてください。