【OpenPose】Stable Diffusionでポーズを指定して画像を生成する方法

Stable Diffusion ではプロンプトを元に様々な画像を生成することができますが、ポーズのプロンプトを組み込んでも必ずその通り生成されるわけではなく、複雑なポーズであれば尚更確率の低い作業になってきます。今回は「ControlNet」の「openpose」という機能を使って簡単にポーズを指定する方法をご紹介します。

①Openposeを導入する

今回は拡張機能であるControlNet内の機能を使用するので、「ControlNet」「Openpose」両方の導入が必要です。導入済みの方は②から進めてください。

関連記事

Stable Diffusionで画像生成を行う際に、思った通りの画像が出力されないことはないでしょうか。 Stable Diffusionで思い通りの画像を生成するためには、「ControlNet」という拡張機能を活用することが求[…]

どちらも同じ方法で導入することができます。

まずこちらのURLをStable Diffusion の「Extension」→「Install from URL」にある「URL from extension’s git repository」に貼り付け、「install」を押します。

ControlNet:

https://github.com/Mikubill/sd-webui-controlnet

Openpose:

https://github.com/fkunn1326/openpose-editor.git

「Install ボタン」の下にInstalled という表示されたら、「Extension」→「Installed」の「Apply and restart UI」をクリックします。

これで導入完了です。下の図のようOpenPose Editorが追加されていれば成功です。OpenPose Editorが表示されていない場合は再度Stable Diffusionを起動してみてください。

②ポーズを決める

まず初めにポーズを決めます。自作する方法と元画像からポーズを生成する方法の2つをご紹介します。

それぞれのボタンの役割はこのようになっています。

ボタン機能
Save Presetポーズを保存
Load Preset保存したポーズの呼び出し
Resetポーズを消去
Addポーズの追加
Detect from Image画像をアップしてその画像からポーズを作成
Add Background Imageポーズとは関係のない背景画像を表示

1:ドラッグしてポーズを決める

まず初めに棒人間の関節の部分を掴んでドラッグしてお好みのポーズを作ります。

「Add」で棒人間の追加ができ、複数人分のポーズを設定することができます。

2:画像を元にポーズを決める

参考にしたいポーズの画像がある場合は「Detect from Image」から参考画像を取り込むことで自動的にそのポーズの棒人間が作成されます。

3:ポーズをControlNetに移す

棒人間のポーズが決まったら「Send to txt2img」「Send to img2img」のボタンを押し、このポーズをそれぞれのControlNetに移します。今回はこのポーズで生成していきます。

④ポーズを固定して画像を生成する

先ほど生成した棒人間が「ControlNET」に入っています。早速パラメータを調整して生成してみましょう。下記に従って調整してください。

Enable
Pixel Perfect
Preprocessor:none
Model:control_v11p_sd15_openpose.pth

モデルはこちらからダウンロードし「stable-diffusion-webui」→「models」→「ControlNet」に入れ、Stable Diffusion上のモデル選択欄の横の丸い矢印を押してから選択してください。

Hugging face:https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main

これで生成準備ができました。一度簡単なプロンプトで生成してみます。

プロンプト:

1 girl

生成画像:

かなりイメージ通りのポーズで生成されました。もしうまくポーズが反映されない場合は「Control Mode」の「ControlNet is more important」を選択してみてください。

⑤元画像のポーズからそのまま生成する

棒人間を作らずともControlNet内の設定だけで元画像と同じポーズの画像を生成することができます。元となる画像をSingle Imageにアップし、Preprosesserをopenposeに変更して生成します。

プロンプト:

1 girl, smile

元画像:

Enable
Pixel Perfect
Preprocessor:Openpose
Model:control_v11p_sd15_openpose.pth

生成画像:

全く同じポーズで生成されました。かなり簡単にポーズの指定ができるようになりました。

まとめ

今回は自由にポーズを指定して画像を生成する方法をご紹介しました。今までプロンプトで説明文を作り何度も繰り返し生成して理想のポーズが出るまで繰り返す作業でしたが、Openposeを使うことで簡単に精度高く画像生成ができます。

かなりの時間の短縮になるのでぜひご活用ください。

~Stable Diffusionで素早く画像生成するには~

Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。 このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。 推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。 2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。 コスパを重視する方は、RTX 3060を選ぶと良いでしょう。 このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。