Home Artists Posts Import Register

Content

こんばんは、スタジオ真榊です。今回はStableDiffusionWebUIの拡張機能「Latent Couple」の解説記事第1回ということで、誰でも自由にキャンバスの分割ができるようになる「基礎マスター編」をお届けします。


画像生成AIが特に苦手なのが、要素の異なるキャラクターの「2ショット」ですよね。例えばピンクのショートヘアと緑のツインテールの女の子を生成しようとすると、どんなにプロンプトを工夫しても「緑のツインテール2人」が出たり、「両方ショートヘア」になってしまったり。こうした複数キャラのプロンプトの混線については、拡張機能「Cutoff」の解説記事でも扱ったばかりですが、Latent Coupleをうまく使いこなすと、混線を防ぐだけでなくキャンバス上のどこに何を描くかまでコントロールすることができるんです!


さらに、指定領域ごとに複数のLoRAを適用して別々のキャラクターを1枚のイラスト上に呼び出したり、Controlnetと組み合わせてポーズをつけたりといったことも可能になります。「Latent couple」+「Composable LoRA」+「Multi controlnet」でどんなことができるのか?…は次回の「応用編」に譲るとして、今回はまず基本的な使い方をマスターしましょう。




「LatentCouple」導入方法

通常の拡張機能のインストール方法でOKです。WebUIの「拡張機能」タブから拡張機能リストにアクセス。「読み込み」ボタンを押して、一覧の中から「Latent Couple」を探し、「Install」ボタンをクリックします。

あとは「インストール済」タブから「適用してUIを再起動」。text2imageの下部にこちら(▼)の「Latent couple」のメニューが表示されていたら、無事導入完了です。


※1 最新環境でインストールすると、Opparco氏が配布されたLatent Coupleからフォーク(分岐)したashen-sensored版LatentCoupleが導入されます。「Mask」「Rectangular」というタブが表示されていた場合、ashen-sensored版です。今回の記事は、このうち「Rectangular(長方形)」タブの使い方について解説しています。


※2 ashen-sensored版では長方形での領域指定に加え、マスク機能を使った領域指定が追加されています。Opparco版を既にインストールしている場合、アップデートしても自動でashen-sensored版にはならないため、「Extention」フォルダ内にある「stable-diffusion-webui-two-shot」のフォルダを削除(アンインストール)し、改めて上記手順で「LatentCouple」をインストールする必要があります。


▽Opparco氏版


▽ashen-sensored氏版


メニューの見方

Opparco版LatentCouple、またはashen-sensored氏版における「Rectangular」タブの使い方について解説していきます。(※日本語化のver.によって表記が違うことがあります)


Enabled(有効)…チェックするとLatent Couple機能がオンになります。

・Divisions(分割)…キャンバスの「横✕縦」を何対何に分割するか。2:3なら、横2分割✕縦3分割になる。小数点以下で刻むのもOK。

・Positions(位置)…分割したうちのどれをプロンプト操作する指定領域とするか。難しいので後述します。

・Weights(重み=影響度)…指定領域ごとにプロンプトの影響度の強さを決められる。

・end at this step…Latent couple機能が影響するステップを指定できる。LatentCoupleは全体の構図を特定するために機能なので、ステップの冒頭~中盤まで影響すれば実は十分。詳細を描く後半~最終ステップまで影響させない方がイラストの品質向上につながることがある。

Regions…「Divisions」と「Positions」を設定してVisualiseボタンを押すと、ここにキャンバスの分割状態が表示される。


これらをまとめてざっくり言うと、


①「Divisions」でまずキャンバスを好きなサイズに分割します。

②「Positions」でそのうちどのピースを「指定領域」としてピックアップするかを選びます。

③特殊なプロンプト記法を使うことで、「全体としてはこんな被写体と背景、A領域にはこのキャラ、B領域にはこの物体…」とそれぞれ細かく指定できる!


…というのが、Latent coupleの機能なわけです。


DivisionsとPositionsの意味(読み飛ばし可)

