こんにちは!悠です!
「Stable Diffusion」で使える色んなLoRAを探していると、たまに次のような表記を見かけることがありませんか?
これはLoRAを適用する際に、作用する階層ごとの強さを設定する書き方で、拡張機能「LoRA Block Weight」を導入することで使えるようになります。

今回はその使い方について詳しく紹介していきます!
「LoRA Block Weight」とは?
普通に使っていると気にならないんですが、実はLoRAは17個の階層に分かれており、生成するAIイラストに対して各階層ごとに違った影響を及ぼします。
上の青い17個の数字は、各階層ごとに作用する比重を設定した表記になります。
ちなみにLoHAやLoCon(LyCORIS)は26層に分かれているそうです。
この各層ごとの強さを個別に設定した表記を、WebUIで使えるようにする拡張機能が「LoRA Block Weight」です。
各階層ごとにどんな影響があるのかは明確に判明しておらず、LoRAの種類によっても変わってくるようですが、前の方の階層はキャラの顔に作用しやすかったり、後ろの方はポーズや構図に作用しやすかったりと法則があるようです。
LoRAの各層による影響の情報は非常に少なく、下記のツイートで紹介されている4chan由来の画像や、
皆様もこの図を参考にしたり、https://t.co/MBd4KlnbtN
lora-block-weight使って試行錯誤で良い感じに背景もキャラ描写も両立するWeightをさぐってみてくださいまし
ちなみに背景LoRAでもLoRAによって全然違ってくるよ pic.twitter.com/tGR6SoWawA— morisato (@swingwings) March 17, 2023
下記のRedditのスレッドや
Block weights: Give LoRA a second breath
by u/ruSauron in StableDiffusion
下記の記事が参考になりそうです。

「LoRA Block Weight」の導入方法
Google Colaboratory版の場合
下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「LoRA Block Weight」を導入していきます。
まだご覧になっていない方は、まず最初にこちらを準備しておいてください。


Google Driveからモデルデータを読み込むセルの下に新しくセルを作成し、下記のコードを入力してください。
#LoRA Block Weightをインストール %cd /content/stable-diffusion-webui/extensions/ !git clone https://github.com/hako-mikan/sd-webui-lora-block-weight /content/stable-diffusion-webui/extensions/sd-webui-lora-block-weight %cd /content/stable-diffusion-webui
WebUIを起動し、txt2imgタブにLora Block Weightの欄が追加されていれば導入成功です。
ローカル版の場合
「Extensions」→「Install from URL」の「URL for extension’s git repository」に下記のURLを入力しInstallをクリックしましょう。
https://github.com/hako-mikan/sd-webui-lora-block-weight
「LoRA Block Weight」の使い方
わかりやすいように例として、「M_Pixel 像素人人」という画像をピクセルアート化するLoRA(Civitaiでダウンロードできます)を使って説明していきます。
なお、モデルデータには「AbyssOrangeMix3」を使用しています。

こういうのが作れます!

これもかわいい!
「LoRA Block Weight」のActiveにチェックを入れるだけで、txt2imgタブでLoRAの階層表記が使用できるようになります。
階層表記の使い方ですが、例えばすべての階層で1を使用する場合は次のようになります。
通常のLoRAの比重の後に、階層ごとの比重を設定する感じですね。
半角スペースなどを挿入したり、数字が17個より少ないと使えないので注意してください。
また、あらかじめプリセットとして登録してあるWeights settingの比重を使いたい場合は、次のように表記します。
X/Y/Z plotを使って各階層の効き方を調べる
X/Y/Z plotを使って、LoRAの各階層ごとの効き目をチェックする方法もあります。XYZ plotに関しては下記の記事で紹介しているので、参考にしてください。

「LoRA Block Weight」で使う場合は、通常のX/Y/Z plotと違ってScriptsを使用しないので注意しましょう。
まず、プロンプト内のLoRAに次のようにXYZを付けます。
「LoRA Block Weight」の中にあるXYZ plotのタブを開き、ActiveをXYZ plotに設定します。
X typesにOriginal Weightsを選択し、X valuesに「NONE,ALL,INS,IND,INALL,MIDD,OUTD,OUTS,OUTALL,ALL0.5」と入れてGenerateボタンを押すと、
下記のようにあらかじめ設定してある階層比重を使った表が生成されます。
これを見ると、このピクセルアートLoRAは、OUTALLのように後半の階層が生成画像に大きく影響を与えていそうだと推測できますね!
「a1111-sd-webui-lycoris」で使用する場合
「a1111-sd-webui-lycoris」(下記)を導入済みで、<lyco:lora_name:1.0>の形式を使っている場合は注意が必要です。

<lyco:lora_name:1.0>の形式で層別適用を使用するには、下記のように記入する必要があります。
【DyLoRAではない場合】
<lyco:lora_name:1.0:lbw=MIDD>
DyLoRAの場合はUnet weightとDyLoRA Dimを設定する必要があるそうですが、DyLoRAが現在全く流通していないので試せません。
もし運よく入手することができたら実際に試して紹介いたします。
まとめ
以上が「Stable Diffusion」で、LoRAを適用する際に作用する階層ごとの強さを設定できる拡張機能「LoRA Block Weight」の使い方でした。
これを上手く活用することで、今まで使っていたLoRAの効果を向上させることができるかもしれませんので、ぜひ皆さんも試してみてくださいね!
では、ここまで読んでいただきありがとうございました。
コメント