新プリプロセッサ「DW openpose」登場!旧Openposeよりどうスゴイ? (Pixiv Fanbox)
Content
こんばんは、スタジオ真榊です。今夜は知らぬ間に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」を使えば、いくらでも抽出されたボーンの「あとから編集」をすることができますね。まだインストールしていない方は、こちらの記事をご参照ください。
最新のControlnetで差分イラストを作ろう!(ポーズ差分編)
こんばんは、スタジオ真榊です。前回の「表情・服装編」に続き、Controlnetで作れる現状で一番簡単な差分の作り方について検証したいと思います。今回は「ポーズ差分編」です! このように、ポーズを一部だけ改変したり… キャラデザインや背景を維持したまま、Openposeで全身異なるポーズに変更したりする方法について検...
インストールに成功していれば、プリプロセッサープレビューの右下に「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,,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技術と組み合わせて容姿一貫したキャラクターで自由な絵作りができるかどうかを検証していきたいと思っています。
それでは、また近いうちに!スタジオ真榊でした。
おまけ