Stable Diffusionで複雑なポーズを試したら思い通りにならない、体がねじれて化物に…なんてこともありますよね。Stable Diffusionは学習したポーズしか認識できないので、そういったことになってしまいます。
それでは複雑なポーズはStable Diffusionで生成するのは不可能なのでしょうか?いいえ、安心してください。ControlNet OpenPoseを使うことで解決することができます。
ControlNet OpenPoseを使うことで棒人間や理想のポーズが映った画像から、ポーズを抽出して、同じポーズによって画像を生成することができます。この記事ではControlNet OpenPoseの機能や利用方法、そして具体的な手順について詳しく解説します。
もしポーズのプロンプトが知りたい方はこちらのページを参考にしてください。
ControlNet OpenPoseとは?
ControlNet OpenPoseとは画像から体の構造を抽出して、それと同じポーズで画像を生成する技術です。また棒人間を作成して、そこから画像を生成することができます。OpenPoseは写真から人物の体の構造を抽出する技術で、それをControlNetに応用することで生まれた技術です。
「呪文(プロンプト)からポーズを指定する場合」との違い
呪文(プロンプト)でもポーズを指定できますが、それとの大きな違いはControlNetによってより強く生成される人物のポーズをコントロールできるので、理想的なポーズが簡単に作れます。
特に複雑なポーズだと効果を発揮します。呪文(プロンプト)だけだと「どう指定したら良いかわからない」であったり、「指定しても全然思い通りにならない」と、何度も試行錯誤して、多くの時間を無駄にしてしまいます。
そうしないためにもOpenPoseに慣れて時間を節約して画像生成のスキルを向上させていきましょう。
ControlNet OpenPoseでできること
本記事で紹介するControlNet OpenPoseでできることは次の2点です。
- 画像ポーズを抽出して、同じポーズで画像を作成
- 棒人間を新規作成/編集して、同じポーズで画像を作成
言葉だけだとイメージしづらいと思うのでまずは結果だけを見てみましょう。具体的な手順は後ほど解説します。
画像からポーズを抽出して、同じポーズで画像を作成
左はぱくたそからダウンロードしたチアガールの参考画像。右はそれを元にControlNetのOpenPoseを使ってポーズを抽出して画像を生成した結果。
棒人間を作成して同じポーズで画像を作成
左は後ほど解説しますがOpenPose Editorで新規作成した棒人間で、右は棒人間から作成した画像です。棒人間は画像から抽出してから編集することも可能です。
ControlNet OpenPoseの利用方法
ControlNet OpenPoseの事前準備
ControlNet OpenPoseは、Stable Diffusion Web UIの拡張機能ControlNetの機能の1つです。そのため、ControlNet OpenPoseを利用するためには、ControlNetがインストールされている必要があります。もし、インストールしていない場合は以下の記事を参考にControlNetをインストールしましょう。
ControlNet OpenPoseモデルをダウンロード
ControlNet OpenPoseの利用にはControlNetのOpenPose Modelが必要となります。以下のリンクから次の2つのファイルをダウンロードしてstable-diffusion-webui/models/ControlNet
へ配置してください。
- control_v11e_sd15_OpenPose.pth
- control_v11e_sd15_OpenPose.yaml
ControlNet Open Poseの使い方
ControlNetのメニューを次の手順にしたがって設定します。
- 生成する画像のプロンプトを入力します。
- 「▼」をクリックしてControlNetのメニューを開きます。
- 参照画像をControlNetのメニュー画面にセットします。
- ControlNetを有効にするため”Enable”にチェックを入れます。
- Control Typeで”OpenPose”を選択します。これでPreprocessor(前処理)とControlNet Modelが設定されます。
- 特徴抽出ボタン「💥」をクリックして特徴抽出します。前処理が適用されて特徴抽出の結果が表示されます。
- “Generate”をクリックして画像を生成します。これでControlNet Openposeが適用された画像が生成されます。
具体的な手順
画像からポーズを抽出して、同じポーズで画像を作成
それではControlNet OpenPoseの具体的な使い方について解説します。
- 画像をセット。
- “Enable”にチェックを入れる。
- Control Typeは”OpenPose”を選択。
- 特徴抽出ボタン「💥」をクリックして特徴抽出。
あとは呪文(プロンプト)などを入力して画像を生成します。すると次のように棒人間と同じポーズで画像が生成されます。
棒人間を新規作成/編集して、同じポーズで画像を作成
棒人間を新規作成して同じポーズで画像を作成する方法を紹介します。
棒人間を作成するためにOpenPose Editorをインストールします。インストールしたらStable Diffusion Web UIを再起動する。同じ名前のプラグインが乱立しているのでgithubを直接指定するのをおすすめします。
- “https://github.com/fkunn1326/OpenPose-editor.git”を入力。
- “Install”を押してインストールする。
ControlNet OpenPose Editorで棒人間を作成する方法
インストールが完了したら”OpenPose Editor”というタブが追加されています。次の手順で棒人間を作成してtxt2imgに送りましょう。
- OpenPose Editorにタブ切り替え
- 画像サイズの調整
- ポーズの編集
- txt2img画面に送る
txt2img画面に戻ってControlNetのメニューで次のように設定。
- “Enable”にチェックを入れる
- Control Typeを”OpenPose”に選択
- Preprocessorを”none”に選択します。これは棒人間がすでに特徴量だからです。
あとは呪文(プロンプト)などを入力して画像を生成します。すると次のように棒人間と同じポーズで画像が生成されます。
画像からポーズを抽出してControlNet OpenPose Editorで棒人間を編集する方法
新規作成の手順について紹介しましたが、画像からポーズを抽出してControlNet OpenPose Editorで編集することもできます。手順は次の通りです。
- 画像を選択してポーズを検出
- 棒人間を編集する
- txt2imgに送る
設定値の説明
ControlNet OpenPoseには次のプリプロセッサが用意されています。
- OpenPose: シンプルな全身
- dw_OpenPose_full(顔+手+全身検出モデル。OpenPose_fullより新しい。)
- OpenPose_full(顔+手+全身検出モデル)
- OpenPose_face(顔+全身検出モデル。)
- OpenPose_faceonly(顔のみのモデル。)
- OpenPose_hand(手+全身検出モデル)
それぞれの抽出結果を確認します。
FAQ
ControlNet OpenPoseで複数人検出するには?
複数人の検出するために特別やることはありません。画像によりますがOpenPoseに複数人の画像を入力するとポーズを抽出してくれます。
ControlNet OpenPoseで複数人の画像を生成するには?
複数人の映った画像から棒人間を抽出して、複数人が映った画像を生成することはできます。
抽出したポーズを自動保存したい。
抽出したポーズを保存するには次の記事を参考に設定してください。これを設定しておくとお気に入りのポーズを使い回せて便利です。
ControlNet OpenPoseが反映されない
OpenPoseが反映されない場合は”Enable”にチェックが入っていることを確認してください。
ControlNet OpenPoseで認識しない
“Genrate”ボタンをクリックしても全然違うポーズの画像が生成されてControlNet OpenPoseが認識されないと感じることがあります。
OpenPoseは精度の高いモデルなので人が写っていれば、体の一部が認識されないことがあっても完全に認識しないことは少ないです。もし認識しない場合は次の項目を確認してください。
- Preprocessorにnoneが選択されていないことを確認する。
- Modelが空になってないことを確認。選択できない場合はモデルをダウンロードしてない可能性が高いのでモデルをダウンロードする手順を試してください。
- 特徴抽出ボタン「💥」をクリックすることも忘れないでください。初心者は忘れがちな操作なので注意してください。
また一部のパーツが欠ける問題については、最も検出精度の高いPreprocessorをdw_OpenPose_fullにすることをおすすめします。
コメント