← Back to スタジオ真榊

Pixiv Fanbox

新プリプロセッサ「DW openpose」登場!旧Openposeよりどうスゴイ?

Published 08/17/2023, 09:59:49 PM · Edited 02/01/2024, 10:21:26 AM

新プリプロセッサ「DW openpose」登場!旧Openposeよりどうスゴイ?

こんばんは、スタジオ真榊です。今夜は知らぬ間にControlnetに仲間入りしていた新プリプロセッサ「DW openpose」の検証記事です。

「DWposeという技術を使った、Openpose fullよりスゲースゴイ全身用プリプロセッサです」で説明がもう終わってしまうのですが、確かにこれ…スゴイです!(語彙力喪失)



こちらの適当な5人娘の画像を「dw_openpose_full」で読み込ませると、サクッと右のボーンが抽出されて…


しっかり同じポーズで画像生成できてしまいます。


以上、終了!


…という感じですが、せっかくなのでOpenposeとどれくらい違うのか、この正確さを何に使えるか、いろいろと検証してみました。


/////////////////////////////////////////////////////////////////////////////////////////

【目次】

1.DW openpose導入方法

2.ポーズマニアックスから抽出してみよう

3.人物写真から抜き出してみよう

4.手のボーン位置を修正してみよう

5.顔の向きを変えてみよう

6.表情を変えてみよう

おまけ:「マンガパース」は再現できる?

終わりに

/////////////////////////////////////////////////////////////////////////////////////////


1.DW openpose導入方法

「DW pose」は「Distillation for Whole-body Pose estimators」の略。要するに全身ポーズ抽出技術ってことなんですが、従来のOpenpose技術に比べて正確な推論をすることができ、特に手の検出精度が大幅に向上しているそうです。


SDwebUI用Controlnetでは、8月9日に更新された「v1.1237」からDW poseを使った新プリプロセッサ「DW openpose full」が導入されており、Controlnetを最新版にバージョンアップするだけでCN画面のOpenposeプリプロセッサに追加されます。

こんな感じで、しれっと一緒に並んでますね。従来のopenposeは「全身+手+顔」や「全身+手」「顔のみ」といったバリエーションがありましたが、記事執筆時点でDW Openposeには「full」しかありませんので、基本的に顔の向きや表情、手、全身のポーズが全て一括で抽出されます。送り込む先のControlnetモデルは通常通り「Openpose」で構いません。


2.ポーズマニアックスから抽出してみよう

さっそく、何がどう変わったのか検証してみましょう。おなじみポーズマニアックスさんからスクリーンショットで頂戴してきたこちらの人体模型を読み込ませます。比較のため「DW openpose full」と「Openpose full」の両方で抽出してみました。

画像を読み込ませて💥ボタンを押せば画面右側に抽出結果が表示されます。例によって、初回抽出時のみ200MB分のダウンロードを挟むので時間が掛かるのでご注意ください。


結果はこのようになりました。左がDW、右が従来Openposeです。

明らかに精度が違いますね。やはり目立つのは手の正確さ!従来版はほぼ指の位置を拾えておらず、右手は手首とつながってもいませんが、DW版はしっかり描けており、顔の向きや目鼻の位置もより正確です。(人間の写真ではなく人体模型なのに…)


さて、さっそく生成してみましょう。手と顔のADetailerをONにして、768x512を解像度補助で1.5倍にします。(※以降、特に断らない限りControlnet is more importantを選択しています。抽出したボーン情報をできるだけ正確に再現するためです)


プロンプト:1girl,souryuu asuka langley, red plugsuit,brown hair, red bodysuit,standing,hand up,masterpiece,extremely detailed CG,official art,high resolusion (+ LoRA)

確かに、ポーズをかなり正確に拾ってくれていますね。


一方、こちらが従来のOpenpose fullで抽出したもの。プリプロセッサ以外、全く同じ設定です。

特に腰に当てた左手を見比べると、違いがよくわかると思います。


