「OpenPose」「OpenPose Editor」機能をわかりやすく解説ー自由にポーズ変更【ControlNET講座#6】|Stable Diffusion
「Stable Diffusion」のControlNET講座第6回。「OpenPose」「OpenPose Editor」機能を使って、自由にポーズを変更する方法です。
ポーズを変えると人物も変わるという問題もあるので、さきに前回の「reference_only」機能を覚えて、人物を固定しておいたほうがいいというのがあります。
あと単に「OpenPose」を使うだけでなく、「OpenPose Editor」をインストールして、自分で棒人間を操作する方法も一緒に学びます。
それではさくっといきましょう。前回の「「reference_only」機能をわかりやすく解説ー人物そのままで衣装変更」は以下のリンクから。
「OpenPose Editor」の導入
「ControlNetv1.1」以上をインストールした状態であることを前提に話を進めます。まだの方や、インストールしたけどバージョンがわからんという方は以下のリンクを参照。
「OpenPose Editor」のインストール
「Extensions」タブ→「Install from URL」タブに移動し、「URL for extension’s git repository」に、
https://github.com/fkunn1326/openpose-editor.git
を貼り付け、「Install」ボタンをクリックします。しばらく待つと「Install」ボタンの下の方にいろいろ文字が出てきてインストール終了。
つぎに「Extensions」タブ→「Installed」タブで「Apply and restart UI」 ボタンをクリックして再起動します。これでインストール完了です。
「OpenPose Editor」の使い方
「OpenPose Editor」をインストールすると、再起動後に「OpenPose Editor」タブが追加されるので、そこをクリックすれば上の画面になります。「OpenPose Editor」タブがない方は、いったん「Stable Diffusion」を閉じて再起動してください。
直感的にわかるとは思いますが、棒人間を操作すれば、そのポーズをとらせることができます。棒人間の関節部分をドラッグすればOKです。
たとえばこんな感じに、両手両足を上げて、片足も上げるというポーズを作ってみます。
テンプレートとして残しておきたいときは、左にある「Save Preset」ボタンを押してください。呼び出すときは「Load Preset」ボタンをクリックですね。
棒人間の作成に失敗したときは、「Reset」ボタンを押せば消せます。その後に「Add」ボタンを押せばデフォルト状態の棒人間が追加されます。
複数の棒人間が必要なときは、「Add」ボタンで追加していけばいいでしょう。
画像として残すときは、棒人間の下にある「Save PNG」ボタンを、「Txt2img」のControlNETに送り込みたいときは「Send to tex2img」ボタンを押してください。
「棒人間を動かすのが面倒くさい」というずぼらな人は、まずデフォルト状態の棒人間を表示させた状態で、「Detect from Image」ボタンをクリック。参考にしたい自前の画像を選んでやれば、自動的に棒人間をその形に合わせてくれます。
そうですね。この状態から微調整していってもいいでしょう。
とりあえずこのポーズをそのまま「text2img」に送り込んで、他の画像にこのポーズをとらせてみましょう。前述したように「Send to tex2img」ボタンをクリックです。次の章「「Txt2img」で棒人間を利用」を続けて読んでください。
「Txt2img」で棒人間を利用
「ControlNET」の設定
「Txt2img」の「ControlNET」に、先程の棒人間が送られました。
「ControlNET」を使うために、「Enable」と「Pixel Perfect」にチェックを入れてください。
それから「Preprocessor」は「none」、「Model」は「control_v11p_sd15_openpose」を選びます(「control_v11p_sd15_openpose」が一覧にない人は、ここから「control_v11p_sd15_openpose.pth」(1.45G)を落として、「Stable Diffusion」をインストールしたフォルダ内の「stable-diffusion-webui」>「models」>「ControlNet」のフォルダに入れ、再起動してください)。
「OpenPose Editor」を使わなくても、「ControlNET」に直接参照画像を入れて、「Preprocessor」を「openpose」(「none」ではないので注意)、「Model」は「control_v11p_sd15_openpose」にすれば、画像から自動的にポーズを判定して棒人間を作成し、その結果を生成画像に反映してくれます。
ポーズ画像の生成
「Txt2img」で適当につくった元画像です。このポーズを、先ほど設定した棒人間のポーズに変えます。
元画像がまだの方は、すでにある画像を「PNG info」タブで読み込んで「Txt2img」に送るなり、いったん「ControlNET」の「Enable」のチェックを外して元画像を生成してから(その後でシード値を固定)、また「Enable」のチェックを入れれば良いでしょう。
もしくは「ポーズが重要で、元画像とかどうでもいい」という方は、そのままプロンプトを書いてしまってください。
あとはいつものごとく「Generate」ボタンを押すだけです。
結果がこちら。
人物にこだわりがなければ、ここからプロンプトで髪型や衣装を調整していくか、どうしても同じ人物でなければならないなら前回の「reference_only」を併用するしかありませんね。
ちなみに両手片足上げポーズを使った場合の結果はこちら。
これもここからプロンプトで調整か、「reference_only」の併用ですね。
「reference_only」の併用
ためしに「reference_only」を併用してみましょう。
「ControlNET」を2つ使って、1つ目に「reference_only」で元画像を設定しておきます。2つ目は「OpenPose」の画像ですね。今回は「OpenPose Editor」を通さずに、直接ポーズ画像を設定しておきます(「reference_only」の使い方や「ControlNET」を複数にする方法は前回を参照してください)。
また元画像のプロンプトの記述が正直「1girl」ぐらいしかないので、服装など細かい情報を入れるため、いったん元画像を「Tagger」タブで解析してもらい、出てきたプロンプト用語で使えそうなものを利用します。「Tagger」の使い方については以下のリンクから。
結果がこちら。
「Img2img」に送り込んで、「Inpaint」機能で無理やり消してみました。
細かいところまでどうしてもなんとかしたい人は、ぶっちゃけPhotoshopとかで何とかしたほうが速いと思います。
まとめ
そんなわけで、「OpenPose」の使い方でした。
「reference_only」と組み合わせれば、元画像の人物や服装をあるていど保つことはできると思います。
それではまた次回の講座でお会いしましょう。【追記】「ControlNET」だけではカバーしきれなくなってきたことから、次回からは「ControlNET&拡張講座」になります。次回の記事「「MasaCtrl」機能の導入・使い方を分かりやすく解説ー人物そのままポーズ変更」は以下のリンクから。