Stable Diffusion WebUIでキャラクターLoRAを使っていると、最初は「良さそうな単語を足せば良くなる」と思いがちです。
でも実際にいろいろ調整していると、プロンプトは簡単に沼になります。
キャラクターLoRA、画風、体型、雰囲気、シーン、品質タグ、ネガティブプロンプト、拡張機能の設定。全部が同じ場所に積み重なると、どの単語が効いているのか、どの単語が邪魔しているのかが見えなくなります。
この記事は、私のローカル環境でStable Diffusion WebUIを触りながら、「これは管理として効いた」と感じたことをまとめたメモです。特定のモデルやLoRAで必ず同じ結果になるという話ではありません。
まず、キャラクターLoRAに全部背負わせない
今回いちばん大きかった学びは、キャラクターLoRAのactivation textに、キャラクター以外の役割を詰めすぎないことでした。
たとえば、キャラクターLoRAのメタ情報に次のような要素を全部入れてしまうとします。
- 顔や髪型などの本人識別
- 画風
- 体型
- 色気や雰囲気
- 光源や空気感
- 表情や感情
- 品質タグ
一見すると便利です。LoRAを選ぶだけで「それっぽい絵」になりやすいからです。
ただ、その便利さはあとで重くなります。
別のシーンで使いたいとき、別の画風に寄せたいとき、体型や雰囲気だけ変えたいときに、キャラクターLoRA側に埋め込んだ要素がずっと引っ張ってきます。
結果として、プロンプトに新しい指示を足しているのに、LoRA側の固定指示とぶつかって、顔が崩れたり、絵柄が寄りすぎたり、狙った雰囲気から外れたりします。
activation textは「本人の外見」に絞る
最終的に、キャラクターLoRAのactivation textはかなりシンプルな方向へ寄せました。
考え方はこうです。
キャラクターLoRA:
本人識別に必要な、直接見える外見要素を担当
styles.csv / Easy Prompt Selector:
画風、品質、構図、シーン、雰囲気、体型、表現の強さを担当
キャラクターLoRA側には、髪型、髪色、目の印象、顔立ち、肌色など、本人を識別するための外見要素を残します。
逆に、汎用的な美化、空気感、セクシーさ、リアル寄せ、ゴージャスさ、シーン指定などは、キャラクターごとに固定しないほうが扱いやすいと感じました。
これはLoRAの仕組みを厳密に説明しているわけではありません。ただ、運用上はかなり納得感があります。
LoRAは「このキャラクター方向へ寄せるためのベクトル」と考えると、そこに画風やシーンまで混ぜすぎるより、キャラクター本人の方向だけを押したほうが、あとからプロンプトで調整しやすくなります。
ネガティブプロンプトをLoRAに隠すと管理がつらい
もうひとつ大きかったのが、ネガティブプロンプトの扱いです。
キャラクターLoRAのメタ情報にネガティブワードを入れておくと、LoRAを選んだときに自動で効かせられます。これも一見便利です。
でも、実際に複数のLoRAやstyleを組み合わせると、同じようなネガティブワードが見えないところで重なります。
そうなると、何が起きるか。
- どのLoRA由来のネガティブか分からない
- 同じ単語が重複して強く効きすぎる
- プロンプト追従が悪い原因を探しにくい
- キャラクターLoRAの比較がしづらい
今回の整理では、キャラクターLoRA側のhidden negativeは空に寄せました。
ネガティブプロンプトを使わない、という意味ではありません。どこで効かせているのか見える場所に置くという意味です。
ネガティブは強い薬みたいなもので、効くときは効きます。でも、どこにどれだけ入っているか分からない状態で積み重なると、調整がかなり難しくなります。
styles.csvは「セット」と「部品」を分ける
styles.csvやEasy Prompt Selectorも、同じ考え方で整理したほうが扱いやすくなります。
全部を巨大な万能セットにすると、選ぶだけで雰囲気は出ます。ただし、あとから一部だけ外したくなったときにつらいです。
逆に、全部を細かい部品にしすぎると、毎回組むのが面倒になります。
なので、私は次のように分けるのが良いと感じました。
- 基礎品質: セットでよい
- おまかせ系: セットでよい
- シーン系: セットでよい
- 体型、雰囲気、メイク、色味などの調整要素: できるだけ分割
- 実験用メモ: 既存用途があるなら無理に消さない
たとえば「品質SFW」「品質NSFW」「おまかせSFW」「おまかせNSFW」のような土台は、セットのほうが選びやすいです。
一方で、「少しリアル寄せ」「色味を暖かく」「メイク濃いめ」「肉感を足す」みたいな調整要素は、あとから足し引きできるほうが安全です。
Stable Diffusionのプロンプトは、単語の足し算に見えて、実際にはかなり構造的です。セットにするものと部品にするものを分けるだけで、調整の見通しがかなり良くなります。
BREAKやカンマの扱いは、断言よりA/Bテスト
プロンプトを組んでいると、カンマ、エスケープ、BREAK、強調構文などの細かい書き方でも結果が変わるように見えることがあります。
ここは注意が必要です。
WebUIのパーサで同じ扱いに見えても、その先のtokenizerやtext encoder、モデル内部の注意の向きで、画像に差が出る可能性はあります。
ただし、体感だけで断言すると危ないです。
同じseed、同じ設定、同じモデル、同じLoRAで、普通のカンマ版とエスケープ版を並べて出す。こういう小さいA/Bテストをしてから判断したほうが安全です。
私の感覚としては、プロンプトを役割ごとにブロック化するのは管理上かなり有効です。
品質
BREAK
シーン
BREAK
雰囲気
BREAK
キャラクター
BREAK
LoRA
ただし、これは「必ず画質が上がる魔法」ではありません。
少なくとも、長いプロンプトを見失わないための整理方法としては役に立ちます。効果の有無は、環境ごとに検証したほうがいいです。
バックアップと検証ログは地味に効く
プロンプトやLoRAメタデータの調整は、かなり戻りたくなる作業です。
少し良くなったと思って進めたら、別キャラでは悪化する。あるキャラでは顔が整ったのに、別キャラでは絵柄が変わりすぎる。そういうことが普通に起きます。
なので、変更前のJSONをzipで残す、作業ログに何をしたか書く、変更後にJSON parseや件数チェックをする。このあたりは地味ですが効きます。
特にキャラクターが多い場合、目視だけでは漏れます。
たとえば「全キャラクターに同じ語を入れたつもり」でも、1件だけ漏れることがあります。こういうミスは、スクリプトで数えるとすぐ見つかります。
生成AIの調整というと、どうしても感覚勝負に見えます。でも、ファイル管理や検証は普通の開発作業と同じです。
うまくいった方針まとめ
今回の整理で、特に効いたと感じた方針は次の通りです。
- キャラクターLoRAは本人識別の外見要素に絞る
- 画風、体型、雰囲気、シーンはstyle側へ逃がす
- hidden negativeはできるだけ空にして、効いている場所を見える化する
- styleは「基礎セット」と「調整部品」を分ける
- BREAKなどの構造化は、管理方法として使う
- 効果の断言は、小さなA/Bテストをしてからにする
- 変更前バックアップと作業ログを残す
これは、画質を一発で上げる魔法の呪文ではありません。
むしろ逆で、プロンプト調整を壊れにくくするための整理術です。
まとめ
Stable Diffusionのプロンプト沼でいちばん怖いのは、単語が足りないことではなく、何が効いているか分からなくなることだと思います。
キャラクターLoRAに本人識別を任せる。styles.csvやEasy Prompt Selectorに画風やシーンを任せる。ネガティブは見える場所に置く。変更はバックアップして、あとから戻せるようにする。
こういう地味な整理をしておくと、試行錯誤がかなり楽になります。
生成AIは感覚で触る部分も多いですが、運用は構造化できます。
そして、構造化できる部分を整えるほど、感覚で見るべき部分に集中しやすくなります。