【Stable Diffusion】LoRAを使う際に階層ごとに強さを設定できる拡張機能「LoRA Block Weight」の使い方を紹介!

こんにちは!悠です!

 

「Stable Diffusion」で使える色んなLoRAを探していると、たまに次のような表記を見かけることがありませんか?

<lora:loraの名前:0.8:1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0>

 

これはLoRAを適用する際に、作用する階層ごとの強さを設定する書き方で、拡張機能「LoRA Block Weight」を導入することで使えるようになります。

今回はその使い方について詳しく紹介していきます!

 

アイキャッチ画像は「Chilled Remix」で生成しています。
スポンサーリンク
スポンサーリンク

「LoRA Block Weight」とは?

普通に使っていると気にならないんですが、実はLoRAは17個の階層に分かれており、生成するAIイラストに対して各階層ごとに違った影響を及ぼします。

<lora:loraの名前:0.8:1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0>

 

上の青い17個の数字は、各階層ごとに作用する比重を設定した表記になります。

ちなみにLoHAやLoCon(LyCORIS)は26層に分かれているそうです。

 

この各層ごとの強さを個別に設定した表記を、WebUIで使えるようにする拡張機能が「LoRA Block Weight」です。

GitHub - hako-mikan/sd-webui-lora-block-weight
Contribute to hako-mikan/sd-webui-lora-block-weight development by creating an account on GitHub.

 

各階層ごとにどんな影響があるのかは明確に判明しておらず、LoRAの種類によっても変わってくるようですが、前の方の階層はキャラの顔に作用しやすかったり、後ろの方はポーズや構図に作用しやすかったりと法則があるようです。

LoRAの各層による影響の情報は非常に少なく、下記のツイートで紹介されている4chan由来の画像や、

 

下記のRedditのスレッドや

Block weights: Give LoRA a second breath
byu/ruSauron inStableDiffusion

 

下記の記事が参考になりそうです。

LoRA-Block-Weight 層別メモ
LoRA-Block-Weight 層別メモ なにこれ 層の情報 LoRA LyCORIS(LoCon等) LyCORIS/LoCon用カスタムプリセット 使い方 LyCORIS/LoCon用カスタムプリセット基本形 特定層のみ無効化 LyCORIS/LoCon用カスタムプリセット LoRA版をもとに適当に設定したやつ...

 

「LoRA Block Weight」の導入方法

 

Google Colaboratory版の場合

下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「LoRA Block Weight」を導入していきます。

まだご覧になっていない方は、まず最初にこちらを準備しておいてください。

【Stable Diffusion】AUTOMATIC1111のWebUIをGoogle Colaboratory上で使う方法!【maintained by Akaibu】
「Stable Diffusion」で、「AUTOMATIC1111」が用意しているノートブック「maintained by Akaibu」を使って、Google Colaboratory上で自分の好きなモデルデータやLoRAを使用する方法についてまとめた記事です。
【Stable Diffusion】AUTOMATIC1111のColab版でLoRAを使う方法について紹介!【maintained by Akaibu】
AUTOMATIC1111のColab版「maintained by Akaibu」でLoRAを使う方法についてまとめた記事です。2.5D風AIコスプレイヤーを作成できる「KoreanStyle2.5D」も紹介しています。

 

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でダウンロードできます)を使って説明していきます。

こういうのが作れます!

 

これもかわいい!

 

「LoRA Block Weight」のActiveにチェックを入れるだけで、txt2imgタブでLoRAの階層表記が使用できるようになります。

 

階層表記の使い方ですが、例えばすべての階層で1を使用する場合は次のようになります。

通常のLoRAの比重の後に、階層ごとの比重を設定する感じですね。

半角スペースなどを挿入したり、数字が17個より少ないと使えないので注意してください。

<lora:mPixel_v10PixelArt:0.5:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1>

 

また、あらかじめプリセットとして登録してあるWeights settingの比重を使いたい場合は、次のように表記します。

<lora:mPixel_v10PixelArt:0.5:MIDD>

 

WebUI Ver1.5.0以降の場合