おなじみのGIF比較。旧来のほうは手がグチャっててADetailerでも直せていませんね。ただ、さきほどの人体模型は髪をかきあげるポーズではなく、どちらかというと敬礼(salute)ポーズだったので、そのプロンプトを入れるともっと正確になるかもしれません。


3.人物写真から抜き出してみよう

さきほどは人体模型図からの抽出でしたが、写真から抽出した方が実力が分かりそうなので、同じように抽出実験をしてみます。いい感じに複数人物+手の画像が映り込んでいるフリー素材写真をお借りして、同じように2種類のプリプロセッサで抽出を試しました。


こちらが旧来Openpose fullで…


こちらがDW Openpose。

解説の余地もないほど、全くレベルが違いますね!


DW版で生成した画像がこちら。

プロンプト:1girl,1boy,hand on own chin, hand on own face,thinking, masterpiece,extremely detailed CG,official art,high resolusion

ほぼ正確に再現されていますが、女性が顎に当てている右手だけ、なぜか認識しませんでしたね。「hand on own chin」というプロンプトだと、元画像のような拳をあごに当てているポーズとは解釈しにくかったようです。


そこで、2つ目のCNに「Lineart realistic」を追加して、このような線画指示をしてみました。


こちらが生成結果。

左上はまあ合格点…という感じでしょうか?むしろ表情がいい感じに継承されてちょっと笑ってしまいました笑 下に組んだ手はどれも綺麗にできていますが、握りこぶしの形のボーンは解釈が幾通りもあるので、DW版と言えど難しいようですね。



今度は「手でハート」のポーズです。


とりあえずそのまま入れて生成してみました。ちなみに、こういうぱっとプロンプトが分からないポーズはそのままimg2imgに放り込んで「deep danbooruによる解析」ボタンで出てきますよ。直観で「make heart with hands」かな?と思いましたが、danbooru的正解は「heart hands」でした。敗北。


プロンプト:(heart hands:1.2),1girl,souryuu asuka langley, school uniform,smile,brown hair,masterpiece,extremely detailed CG,official art,high resolusion + LoRA


【生成結果】

いやあ…これはすごいですね。従来のOpenpose fullではここまできれいになりませんでした。


顔がややリアル調にバタ臭くなっているのは、高解像度補助の影響もありますが、顔抽出の情報を引き継いでいるからでしょう。参照元の画像が笑顔なので、表情ボーンも口角が上がっており、プロンプトで表情変更しにくそうに見えます。


DW Openposeには現状「Full」しかないので、これはしょうがない…。と思いがちですが、そんなことはありません!


そう、以前も紹介した拡張機能「SDwebUI Openpose Editor」を使えば、いくらでも抽出されたボーンの「あとから編集」をすることができますね。まだインストールしていない方は、こちらの記事をご参照ください。


インストールに成功していれば、プリプロセッサープレビューの右下に「Edit」というボタンがあるので、これをクリックすれば、こちらの画面が表示されます。

それぞれのドット(キーポイント)を一つずつ自由にドラッグして動かすことができますし、右クリックで消すこともできます。


左下のプルダウンメニューから「face」を探し、右端の「✕」をクリックすると、このように無事Face抽出だけを排除できました。そしたら、左上の「Controlnetにポーズ送信」をクリックすれば、顔抜きのボーン情報がControlnetに送られます。


その状態で生成したのがこちら。プロンプトで「angry」を指定しました。

今度は顔の抽出情報に引っ張られずに生成できましたね。


4.手のボーン位置を修正してみよう


さて、こちらがさきほどの抽出情報ですが、よくみると親指の先が合っていなかったり、指も重なりあっていて綺麗ではないですね。ボーン情報を渡されたCNモデルもどう両手が重なり合っているか解釈の幅が広がってしまい、描きにくくなっている気がします。

そこで、各キーポイントをSDwebUI Openpose Editorのキャンバス上でうまく操作して、きれいに整えてみましょう。


キャンバス上の何もないところでドラッグすると、このように四角形の選択ツールが作動します。右手だけをまずは移動したいのですが、ボーンの上でドラッグすると左手の指先の青いキーポイントも範囲内に入ってしまうので、右手だけを動かすことができません。

