stable diffusion でポーズを指示しても、なかなか期待通りのポーズを作ってくれません。そんな時の救世主が Control Net です。Control Net と棒人間(=骨格データ)を使ったポーズの作り方については、「【入門】画像生成の革命!Control-Netの使い方(Stable Diffusion Web UI)」に詳しく記載しています。
今回は、Control-Net のポーズ指示で使われる「棒人間」を作る拡張機能「Openpose Editor」について紹介したいと思います。
インストール方法
インストールはstable diffusion web ui のExtensions タブから行います。インストールは数秒で完了するので、web ui 画面を再起動すれば、すぐに使えるようになります。
Openpose Editorをインストールする
stable diffusion web ui の「①Extensionsタブを選択」⇒「②Install from URL」を選択します。次に、 "URL for extension's git repository"欄に下記の「③URLを貼り付け」、「④Installボタンをクリック」して下さい。
https://github.com/fkunn1326/openpose-editor
以上でインストールは完了です。
stable diffusion web ui を再起動する
次に、stable diffusion web ui を再起動します。
「⑤Installed を選択」⇒「⑥Extensionにチェック+URLが表示されている」⇒「⑦Apply and restart UIボタンをクリック」の順に実行すれば完了です。
stable diffusion web ui が立ち上がったら、「OpenPose Editor」タブが表示されているはずです。
使い方
OpenPose Editorのタブを選択すると、下記の画面が表示されます。
①棒人間画像のサイズ設定 | 縦と横の画像サイズを指定します。 実際に生成する画像のサイズと合わせる方が無難ですが、 違っていても問題は無いようです。 |
②棒人間の追加 | ボタンを1回押すと、棒人間が1つ追加表示されます。 |
③編集エリア管理 | Rset:棒人間編集エリアをクリア Load from Json:Jsonファイルから棒人間画像を復元 Detect from Image:不明 Add Background Image:棒人間編集エリアの背景画像を指定 Presets:保存 Load Preset: Save Preset:棒人間画像を名前を付けて保存します。 |
④棒人間画像の編集エリア | 関節部分をマウスでドラッグ&ドロップし、形状を編集します。 複数の棒人間を表示し、編集することも可能です。 |
⑤他機能との連携 | Save Json:棒人間画像の骨格情報をJsonファイルとして出力 Save PNG:棒人間画像をPNG形式の画像ファイルとして保存 Send to txt2img:txt2img上のControlNetに棒人間画像を転送 Send to img2img:img2img上のControlNetに棒人間画像を転送 Send To:不明 |
Presetsの保存場所
Save Preset で保存した棒人間画像のデータは、Jsonファイルフォーマットで下記の場所に保存されまています。
Preset として保存する機能はあっても、Presetを削除する機能はありません。削除する場合はpresets.json を直接編集する必要があります。
棒人間の骨格編集
棒人間の関節部分(●の部分)にマウスカーソルを当てると十字カーソルに変化します。その状態でドラッグ&ドロップすると、間接部分を移動できます。
関節部分を移動させると、それに応じて手や足の長さも変わります。長さに特に制限はないため、あまり移動しすぎると、不自然なポーズになるのでご注意ください。
Control Netへの棒人間画像の送信
Send to txt2img(又は Send to img2img) ボタンをクリックすると、txt2img(又は img2img)上のControl Netに作成した棒人間画像が転送されます。
Control Net 側の設定
Control Net 側では、「①Enableにチェック」⇒「②OpenPoseを選択」⇒「③noneを選択」順に設定して下さい。
この時、「②OpenPose」をクリックした時点で、Modelに「④control_v11p_sd15_openpose」が選択されているはずですが、もし違うものが選択されていた場合は「④control_v11p_sd15_openpose」を選択して下さい。
後は、プロンプトにキーワードを入力し、Generateボタンを押すだけです。
棒人間を使った画像生成結果(サンプル)
試しに画像を生成した結果、次の様になりました。ちゃんと棒人間通りのポーズになっています。ポーズが自然になるよう、AI側が様々なオブジェクト(今回は扉)を描き出してくれます。
棒人間の編集内容と生成画像の比較
棒人間をどう編集すれば、どんな画像が生成されるのか、ちょっと試してみました。
手や足の長さによる変化
棒人形の左が初期状態、右が変化させた結果です。それぞれについて画像生成結果を隣に置きました。
手足の長さが変わっても、多少長さのバランスが悪くなっても、それほど画像の破綻は起きませんでした。ただし、4枚目の棒人間の場合は生成画像が大きく破綻しました。
4枚目の棒人間は何度やっても大きく破綻するので、おそらくAIがこのポーズを学習していなかったのではないかと思われます。
このように、一見問題なさそうな棒人間でも画像が破綻することがあるので注意しましょう。
足を曲げるとどうなるかについて実験してみました。両足を同じように曲げると座ると解釈するようです。何度やっても座った写真しか生成されませんでした。
また、3枚目は膝を抱えさせようと思ったのですが、うまくいきませんでした。
片足だけを曲げた場合、座っている画像の比率が多いものの、立っている画像も生成されました。この辺はガチャの運次第といったところです。
片足だけを曲げた状態で、手を変化させてみました。両腕を少し上げてやることで、ほぼ100%立ちポーズになりました。
4枚目はもう片方の足を曲げてみた結果ですが、さすがに両足とも曲げると座ったポーズになるようです。
意図したポーズにするためのノウハウが色々とあるようですが、今回はここまでにしたいと思います。
様々なポーズが公開されているので、研究してみると面白そうですね。
まとめ
今回はControl-Net のポーズ指示で使われる「棒人間」を作る拡張機能「Openpose Editor」について、インストール方法と使い方について紹介致しました。
また、編集結果と生成画像の関係についても、軽く実験した結果をご紹介しました。
Openpose Editorを使うと、好きなポーズがゼロから作れるようになりますが、意図した結果にならなかったり、ちょっとしたことで画像が破綻することもしばしば発生します。
また、線の構成だけでポーズを作成するため、複雑なポーズになるほど最終結果のイメージが把握しづらくなります。
でも、幸いなことに、既に様々なポーズがcivitai で公開されています。イメージに近いポーズを探して、それに手を加えて仕上げていく方法が最も現実的かと思います。
そうやっていくうちに、だんだん複雑なポーズも作れるようになるんじゃないでしょうか。
そう考えると、改めてOpenpose Editorの有難みを実感します。
棒人間を使ったポーズ指定に興味を持たれた方は、是非この記事を参考にして、実際にやってみてください。
コメント