Latent Couple(TwoShot)をwebuiに導入し、プロンプト適用領域を部分指定→複数キャラ混ぜずに描写する方法

Latent Couple(TwoShot)をwebuiに導入し、プロンプト適用領域を部分指定→複数キャラ混ぜずに描写する方法 ソフトウェア

よく分かる!Latent Coupleの使い方。WebUI(1111)の拡張機能「stable-diffusion-webui-two-shot」(Latent Couple extension)をインストールし、全く異なる複数キャラを混ざることなく描写する方法を、画像付きで丁寧に解説します。

この拡張機能で何ができるの?

  • サブプロンプトに反映される潜在空間の領域を決める
  • つまり、プロンプトの反映領域を決められる
  • キャラが混ざる問題が解決!!

この拡張機能を使ってできた画像↓

縦に3分割して各キャラを描写。

縦3分割

左上に月、右下に地球、真ん中に初音ミク、全体は宇宙と領域ごとにプロンプト適用。

4つ領域指定。

チェック!!
さくいん! 本サイトのAI関連記事まとめ どれから見れば良いのか?!


数十記事ある本サイトのAI関連記事を体系的にまとめました。

目的別にどれから見れば良いのかわかります!!

AI記事索引ページはコチラ

1, 「Two-Shot」の導入方法

この拡張機能はURLを使用してインストールできます。

以下のURLをコピペしてください。

https://github.com/opparco/stable-diffusion-webui-two-shot

なお、URLを使用した拡張機能のインストール方法はこちらを参照してください。

インストールし終えたら、念のためWebUI(1111)自体を再起動します。

拡張機能」タブのインストール済みにこのような表示があればインストール成功です。

2, 「Two-Shot(Latent Couple extension)」の使い方

まず、この拡張機能の概念を把握しよう

two-shot拡張機能は、使いこなすと描写の幅が広がる有用な拡張機能ですが、ユーザーフレンドリーさが微塵もないため、この拡張機能を直感だけで使おうとすると上手くいきません(1敗)

ざっくりとした動作原理を抑えておきましょう。

この拡張機能は、規定サイズの画面を上下に任意の数分割し、それぞれに異なるプロンプトを適用することで、混ざらない複数キャラ描写を実現しています。

イメージとしては、例えば縦に1分割だけした場合、画像のように左右に分けられます
そして左側の領域Aのみ右側の領域Bのみそれぞれ指定したプロンプトを適用するということです。

two-shotの領域分割イメージ

「two-shot(Latent Couple)」の各種設定を行う

前提 有効化など

  1. text2imageの下の方にある「Latent Couple」を開く
  2. Enabledにチェックを入れる

プロンプトの書き方

3girls,  hatsune miku, sitting, twintails,
AND 3girls,  hakurei reimu, standing, 
AND 3girls,  ayanami rei, sitting, 

このように、分割して描写したい数だけプロンプトをANDでつなげます

上記では3分割時用ですね。

この場合、
「3girls, hatsune miku, sitting, twintails,」は最初の分割領域、
「3girls, hakurei reimu, standing,」は2つ目の領域、
「3girls, ayanami rei, sitting,」は3つ目に適用されます。

なお各領域ごとのプロンプトには、画像全体の人数を書いた方が安定して生成されます。
分割した領域にはキャラ1人しか描写しないのに「3girls」とあるのは、この方が何故か高品質になるためです。

主な設定項目

Latent Coupleには4つの設定箇所があります。

特に大事なのが1つ目と2つ目です。

  1. Divisions
  2. Positions
  3. Weights
  4. end at this step

Extra generation paramsはPNG Infoから画像情報を入力した場合に、その画像のLatent Couple設定値が入力される場所のためとりあえずノータッチ。

Latent Couple使用時は、どこに何を描写したいか、予めイメージを明確にしてください。
ぼんやりした感覚だけではどのように設定すべきか自分でもわからなくなります。

1,Divisions:領域の分割数を決める

Divisionsを「横分割数:縦分割数」で指定します。「1:3,1:1」など。

言葉で言っても上手く説明できないので、よく使う分割設定置いておきます。

  • 1:1→分割しない。
  • 1:2→縦に2分割。右左。(まさにTwo Shot)
  • 1:3→縦3分割。右左真ん中。
  • 2:1→横2分割。上下
  • 3:2→横3分割、縦2分割。シックスパック。

