「Regional Prompter」のプロンプトによる領域指定機能で、水着や眼鏡を塗り分けてみた。
範囲を指定してプロンプトを適用するエクステンション「Regional Prompter」。
こちらに「プロンプトを利用して領域指定する」機能が追加されたので試してみました。
sd-webui-regional-prompter
https://github.com/hako-mikan/sd-webui-regional-prompter/blob/main/README.JP.md
使い方はReadmeに書いてあるので、そちらを読めば基本的なことは把握できるはず。
具体的な作例とプロンプトはこんな感じになります。
「1girl~glasses BREAK」までが1行目が本文というか、本来のプロンプトで、2行目以降が領域指定用(1行目と2行目の間に空白行がありますが、本来は不要)。
この例ではビキニ姿ですが、「bikini」だと上下を別々に指定するのが難しかったので、ブラとパンツで代用しています。
領域は「1行目で使用した単語が影響を及ぼしている範囲」が指定されます。例えば「bra」だったらブラジャーが描かれているあたり、となります。
領域指定用の単語は、行の最後に置いて、そのあとに「BREAK」を入れます。カンマや括弧は不要です。カンマ付けると作動しませんでした。
領域指定はいくつでもできます。上記の例だと「hair」「bra」「panties」「glasses」の4カ所ですね。
「bra」の代わりに「large breasts」、pantiesの代わりに「hip」「bottom」などを使うことで、指定場所が多少変わるモノの、同じような部位を指定することもできます。
なお、プロンプトの影響はプロンプトが指し示すモノではなくて、あくまでそのプロンプトが効果を及ぼす「領域」となります。
なので、bra指定した行で「Large Breast」とかやれば、普通に胸が大きくなりますし、「tan」なら日焼けさすこともできます。
また、領域は設定画面にある「threshold」(閾値)で、どの程度のサイズにするかを指定できます。1にすると領域をもっとも小さく取り、0.1だと最大。
これを使うことで領域をかなり自在にコントロールできるので、積極的な活用をおすすめします。
「Generate」を実行すると、各領域指定プロンプトごとのマスク画面が出力されるので、そちらを見ながら領域の調整や、どのプロンプトでどこが指定されるかなどを確認していくと、良い感じに使えるようになっていくと思います。
使ってみた感想としては、手軽に指定できるわりに、そこそこの確率で思ったとおりの効果適用ができるのはかなり便利かなと。
100%絶対成功ではないですし、そもそも「プロンプトでちゃんと指定できないものはムリ」という問題もあるので、これさえあれば領域指定は完璧というワケではありませんが、今までの領域指定のようにマスク作ったりグリッド分割したりといった面倒なことをしないで、ささっと部位ごとの色塗り分けなどができるのは嬉しい限りです。
「女の子2人を描き分ける」みたいなのは、プロンプトが被りがちなので難しそうなので、1人の人物を綺麗に塗り分ける…みたいな使い方に向いていそうです。
あと、領域指定が、AIイラストの弱点である「色漏れ対策」として効果的なのも見逃せないところだと思います。
使うだけで色漏れ回避できることが多いですし、混じっても領域指定と色指定を組み合わせることで通常よりは回避しやすいです。
5/3追記
作者様がチュートリアル書いてくれました。
分かりやすいので、プロンプトでの領域指定に興味がある方は読んでおきましょう!
promptで指定する領域のチュートリアル1
おまけ:細かいパーツを塗り分けてみた。
色移りしそうな、髪・メガネ・リボンを領域指定。ついでにブローチを追加。なぜか髪が金髪になってしまうので(月明かりに引っ張られた?)、本文で黒髪指定。メガネを「red glasses」としていたところ、眉毛睫毛髪の毛と混じりがちだったので、表記方法を「silver-framed glasses」に変更したところ安定した。
手が荒れがちだったので、ネガティブにTIの「Bad Hands」追加。
ブローチが銀色指定を反映していない、右の髪下部に青が侵食、親指に白が侵食などがマイナスポイント。それ以外は概ね綺麗に出せた。
侵食は、アップスケーラーにlatent(nearest)を使ったからかも。
ESRGAN系だと侵食は無かった。ただ細部のディテールが綺麗だったので、こちらを採用。