こんばんは、スタジオ真榊です。前回の「表情・服装編」に続き、Controlnetで作れる現状で一番簡単な差分の作り方について検証したいと思います。今回は「ポーズ差分編」です!

このように、ポーズを一部だけ改変したり…

最新のControlnetで差分イラストを作ろう!(ポーズ差分編):図版1

キャラデザインや背景を維持したまま、Openposeで全身異なるポーズに変更したりする方法について検証しています。

最新のControlnetで差分イラストを作ろう!(ポーズ差分編):図版2

前回の予告(▲)では、今回は「ポーズ・背景編」のはずだったのですが、ポーズ変更が大変奥深く、またそれなりに検証成果も得られたので、前後編でなく上中下の3本立てでお送りしたいと思います。

【※今回は記事の最後に成人向け要素(全裸程度)がありますのでご注意ください】

ポーズ差分

さて、今回お届けするのは「ポーズ差分」です。服装差分と同様に首から上を固定しつつ、いくつかのパターンにポーズを変えてみます。今回もモデル画像はこちらのミナさんにお願いしましょう。

ポーズ差分:図版1

ポーズ変更実験①:一部だけを変更する

まず、モデル画像の大部分を残して一部だけを変更したい場合について考えます。今回は、両手の位置だけを任意に変更したいとしましょう。「inpaint+sd webui openpose editor+reference」でポーズ変更できるか実験しました。

まずはSDwebUI Openpose Editorをインストールします。拡張機能リストからこちらの拡張機能を見つけてインストールしてください。機能の概要はこちら(▼)を参照のこと。

huchenlei氏の配布されているSDwebUI openpose editorは、以前紹介したこちら(▼)のタブ形式のOpenpose Editor(fkunn1326氏配布)とは異なり、基本的にControlnet画面上で動作するものです。同じ名前ですが、別々の機能ですのでご注意ください。

ポーズ変更実験①:一部だけを変更する:図版1

インストールができたら、まずはこのように何も考えずtext2textのControlnet画面でControlTypeの「Openpose」を呼び出し、モデル画像を読み込ませてプレビューを表示させましょう。プレビュー画面は「Pixel perfect」と「AllowPreview」をオンにして、「💥」ボタンを押せばOKです。

ポーズ変更実験①:一部だけを変更する:図版2

このように、左に入力したモデル画像のポーズ情報が右側に抽出されました。よく見ると、プリプロセッサープレビューの右下に「Edit」というボタンがあるので、これをクリックしましょう。

するとこのように、夢の広がる画面が表示されます。

ポーズ変更実験①:一部だけを変更する:図版3

もう説明することはほとんどないですね。あとはこの画面上で動かしたい部分を操作すればOKです。棒人間のドット部分をそのままドラッグすれば移動でき、いらないドットを右クリックすれば消去できます。何もないところをドラッグすると、複数のドットを同時に選択して動かすことも可能です。

目指すポーズが完成したら左上の「Controlnetにポーズを送信」すればOK。細かい操作方法は画面上に書いてある通りで、さらに別の人物を追加することまでできます。

今回はこのような感じで、膝においていた手を別の位置に移動しました。

ポーズ変更実験①:一部だけを変更する:図版4

あと2つ、Controlnet画面を設定します。もう一つはReferenceOnly。キャラデザインを維持するため、モデル画像を覚えてもらいましょう。

ポーズ変更実験①:一部だけを変更する:図版5

もう一つはもちろんInpaintOnlyです。このマスクの仕方は少々難しいのですが、まずは現在手がある部分をマスクして、次に「動かす先」に当たる部分をマスクしましょう。

ポーズ変更実験①:一部だけを変更する:図版6

コツは、現在手がある部分はできるだけ「正確に狭く」。これから手が描かれる部分は「大雑把に広く」マスクすることです。移動先がマスクし足りないと、手の全体が描かれないことがあります。(※後で失敗例をお見せします)

もう一つのコツは、この画像の場合「ちょっとだけ袖の根本は残すこと」です。この先に何色の袖を描くのかのヒントになるので、ポーズ変更に影響のない範囲で白い袖の根本を残してあげましょう。こうしないと、根本から紺色の袖が描かれたりしてしまいます。

最後に、プロンプトなどの設定はこちら。プロンプトには、基本的にマスク部分に関係するもののみを入れます。このケースで気をつけたいのは、元画像が半袖ですので、「short-sleeves」を入力して長袖に変わらないようにすること。できるだけAI側の解釈の幅を狭くして、元画像の差分らしくなるようにプロンプト指示しましょう。今回も高解像度補助を掛けてOKです。

ポーズ変更実験①:一部だけを変更する:図版7

前回もそうでしたが、今回も3つの画面のControl modeは「Controlnet is more important」にします。

生成結果

生成結果:図版1

おおむねこのように、手だけを意図した位置に移動させることができました。(チェリーピックなし)

プロンプト指示では指を一本立てるポーズにしたかったのですけど、なかなか難しかったですね。前回の記事と同様、手首から先だけをマスクして修正しないと、一発ではうまくできないようです。よく見ると広くマスクした部分にちらほら破綻があるので、差分元や得られた画像を重ねて「人力マージ」しないと完成像にはならなそう。

また、すっかり見落としていたのですが、元画像と生成後を見比べてみると…

生成結果:図版2