(▲右手だけを動かしたいのに、この選択状態で右手を動かそうとすると、範囲内に巻き込まれた左手の指先もにょーんと伸びてしまいます)


そういうときは、先程フェイスラインを消したように、左のメニューから左手のボーンを「一時非表示」にします。リスト内から「left hand」の項目を探し、目のマーク「👁‍🗨」をクリックすれば、このように一時的に消える(▼)ので、あとは右手だけをいい位置に動かしましょう。済んだら、今度は逆の手を一次非表示にして整えます。


こちら(▼)が整えたあと。どうでしょう、見た感じは左右の指が重なっておらず、さきほどよりいい感じに見えます。さっそく、こちらを「Controlnetにポーズ送信」して生成してみましょう。


こちらが生成結果。おおむね良いのではないでしょうか!それぞれが何の指かぱっと見でわからなかったのですが、きれいに見せるためには小指にあたる部分をうまく調整してあげれば良さそうですね。


背景にリボンなのかなんなのか…という謎のオブジェクトが出ていますが、これはおそらくLoRAが過学習なのと、「Controlnet is more important」の影響もあるんじゃないかと思われます。


「Balanced」に変更して生成するとこんな感じ。むしろ、あまり正確にボーンを再現しないほうが逆に自然に見えるかもしれませんね。「heart hands」の影響で手で作ったハートの中や空中にハートマークが浮かんでいますが、気に入らなければ謎オブジェクトと一緒にLamaCleanerしてしまえばOKです。


ちょちょっと加工したらあっというまにイラストに。さっきの4枚の右上の画像から余計なものを削除して、ハートのエフェクトを掛けるのにせいぜい15分くらいです。


5.顔の向きを変えてみよう

さて、今度は手と同じようにして、顔のボーンを動かすとどうなるでしょうか?


やり方は一緒です。まず、「Person」の横の👁‍🗨をクリックして、ボディのボーンを一時非表示にしましょう。こうすると、FaceとHandのボーンだけが表示された状態になるので、顔部分全体を選択>ドラッグして位置を動かします。


どう動かしてもいいんですが、今回はこのように右を向いているイメージにしてみました。選択した範囲の枠を横方向にドラッグすると、このように横幅を縮めることができます。(回転も可)


ちなみに、再度👁‍🗨をクリックしてボディのボーンを表示させると、もともと表示されていなかった足首などのボーンもONになってしまうため、このように左上の原点に存在しないボーンがどんどん表示されてしまいます。いらないドットは右クリックで消せるので、慌てずに消してしまいましょう。ついでに、目や耳の位置を示しているボディのボーンも消しておき、Faceの白いドットだけにします。



これが完成した状態。ちゃんと右を向いているボーンに見えますね!


プロンプトもちゃんと横向きになるように少し調整して、生成してみましょう。


プロンプト:(heart hands:1.2),simple background,white background,grin,smile,1girl,souryuu asuka langley, looking away,facing away,school uniform,brown hair,interface headset, suspender skirt, red ribbon, white shirt, school uniform, masterpiece,extremely detailed CG,official art,high resolusion,bare hands,nice hands +LoRA



はい、いきなり大成功でした!

二次元キャラクターの顎下からの横顔は本当に難しいと思うのですが、特に左下は自然で驚きました…。登場人物のキャラクターLoRAを作ってこの技術と組み合わせたら、本当に容姿一貫した漫画が作れてしまいそうですね。


6.表情を変えてみよう

今度は顔立ちを変えてみます。さっきはドラッグして一括移動させましたが、ちまちまこの白いドットを移動させて、怒り眉にし、目をツリ目にしてみます。


こちらが生成結果。まゆはさほどでしたが、ややツリ目になったかな・・・?プロンプトはそのままだったので、さほどビビッドに変化はしませんでしたね。顔の向きはともかく、表情に関してはプロンプトで工夫したほうがラクなようです。


