こんばんは、スタジオ真榊です。前回の「表情・服装編」に続き、Controlnetで作れる現状で一番簡単な差分の作り方について検証したいと思います。今回は「ポーズ差分編」です!
このように、ポーズを一部だけ改変したり…
キャラデザインや背景を維持したまま、Openposeで全身異なるポーズに変更したりする方法について検証しています。

珍しく日中からこんにちは!スタジオ真榊です。 今日はいわゆる「差分」の作り方に関する記事をお届けします。差分と言えば、表情差分やポーズ差分、服装差分や背景差分、セリフ差分など、主にイラストやゲームなどにおける画像バリエーションのことですね。 AIイラストでは、これまでも主にマスク部分のimage2imageを使...
前回の予告(▲)では、今回は「ポーズ・背景編」のはずだったのですが、ポーズ変更が大変奥深く、またそれなりに検証成果も得られたので、前後編でなく上中下の3本立てでお送りしたいと思います。
【※今回は記事の最後に成人向け要素(全裸程度)がありますのでご注意ください】
さて、今回お届けするのは「ポーズ差分」です。服装差分と同様に首から上を固定しつつ、いくつかのパターンにポーズを変えてみます。今回もモデル画像はこちらのミナさんにお願いしましょう。
まず、モデル画像の大部分を残して一部だけを変更したい場合について考えます。今回は、両手の位置だけを任意に変更したいとしましょう。「inpaint+sd webui openpose editor+reference」でポーズ変更できるか実験しました。
まずはSDwebUI Openpose Editorをインストールします。拡張機能リストからこちらの拡張機能を見つけてインストールしてください。機能の概要はこちら(▼)を参照のこと。
huchenlei氏の配布されているSDwebUI openpose editorは、以前紹介したこちら(▼)のタブ形式のOpenpose Editor(fkunn1326氏配布)とは異なり、基本的にControlnet画面上で動作するものです。同じ名前ですが、別々の機能ですのでご注意ください。
インストールができたら、まずはこのように何も考えずtext2textのControlnet画面でControlTypeの「Openpose」を呼び出し、モデル画像を読み込ませてプレビューを表示させましょう。プレビュー画面は「Pixel perfect」と「AllowPreview」をオンにして、「💥」ボタンを押せばOKです。
このように、左に入力したモデル画像のポーズ情報が右側に抽出されました。よく見ると、プリプロセッサープレビューの右下に「Edit」というボタンがあるので、これをクリックしましょう。
するとこのように、夢の広がる画面が表示されます。
もう説明することはほとんどないですね。あとはこの画面上で動かしたい部分を操作すればOKです。棒人間のドット部分をそのままドラッグすれば移動でき、いらないドットを右クリックすれば消去できます。何もないところをドラッグすると、複数のドットを同時に選択して動かすことも可能です。
目指すポーズが完成したら左上の「Controlnetにポーズを送信」すればOK。細かい操作方法は画面上に書いてある通りで、さらに別の人物を追加することまでできます。
今回はこのような感じで、膝においていた手を別の位置に移動しました。
あと2つ、Controlnet画面を設定します。もう一つはReferenceOnly。キャラデザインを維持するため、モデル画像を覚えてもらいましょう。
もう一つはもちろんInpaintOnlyです。このマスクの仕方は少々難しいのですが、まずは現在手がある部分をマスクして、次に「動かす先」に当たる部分をマスクしましょう。
コツは、現在手がある部分はできるだけ「正確に狭く」。これから手が描かれる部分は「大雑把に広く」マスクすることです。移動先がマスクし足りないと、手の全体が描かれないことがあります。(※後で失敗例をお見せします)
もう一つのコツは、この画像の場合「ちょっとだけ袖の根本は残すこと」です。この先に何色の袖を描くのかのヒントになるので、ポーズ変更に影響のない範囲で白い袖の根本を残してあげましょう。こうしないと、根本から紺色の袖が描かれたりしてしまいます。
最後に、プロンプトなどの設定はこちら。プロンプトには、基本的にマスク部分に関係するもののみを入れます。このケースで気をつけたいのは、元画像が半袖ですので、「short-sleeves」を入力して長袖に変わらないようにすること。できるだけAI側の解釈の幅を狭くして、元画像の差分らしくなるようにプロンプト指示しましょう。今回も高解像度補助を掛けてOKです。
前回もそうでしたが、今回も3つの画面のControl modeは「Controlnet is more important」にします。
おおむねこのように、手だけを意図した位置に移動させることができました。(チェリーピックなし)
プロンプト指示では指を一本立てるポーズにしたかったのですけど、なかなか難しかったですね。前回の記事と同様、手首から先だけをマスクして修正しないと、一発ではうまくできないようです。よく見ると広くマスクした部分にちらほら破綻があるので、差分元や得られた画像を重ねて「人力マージ」しないと完成像にはならなそう。
また、すっかり見落としていたのですが、元画像と生成後を見比べてみると…
半袖だからと油断していましたが、生成後に紺色の「セーラー袖」がついてしまっています。背景右上の島も地味に領土拡大してますね。このように、差分を作るときはどうしてもちょっとした違いが物凄い違和感になってしまうので、よく見比べるようにしましょう。
ちなみに失敗の原因は、プロンプトを「white sailor uniform」のままにしていたこと。マスク部分にセーラー服要素は一切ないのですから、単に「white short-sleeve shirt」にすればよかったのです。ある程度機転(とんち?)が求められますね…。
セーラー袖部分だけをマスクし、プロンプトをwhite shirtに変更すると、このようにきれいに白半袖になりました。
ちなみに、さきほど「移動先は広くマスクしよう」「袖の根本はマスクせずに残そう」と言ったのは、下図のようなミスが生じてしまうためです。
左は袖の根本を残さなかったため、紺色の袖+ボディスーツのような感じになってしまっているケースです。また、どちらの画像も右手が収まるべき場所をマスクしきれていなかったために、マスク外に出てしまった右手が途中で消えています。こうしたケースを防ぐためにも、Openposeのライン付近はかなり広めにマスクしましょう。あまり広すぎると破綻も出てしまうのですが、ジェネレーティブ塗りつぶしや人力マージで修正できますからね。
さて、今度はさらに難易度が上がります。さきほどは腕以外の部分をほぼ固定できていたために、当然「同じキャラ」という印象を保てていたわけですが、全身のポーズを変更するとなると、細部が大きく変わってしまうことは想像に難くありません。キャラクター再現LoRAを効かせるなら別ですが、普通に考えれば「よく似た別人」になってしまいそうですね。
とりあえずどんなことになるか実験してみましょう。さきほどと同様にSDwebUI Openpose Editorを起動します。今度は腕だけでなく、全身のポーズを変更してみましょう。
Controlnet画面の設定は以下の通り。さきほどとさほど変わりませんので、見比べてもらえば意図が分かるかと思います。
Referenceはさきほど得られた指を立てたイラストにしました。さほど深い意味はないのですが、今度も手を挙げるポーズなので、最初の元画像よりはReferenceしやすいかなと思った程度です。
肝心のinpaintは、移動前と移動後のキャラクターが占める空間を全て塗りつぶす必要がありますので、キャンバス中ほとんどが黒塗り状態。もはやほとんど余白がないわけですが、一旦はこうしておいて、背景が噛み合わない部分はあとで人力マージするしかないでしょう。
プロンプトは相当練る必要があります。ほとんど覆われてしまったマスク空間に何を描くのか、便りになるのはプロンプトとReference画像だけなのですから、自然とこのように長大になってしまいます。自分で書いたものではなく、img2img画面にReferenceさせた画像を放り込み、「Deepbooruによる解析」で候補を出して吟味しました。
プロンプト:1girl,claw pose, beach, sitting on bench, black_hair, black_legwear, blue_sky, smile, breasts, cloud, collarbone, day, glasses, hair_ornament, side ponytail with white hair_ribbon, horizon, looking_at_viewer, ocean, open_mouth, outdoors, black pantyhose, navy pleated_skirt, beautiful purple_eyes, (purple sailor scarf:1.3), wearing red glasses, sailor_collar, school_uniform, serafuku, shirt, short_sleeves, sky, solo, white_shirt,(outdoor,sky:1.20), masterpiece, extremely detailed CG, official art, high resolusion
思ったより…なんとかなった印象ではあります!(チェリーピックなし・4枚生成1発出し)
claw poseが強すぎて手が崩壊(かぎ爪化)しているのはともかくとして、特に左下はおおむね意図した形になっているのではないでしょうか。またもセーラー袖が出てしまっていますが、袖部分だけをマスクして「white shirt」にすれば直せることは既に実証済み。胸の校章ももともと後付け加筆でしたから、ちょちょいと直す程度でいけそうです。
======================================
【ちょっと脱線】簡単な「記号」でキャラクターの一貫性を演出しよう!
今回のミナさんの衣装には、ちょっとした思いつきで校章を胸に入れてみました。いつもタイトル画像に使っているグラデーションの色を使って、動画を見るだけで利用できる素材提供サイト「シルエットAC」(※商業印刷物やホームページに自由に利用可。色変更や切り抜きなどの加工もOK)から頂いた素材を塗ったものです。「輝度を透明度に変換」で切り抜いて、クリスタの「メッシュ変形」機能を使って馴染む形に変更するだけなので、非常に簡単に後付加工できます。
ヘアピンでもほくろでも校章でも良いのですが、こうした簡単な後加工でそのキャラだと認識できる「記号」を作ると、多少タッチにブレがあっても同じキャラクターと認識してもらえるので、オリキャラを作るときにおすすめです。
======================================
さて、ちょっと脱線してしまいましたが、話を元に戻しましょう。「全身のポーズを変更はできたけど、細部が破綻しているので直さないといけないね」というところまで話が進んでいましたね。
というわけで、LamaCleanerでささっと直したのがこちらのイラスト。まだ細部は怪しいのですが、袖や胸、ベンチ等の破綻、6本目以上の指など目立つ邪魔な部分を取り去りました。
(※LamaCleanerの導入方法などはこちらの記事をご参照ください)

