「OpenPose」「OpenPose Editor」機能をわかりやすく解説ー自由にポーズ変更【ControlNET講座#6】|Stable Diffusion

2023年6月3日Stable diffusionAI, ControlNet

openpose title-min

「Stable Diffusion」のControlNET講座第6回。「OpenPose」「OpenPose Editor」機能を使って、自由にポーズを変更する方法です。

これ第1回目にやるやつじゃないのかニャ?

ポーズを変えると人物も変わるという問題もあるので、さきに前回の「reference_only」機能を覚えて、人物を固定しておいたほうがいいというのがあります。

あと単に「OpenPose」を使うだけでなく、「OpenPose Editor」をインストールして、自分で棒人間を操作する方法も一緒に学びます。

それではさくっといきましょう。前回の「「reference_only」機能をわかりやすく解説ー人物そのままで衣装変更」は以下のリンクから。

 

「OpenPose Editor」の導入

「ControlNetv1.1」以上をインストールした状態であることを前提に話を進めます。まだの方や、インストールしたけどバージョンがわからんという方は以下のリンクを参照。

「OpenPose Editor」のインストール

install

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」の使い方

OP editor

「OpenPose Editor」をインストールすると、再起動後に「OpenPose Editor」タブが追加されるので、そこをクリックすれば上の画面になります。「OpenPose Editor」タブがない方は、いったん「Stable Diffusion」を閉じて再起動してください。

直感的にわかるとは思いますが、棒人間を操作すれば、そのポーズをとらせることができます。棒人間の関節部分をドラッグすればOKです。

OP EDITOR 2

たとえばこんな感じに、両手両足を上げて、片足も上げるというポーズを作ってみます。

テンプレートとして残しておきたいときは、左にある「Save Preset」ボタンを押してください。呼び出すときは「Load Preset」ボタンをクリックですね。

棒人間の作成に失敗したときは、「Reset」ボタンを押せば消せます。その後に「Add」ボタンを押せばデフォルト状態の棒人間が追加されます。

複数の棒人間が必要なときは、「Add」ボタンで追加していけばいいでしょう。

画像として残すときは、棒人間の下にある「Save PNG」ボタンを、「Txt2img」のControlNETに送り込みたいときは「Send to tex2img」ボタンを押してください。

OP edit 3

棒人間を動かすのが面倒くさい」というずぼらな人は、まずデフォルト状態の棒人間を表示させた状態で、「Detect from Image」ボタンをクリック。参考にしたい自前の画像を選んでやれば、自動的に棒人間をその形に合わせてくれます。

これは便利ニャ。ちなみに頭部の触覚みたいなの目と耳の位置なのニャ。

そうですね。この状態から微調整していってもいいでしょう。

とりあえずこのポーズをそのまま「text2img」に送り込んで、他の画像にこのポーズをとらせてみましょう。前述したように「Send to tex2img」ボタンをクリックです。次の章「「Txt2img」で棒人間を利用」を続けて読んでください。

 

「Txt2img」で棒人間を利用

「ControlNET」の設定

CNET idou

「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」のフォルダに入れ、再起動してください)。

CNET motogazou

「OpenPose Editor」を使わなくても、「ControlNET」に直接参照画像を入れて、「Preprocessor」を「openpose」(「none」ではないので注意)「Model」は「control_v11p_sd15_openpose」にすれば、画像から自動的にポーズを判定して棒人間を作成し、その結果を生成画像に反映してくれます。

さっさとやりたい場合は、こっちの方法のほうがお手軽ニャ。

ポーズ画像の生成

agirl「Txt2img」で適当につくった元画像です。このポーズを、先ほど設定した棒人間のポーズに変えます。

元画像がまだの方は、すでにある画像を「PNG info」タブで読み込んで「Txt2img」に送るなり、いったん「ControlNET」の「Enable」のチェックを外して元画像を生成してから(その後でシード値を固定)、また「Enable」のチェックを入れれば良いでしょう。

もしくは「ポーズが重要で、元画像とかどうでもいい」という方は、そのままプロンプトを書いてしまってください。

あとはいつものごとく「Generate」ボタンを押すだけです。

OP kekka

結果がこちら。

ポーズはとってるけど、キャラクターの髪型とか服装がちょっと違うニャ。

人物にこだわりがなければ、ここからプロンプトで髪型や衣装を調整していくか、どうしても同じ人物でなければならないなら前回の「reference_only」を併用するしかありませんね。

ashiage

ちなみに両手片足上げポーズを使った場合の結果はこちら。

なんかバカっぽいけど、ちゃんとポーズはとってくれてるのニャ。そして人物が違うのニャ。

これもここからプロンプトで調整か、「reference_only」の併用ですね。

 

「reference_only」の併用

ためしに「reference_only」を併用してみましょう。

CTNET reference

「ControlNET」を2つ使って、1つ目に「reference_only」で元画像を設定しておきます。2つ目は「OpenPose」の画像ですね。今回は「OpenPose Editor」を通さずに、直接ポーズ画像を設定しておきます(「reference_only」の使い方や「ControlNET」を複数にする方法は前回を参照してください)。

また元画像のプロンプトの記述が正直「1girl」ぐらいしかないので、服装など細かい情報を入れるため、いったん元画像を「Tagger」タブで解析してもらい、出てきたプロンプト用語で使えそうなものを利用します。「Tagger」の使い方については以下のリンクから。

agirl2

結果がこちら。

リボン多めだけど、人物や衣装は保ってるのニャ。

i2i

「Img2img」に送り込んで、「Inpaint」機能で無理やり消してみました。

細かいところまでどうしてもなんとかしたい人は、ぶっちゃけPhotoshopとかで何とかしたほうが速いと思います。

 

まとめ

そんなわけで、「OpenPose」の使い方でした。

「reference_only」と組み合わせれば、元画像の人物や服装をあるていど保つことはできると思います。

使い方次第で創作の幅が広がりそうなのニャ。

それではまた次回の講座でお会いしましょう。【追記】「ControlNET」だけではカバーしきれなくなってきたことから、次回からは「ControlNET&拡張講座」になります。次回の記事「「MasaCtrl」機能の導入・使い方を分かりやすく解説ー人物そのままポーズ変更」は以下のリンクから。