2023年7月25日に更新された「Stable Diffusion WebUI」のVer1.5.0を適用後は、下記の記述形式を使う必要があるようです。

<lora:lora_name:1.0:lbw=MIDD>

 

X/Y/Z plotを使って各階層の効き方を調べる

X/Y/Z plotを使って、LoRAの各階層ごとの効き目をチェックする方法もあります。XYZ plotに関しては下記の記事で紹介しているので、参考にしてください。

【Stable Diffusion】X/Y/Z plotを使ってサンプラーやプロンプトによる差を比較・検証する方法!
「Stable Diffusion WebUI」で、変数比較機能「X/Y/Z plot」を使ってモデルに応じた最適なサンプラーやプロンプトを簡単に調べる方法についてまとめた記事です。

 

「LoRA Block Weight」で使う場合は、通常のX/Y/Z plotと違ってScriptsを使用しないので注意しましょう。

 

まず、プロンプト内のLoRAに次のようにXYZを付けます。

<lora:mPixel_v10PixelArt:0.5: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>の形式を使っている場合は注意が必要です。

【Stable Diffusion】全種類のLyCORISを導入できるようになる拡張機能「a1111-sd-webui-lycoris」の紹介!
「Stable Diffusion WebUI」で、DyLoRAを含む全種類のLyCORISを導入することができるようになる拡張機能「a1111-sd-webui-lycoris」の使い方についてまとめた記事です。

 

<lyco:lora_name:1.0>の形式で層別適用を使用するには、下記のように記入する必要があります。

 

【DyLoRAではない場合】

<lyco:lora_name:1.0:lbw=MIDD>

 

DyLoRAの場合はUnet weightDyLoRA Dimを設定する必要があるそうですが、DyLoRAが現在全く流通していないので試せません。

もし運よく入手することができたら実際に試して紹介いたします。

 

「Weight Helper」を導入してより便利に!

層別比重をスライダーを使って簡単に適用できるようにする拡張機能「Weight Helper」を導入すると、「LoRA Block Weight」がより使いやすくなります。

詳しくは下の記事で紹介しています。

【Weight Helper】LoRAの層別比重をWebUI上で手軽に指定できるようにする拡張機能【Stable Diffusion】
拡張機能「LoRA Block Weight」を導入することで設定可能になる層別比重を、WebUI上でスライダーを使って手軽に入力できるようにする「Weight Helper」に関してまとめた記事です。

 

まとめ

以上が「Stable Diffusion」で、LoRAを適用する際に作用する階層ごとの強さを設定できる拡張機能「LoRA Block Weight」の使い方でした。

これを上手く活用することで、今まで使っていたLoRAの効果を向上させることができるかもしれませんので、ぜひ皆さんも試してみてくださいね!

 

では、ここまで読んでいただきありがとうございました。

コメント

  1. 匿名 より:

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

    • 悠 より:

      コメントありがとうございます!

      paperspaceに関しては私自身一度も使用したことがないので、申し訳ないですがよく分からないです…
      なんか独特の記述形式が必要だったりするらしいですね。

      ただもしcolabと同じ感じだったら、数日時間を置けば使えるようになっているかもしれません

  2. taku より:

    こんにちは。
    何時も拝見させていただいております。
    最近Stable Diffusionを使用し始めたのですが、lora block weightに関して困っております。
    こちらのブログの記載通り操作をしてみたのですが何度試してもすべての画像が同じ(全てLORAが効いていない?)
    状態で出てきます。
    階層別の効き方をXYZ plotで調べたいのですがうまくいかずご助言いただけますと幸いです。

    • 悠 より:

      こんにちは!

      Ver1.5.0以降ですとlora:lora_name:1.0:lbw=MIDDのように、lbw=の形で記述しないと階層比重が適用されないのですが、ここを忘れていたりはしませんでしょうか?

      あ、添付していただいた画像を見たんですが、左上にloconって書いてありますね。MIDD等の記述はLoRA専用なので、LyCORISだと使えないはずです。
      LyCORISで階層適用をしたい場合は26個(LoRAは17個)の比重を適用する必要があります。

      この記事内で紹介しているWeght helperを使うと設定しやすいですよ!