さて、さきほどの一覧で完璧に理解できた方はどれくらいいたでしょうか?賢木は「数字でキャンバスを分割する」というLatent Coupleの基本がなかなか直感的に理解できず、だいぶ苦労しました。


先に書いてしまうと、実はこうした設定の意味を理解しなくても、Latent Coupleは十分使うことができます。あとで誰でも自由に領域指定できる方法を紹介しますので、現時点で「まずは1:1,1:2,1:2で縦に分割して…」といった理屈が理解できなくても全然大丈夫です。安心してどんどん読み進めてください。


とはいっても一応解説記事なので、下記に詳しい内容も掲載しますが、興味のない方は「難しいことは抜きにして生成してみよう」まで読み飛ばしてOKです!



では、さきほどの画像をもう一度見てみましょう。こちらの表記は、キャンバスを左右に50%ずつ分割し、「領域A:キャンバス全体」「領域B:キャンバスの左側50%」「領域C:キャンバスの右側50%」を指定した状態を示しています。「Regions」に表示された三つの四角形は領域ABCの選択位置を示しており、明るい灰色がpositionsで選択された部分で、黒が未選択の部分を意味しています。(ちなみに、灰色の濃淡は「weight」の重さによって変化します)


順番に解説します。


まず、Divisions(分割)の「1:1,1:2,1:2」は、画面を3つ(A・B・Cとします)の領域に分割するという意味です。最初の「1:1」は画面を縦1:横1に分割する…つまり分割しない(キャンバス全体を指定領域とする)ことを示しており、「1:2」は縦が1、横に2の比率で分割することを示しています。もしこれが「2:1」であれば、縦が2、横が1の比率になるので、キャンバスが縦に二分割されることになります。「1:1」のあとに「1:2」が2つ並んでいるので、正方形の横に縦に2分割した四角形×2が並んでいます。


さて、仮に「7:5」と指定した場合はどうなるでしょう?縦が7分割、横が5分割で、キャンバスが計35分割されるのですが、35種類もプロンプトを書くことはできませんよね。そこで、分割したコマの中からプロンプトを影響させたい「指定領域」をいくつか選ぶことになります。それが「Positions」の意味です。

7✕5分割のうち、左から2番目、上から4番めのコマを指定する場合は、「2:4」と入力・・・したいところですが、一番端は「0」と考えるルールなので、「1:3」と入れるのが正解です。


「Visualize(可視化)ボタン」を押すと、「Regions」欄にキャンバス分割の画像が表示されます(▲)。ちゃんと狙ったところが指定されていますね。キャンバス全体に「grass」、この小さな四角に「flower」をプロンプト指定すると、このようにおおむね狙った位置に花を咲かせることができます。



では、次は「どうやってプロンプトを入力したらいいか」について実践的な方法を見ていきましょう。


難しいことは抜きにして生成してみよう

しっかり読んでくださった方も読み飛ばした方も、ここからが本題です。

前回の記事にならって、屋外に並んだ「怒っている黒短髪オレンジ瞳 & 笑っている銀ポニテ青瞳」の2人の女の子を生成してみましょう。難しいDivisionsとPositionsのことは一旦忘れて、デフォルト画面の設定をそのまま使います。



問題なのがプロンプトです。さきほど「A領域」「B領域」「C領域」と書きましたが、それぞれの被写体についてANDで分割する形でプロンプトを書いていきます。この画面では「キャンバス全体」「キャンバス左」「キャンバス右」が指定されていますから、プロンプト欄は次のようになります。


(2girls:1.4),outdoor,masterpiece,high resolusion,illustration,ultra detailed 8k art

AND 2girls,angry,(black short hair,orange eyes:1.3),masterpiece,high resolusion,illustration,ultra detailed 8k art

AND 2girls,smile,(silver ponytail hair,blue eyes:1.3),masterpiece,high resolusion,illustration,ultra detailed 8k art


1行目でキャンバス全体に描くもの(屋外にいる2人の女の子)を指定。2行目で左側にいる黒髪短髪オレンジ目娘、3行目で右側にいる銀髪ポニーテール青目娘を指定しています。髪や目の色は混じりがちなので、できるだけ強調すると打率が上がります。「あれっ、ANDの次はなんで1girlじゃなくて2girlsなの?」と思った方は次に進んでください。


