【Stable Diffusion】階層別に重さを設定できるLoRA Block Weightの使い方
- ※当ブログはアフィリエイト・アドセンスによる収益で運営されています。
こういったお悩みにお答えします。
Stable DiffusionでLoRAを使うとき、『顔だけ』『体だけ』『背景だけ』など部分的に適用したいことってありますよね。でも重さを調整するだけでは、イラスト全体がLoRAの影響を受けてしまいます。
この記事では
- 【Stable Diffusion】階層別に重さを設定できるLoRA Block Weightとは?
- LoRA Block Weightのインストール方法
- LoRA Block Weightの使い方
- もっとスムーズにイラストを生成したいなら…
- 生成した大量のイラストを簡単に管理する方法
これらについて解説していくので、最後まで読むとLoRA Block Weightを使って階層別にLoRAの重さをコントロールする方法がわかります。
『そもそもLoRAってなに?』という方は以下の記事も合わせてお読みください。
>>Stable Diffusionで使えるLoRAとは?導入方法と注意点を解説!
【Stable Diffusion】階層別に重さを設定できるLoRA Block Weightとは?
LoRA Block Weightを使うと、LoRAを階層別に適用できるようになります。
LoRAは17の階層を持っており、それぞれの層が生成されるイラストに影響を与えています。
(現実とは異なりますが)めちゃくちゃ単純化すると
- 第1層:顔に影響する
- 第2層:上半身に影響する
- 第3層:下半身に影響する
- …以下第17層まで続く
みたいなイメージです。この場合だと、第1層にだけLoRAを適用しなければキャラクターの顔は影響を受けなくなります。こう考えるとけっこう単純ですよね。
しかし残念ながら現実は厳しく、肝心の『どの階層がイラストのどの部分に対応してるの?』ということに関してはかなり複雑です。
皆様もこの図を参考にしたり、https://t.co/MBd4KlnbtN
lora-block-weight使って試行錯誤で良い感じに背景もキャラ描写も両立するWeightをさぐってみてくださいまし
ちなみに背景LoRAでもLoRAによって全然違ってくるよ pic.twitter.com/tGR6SoWawA— morisato (@swingwings) March 17, 2023
有志によりある程度解明されてきていますが、複数の階層が同じ部分に影響を与えているため、狙い通りの結果を出すことがとても困難。
複数のパターンを試すことが必要になり、こだわり始めると深い沼にはまることになります。
LoRA Block Weightは使いこなせれば非常に強力なツールですが、そのぶん多くの試行錯誤が必要になることは覚悟しておきましょう。
LoRA Block Weightのインストール方法
LoRA Block WeightをStable Diffusionに導入するのはとても簡単です。Stable Diffusion web UIの操作画面で『Extension』→『Install from URL』タブを選択し
- https://github.com/hako-mikan/sd-webui-lora-block-weight
このURLをコピペしてください。
下にある『Install』ボタンを押すと、自動でインストールが始まります。
インストールが完了したら『installed』のタブに移動し、『Apply and restart UI』ボタンをクリックしましょう。Stable Diffusionが再起動され、LoRA Block Weightが適用されます。
再起動後、操作画面の左下に『LoRA Block Weight』という項目が追加されていれば導入完了です。
LoRA Block Weightの使い方
LoRA Block Weightのタブを開くとこんな画面になります。各項目について順番に解説していきますね。
『Active』にチェックを入れるとLoRA Block Weightが適用されます。右側に記載されている
- NONE,ALL,INS,IND,INALL,MIDD,OUTD,OUTS,OUTALL,ALL0.5
これらの文字列はプリセットのこと。
具体的な内容は画面の下に書いてあります。
- 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
たくさんの数字が並んでいて面食らうかもしれませんが、ゆっくりと数を数えてみると…どのプリセットも17個の数字が。
17…LoRAが持つ階層の数と同じですね。この数列はそれぞれの階層に適用するLoRAの重みを表しているのです。
例えば
- NONE:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
であればどの階層にも適用しない設定ですし
- INS:1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
であれば、第1~4層にのみ適用する設定です。なお『0』『1』だけでなく『0.5』のように重さを加減することもできます。
階層ごとに手動で1,1,0,1,…と設定することもできますが、まずはプリセットごとの傾向を確認してみるといいでしょう。
※これら4つのボタンはプリセット自体を変更・追加したい場合に触ればOK。とりあえずこの記事ではスルーします。
実際のLoRAで比較
実際にプリセットによってLoRAの結果がどう変わるのか確かめてみましょう。今回は<lora:add_detail:1>(←<>は半角)という描き込み量を増やすLoRAをサンプルで使っていきます。
複数のパターンを試したい場合は『XYZ plot』機能を使うのが有効。タブを開き
- XYZ plotにチェック
- X Types:Original Weights
- X Values:試したいプリセット
これらを設定・入力しましょう。今回はすべてのプリセット『NONE,ALL,INS,IND,INALL,MIDD,OUTD,OUTS,OUTALL,ALL0.5』を試します。YやXの項目はなにも入力しなくてOK。
この状態でプロンプト欄に<lora:add_detail:1:XYZ>(←<>は半角)と記載しましょう。『XYZ』の部分が指定したValueに置き換わります。
適当なプロンプトで生成してみると
こんな結果になりました。細かく見ていきましょう。
NONE(すべての階層で適用しない)とALL(すべての階層に適用)を比べてみると、その差は歴然ですね。ALLではキャラクターはもちろん、背景の描き込みもかなり細かくなっています。
次にINS(第1~4層に適用)とIND(第1層と5~7層に適用)を比較してみましょう。キャラクターの差はちょっとわかりづらいですが、背景の建物を見るとINDの方が明らかに細かく描き込まれています。
『ということは…第2~4層よりは第5~7層の方が背景に効いていそうだな』と仮説が立てられますね。
もし背景にだけ効くLoRAを作りたい場合は、この5~7層に注目してパラメーターを変えて…みたいなことを繰り返して調整していきましょう。
『〇層だけが背景に影響している』というような単純な話ではないので、目的に応じて妥協も必要になってくるでしょう、沼にはまりすぎないよう、ほどほどに研究してみてください。
LoRAでは調節できない階層もある
もともとのモデルは26の階層を持っています。それに対してLoRAは17階層。残りの9階層には直接の影響を与えることができません。
フルモデルの階層と比べると
LoRA階層 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
フルモデル階層 | BASE | IN01 | IN02 | IN04 | IN05 | IN07 | IN08 | MID | OUT03 | OUT04 | OUT05 | OUT06 | OUT07 | OUT08 | OUT09 | OUT10 | OUT11 |
こんな関係になっています。歯抜けになっている『IN03』『IN06』などが、LoRAでは存在しない階層です。
なおLyCORISは26すべての階層に対応しています。これがLoRAの上位互換と呼ばれている理由ですね。
本気でこだわりたい方はLyCORISで階層別に適用することも検討してみましょう。当然LoRAよりもさらに複雑ですが…。
もっとスムーズにイラストを生成したいなら…
もしあなたがもっと快適にAIイラストを生成したいなら、グラボを見直してみるのがおすすめです。
グラボはAIイラストを生成するうえで最も重要なパーツ。いくらCPUやメモリが高性能でもグラボがしょぼかったら致命的です。
本格的に取り組んでいくのなら、グラボにはケチらず投資しましょう。最低でも12GBのVRAMは確保しておきたいところ。VRAMが2GB・4GBくらいしかない古いグラボだと高解像度化や学習に大きな支障が出てしまいます。
コスパを重視する方・予算が5万円以下の方はRTX 3060一択と言っていいでしょう。
もう少し予算が確保できて、さらにハイスペックなグラボに興味がある方は以下の記事もお読みください。きっとあなたに合ったグラボが見つかりますよ。
>>【コスパ重視】Stable Diffusionにおすすめのグラボ3選!
PCごと買い替えを検討している方は以下の記事をお読みください。快適にStable Diffusionを使えるマシン3選を紹介しています。
>>Stable Diffusionにおすすめのパソコン3選と推奨スペックを解説!
生成した大量のイラストを簡単に管理する方法
Stable Diffusionで生成した大量のイラストを効率的に管理するなら『Eagle』というツールがおすすめ。
イラストを生成するとメタデータが自動でEagleに送られ、タグやメモとして保存されます。このタグを使うことで検索や管理がとても楽ちん。
例えば『a dog』というタグで検索すると、そのプロンプトで生成されたイラストだけを表示することができます。『あのイラストどんなプロンプトで生成したっけ?』『LoRAのトリガーワード忘れた』なんて迷わずに済みますよ。
Eagleは本来『約4,000円・買い切り型』の有料ツールですが、30日間の無料体験ができるので、とりあえず試してみてください。
『【Stable Diffusion】階層別に重さを設定できるLoRA Block Weightの使い方』のまとめ
- LoRA Block Weightを使うと17の階層別にLoRAの重さを設定できる
- どの階層がイラストのどの部分に影響しているかはとても複雑
- はまると沼。ほどほどに。
ここまでお読みいただきありがとうございました!
他にもわからないことがあったら以下の記事をお読みください。初心者向けにStable Diffusionの使い方を一から解説しています。