AIイラストで難しいことの一つに、二人以上の同時出力がある。いや、なんでもいいなら問題ないが、たいていの場合それぞれに決められた個性をもたせたい。しかしAIにそれを正しく伝えるのは至難の業だ。
こういう時には、Regional Prompterを使うことで、成功率を上げられる。
hako-mikan/sd-webui-regional-prompter: set prompt to divided region
すごい。
二人以上を描く
魔法使いと戦士の少女を同時に出力してみよう。さらにそれぞれの特徴として、以下を課す。
項目 | 魔法使い | 戦士 |
髪の毛 | pink hair, long hair, wavy hair, two side up, bangs, crossed bangs, hair ornament, hair ribbon | black hair, short hair, bob cut, bangs, hair over one eye, hairband, |
服装 | witch girl, witch hat, frilled skirt, cape, | knight girl, shoulder armor, breastplate, |
身体 | red eyes, small breasts | blue eyes, large breasts |
表情 | smile, evil smile | shy, embarrassed |
具体的には、以下のPromptを打ち込んでみる。
2girls, best quality, masterpiece, high resolution, distinct image,
outside, dynamic angle,
<lora:add_detail:0.5>
BREAK
witch girl, witch hat, frilled skirt, cape, red eyes,
blush, smile, evil smile, small breasts, pink hair, long hair, wavy hair, two side up, bangs, crossed bangs, hair ornament, hair ribbon,
standing, hands around waist, from front
BREAK
knight girl, black hair, shoulder armor, breastplate, blue eyes,
blush, shy, embarrassed, large breasts, thighs,
black hair, short hair, bob cut, bangs, hair over one eye, hairband, from back
これでとりあえず12枚ほど出力した結果が以下。
何一つ成功していない。互いの特徴が混ざり合い、そして打ち消し合っている。しまいには馬が出てくる始末。いや馬はマジでなんなんだよ。knightと言えばhorseみたいなマジカルバナナが炸裂したのだろうか。
Regional Prompter
こういう時に役立つのがRegional Prompterというプラグインで、これは領域を分割して、それぞれにプロンプトを適用するようなもの。今回は、画面を1:1に分割し、それぞれに魔法使いと戦士のプロンプトを割り当てる。詳細は後で述べるとして、結果は以下。
成功率が劇的にあがっていることがわかる。
と同時に、必ず成功しているわけではないこともわかる。微妙に互いに影響を与え合っている。
不思議なことに、戦士の髪がピンクになることはあっても魔法使いの髪が黒くなることはなく、また魔法使いの胸が大きくなることはあっても戦士の胸が小さくなることはない。プロンプトによって、勝ちやすい負けやすいがあるのだろうね。
総合的に見て、一番プロンプトがちゃんときいていてかつ、破綻がないのはこれかな?
そんなに面白い絵じゃないけどね。ちゃんときいてるのはわかるし、Regional Prompterなしでここまでくっきりわけるのはかなり難しいんじゃなかろうか。
1111での設定方法
Regional Prompter(以下RP)は、有り難いことに1111用のカスタムスクリプトまで用意してくれているので、1111ならExtensionsからさらっとダウンロード、インストールできる。
そのうえで、プロンプトをもう一度見てみる。
2girls, best quality, masterpiece, high resolution, distinct image,
outside, dynamic angle,
<lora:add_detail:0.5>
BREAK
witch girl, witch hat, frilled skirt, cape, red eyes,
blush, smile, evil smile, small breasts, pink hair, long hair, wavy hair, two side up, bangs, crossed bangs, hair ornament, hair ribbon,
standing, hands around waist, from front
BREAK
knight girl, black hair, shoulder armor, breastplate, blue eyes,
blush, shy, embarrassed, large breasts, thighs,
black hair, short hair, bob cut, bangs, hair over one eye, hairband, from back
BREAKが2箇所、つまり3つの領域があるが、これは1つめの領域が共通、2つめが左側、3つめが右側を表している。そのような状態にするための設定が以下。
公式「sd-webui-regional-prompter/README.JP.md at main · hako-mikan/sd-webui-regional-prompter」の説明が丁寧ではあるんだが、全部のっていて中々たいへんなので、ここでは基本的な1:1分割の設定をベースに、一つひとつ見ていく。
Active
チェックを入れたら有効化。そりゃそうだ。
Generation mode
基本はAttention。LoRAを分離して適用したい場合はLatentで分離して適用できるとされているが、生成時間は長くなる。今回、LoRAは使っているけれど、書き込みを増やす系の両方に適用する必要があるものなので関係なし。
Base, Common
RPにはbaseとcommonという概念がある。両方ともすべての領域で共通して利用するプロンプトという意味だが、base promptについてはBase Ratioがあるように、UIで重み付けをすることが可能。注意として、Base Ratioが0.2の場合、Base Promptが0.2倍されるのは想像しやすいが、それ以外のプロンプトが1-0.2=0.8倍されることだろうか。ちょっと使い所がわからなくて、使ったこと無い。
Commonは純粋にプロンプトを足し算するだけでわかりやすい。いつもCommon使っている。
BaseとCommon両方同時に使うことも可能で、その場合は common -> base -> …の順番でBREAKで区切るようだが、どういう時にそんな使い方することになるのだろう……。
Use common negative promptだが、NPをBREAKで区切らなければ自動的に全体に適用されるためチェックなし。逆に言うと、BREAKで区切ると領域ごとに適用できる。
Split mode, Divide Ratio
肝となる設定だが、これは領域の分割の仕方を示す。Horizontalで横向きに区切っている(言い換えると縦線が入る)。逆に縦向きで区切るならVertical(横線が入る)。それを1:1でわけている。
visualize and make templateを押下すると絵にしてくれるのでわかりやすい。
これを1:2:1のように書くと3領域にわけることが可能だし、さらにより複雑な分け方をすることもできる。ただ正直ここまでくると、ツールの使い方というより、どう適用するかという、ほんとそういう話になるよね。そうなるともう、センスの領域だなぁ。
まとめ
- 2人以上同時に出したい時などは、Regional Prompterで領域分割で描画すると便利
- 完全に分離されるわけではない
- やりたいことに合わせて設定する。設定方法自体はシンプルだが……うまく利用するにはセンスがいりそう
それでは最後に、RPを使わなかったばっかりに、馬になってしまった哀れな少女でお別れ。
コメント