はじめに
Stable Diffusionで複数のキャラLoRAをミックスしてオリジナルキャラクターを作る手法は、独自性のあるキャラデザインを模索するうえでとても有効です。
ただし、この手法には厄介な副作用が2種類あります。
- 亡霊問題:参照元キャラクターが薄く重なるように複数人生成されてしまう
- 元キャラ寄り問題:ミックスしたはずが特定のLoRAの元キャラそのままになってしまう
本記事では、自作の3つのキャラLoRAをミックスしてオリジナルキャラを生成する実例をもとに、亡霊の発生率を大幅に抑制できた設定を共有します。
検証環境
| 項目 | 内容 |
|---|---|
| モデル | Pony系モデル(SDXL派生) |
| WebUI | AUTOMATIC1111 / Forge |
| LoRA数 | 3つ(いずれも自作で学習させたもの) |
なぜ亡霊が発生するのか
マルチLoRAミックスで複数人が描かれてしまう主な原因は、大きく2つ考えられます。
① LoRAの重み合計が高すぎる
各LoRAが自分の学習元キャラを描こうとして競合します。特に自作LoRAは学習データとの結びつきが強いため、重みを上げすぎると元キャラの再現力が強く発揮されてしまい、亡霊の原因になりやすい傾向があります。
② プロンプト内でキャラ名が並列している
テキストエンコーダが「複数のキャラ名=複数人の画像」と解釈します。特に、構図が決定される生成初期ステップ(全体の約30〜50%)で複数キャラの情報が同時に流れ込むと、モデルは「複数人を描くべき」と判断しやすくなります。
効果のあった設定
▼ ポジティブプロンプト
1girl, solo,
mixture of [girl:Character_A:0.5], [girl:Character_B:0.5], and [girl:Character_C:0.5],
(platinum blonde:1.3), (bare head:1.3), natural hair, (long hair:1.2), (shoulder blade length hair:1.3), (straight hair:1.3), flowing hair, smooth hair, silky hair,
(indigo eyes:1.3), (blue violet eyes:1.2), (deep purple eyes:1.3), shiny eyes, detailed iris, eye shine,
large breasts, pale skin, voluptuous body, wide hips, thick thighs, narrow waist,
<lora:lora_character_A:0.25>, <lora:lora_character_B:0.2>, <lora:lora_character_C:0.2>,
▼ ネガティブプロンプト
multiple people,
2girls, multiple girls,
clone, duplicate, ghost, transparent,
multiple views, character sheet,
2boys, couple,
(boy:1.5), (man:1.5), male,
各設定のポイント解説
ポイント1:プロンプト編集構文 [from:to:step] の方向
ここが最も重要です。
[girl:Character_A:0.5]
この構文は「ステップ0〜50%まで girl として処理し、50%以降にキャラ名を適用する」という意味です。
構図が決定される生成初期フェーズではすべてが単なる girl として処理されるため、モデルは「描くのは1人だけ」と認識します。後半のステップでキャラ名が効き始め、LoRAと連携してキャラの特徴だけが乗ってきます。
逆方向は悪化します。
[Character_A:girl:0.5] ← 逆方向(これはNG)
こちらは初期ステップで3人分のキャラ名が同時に存在するため、亡霊の発生率がむしろ上がります。筆者の環境ではバッチ4枚中3枚で亡霊が発生しました。方向を間違えないよう注意してください。
ポイント2:LoRA重みの合計値を抑える
<lora:lora_character_A:0.25>
<lora:lora_character_B:0.2>
<lora:lora_character_C:0.2>
3つの合計は 0.65 です。
マルチLoRAの場合、合計値は 0.6〜0.8程度 に抑えるのが安定ラインです。各LoRAを0.4以上にすると合計が1.0を超え、亡霊や元キャラへの寄りが顕著になります。
特徴を最も強く出したいLoRAの重みを少し高くして、他を控えめにするのも有効です。均等にする必要はありません。
ポイント3:外見特徴をプロンプトで詳細に指定する
(platinum blonde:1.3), (bare head:1.3), natural hair,
(long hair:1.2), (shoulder blade length hair:1.3), (straight hair:1.3),
flowing hair, smooth hair, silky hair,
キャラ名とLoRAだけに頼ると、モデルは「元キャラの全体像」を再現しようとします。髪型・髪色・目の色・体型などを個別にタグで明示することで、モデルの出力先を具体的な特徴に絞り込めます。
強調値(1.2〜1.3)の活用も重要です。LoRAの元キャラ特徴に引っ張られやすい髪色や瞳色は、やや強めに指定することで「こちらが正解」とモデルに伝えます。ただし 1.5以上にすると破綻しやすい ため、1.2〜1.3の範囲に留めることをおすすめします。
ポイント4:1girl, solo の明示
1girl, solo,
シンプルですが必須です。プロンプトの先頭に置くことで、トークンの優先度が最も高くなり、「人物は1人だけ」という制約がモデル全体に浸透します。
ポイント5:ネガティブプロンプトで複数人を徹底排除
multiple people,
2girls, multiple girls,
clone, duplicate, ghost, transparent,
multiple views, character sheet,
キャラ名をネガティブに入れるのはNGです。 キャラの特徴ごと否定されてしまい、ミックス結果が崩壊します。代わりに「複数人であること」を示すタグを網羅的に入れます。
ghost, transparent は亡霊的な半透明描画を直接抑制するのに効果的です。multiple views, character sheet は複数アングル表示(意図せず複数人に見える構図)を防ぎます。
試して効果がなかった・悪化した設定
本記事の設定に至るまでに試した失敗例も共有します。同じ手順を踏む前に確認してください。
❌ mixture of を外してLoRAだけにする
キャラの特徴が混ざらず、いずれかのLoRAに完全に寄るか、どのキャラでもない特徴のない顔になります。
❌ キャラ名をネガティブプロンプトに入れる
キャラの特徴自体が否定されるため、LoRAミックスの意味がなくなります。
❌ プロンプト編集構文の方向を逆にする
[Character_A:girl:0.5] の形にすると、前述の通り亡霊の発生率が大幅に悪化します。
❌ LoRAのステップ範囲指定
<lora:lora_character_A:0.25:0:0.6>
WebUIのバージョンや拡張によって構文が異なり、正しく動作しない場合があります。動作していない場合は予測不能な出力になるため、まずはシンプルな重み指定のみで運用することをおすすめします。
さらに安定させるための追加Tips
サンプラーの選定
サンプラー名に「a」や「SDE」がつくもの(Euler a、DPM++ 2M SDE 等)は各ステップにランダム性が入るため、seed固定でも出力が揺れやすくなります。マルチLoRA環境では Euler(aなし) や DPM++ 2M Karras のような確定的サンプラーの方が安定します。
CFGスケール
Pony系モデルでは CFG 5〜6 が安定域です。7以上にするとLoRAの影響が増幅され、亡霊や元キャラ寄りが起きやすくなります。
XYZ Plotでの最適値探索
WebUIのXYZ Plot機能を使い、各LoRAの重みとCFG値を系統的にテストすることで、自分の環境で最も安定する組み合わせを効率的に特定できます。
まとめ
マルチLoRAミックスにおける亡霊問題を抑制するためのポイントをまとめます。
| 設定 | 内容 |
|---|---|
| プロンプト編集構文の方向 | [girl:キャラ名:0.5] の形にする(初期ステップでキャラ名を効かせない) |
| LoRA重みの合計 | 0.6〜0.8に抑える |
| 外見特徴の指定 | 髪型・髪色・瞳色等を詳細に、強調値(1.2〜1.3)つきで記述 |
| 先頭プロンプト | 1girl, solo を必ず置く |
| ネガティブプロンプト | 「複数人」関連タグを入れ、キャラ名は入れない |
今回の設定がすべての環境で同様に機能するとは限りませんが、同じ問題で悩んでいる方の出発点になれば幸いです。