「Latent Couple」の使い方をわかりやすく解説ー複数の人物を描き分ける【Stable Diffusion】
Stable diffusionの「ControlNET&拡張機能講座」第19回目。今回は、ランダム性の強いStable diffusionで、意図的に複数の人物を描き分ける拡張機能「Latent Couple」の導入と使い方についてさくっとわかりやすく解説していきます。
ただプロンプトの書き方がちょっと特殊なので、慣れないうちはうまく出力できないばあいもあります。そのあたりについても解説していきます。
前回の「「Stable diffusion」と「EBsynth」で動画を作る方法をわかりやすく解説ー背景変更についても」は以下のリンクから。
「Latent Couple」の導入
「Stable diffusion」を起動し、「Extensions」タブ→「Install from URL」タブに移動し、「URL for extension’s git repository」に、
https://github.com/opparco/stable-diffusion-webui-two-shot
を貼り付けて、「Install」ボタンをクリックします。しばらく待つと「Install」ボタンの下の方にいろいろ文字が出てきてインストール終了。
つぎに「Extensions」タブ→「Installed」タブで「Apply and restart UI」 ボタンをクリックして再起動します。これでインストール完了です。
「Latent Couple」の使い方
「Latent Couple」の設定
「Txt2img」の下の方に「Latent Couple」が追加されているので、それを開くと上のよ鵜なのが出てきます。
とりあえず「Enable」にチェックを入れて使えるようにしておきましょう。
「Division」のところに「1:1,1:2,1:2」と書いています。
筆者も最初意味がわからなかったのですが、これは画面の分け方です。
「1:1」(縦1×横1。要するに全画面。背景に割り当てる)
「1:2」(縦1×横2。画面を左右に分割。人物Aに割り当てる)
「1:2」(縦1×横2。同じく画面を左右に分割。人物Bに割り当てる)
の3種類を用意しろという意味ですね。
この3種類の画面に、背景や人物を配置していきます。
配置位置は「Positions」で決めます。「0:0,0:0,0:1」となっていますが、これは先ほど設定した3つに対して、
「0:0」(1×1に対する配置。縦0,横0の位置(座標は1ではなく0から始まる)。要するに全画面)
「0:0」(1×2に対する配置。縦0,横0の位置。要するに2分割した画面の左側)
「0:1」(1×2に対する配置。縦0,横1の位置。要するに2分割した画面の右側)
となります。「Visualize」を押せば、どう配置されているかが視覚化されます。
そういうことですね。とりあえず2人からはじめてみましょう。
「Weights」は配置の重みですね。3種類の配置に対して初期値では「0.2,0.8,0.8」と、背景の重みが「0.2」と低くなっています。
初期値のままでもかまいませんが、すべて「1」にして、重みを同じにしてもよいでしょう。
ただ1に近づくとモデルによっては画像が荒くなります。多くのブログが「全部1でいい」と言っていますが、筆者の環境だと、解像度512前後でつくったばあい(768×512など)、1は上の画像のようにガビガビになります。LoRAのウェイトを1にした時のような感じですね。
全部1にする場合は、解像度を上げるか「Hires. fix」などで高解像度化しないと画質が悪くなります。
オール1は高解像度前提の設定(1536×1024など)で、「768×512」ぐらいの解像度の人は初期値のままのほうがいいでしょう(だから「0.2,0.8,0.8」なんだと思います)。
もしくはガビガビで出力した後によさそうだったらシード値を固定して、「Hires. fix」で再出力するのがよいですね。
今回は初期値のままでいきます。
「end at this step」はいじらなくてOKです。
プロンプトの記述
プロンプトの記述を行います。ここがちょっと面倒です。
さきほどは「背景」「人物A(左)」「人物B(右)」を設定しましたが、これをそれぞれ単独のものとしてプロンプトを書いていきます。
「masterpiece,high quality」など品質設定もそれぞれ書くのですね。
ただし画面全体で考えるので、どのプロンプトにも「2 girls」を入れます。
そしてそれらを「AND」でつなぎます。ネガティブプロンプトは普通に書いてOK。
(具体例)
masterpiece, best quality, highres, 4K,2girls,classroom
AND
masterpiece, best quality, highres, 4K, 2girls,one-piece swimsuit, short hair
AND
masterpiece, best quality, highres, 4K, 2girls,school uniform,ponytail,blonde hair
1行目は背景(クラスルーム)、次が左側の少女(スクール水着、ショートヘア)、最後が右側の少女(制服、ポニーテール、金髪)になります。
品質と少女の人数「masterpiece, best quality, highres, 4K,2girls」はすべて共通です。
結果がこのタイトル画像ですね。
背景の重みが0.2ですしね。
一発でうまく出ないことも多いので、何度かガチャをまわしてください。もしくはさきほどの「Weights」を「1,1,1」にすると出やすくなるとは思います。
シードを固定し、服装を運動着に変えてみました。
ControlNETの「Openpose」を利用してポーズを固定することもできます。複数の人が映っている写真を「OpenPose Editor」で取り込んで、それを利用するというのもいいですね。使い方は以下のリンクから、
人数を増やす
今度は3人に増やします。
背景1枚に3分割画面3枚いるので、
「Division」は「1:1,1:3,1:3,1:3」(1:3を3つ)
「Positions」は「0:0,0:0,0:1,0:2」(0.2を追加)
「Weights」は「0.2,0.8,0.8,0.8」(0.8を1つ追加)
となります。
スクリプトはさきほどのにちょっと書き足しましょう。3人目に長髪のメイド少女を加えます。「3girls」に変更するのを忘れずに。
(具体例)
masterpiece, best quality, highres, 4K,3girls,classroom
AND
masterpiece, best quality, highres, 4K, 3girls,one-piece swimsuit, short hair
AND
masterpiece, best quality, highres, 4K, 3girls,school uniform,ponytail,blonde hair
AND
masterpiece, best quality, highres, 4K, 3girls,maid,long hair
結果がこちら。
人数が増えていくとガチャをまわす回数も増えるので、根気強く頑張ってみてください。「Weights」を調整してみるのもいいでしょう。
ちなみに10枚作成して3人が出てきたのは4枚だけでした。
まとめ
そんなわけで複数のキャラクターを表示できる拡張機能「Latent Couple」でした。
デフォルトで複数のキャラクターを表示するとみんな同じ服装になったりするので、描き分けたいときにこの機能は便利ですね。
前述したように「Openpose」と組み合わせるのもよいでしょう。
またキャラクターが一人の場合でも、その位置を決めることができます。
それではまた次回の講座でお会いしましょう。【追記】次回「「CloneCleaner」の使い方をわかりやすく解説ーランダムで異なる人物を生成」出来ました。以下のリンクから。