StableDiffusionで複雑なポーズを取らせるのは難しい。
そんな時にControlNetの「OpenPose」と「3D OpenPose」を使用した方法があります。
前回の記事では、「似た棒人間から出力した場合の結果」という出力結果から比較してみました。
当然ですが結果は、同様の絵が描けるという物でした。
なので今回は機能や使いやすさといった、「使用する際の使い勝手」という点で、より実践出来な比較を行ってみたいと思います。
ポーズの取りやすさ、被写体の角度、構図、骨格の正確さなどの観点から比較していくので、参考になれば幸いです。
結果
・詳細がいらないくて、直感的に素早く作成したいならOpenPose
・手足の長さなど骨格情報がおかしくならないのは3D OpenPose
・構図にこだわったり、手足の造形も同時に行いたい場合は3D OpenPose
この記事を読むと
「OpenPoseEditor」と「3D Editor」の使用方法での比較結果の詳細が分かります。
「OpenPose」と「3D OpenPose」の出力結果の比較結果の詳細が分かります。
※記事内に広告が含まれています。
各メリット、デメリット
「OpenPose」と「3D OpenPose」はそれぞれ「OpenPoseEditor」と「3D Editor」で棒人間を作成します。
そのため、「OpenPoseEditor」と「3D Editor」のメリットデメリットを下記表にまとめてみました。
メリット | デメリット | |
OpenPose Editor | ・直感的に操作がしやすい ・出力される棒人間が分かりやすい ・OpenPoseで絵から作成した棒人間を編集可能 | ・正面以外の構図が作りにくい ・棒人間の骨格が崩れやすい ・手の平の情報は個別で設定が必要 |
3D Editor | ・正面以外の構図も簡単に作成可能 ・人間の骨格が崩れることはほぼない ・手の平も同時に編集保存可能 | ・慣れるまで操作がやりにくい ・出力される棒人間が分かりにくい ・基本的に1から編集が必要 ・子供など骨格を変えたい時に、各支点の距離の変更が難しい |
どちらも出力するものは、OpenPoseに入力するための棒人間です。
出力した棒人間での比較は前回ブログを参照ください。
ポーズの取らせやすさ
基本となる棒人間にポーズを取らせるのは、圧倒的にOpenPose Editorの方が楽です。
OpenPose Editorは動かしたい点を、ドラッグアンドドロップしながら任意の場所に動かすだけで、ポーズを取らせることが出来ます。
しかし3D Editorは三次元で動かす都合上、動かしたい支点をクリックしてから、XYZ軸のどれかをドラッグしながら動かす必要があります。
そのためOpenPoseのように、直感的に点を動かすわけではないので慣れが必要です。
また体の中心に近い点から動かしていく必要があり、構図を大きく変化させたい時は不便です。
OpenPose Editor
3D Editor
骨格の正確さ
棒人間の見た目は違和感なく出来ているのに、実際ControlNetを使用すると骨格がおかしい画像が生成されていることは良くあります。
OpenPose Editorは支点を簡単に動かせる反面、人間の骨格から外れてしまいやすいのがデメリットです。
3D Editorは骨格の支点を軸にして、回転させているだけなので、意図的でない場合は、人の骨格から外れません。
OpenPose Editorも3D Editorも棒人間だけを見ながら棒人間を弄るため、その場で判別は付きにくいですが、3D Editorであれば基本的に変な骨格にはならないです。
被写体の角度
正面からの絵を描き合い場合も多いと思いますが、例えば後ろから振り向いている構図や、下から見上げる構図なども作成したいしたい時もあると思います。
OpenPoseでは、作成した構図に類似した画像があるならば、そこから棒人間の情報を取得して、修正すると良いと思います。
しかし1からそれを作成するのは難しいでしょう。
その場合は3D Editorで作成して、アングルを作成した構図に合わせて動かすことで簡単に作成することが可能です。
手の情報
OpenPoseの機能では、手足はそれぞれ手首と足首までの情報となっています。
実際棒人間を見ても手のひらの情報などはありません。
そのため、OpenPose Editorで作成した場合は、別途Depth Library等を使用する必要があります。
しかし 3D Editorでは、手の平や指の骨格情報も編集可能なため、同時に編集して保存が可能です。
ただし指の情報は、点が細かく数も多いので編集には多少の慣れが必要となります。
編集した手の情報はDepthやCannyとしてControlNetで使うことが可能となります。
手の情報も他の骨格情報に合わせて編集した方が、後から追加で行うより自然になるので、そのような時にはとても有効です。
それぞれの使い方詳細
OpenPoseと3D OpenPoseの使い方の詳細は下記のブログを参照してください。
OpenPose
3D OpenPose
絵を出力
自由度
斜めからの画像
斜めからの構図で棒人間を作成するのは、3Dで作成する方が簡単です。
棒人間で斜めの構図を作成するのは難しく、3D Editorで作成したものを見ながら作成しました。
プロンプトは簡単に、斜めからの焦点という部分だけを記述しました。
プロンプト
1 girl, Focus from the diagonal side, (standing:1.4)
OpenPose Editor
なぜかOpenPose Editorの棒人間から出力した絵は、斜め後ろからの構図になっていました。
プロンプトを「Focus from the diagonal side」⇒「three-quarter view」に変えても、OpenPose Editorで作成した棒人間からは斜め後ろからの構図になりました。
Focus from the diagonal side
three-quarter view
3D Editor
正面で作成して視点を斜めに移動して棒人間を出力しました。
3D EditorではOpenPose Editorで作成した棒人間よりも、角度がついています。
しかし出力された画像は、正面の斜めからの画像になっていました。
棒人間比較
OpenPose Editor
3D Editor
見た目的には、OpenPose Editorで作成した画像の方が正面に近く見えますが、結果は逆でした。
真後ろからの画像
真後ろからの棒人間を作成するのは、どちらを使うかは人によって難易度が変わります。
後ろ向きのまま作成するのが得意か、正面向きで作成してから反転させるかで変わってきそうです。
使用するプロンプトは簡単に、下記の通りで実行しました。
プロンプト
1 girl, rear view, (standing:1.4)
OpenPose Editor
OpenPoseで作る際は、画像の端でドラッグアンドドロップしながら左から右に移動します。
その後、後ろ向きで棒人間を作成していく必要があります。
綺麗に反転させたり、立ち位置を調整するのが難しいですが、描きたい構図のままで描けるのがメリットです。
出力結果としては、8/8が後ろ向きで出力されていました。
3D Editor
斜めの時同様に、正面で作成して視点を背面に移動して出力しました。
逆に綺麗に反転させすぎたせいか、プロンプトで「rear view」と入れているのにもかかわらず正面の画像も出てしまいました。
出力結果としては、4/8が後ろ向きで出力されていました、そのため50%ぐらいが前後逆でした。
棒人間比較
個人的にはOpenPose Editorで作成する時に、反転させたタイミングで棒人間の骨格の比率がおかしくなってしまったり、立ち位置がずれるので難しく感じます。
そのため、3D Editorで正面を向いている状態で作成してから、反転させるの方が作成しやすかったです。
OpenPose Editor
3D Editor
手足の造形
OpenPose Editorには手のひらの情報を同時に載せることはできませんが、
3D Editorでは「depth」や「canny」の情報として一緒に出力することが可能です。
今回は両手をパーにした状態で比較してみたいと思うので、プロンプトは下記の通りで実行します。
プロンプト
1 girl ,front view, (standing:1.4),
par pose with both hands
OpenPose Editor
手足の情報はないので、プロンプトだけでどうなるかの確認を行いました。
出力された結果を見ると、手を開いているものもありますが数は少なく、プロンプトだけでは難しいことが分かります。
そして開き方も、指をきちんと開いているというよりは、指と指が着いているような画像が多かったです。
プロンプトでもう少し調整は可能でしたが、もう少し複雑な指の形にしたい時には限界がありそうです。
3D Editor
左の画像は、3D Editorで作成した棒人間とCannyの画像を組み合わせたものです。
出力された結果を見ると、きちんと手を開いてパーの形になっていることが分かります。
肘の角度に違いがありますが、この辺はプロンプトの制度を上げる必要がありそうです。
ただし手の形はControlNet無しで出力した時に比べて、綺麗に作れています。
このことからも、指の形を形成するのに慣れてしまえば、むしろ後での修正を少なくすることもできそうです。
棒人間比較
簡単な構図に対して、手のひらを描く場合はあまり恩恵を感じないかもしれません。
しかし、踊っている姿や、テーブルに腰かけて手をついている状態のように、手の角度や方向を説明するのが難しいものに関しては、とても有効だと思います。
OpenPose Editor
3D Editor
3D Editor+Canny
その他
子供や小人等作りたい場合、手足と胴体の長さが比率が大人とは変わります。
そんな時でも、プロンプトだけではなく、OpenPoseで棒人間を使用することで簡単に作成可能です。
今回は棒人間の手足の比率を低く(手足を短く)して、子供を作成してみます。
プロンプト
1 girl, child, 10 years age
OpenPose Editor
子供が出力されました。
StableDiffusionではプロンプトに「子供」や年齢を書いても、うまく反映されないことも多いです。
そのため、ControlNetで行うのはとても有効だと思います。
ただ、OpenPose Editorで1から作成するのは、骨格のバランスが難しいです。
可能であれば、フリーの子供の画像から棒人間の抽出して、弄る方が理想に近い造形になりそうです。
3D Editor
OpenPose Editor同様に子供が出力されました。
手足の長さを数字で調整する必要があるので、OpenPose Editorより難易度は高いと感じました。
棒人間比較
棒人間だけでは、あまり大人と違いは分からないかもしれません。
ただ、胴体の長さに対して手足の長さが短くなっています。
プロンプトだけでは子供の骨格を表現するのは難しいので、OpenPoseを使用する方がより正確に作成できます。
作成に完成しては、正面などであればOpenPose Editorの方が、直感的に変更することが出来ました。
3D Editorでは数値で長さを変更するため、手足の比率を合わせるのが難しかったです。
OpenPose Editor
3D Editor
まとめ
今回は「使用する際の使い勝手」という点からOpenPoseと3D OpenPoseの比較について紹介しました。
改めて3行でまとめると…
・詳細がいらないくて、直感的に素早く作成したいならOpenPose
・手足の長さなど骨格情報がおかしくならないのは3D OpenPose
・構図にこだわったり、手足の造形も同時に行いたい場合は3D OpenPose
躍動感のある絵をプロンプトだけで作るのは難しいです。
そんな時にOpenPoseを使うことで、より理想に近い絵を描くことが出来ます。
今までOpenPoseで棒人間を作ろうとして失敗した人も、3D OpenPoseを使用することで成功できるかもしれません。
この記事を読んで両方使えるようになり、より良い絵が描けるようになって頂けると幸いです!
StableDiffusionにお勧めのグラボ
ここまでの記事を読んでStableDiffusionを始めてみたいと思ったけど、どれを買ったか良いか分からない人向けに私の使っているグラボを紹介します。
私が使用しているグラボはNVIDIA GeForce RTX3060 搭載 グラフィックボード GDDR6 12GBになります。
StableDiffusionで絵を生成するときは、PCのCPUやメモリよりもグラボの性能が重要です。
StableDiffusionではVRAMが12GB以上であることが推奨されていますが、普通のゲーム用のグラボでは8GBのものが多いです。
経験上、一回のプロンプトで一発で望みの絵が出ることは少なく、10枚ぐらい出力してそこから近づけていく作業をします。
しかしVRAMが低いと1枚を生成する時間が長くなってしまいます(完全にVRAM依存ではないですが)
1枚の生成する時間が長いと、最終的なゴールまでの時間も多くかかってしまうので、推奨要領である12GBのグラボを買うことをお勧めします。
VRAMが低い=一度に計算できる数が少ない=生成速度が遅い
そのため解像度の高い絵を生成するのに時間がかかるだけでなく、生成できない可能性もあります(2GBや4GBなど)
Controlnet等、拡張機能を複数使用する場合やLora等の学習を行う場合は、より顕著にVRAMの差が出ます。
そのため単純にAIで出力してみたい。というだけでなく、その一歩先で色々やってみたい方は是非12GB以上を購入してみてください。
ちょっと試すだけなら、下記のような無料AI画像生成サービスを使うのも良いです。
コメント