では、プロンプトでもなかなか難しい、極端な表情だとどうでしょうか。たまたま昔生成した「mouth wide」な画像を呼び出して、さらにドットをいじって大きな口にしてみます。


(※本題から脱線しますが、こういう過去の生成画像からざっと漁るのに、画像整理データベースソフト『Eagle』は非常に便利です。29.95ドルする有料ソフトですが、プロンプトや生成情報を付与して非常に取り出しやすく整理してくれるので、その価値は十分にあると感じています)

さて、こちらの画像をもとに生成すると…


おおむねイケました!

ただ、口の中の描写が変になる(あらぬ位置に歯が生えてたりする)ケースがほとんどだったため、これはえっち系のLoRAを入れてなんとかしています。餅は餅屋ですね。


ドットをちまちま移動させて表情をいじるのはやや手間が掛かる上、プロンプトやLoRAで制御したほうがずっと簡単なので、このテクニックを使う場面は限られるかもしれません。


AIはデフォルメした漫画表情(>_<)←こういうやつが苦手なので、それくらいはAIの力を借りず、手描きでささっとレタッチできたほうがよいかな・・・?と思ってます。


おまけ:「マンガパース」は再現できる?

AIイラストのみならず、手描きでも難しいのが立体感のある「パース」の効いた構図です。特に、体の一部を非常に大きく見せるような構図で遠近感を出す、マンガチックなパースは相当難易度が高く、AIイラストにおいても非常に難しいものです。とはいえ、今年3月時点でもControlnet「depth」やCannyを使って再現することもできなくはありませんでした。(▼)


当時作ったものでお恥ずかしいのですが、こうしたパースの効いたイラストをDW Openposeで作ることはできるのでしょうか。


とりあえず、さきほどのイラストをそのまま読み込ませてみました。


拡大するとこのような感じ。左右の手の大きさは明らかに異なっており、きちっと抽出できているように見えますが、これをちゃんと生成できるでしょうか。


こちらが生成結果です。まずControlモード「Balance」がこちら。

手をこちらに突き出しているのはどれも合格ですが、指の解釈はまちまちで、特に人差し指が「まんまる」になる元画像の感じは出せていません。


こちらは「Controlnet is more important」版です。

こちらに手を突き出すことは成功していますが、手を再現するのはなかなか難しいようですね。


実験として、突き出している手のボーンを巨大化させてみます。


こちらも、さほど変化ありませんでした。パースもからんだ複雑な手の形になると、ボーンが正確でもそこから絵を作り出すことが難しいようですね。


今度は、もっと単純なパース構図で試してみました。


手がアップになりすぎたせいか、なぜか指が多数検出されてしまったので、いらない部分を右クリックで削除します。

プロンプト:(reaching towards viewer:1.2),1girl, nice hands,perfect hand,outstretched hand, palms, spread fingers,<lora:GoodHands-vanilla:1>,masterpiece,extremely detailed CG,official art,high resolusion


生成結果がこちら。

うーん、さすがのDWpose技術でも、極端なパースになると手をうまく描けなくなってしまうようですね。これは抽出ボーンを受け取るモデル側の問題だと思います。さきほど大きく口を開けさせる実験のときにLoRAを使ったように、パースの効いた画像で学習させたLoRAを使うなどすれば、うまくいくかもしれません。


単独では無理なようなので、2つ目のCNとしてLineartを起動し、このように手の部分を黒字バックで読み込ませます。


こちらが生成結果。Depthを使ってもよいかもしれませんが、他のCNと組み合わせてあげる方法でも、漫画パースの再現は不可能ではなさそうですね。



こちらはお遊びで作った「チャリで来たミオリネさん」。

複数キャラが重なり合う絵がよりスムーズに作れるようになったと思います。もしかして、Z世代にはこれを知らない読者がいるんじゃないかとふと気づきそうになりましたが、忘れることにします。




終わりに