プロンプトのルール


経験則からお伝えできるルールは以下の通り。



①各指定領域には1人ずつ女の子が入るわけですから、普通に考えれば「1girl」を入れたくなるのですが、そうすると左右で目や髪の色が違う1人の女の子(失敗例▲)が描かれてしまいます。LatentCoupleは厳密にその領域にだけプロンプトを「注入」するものではなく、もっとずっとファジーな機能なので、プロンプトの一部に「1girl」があると全体に「1girl」の影響が出てしまいます。人数が増えた場合も同じなので、そういうものだと覚えておきましょう。


②クォリティータグはそれぞれの領域に入れて構いません。ただ、サブプロンプト(AND以降)がそれぞれ75トークンの壁を超えない範囲で入れましょう。


③デフォルトではWeightが「0.2,0.8,0.8」と、A領域(キャンバス全体)が「0.2」になっています。背景よりもメインの被写体を強調する狙いなのですが、Weightはすべて均等を意味する「1,1,1」でも問題ありません。ただ、例えば被写体の位置が思い通りにならず、別領域に漏れ出してしまう場合は、強弱をいじって調整することになります。



生成結果



そんなわけで、「屋外に立つ怒り顔の黒ボブカットオレンジ瞳 & 笑顔の銀ポニテ青瞳」ちゃんが無事生成できました。


【プロンプト再掲】

(2girls:1.4),outdoor,masterpiece,high resolusion,illustration,ultra detailed 8k art

AND 2girls,angry,(black short hair,orange eyes:1.3),masterpiece,high resolusion,illustration,ultra detailed 8k art

AND 2girls,smile,(silver ponytail hair,blue eyes:1.3),masterpiece,high resolusion,illustration,ultra detailed 8k art



複数生成の打率も上々ですね。でも、これだとわざわざLatent coupleを使わなくても「2girls A and B,A girl is...B girl is...」でできるんじゃ…という感じがしませんか?


そう、Latent coupleの真骨頂は単なる2ショットではなく、さきほど画面の一部に花を咲かせたように、縦横無尽な画面分割を使いこなせるところにあるのです。


「Latent Couple Region Mapper」を使おう


さきほど「画面分割については読み飛ばしてOK」と書いたのは、DivisionsとPositionsの数値を簡単に呼び出してくれる「Latent Couple Region Mapper」という神UIが登場したからです。リンク先を御覧ください。



こちらのUI、なんとキャンバス上をドラッグするだけでDivisionsとPositionsを自動表記してくれるという神機能です。使い方は簡単で、画面上の何もないところをクリックすると領域を増やすことができ、赤いトグルをドラッグして大きさを調整。不要な領域は右クリックで削除できます。「Grid Settings」で参考になるガイド線を引くことができ、「Snap region to grid(領域をガイド線にスナップ)」ボタンを押すと、それぞれの四角形を線にぴったり重ねることもできます。超簡単!


上のように適当な3つの領域を指定すると、



画面下部に自動でこのような表示が。それぞれをStableDiffusionWebUIの画面上にコピペすれば…


あっという間にさきほどドラッグしたとおりの領域指定をすることができました。


さらに、プロンプトも自動生成してくれます。「Global」に画面全体に関わる部分を記入し、1、2、3…と領域ごとの内容を指定してみましょう。今回は3つめの領域も指定したので、黒髪娘と銀髪娘の次に「美味しそうな料理」(delicious food)をここに表示することにします。



画面下部のデータをそれぞれWebUIにコピペして、生成してみると…



このように、キャラの位置と小物の位置を配置することができました。分かりやすく指定領域を重ねてみると下図のようになります。




Latent Coupleが素晴らしいのは、「領域指定が厳密すぎない」というところ。こちらの指定領域がもし厳密に適用されてしまったら、女の子の下半身が不自然に断ち切れてしまったり、2人が自然に寄り添った感じが表示されなくなってしまうわけで、そこを柔軟にとらえて絵作りを優先してくれるところがありがたいですね。


