StableDiffusionで複雑なポーズを取らせるのは難しいですよね。
プロンプトだけで、何とか腕の位置や顔の傾きを記述しても、うまく反映されないことが多いと思います。
そんな時に使えるControlNetが「Openpose」と「3D Openpose」
この機能を使えば、棒人間を自分でデッサン人形のように動かして、そのポーズを絵に反映することが可能です。
ただどちらを使うのが良いか、悩んでしまうこともあると思います。
特に3D Openposeは情報も少ないので、Openposeに比べてどうなるかを知りたい人もいると思います。
そこで今回は「似た棒人間から出力した場合の結果」から、2つを比較してみたいと思います。
結果
・棒人間から出力される結果は同じ
・出力された絵に差があるのは作り方に差があるため(同様の棒人間にできないため)
この記事を読むと
「Openpose」と「3D Openpose」の出力結果の比較結果の詳細が分かります。
※記事内に広告が含まれています。
使用する棒人間を出力する
「Openpose」と「3D Openpose」も棒人間を自分で作成する必要があります。
Openposeでは「OpenPoseEditor」、3D Openposeでは「3D Editor」を使用して棒人間を生成してみます。
それぞれのインストールや使用方法は下記の記事を参考にしてください。
openpose Editorで作成
まずはOpenPose Editorを使用して、作成していきます。
プロンプトだけでは説明が難しいポーズの方が、比較がしやすいと思います。
そのため下記のようなポーズにしてみました。
出力された棒人間
3D Editorで作成
次に同じようなポーズを3D Editorで作成していきます。
正面から見たときに、同じようなポーズになるように動かしていきます。
大体ポーズが同じになったら、拡大縮小を行ってOpenPose Editorで作成した棒人間と同じ大きさ(距離感)にします。
3D OpenposeはOpenpose Editorと違い、画像の縮尺で棒人間の大きさを決定します。
そのため生成したいサイズに合わせて、縮尺を設定する必要があります。
縮尺によって棒人間の大きさが変化する(上図:近い→大きい、下図:遠い→小さい)
最終的にOpenPose Editorと同じような画になるように調整します。
出力された棒人間
棒人間を比較
出来上がった棒人間を比較してみます。
似たポーズを取らせることはできましたが、Edtorが違うため完全に一致するものは作成できませんでした。
openpose
3D openpose
絵を出力
実際に作成した棒人間から絵を出力してみます。
設定
ControlNetの寄与度を確認するために、プロンプトはあえてシンプルに下記のようにしました。
プロンプト
best quality, masterpiece, 16k, ultra detailed, beautiful skin, professional lighting,
1 girl, 18 years old, school playground, school uniform, sailor suit
ネガティブプロンプト
flat color, flat shading, nsfw, many legs, retro style, poor quality, bad face, bad fingers, bad anatomy, missing fingers, low res, cropped, signature, watermark, username, artist name, text, hair ornaments, tie, cap, bow tie
他設定値
設定名称 | 設定値 |
Sampling method | DPM++ 2M Karras |
Sampling steps | 30 |
CFG Scale | 8 |
Width | 512 |
Height | 512 |
ControlNetはOpenposeを使用するため、下記のような設定にします。
注意すべき点はPreprocessorを「none」で実行することです。
また、今回はControlNetの寄与度を上げるためにControl Modeを「ControlNet is more important」としています。
Openpose
Openposeの画像を使用して出力された結果が下記になります。
棒人間に対して、近い造形で出力されたことが分かります。
ただし画像サイズが小さいこともあって、手の平の造形が上手くありません。
また右手の向きが、棒人間では体側にまげているのに対して、出力された絵では伸ばしていることが多いのが分かります。
3D Openpose
3D Openposeの画像を使用して出力された結果が下記になります。
棒人間に対して、近い造形で出力されたことが分かります。
ただし画像サイズが小さいこともあって、手の平の造形が上手くありません。
比較
比較した画像が下記になります。
openpose
3D Openpose
見ればわかる通り、特に違いや優劣は有りません。
と言うのも、3D openposeは結局3Dで棒人間を作れるだけで、棒人間を作った後の処理=画像生成で用いるControlNetはopenposeと同じだからです。
そのため、画像に差があるのは棒人間に差が出来ているためであり、もし全く同じ棒人間を作れた場合、同じ結果が出力されると考えられます。
ではこの2つに違いはないのかと言うと、そういう訳ではありません。
棒人間の作り方や、構図、焦点の当て方など、作りたい絵から逆算して使用する方を選ぶ方が効率が良いです。
まとめ
今回は「似た棒人間から出力した場合の結果」から、2つのopenposeの比較について紹介しました。
改めて2行でまとめると…
・棒人間から出力される結果は同じ
・出力された絵に差があるのは作り方に差があるため(同様の棒人間にできないため)
出力結果から2つの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画像生成サービスを使うのも良いです。
コメント