あっという間に1本記事が書けてしまうほど画期的な「DW Openpose」プリプロセッサ。もともとOpenpose Editorを使えば同じことはできたわけですが、旧Openpose fullはここまで正確にボーン抽出をできなかったため、使う場面は限られていました。DW版の登場によって、モデル画像から簡単に正確なボーンを抽出して、しかも位置を自由に動かせるようになったわけですから、さまざまな場面で創作を助けてくれることは間違いないでしょう。


特に、複数Controlnetを使ってポーズ差分を作るテクニックが単純にクォリティアップしたわけですから、AI漫画によくある「何百枚と同キャラ生成して、たまたまできた品質の良いものをつなぎ合わせて漫画にする」という手法をもっとスマートにできるはずですね。


また、従来のOpenpose技術のリポジトリについては、論文を発表したカーネギーメロン大(CMU)が商用利用する場合年25,000ドルのライセンス契約を結ぶよう求めており、SDwebUI用Controlnetの実装者のみならず、「我々Controlnetユーザーがopenpose fullなどのプリプロセッサを使って画像生成した場合も、これに当てはまってしまうのでは?」と不安視する向きがありました。プリプロセッサ「DW openpose full」に使われているDWpose技術はApache 2.0 Licenseなので、そうした心配をせず活用することができますね。



そんなわけで、駆け足でしたが「新プリプロセッサDW openpose降臨!旧Openposeよりどうスゴイ?」でした。ここ最近、今年1月時点では大変難しかったAIまんが制作をもっと楽にする技術が大変充実してきていて、嬉しい限りですね。次回はいよいよ自キャラLoRAの制作に移り、Controlnet技術と組み合わせて容姿一貫したキャラクターで自由な絵作りができるかどうかを検証していきたいと思っています。


それでは、また近いうちに!スタジオ真榊でした。



おまけ




Attachments (49)

3AEkGkROmNF6LmANsN2FnowQ.png

3AEkGkROmNF6LmANsN2FnowQ.png

8oUYyYiAOtc7tMe0KQhH4lu8.png

8oUYyYiAOtc7tMe0KQhH4lu8.png

BDodviDQqZ1CJVpR02t81YS1.png

BDodviDQqZ1CJVpR02t81YS1.png

lgsMCRGtOgvZfUhxpRx1s5qe.png

lgsMCRGtOgvZfUhxpRx1s5qe.png

zR9QSQIHBBy21PjVb6hepFYj.png

zR9QSQIHBBy21PjVb6hepFYj.png

uEXP56nYESWMQgBSG2WcnVpu.png

uEXP56nYESWMQgBSG2WcnVpu.png

3j8Fa4uZ77t0zDYN8bKNKh1H.png

3j8Fa4uZ77t0zDYN8bKNKh1H.png

V8M6TOaUOMWlrreW2MyGDh1F.gif

V8M6TOaUOMWlrreW2MyGDh1F.gif

8l80VhPVYQ1FSMlM31vn7xkV.png

8l80VhPVYQ1FSMlM31vn7xkV.png

hOy5I2MK5WyB896tzXHiS1N8.png

hOy5I2MK5WyB896tzXHiS1N8.png

k4tPFqa8yY1vhQxfkGnM7Ngl.png

k4tPFqa8yY1vhQxfkGnM7Ngl.png

cxuyw6mnhFrrUqojmq57lUFM.png

cxuyw6mnhFrrUqojmq57lUFM.png

FbPN25DBC37uuMutmwAHNTvR.png

FbPN25DBC37uuMutmwAHNTvR.png

3FXmRaAmN6AU3Z9vZ2zAhjSb.png

3FXmRaAmN6AU3Z9vZ2zAhjSb.png

hUKqq3sWX6kdFaUgLmpSTwdt.png

hUKqq3sWX6kdFaUgLmpSTwdt.png

cmM3gBwFuMahE0wTXpVpCgk1.png

cmM3gBwFuMahE0wTXpVpCgk1.png

fUD8T8yRVYAbagG1iqIS9qF7.png

fUD8T8yRVYAbagG1iqIS9qF7.png

46QcKZappcgxfCbkydt51f52.png

46QcKZappcgxfCbkydt51f52.png