ただ、逆に言えば「領域指定を厳密に指定はできない」ということでもあります。さきほどの草と花の画像のように「おおむね」になってしまう点は留意しておきたいポイントですね。


領域が重なるとどうなる?


さきほどのイラストはそれぞれの指定領域が重ならない形で指定しましたが、四角同士が重なるとどうなるでしょうか。



2つの領域をこのように重ねまして、領域1に座っている女の子、領域2に寝ている男の子を描いてみましょう。空いた部分は領域3と指定して、リビングルームを描いてもらうことにします。数値をコピペすると下図のようになります。



(※日本語化機能のアップデートが入ったので表記が変わっています)


プロンプトはこのような形。


(1boy and 1girl:1.3),indoor,sofa,window,living room,masterpiece,extremely detailed CG,official art,high resolusion

AND 1boy and 1girl,(1girl is sitting on sofa:1.3),smile,masterpiece,extremely detailed CG,official art,high resolusion

AND 1boy and 1girl,(1boy is lying:1.3),sleeping,masterpiece,extremely detailed CG,official art,high resolusion

AND no humans,indoor,sofa,window,living room,masterpiece,extremely detailed CG,official art,high resolusion


「nohumans」で右上の空間に人が入らないようにして、それぞれの領域内に男の子、女の子が配置されるように工夫しました。キャンバス全体でも(1boy and 1girl:1.3)を入れて、キャラが1人になってしまうのを防いでいます。



するとこのように、「座っている笑顔の女の子+寝ている男の子」を無事生成することができました。


ただ、領域が重なっている部分をどう処理するかは多分に運によって左右されるため、安定度は高くはありません。うまくいくまではだいぶ試行錯誤が必要で、下図のような失敗作が多数生まれてしまいました。



次回はこうしたミスを防ぐために、ControlnetやLoRAを併用してより高度に構図・画作りを支配する方法について考察していきます。


例えばOpenposeを使ってキャラクターの位置をコントロールしたり、画面の左右で適用するLoRAを変えて別々のキャラクターを呼び出したりすることができるのではないか?という仮説を基に、いろいろと実験結果をご紹介できればと思います。


そんなわけで、今回は「Latent Couple」が理解る!【第1回:基本マスター編】でした。次回もよろしくお願いします!スタジオ真榊でした。





Files

Comments

ケン

うーん・・・導入しようとしたのですがなんか違う・・・ https://gyazo.com/510fdd1581d743b49a0787839ae49590

ケン

インストールするもの間違ってますかね?宜しければ教えていただきたいです

スタジオ真榊

最新環境だと、こちらの拡張機能(https://github.com/opparco/stable-diffusion-webui-two-shot)からフォーク(分岐)した新しい拡張機能(https://github.com/ashen-sensored/stable-diffusion-webui-two-shot)が配布されているみたいですね。私の環境ではまだ試していないので、帰ったら調べてみます。

スタジオ真榊

「新しいメンテナーのリポジトリURLに移行したため、必要に応じて古い拡張機能をアンインストールしてください」となってますね。「マスク」タブで使えるのがフォーク後に追加された新しい機能部分で、この記事で解説しているのは「Rectangular」タブの方です。

ケン

返信ありがとうございます。マスクの横にタブがあるの気づいてなかったです。詳しい解説ありがとうございます

triptraps

いつも噛み砕いて説明くださりありがとうございます。 最近リージョナルプロンプターに変更したのですが、 座標というか考え方の勉強に改めて拝見させていただきました。 Region Mapper もリージョナルプロンプターでの設定の参考になりそうですね。 作りたい構図に改めてチャレンジしてみます!

スタジオ真榊

そうなんですよ~~~!LatentCoupleも素晴らしいんですけど、LoRAの領域分割適用ができなくなってしまって、いまはRegionalPrompterの方が使いやすい環境なのですよね。今日から天下一武道会が始まりますが、おいおいRegionalPrompterについての記事も書いていきますわ!

triptraps

ご返信ありがとうございます! RegionalPrompterの組み方の理解がまだまだ私は足りないので、楽しみにしております♪