領域を指定してプロンプトを効かすLatent Couple extensionの機能を検証します。Latent Couple extension拡張機能は、例えば、二人の人物を生成したいときに、それぞれの服装や髪型などを指定したいときに効果を発揮する強力なツールです。
Latent Coupleの機能
Latent Coupleは、生成される画像を領域に区切ってそれぞれの領域周辺を狙ってプロンプトを効かすことができるStable Diffusionの拡張機能です。それにより、構図が指定された画像に対して、それぞれの区間に含まれる人物などを、ピンポイントでプロンプトで制御できます。今回、Latent Coupleの機能と効果を検証したいと思います。
Latent Coupleのインストール
Latent CoupleのインストールはWebUIから行います。「Extensions」のタブの、「Install from URL」から「URL for extension’s git repository」に「https://github.com/opparco/stable-diffusion-webui-two-shot」を指定して、「Install」を押すことでインストールされます。インストール後、UIをリロードすると、txt2imgとimg2imgにLatent Coupleが追加されます。
Latent Coupleの使い方
Latent Coupleを使うには、使いたい領域をしていしてから、プロンプトで各領域のプロンプトを記述します。以下に設定方法を示します。
パラメーターの指定方法
DivisionsとPositionsでプロンプトを効かす範囲をしています。
Divisionsは「行の数:列の数」で指定します。行や列の数の逆数が指定する領域の広さになります。例えば、「4:3」で指定した場合は、全体を4行3列で区切り、Divisionは生成する画像サイズの縦1/4、横1/3の大きさで領域にプロンプトの効果を及ぼすことができます。
Positionsは「縦位置:横位置」で指定します。例えば、一番左上からDivisionを指定したい場合は、「0:0」を指定します。例えば、Divisionを「1:2」に1行2列で分割した場合、「0:0」で左半分、「0:1」で右半分の領域へプロンプトが有効になります。また、Positionは少数でも指定出来て、「0:0.5」で中間の領域を指定できます。
DivisionsとPositionsは各DivisionとPositionをコンマ区切りで複数記載することで、複数の異なる部分に対して、領域を指定してプロンプトを効かすことができます。
Latent CoupleのDivisionsとPositionsで指定される領域は「Visualize」ボタンで確認できます。ボタンを押したときに白くなっている部分がプロンプトが有効になる領域です。
領域は通常、全体に関係するプロンプトをDivisionを「1:1」、Positionを「0:0」にして全体への指定を行い、続けて、制御したい部分を指定して、プロンプトを効かします。プロンプトの強度についてはWeightsで記載します。
Divisions、Positions、Weightsの数は同じでないといけません。
「end at this step」はLatent coupleが有効なステップ数を示します。画像生成のステップ数と同じにしておくと、最初から最後までLatent coupleが有効になります。
下に設定例を示す。ここでは、領域を、「全体」、「左半分」、「右半分」の順番で指定しています。
プロンプトの指定方法
各領域ごとのプロンプトはANDでつなげて、順番に指定します。例えば、上記の3区間の場合、下のようにプロンプトをつなげて指定します。
全体に影響させたいプロンプト AND 左半分に影響させたいプロンプト AND 右半分に影響させたいプロンプト
Latent coupleの例
以下に例をしまします。
Latent coupleでの複数人の指定
ここでは二人の女の子の画像を生成します。
最初のdivisionで全体のレイアウトと背景
ANDでつなげて、2番目のDivisionで左側に口を閉じた赤いショートヘアの制服を着た女の子
さらに、ANDでつなげて、右側に口をあけたブロンドのロングヘアのセーターとジーンズを着た女の子
2girls, cloudy sky, scenery, city, cityscape, building AND 2girls, school uniform, (red short hair:1.4), skirt, closed mouth AND 2girls, cute face, white sweater, jeans, (long blonde hair:1.4), open mouth Negative prompt: EasyNegative, badhandv4 Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 1866305125, Size: 800x640 Latent Couple: "divisions=1:1,1:2,1:2 positions=0:0,0:0,0:1 weights=1,1,1 end at step=20"
Latent couple + ControlNet
Latent coupleはControlNetと一緒に使うのもおすすめです。ControlNetでレイアウトをある程度固定することで、Latent coupleでのプロンプトの指定を確実にできます。ここではControlNetのOpenposeでポーズを指定した上で、三人の女の子の髪型や服装をそれぞれ別に指定しました
①赤色ショートヘア、制服
②金髪ロング、セーターとジーンズ
③ポニーテール、着物
3girls, cloudy sky, scenery, city, cityscape, building, looking at viewer AND 3girls, school uniform, (red short hair:1.4), skirt, closed mouth AND 3girls, cute face, white sweater, jeans, (long blonde hair:1.4), open mouth AND 3girls, Japanese kimono, (ponytail black hair:1.4) Negative prompt: EasyNegative, badhandv4 Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 2905676477, Size: 1200x960 ControlNet 0 Enabled: True, ControlNet 0 Preprocessor: none, ControlNet 0 Model: control_v11p_sd15_openpose [cab727d4], ControlNet 0 Weight: 1, ControlNet 0 Starting Step: 0, ControlNet 0 Ending Step: 1, ControlNet 0 Resize Mode: Crop and Resize, ControlNet 0 Pixel Perfect: False, ControlNet 0 Control Mode: Balanced, ControlNet 0 Preprocessor Parameters: "(512, 64, 64)", Latent Couple: "divisions=1:1,1:3,1:3,1:3 positions=0:0,0:0,0:1,0:2 weights=1,1,1,1 end at step=20"
最後に
今回はLatent coupleを使ってみました。複数キャラクターの詳細な指定が可能で非常に強力なツールです。
コメント