uWTHDQbn7eW5eBohkPcdWCEP.png

uWTHDQbn7eW5eBohkPcdWCEP.png

MriF7yP8gWGMPg0LasbyGnGr.png

MriF7yP8gWGMPg0LasbyGnGr.png

B0kssozL0z6GmBy9HBudCn14.png

B0kssozL0z6GmBy9HBudCn14.png

GHuuiag28ImmlG5ZzhElNLvm.png

GHuuiag28ImmlG5ZzhElNLvm.png

WF5ZxHGtyST9oDYyiB4ydHAk.png

WF5ZxHGtyST9oDYyiB4ydHAk.png

Ybcs5gsmQThMax4A68qnJ42v.png

Ybcs5gsmQThMax4A68qnJ42v.png

nC1ukwtRqXIH12UQG4CSn8ty.png

nC1ukwtRqXIH12UQG4CSn8ty.png

sTcbii4LZyZaqgq3RbsWEzR9.jpeg

sTcbii4LZyZaqgq3RbsWEzR9.jpeg

F83bNtjeKAOH7zXBWvARDOFG.png

F83bNtjeKAOH7zXBWvARDOFG.png

uVCDrFGry2pJQSbOq4hAzMOY.png

uVCDrFGry2pJQSbOq4hAzMOY.png

bJzqQE6923ncTapDaDZRXT5s.png

bJzqQE6923ncTapDaDZRXT5s.png

tTT66TvyxxGu1hvEBCuUmch8.png

tTT66TvyxxGu1hvEBCuUmch8.png

9bbNRbprKbttczcOmVf4nSZb.png

9bbNRbprKbttczcOmVf4nSZb.png

cHfgANQDdZWLATyme1C9x2Ou.png

cHfgANQDdZWLATyme1C9x2Ou.png

A2TOPxZR9QXMLvihRCv6Nzhe.png

A2TOPxZR9QXMLvihRCv6Nzhe.png

lRQ6xNsNLo2DBb2oQ9xO00Xm.png

lRQ6xNsNLo2DBb2oQ9xO00Xm.png

rX0cKDjqadPMVOmoNp9GluX7.png

rX0cKDjqadPMVOmoNp9GluX7.png

2NohdQuaBvCaqOrwJ2LTfT9C.png

2NohdQuaBvCaqOrwJ2LTfT9C.png

FtnsD0Mmb1ms5qsFxFTVAl99.png

FtnsD0Mmb1ms5qsFxFTVAl99.png

TT2qLg98qEroEul2q9zYpKM8.png

TT2qLg98qEroEul2q9zYpKM8.png

Yt4o9xdeSeb8nw4vIjVUWznT.png

Yt4o9xdeSeb8nw4vIjVUWznT.png

s6QqnmMsnEqMMxxKfXaVxE9e.png

s6QqnmMsnEqMMxxKfXaVxE9e.png

DdwvzlyleRngXO8KAflwBxrF.png

DdwvzlyleRngXO8KAflwBxrF.png

y0nypzfpBkKo22z89GsEA87h.png

y0nypzfpBkKo22z89GsEA87h.png

A3hpUtr25hWIGuVURQULTB6U.png

A3hpUtr25hWIGuVURQULTB6U.png

ovhWM0LXIs0dY4swAzltPuN5.png

ovhWM0LXIs0dY4swAzltPuN5.png

ng4HzWUhGDNZKQWOrmRQ24tG.png

ng4HzWUhGDNZKQWOrmRQ24tG.png

Bv0TK9NHBdQQBAXpmShw8fU6.png

Bv0TK9NHBdQQBAXpmShw8fU6.png

Wg0rQlBSJ35odMifsNhAlcTv.png

Wg0rQlBSJ35odMifsNhAlcTv.png

q4woQmcA74WwQpVO9GTKB92R.jpeg

q4woQmcA74WwQpVO9GTKB92R.jpeg

qd2NnpXcsHVTlxmEQcCuIg4e.png

qd2NnpXcsHVTlxmEQcCuIg4e.png