Stable Diffusionで複数人の人物絵を描こうとすると、同じ顔や同じ服装になってしまうことがありますよね。
普通に複数人の人物絵を描く場合、それぞれの人物にどのようなキャラ付け(顔や髪、服装、ポーズ)をするか考えて描きます。しかしStable Diffusionでは、想定した通りのキャラ付けが難しく、顔が全く同じになってしまったり、特定の人物が別の人の洋服を着ていたりとうまくいきません。
制服など同じ服装をしている時や双子などで顔が似ている時はいいですが、そうでない場合がほとんどですよね。
この記事ではLoraなどを使用せずに、個別にキャラクターを描きたい時に役立つ方法を紹介します。
※Stable Diffusionの立ち上げ方・使い方については、以下の記事で詳しく解説しています。
拡張機能「Latent Couple」とは?
これまでのStable Diffusionで複数人の絵を描こうとすると、一つのキャンパスに対して命令を行っていました。そのため、それぞれの人物に対する固定の命令ではないので、髪色や服装などの要素が混じりあってしまうことが避けられませんでした。
また場合によっては一人のプロンプトと解釈されて、二人にならないこともあります。
ですが「Latent Couple」を使うことで、キャンパスを任意の数に分割することができるようになります。
そのため、分割した画面1つ1つに対して個別で命令できるようになり、複数人をそれぞれの1つのキャンパスで命令してたものを合わせるような使い方ができます。
拡張機能「Latent Couple」の導入方法
「Latent Couple」という拡張機能を使用する準備を説明します。
「Latent Couple」をインストールするために、「Extensions」タブからAvailableを開きます。
「Load from」ボタンをクリックすると、インストール項目が出てきます。
今回は「Latent Couple」を使いたいので、「Latent Couple」を検索してInstallボタンをクリックします。
この時に見つけにくければCtrl+Fで、検索窓が画面右上に開くのでそこで「Latent Couple」と入力して検索ください。
インストールが完了したら、InstalledでApply and restart UIをクリックして、適用してUIを再起動してください。
念のため再起動後、一度Webとコマンドプロンプトを停止し、Stable Diffusion web UI自体を再起動させて下さい。
これで準備は整いました。
再起動「txt2img」タブを確認してください。
拡張機能の一覧に「Latent Couple」という項目が追加されていれば、正常にインストールされた証拠です。
もし項目が出てきていないときは再起動ができておらず反映がされていないか、インストール途中でエラーになっている可能性がありますので、再起動とコマンドプロンプトの確認をしてください。
今回は「Latent Couple」についてのインストールを説明しましたが、Stable Diffusionでは高画質化や画像からのプロンプト抽出などいろいろあるので、気になった方は下記記事を見るときっとお役に立てるはずです。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい
拡張機能「Latent Couple」の使い方
では実際に「Latent Couple」を使って、人物を描き分けていきましょう。
①人物を描き分ける「Rectangualr」の設定方法
まず画面をどのように分割していくかを決めるために「Rectangualr(レクタンギュラー)」の設定をしていきます。
「Latent Couple」をクリックすると、Divisions(分割):「1:1,1:2,1:2」、Positions(位置):「0:0,0:0,0:1」、Weights(重み):「(0.2,0.8,0.8)」と入力されていると思います。
このデフォルト値の状態でVisualizeをクリックすると、Visualizeボタン下の領域に黒や白で色分けされた画面が映ったと思います。これが今回デフォルト値で分割した領域になります。
それぞれDivisionsの「1:1,1:2,1:2」、Positionsの「0:0,0:0,0:1」、Weightsの「(0.2,0.8,0.8)」にの数値の意味は下記になります。
名称 | 数値 | 意味 |
Divisions | 1:1 | 縦1×横1 背景の画面領域、分割していないので全画面 |
1:2 | 縦1×横2 人Aの画面領域、画面を左右に分割した片方 | |
1:2 | 縦1×横2 人Bの画面領域、画面を左右に分割した片方 | |
Positions | 0:0 | 背景の位置、縦:0、横:0の位置(座標は0.0が始点) |
0:0 | 人Aに対する縦:0、横:0の位置(画面左側半分) | |
0:1 | 人Bに対する縦:0、横:1の位置(画面右側半分) | |
Weights | 0.2 | 背景の重みづけ |
0.8 | 人Aの重みづけ | |
0.8 | 人Bの重みづけ |
拡張機能「Latent Couple」で2分割・2人を生成する方法
まずは例として画面を2分割してそれぞれに1人ずつの絵を出力してみましょう。
①呪文(プロンプト)で分割・改行する
プロンプトですが、従来の描き方とは少し異なるので注意が必要です。
今まででは、強調したい命令を先に描いていたと思いますが、分割した画像それぞれに命令をする都合上、「品質+人数+全体に関する基本的なプロンプト」AND「品質+人数+人Aに関するプロンプト」AND「品質+人数+人Bに関するプロンプト」という形になります。
「masterpiece」「best quality」などの品質や、「2 girls」などの人数はすべてに記述する必要があるので忘れないようにしてください。
そのため今まで人物や品質などをバラバラに合わせてプロンプトを作っていた方は、どのプロンプトがどの要素なのかを一度整理しておいてください。
また新しく追加された「AND」も忘れやすいので注意してください。
今回は少女二人を描きたいので、それについて記述していきます
プロンプトを書いたら、「Latent Couple」の下の「Enabled」にチェックを入れてください。これでLatent Coupleが有効になります。
プロンプト
masterpiece, best quality, 4K,( 2 girls:1.2) , school
AND masterpiece, best quality, 4K, (2 girls:1.2) , full body, looking at viewer, back hair, long hair, Sailor Suits
AND masterpiece, best quality, 4K,( 2 girls:1.2), full body, looking at viewer, brown hair, short hair, office lady
ネガティブプロンプト
worst quality, low quality, blurry, nsfw,
flat color, flat shading, retro style, poor quality, bad face,
bad anatomy, bad hands, missing arms, text error, missing fingers, jpeg artifacts, long neck, signature, watermark, blurry, fisheye lens, animal, deformed mutated disfigured, mutated hands, missing hands, extra hands, liquid hands, poorly drawn hands, mutated fingers, bad fingers, extra fingers, liquid fingers, poorly drawn fingers, bad legs, missing legs, extra legs, bad arms, extra arms, long torso, thick thighs, partial head, bad face, partial face, bad eyebrows,
ugly, disfigured,
女生徒と教師が絵の半分ずつで出力されました。
Rectangualrの設定とANDで描いたプロンプトの順番通りどちらの絵も、前半のプロンプトの女生徒が左で、後半のプロンプトの教師が右に描かれています。
ただし、schoolと記述したのにも関わらず場所が自宅のようなところになっています。
プロンプト書き方について
プロンプトを書くときは改行を使って見やすくすることが推奨されています。これは視認性を良くすることでケアレスミスを防ぐことにもなります。
プロンプト自体は改行をしなくても、機械が正確に読み取ってくれます。しかし、人間がケアレスミスをしたとしても機械はそれを正として実行してしまうため、人が確認しやすい視認性は重要です。
またプログラムを書くプログラマーには可読性に優れたプログラムを書くという常識があり、これは自分が後から見た時も他人が見た時も、プログラムを書いたときに何を考えて書いたかがわかるようにするというためのものです。
Stable Diffusionでプロンプトを書く時も同様で、大量にプロンプトを打つため何を記述したかわからなくなってしまうことも多いです。そのため、後から見た時に何を考えてそのプロンプトを記述したかわかるように、可読性を上げておくことは重要です。
②場所を設定する
上記のプロンプトで初めのプロンプトで背景を学校と指定したはずが別の背景になっていました。
これはWeightsで背景の重みを0.2と他の人A,Bに対して低くしたため、背景の要素の重要度が下がったためです。
解決するためには、背景の重みを増やしてもいいのですが、そうすると逆に背景に引っ張られて人の絵が崩れてしまうこともあるので、今回はそれぞれの女の子のプロンプトに背景を追加したいと思います。
プロンプト
masterpiece, best quality, 4K,( 2 girls:1.2) , school
AND masterpiece, best quality, 4K, (2 girls:1.2) , full body, looking at viewer, back hair, long hair, Sailor Suits, school
AND masterpiece, best quality, 4K,( 2 girls:1.2), full body, looking at viewer, brown hair, short hair, office lady, school
ネガティブプロンプト
worst quality, low quality, blurry, nsfw,
flat color, flat shading, retro style, poor quality, bad face,
bad anatomy, bad hands, missing arms, text error, missing fingers, jpeg artifacts, long neck, signature, watermark, blurry, fisheye lens, animal, deformed mutated disfigured, mutated hands, missing hands, extra hands, liquid hands, poorly drawn hands, mutated fingers, bad fingers, extra fingers, liquid fingers, poorly drawn fingers, bad legs, missing legs, extra legs, bad arms, extra arms, long torso, thick thighs, partial head, bad face, partial face, bad eyebrows,
ugly, disfigured,
両方とも背景が学校になりました。
③「Latent Couple」を適用して高解像度化もする
Hires.fixは高解像度化するのに有用な機能ですが、①と②のプロンプトでも使用することが可能です。
今回はUpscalerに「Latent」を指定し、ノイズ除去強度を「0.7」、倍率は「1」倍のままとしています。
倍率を1倍にしたので大きくは変化していませんが、書き込みが増え高画質化しました。
当然倍率を上げて解像度を上げればもっときれいな絵になります。
二人の構図を変えたくないけど高精度化したい時に有効です。
拡張機能「Latent Couple」で3分割・3人を生成する方法
2人ができたので次は3人で3分割を試してみましょう。
①人物を描き分ける「Rectangualr」の設定を3人にする
まずはRectangualrの設定を三人用に設定します。
Divisionsに「1:1,1:3,1:3,1:3」を設定します。これで、背景は1画面、他3つは3分割した画面となりました。
Positionsを「0:0,0:0,0:1,0:2」と設定します。これで、背景は縦:0、横:0の位置から開始。他は縦:0、横:0~2の位置から開始となります。
最後にWeightsを「0.2,0.8,0.8,0.8」と設定します。これで背景の重みが0.2、他の人物が同一で0.8と設定されました。
※下のApplyボタンを押すと元に戻ってしまうので注意が必要です。
②呪文(プロンプト)を分割・改行する
プロンプトは先ほどのものに一人分をANDで追加していきます。
masterpiece, best quality, 4K,( 2 girls:1.2) , school
AND masterpiece, best quality, 4K, (2 girls:1.2) , full body, looking at viewer, back hair, long hair, Sailor Suits, school
AND masterpiece, best quality, 4K,( 2 girls:1.2), full body, looking at viewer, brown hair, short hair, office lady, school
AND masterpiece, best quality, 4K,( 2 girls:1.2), full body, looking at viewer, gold hair, medium hair, school uniform, school
③「Latent Couple」を適用して高解像度化もする
当然3人でも高解像度化は可能なのでそちらも設定します。
三人出力されて、それぞれの髪型と服装をしています。
ただし人数が多くすると、その分だけ一人当たりのキャンパスが減るので、解像度が低くなります。
そのため複数人を書くときは上手くいかない場合は解像度を上げてみると良いでしょう。
まとめ
いかがでしたでしょうか?
今回はLatent Coupleを使って簡単に複数人をかき分ける方法について解説してきました。
今回のポイントをまとめると、以下のようになります。
- 「Latent Couple」はインストールの手間がかかるが、その分効果が高い
- 「Latent Couple」を使えば好きな数の人数を描画することができる
- 「Latent Couple」を使用するためのプロンプトが従来と少し違うため注意が必要
実写絵でも漫画絵でも人物は二人以上いた方が、絵に動きを出すことができますし、色々と応用が利きます。
また今回紹介したように片方を人じゃなく動物や建物などにもできるので、構図の設計の時にきっと役に立つので、ぜひこの機能を用いて素晴らしい絵をたくさん描いてみてください。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい