DWPose(DW Openpose)とは画像に写る人物のポーズを推定するためのモデルです。
Stable Diffusionなどの画像生成AIに応用することで、生成画像の人物のポーズを制御できます。
これまで画像生成におけるポーズの指定にはOpenposeという技術が使われていましたが、手や指や表情などの細かいポーズの制御は困難でした。
しかし、DWPoseを使うことでこれらの特徴を細かく指定できるようになり、生成画像の品質もよくなります。
この記事では、Stable Diffusion web UIにDWPoseを導入して人物のポーズをコントロールする方法を解説します。
DWPoseとは?
DWPoseとは、論文『Effective Whole-body Pose Estimation with Two-stages Distillation』をもとに実装された姿勢推定のためのAIモデルです。
本来は画像中の人物のポーズを推定するためのものですが、Stable DiffusionのControlNetに応用することで、生成画像の人物のポーズを細かくコントロールできます。
ありがたいことにStable Diffusion web UIのControlNetがすでにDWPoseに対応しています。そのため、面倒なインストールをしなくてもポーズを指定した画像を簡単に生成できます。
※この技術の正式名称はDWPoseです。Openposeとは関係がありませんが、Openposeの代用として知られたためか「DW Openpose」と呼ばれています。そのため、この記事では必要に応じてDW Openposeという名称を併記します。
DWPose(DW Openpose)を使う準備
Stable Diffusion web UIでDWPoseを使う方法を紹介します。
DWPoseのインストール
Stable Diffusion web UIのControlNetがすでにDWPoseに対応しているため、DWPoseを自分でインストールする必要はありません。
代わりにControlNetのバージョンをv1.1.237以上にアップデートします。
ControlNetのインストール(まだインストールしていない場合)
まだControlNetをインストールできていない場合は以下の方法でインストールします。
※すでにControlNetをインストールした場合は、次の「ControlNetのアップデート」に進んでください。
まず以下のURLをコピーします。
次にStable Diffusion web UIのExtensionsタブを開きます。
Install from URLタブを開いて先ほどコピーしたURLを「URL for extension’s git repository」に貼り付け「Install」をクリックします。
これでControlNetのインストールは完了です。
ControlNetのアップデート
ControlNetをアップデートするには「Extensionsタブ」→「Installedタブ」→「Check for updates」をクリックします。
アップデートのチェックが始まります。
完了すると表の右側に「new commits」というチェックマークがでてきます。
この状態でApply and restart UIをクリックします。
もう一度「Extensionsタブ」→「Installedタブ」を開き表の中の「sd-webui-controlnet」のUpdateが「latest」になっていれば更新は完了です。
ControlNetのアップデートが完了できていれば、Stable Diffusion web UIの「txt2imgタブ」のControlNetパネルのPreprocessorに「dw_openpose_full」が表示されます。
DWPose(DW Openpose)の使い方
ここからは具体的な使い方を見ていきましょう。
Stable Diffusion web UIを開いたら「ControlNet v1.1.xxxx」のパネルを開きます。
「Drop Image Here」にまねさせたいポーズの画像をドラッグアンドドロップします。
ここでは以下のフリー画像を使用させていただきます。
女性が画面右側に向かって指を指している画像です。
画像をドラッグドロップできたら、次のように設定をします。
- Enableにチェックを入れる
- Allow Previewにチェックを入れる
- Preprocessorにdw_openpose_fullを選択
- Modelにcontrol_v11p_sd15_openposeを選択
※Modelの「control_v11p_sd15_openpose」がない場合はHugging Faceからダウンロードして「stable-diffusion-webui\models\ControlNet」フォルダの中に「control_v11p_sd15_openpose.pth」ファイルを置いておきます。それからModelの横の水色の更新ボタンを押すと「control_v11p_sd15_openpose」が出てきます。
以上の設定ができたら適当なプロンプトを入力して画像を生成してみましょう。
ここではモデルに「bra v5」を使用しました。
生成した結果が以下です。
多少の指の不自然さはありますが、もとの画像のポーズを比較的よく再現しています。
表情も再現できています。
DWPose(DW Openpose)によるポーズの推定結果は、ControlNetの設定を開いてPreprocessorとModelの間にある赤いギザギザしたボタンを押すと確認できます。
もとの画像の横にプレビューが表示されます(表示されない場合はAllow Previewにチェックが入っていることを確認してください)
DWPose(DW Openpose)では指の動きや表情までよく推定できていることがわかります。
このようにDWPoseをControlNetに使うことで、生成する画像の人物のポーズを細かくコントロールができます。
ポーズを編集するには?
DWPoseで推定したポーズをStable Diffusion web UIで編集して画像生成に使うこともできます。
編集にはOpenpose Editorを使用します。
「Extensionsタブ」→「Install from URL」と進み「URL for extension’s git repository」に以下のURLを入力してInstallをクリックします。
インストールできたらStable Diffusion web UIを再起動します。
再度Stable Diffusion web UIを開いたら先ほどと同じようにControlNetの「Drop Image Here」に参考にしたいポーズの画像をドラッグアンドドロップします。
さらに先ほど同様に以下の設定をします。
- Enableにチェックを入れる
- Allow Previewにチェックを入れる
- Preprocessorにdw_openpose_fullを選択
- Modelにcontrol_v11p_sd15_openposeを選択
設定ができたらPreprocessporとModelの間にある赤いアイコンをクリックしてプレビューを表示します。
ポーズの推定結果が表示されたら、Preview画像の右下にある「Edit」ボタンをクリックします。
するとこのようにポーズを編集するための画面が出てきます。
この画面の右側の画像で青い点をドラッグすればそのようにポーズを変更できます。
例として左手の親指を曲げってみるとこんな感じです。
変更前
変更後
変更したら画面左上の「Send pose to ControlNet」をクリックします。
すると変更が反映されます。
これで画像を生成するとポーズの変更が反映された画像が生成されます。
今回は左手の親指を曲げたのでその部分が反映された画像になっています。
まとめ
この記事ではDWPose(DW Openpose)を使って生成する画像の人物のポーズをコントロールする方法を解説しました。
Openposeと比較して細かいポーズのコントロールがかんたんにできるようになっています。
ぜひいろんなポーズで試してみてください。
記事の内容にわからないことがある方は以下のアカウントに気軽にDMしてください!
また、最新の技術の活用方法など役に立つツイートを心がけているので、ぜひフォローしてもらえると嬉しいです!