「Latent Couple」の使い方をわかりやすく解説ー複数の人物を描き分ける【Stable Diffusion】

Stable diffusionAI, ControlNet

title

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」の設定

latent couple-min

「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人の人物(+背景)を配置する設定なのニャ。

そういうことですね。とりあえず2人からはじめてみましょう。

Weights」は配置の重みですね。3種類の配置に対して初期値では「0.2,0.8,0.8」と、背景の重みが「0.2」と低くなっています。

初期値のままでもかまいませんが、すべて「1」にして、重みを同じにしてもよいでしょう。

gabi

ただ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」はすべて共通です。

title

結果がこのタイトル画像ですね。

ちゃんと描き分けたニャ。でもクラスルームじゃないのニャ。

背景の重みが0.2ですしね。

一発でうまく出ないことも多いので、何度かガチャをまわしてください。もしくはさきほどの「Weights」を「1,1,1」にすると出やすくなるとは思います。

couple2

シードを固定し、服装を運動着に変えてみました。

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

maid

結果がこちら。

左のスクール水着がメイド服と制服に引っ張られて変な感じになってるけど、配置はうまくいってるのニャ。

人数が増えていくとガチャをまわす回数も増えるので、根気強く頑張ってみてください。「Weights」を調整してみるのもいいでしょう。

ちなみに10枚作成して3人が出てきたのは4枚だけでした。

成功率40%ニャ。

 

まとめ

そんなわけで複数のキャラクターを表示できる拡張機能「Latent Couple」でした。

デフォルトで複数のキャラクターを表示するとみんな同じ服装になったりするので、描き分けたいときにこの機能は便利ですね。

前述したように「Openpose」と組み合わせるのもよいでしょう。

またキャラクターが一人の場合でも、その位置を決めることができます。

偶然性を排除して、つくりたいイラストをつくれるようになるのニャ。

それではまた次回の講座でお会いしましょう。【追記】次回「「CloneCleaner」の使い方をわかりやすく解説ーランダムで異なる人物を生成」出来ました。以下のリンクから。