こんばんは、スタジオ真榊です。世間がAdobeの画像生成AI機能「ジェネレーティブ塗りつぶし」に揺れている中、今夜は「消し」に特化したインペイントツール「LamaCleaner」についての検証記事をお伝えします。というのも、ジェネレーティブ塗りつぶしについて検証を行っていくに当たって、その前にどうしても触れておか...
おおまかなポーズはおおむねこれで十分なのですから、openposeはもう必要ありません。今度はSoftedge_pidisafeを使って輪郭継承してしまいます。
ReferenceさせるのもさきほどLamaCleanerで微修正したもの。Inpaintはさきほどのまま(画面中ほとんどが覆われたもの)でやりました。
セーラー袖と手、ベンチの破綻以外はおおむね良い感じになりました。
あとは簡単。このようにおかしいところだけをinpaintして、袖はさきほどのwhite shirt法で修正し、手はLoRAやnegative embeddingを使って直すだけです。
プロンプト:claw pose,detailed hands,(white shirt:1.3),4fingers 1thumb,(outdoor,sky:1.20), masterpiece, extremely detailed CG, official art, high resolusion+手修正LoRA
元キャラクターの全身の色合いを維持しながら、ここまでポーズを任意に変えられたのは正直驚きました。が、かなりの工数になってしまいましたので、前回の表情差分や服装差分のように「お手軽」とはちょっと言えませんね。
手を直し、胸に校章を入れてアップスケールするとこんな感じになりました。
左が元画像、右が全身ポーズ変更したものです。
髪や胸のリボンの形状が揃えられませんでしたが、かつてここまで自由なポーズ変化や細部の修正はできませんでしたから、割と感無量です。ただ「sailor uniform」と打ち込むだけでは色もデザインも千変万化してしまうセーラー服を、ここまで収束できるようになるとは思いませんでした。
もう少し時間を掛ければリボンの修正や顔立ちをさらに似せることもできますが、あまり凝っていろいろやりすぎても差分解説記事の趣旨から離れてしまうので、ポーズ差分の検証はひとまずここまでにしておきます。キャラ再現LoRAと組み合わせれば、もっと可能性は広がりそうですね。
今回差分について検証したのは、実は理由がありまして、エロ作品を作るために有用な技術の現在位置をきちんと確かめておきたかったというのがあります。
だって、服装差分テクニックで半裸化・全裸化が、表情差分テクニックでエロ表情化(虚ろ目化なども含む)が、一部ポーズチェンジでエロ差分が、全身ポーズチェンジでストーリーエロ作品が作れるようになる!と言っても過言ではありませんものね。
さっき作った差分のうち1枚を選んで、顔部分を適当にマスクしてinpaintonly+表情LoRAを適用したら、数分でこれが作れてしまいますし(手が変ですが)、前回の服装チェンジの要領でプロンプトを「completely nude,middle breasts,nipples,splead legs...」にすれば、
大した苦労もなくこの連作が作れてしまいます。モノローグやスマホ素材、セリフ、擬音などを入れれば十分セリフつき連作CGになりますね。しかも、この画面上には意図していないもの(AI特有の偶然性によって生じたもの)が一切ありません。
やろうとすればメガネも外せるし、好きなポーズを取らせられるし、口だけ・眉だけ変えることもできるし、ストッキングだけ履かせることもできるし、半脱ぎさせることもできます。画面右側を大きくマスクすれば、竿役を召喚することもできるでしょう。全てInpaintOnlyのおかげです。
以前はこれをやろうと思ったら、i2iに次ぐi2iか、Lineartで線画を出して身体部分を塗りつぶし、何なら自分で裸の線画を書いて…という作業をする必要がありました。さらに、意図しないオブジェクトを消したり破綻も修正できてしまうとなれば、もうAIイラストは次のステージに来たと言っていいのではないでしょうか。
InpaintOnlyの偉大さは、推理小説で言うところの「困難の分割」です。例えば、一回のインペイントで一つの場所だけにLoRAを掛けられるので、キャンバス全体に複数のLoRAを同時適用しないといけない場面が格段に減ります。複数キャラを出すのに苦心する場面も大幅に減らせます。何なら、二人出したあとに片方ずつ整形していけばよいですものね。
催◯や即堕ち2コマシリーズなどもかなり容易にできるようになりましたし、次回解説する背景差分テクニックで、学校→ラブホのような背景交換もできるようになるはずです。なにより、InpaintOnlyとReferenceOnlyを組み合わせたControlnet版ジェネレーティブ塗りつぶし(ジェネリック塗りつぶし?)でかなりの範囲の破綻が直せてしまうことが分かってきました。
特に期待しているのが、nsfwイラストにおいて鬼門だった「竿役」の問題。画面外のアウトペイントができるようになり、画面内の任意の位置にキャラクターを追加することもできるようになりましたから、これまでは非常に難しかった男女のからみも相当自由に表現できるようになったのではないかと思っています。
余談ですが、昨日バズったこちらのツイートの記事で、著者さんが「AIイラストは竿役が出せない」「単純なポーズしか指定できない」「竿役のキャラクターを好きに指定できない」といったAIイラストの不便さを嘆いていました。このあたりの既知の問題について、現在の技術でどこまで解決できるようになってきたかも今後検証していきたいと思っています。
自分の絵柄がまだ固定できず、12月に作業を始めたAI漫画も半年以上停止中の身ですが、ようやくここまで来て一次研究の終わりが見えてきた気がしています。Controlnetを検証しているのは、ひとえに自分の求めるNTR作品を作るため。たとえAI追い出しの影響でPixivFANBOXでの活動が続けられなくなっても、ここだけはぶれずに研究を続けたいと思います。
それでは皆様、長々と語ってしまいましたが、今日はこのへんで。
次回は背景差分編!…のはず。
よい週末をお過ごしください。スタジオ真榊でした。
スタジオ真榊【AIイラスト術解説】
2023-08-18 18:07:42 +0000 UTCろんろん
2023-08-18 17:25:19 +0000 UTCスタジオ真榊【AIイラスト術解説】
2023-08-18 15:31:24 +0000 UTCろんろん
2023-08-18 13:42:58 +0000 UTCkamiyann02
2023-07-01 21:59:03 +0000 UTCスタジオ真榊【AIイラスト術解説】
2023-06-28 07:09:40 +0000 UTCkamiyann02
2023-06-28 01:17:38 +0000 UTCスタジオ真榊【AIイラスト術解説】
2023-06-27 12:45:41 +0000 UTCkamiyann02
2023-06-27 11:12:48 +0000 UTCスタジオ真榊【AIイラスト術解説】
2023-06-17 14:57:09 +0000 UTCKaizou_2
2023-06-17 14:32:37 +0000 UTC