コロン「:」がうっかり日本語入力での全角↓だとエラーが出るのでお気をつけください。

NG例 最初の「:」だけ全角になっている

Divisionsは異なる分割を複数並べてもOKです。

例えば、左右分割、上下3分割を並べて書いてもOK.

2,Positions:分割したどこにプロンプト適用するか指定する

先程Divisionsで分割した領域のどこにプロンプトを適用するか指定します。

Positionsは、左上を「0:0」とした座標で表します。小数を使うと分割領域の間も指定できます。
縦横2分割して、Positionsを0.5:0.5にしたら中央ってな具合です。

前述のDivisionsの指定個数と一致させてください。

Visualize」ボタンを押して白色になった部分が、指定された領域です。

たとえば縦3分割だと、
左から0番目の領域は「0:0」
左から1番目は「0:1」
左から2番目は「0:2」となります。

なお、Visualizeでは正方形ですが、画像全体が長方形なら辺の長さに従って等分されます。

シックスパックの例だと以下の通りに。

Positionsの順番どおりにANDまでで分割されたプロンプトが適用されます。

3と4,Weightsとend at this stepは適当に

Weights」は、領域ごとの強度のため、通常は等倍「1」で固定しておけば良いです。
弱める際は0.7とかにします。

DivisionsPositions同じ個数指定するようにします。

end at this step」はLatent Couple(two-shot)が適用されるステップ上限です。

基本的に画像全体のステップ以上にしておけば問題ありませんが、分割領域の境目がはっきりしてしまう場合には、画像全体のステップより2,3ステップだけ小さくして馴染ませるというのもアリですね。

境界線がはっきりしてしまう例

実例で理解するLatent Couple(two-shot)

縦に3分割してキャラを並べる

Positionsの順番どおりにANDまでで分割されたプロンプトが適用されま

縦3分割で、各領域にキャラ1人配置しました。

3girls,  hatsune miku, sitting, twintails,
AND 3girls,  hakurei reimu, standing, 
AND 3girls,  ayanami rei, sitting, 

Negative prompt: bad quality, low quality,

Steps: 27, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 2805772193, Size: 768x768, Model hash: b000309cca, Model: 7th_anime_v3_B, Clip skip: 2, ENSD: 31337, Latent Couple: "divisions=1:3,1:3,1:3 positions=0:0,0:1,0:2 weights=1,1,1 end at step=40"

Positionsの順番どおりにANDまでで分割されたプロンプトが適用さているのがわかりますね!!

いろんな大きさに分割してみる

下のように領域指定を4個してみました。

space, earth \(planet\),
AND moon, space,
AND chibi, hatsune miku, space,
AND space, shooting star,

Negative prompt: bad quality, low quality,
Steps: 43, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 2805772193, Size: 768x768, Model hash: b000309cca, Model: 7th_anime_v3_B, Clip skip: 2, ENSD: 31337, 

ちゃんと右下に地球、左上に月、真ん中にミクさん、全体が宇宙となりました。

ちなみに最後のWeights:0.7の画面全体への「AND space, shooting star,」ですが、これが無いと画像の一部にプロンプトが指定されていない状態のまま画像生成が終わってしまい、奇妙なことになります

上のプロンプトから「AND space, shooting star,」を消して、領域3つだけ指定に変更した場合です。

特に右上などのプロンプト未適用部分が低品質になっていますね。

3, まとめ プロンプト反映領域を限定しキャラ描き分けする「Two-Shot」をWebUIで使う方法と活用例

  1. Latent Couple(two-shot)をインストール
  2. 描写したい領域を決める
    • Divisions領域を分割
    • Positions:分割した領域のどこにプロンプト適用するか指定
    • Weights:指定領域ごとのプロンプトの強度指定
    • end at this stepLatent Couple(two-shot)適用steps数指定
  3. 描写領域順にプロンプトを書き、ANDで区切る
  4. いざ生成!!

この拡張機能のお陰でキャラが混ざる問題が概ね解消されました。
ありがたい!!

他の有用な拡張機能も紹介しているのでご覧ください

タイトルとURLをコピーしました