SDXL 1.0でControlNetのcanny / openpose / Depthを使ってポーズを指定しよう

アイキャッチ

こんにちは。SDXL 1.0 を利用している中で、ControlNetを利用すると Error となって、使えませんでした。

何で ControlNetを使いたいのかというと、画像の生成サイズが1対1(1024× 1024)の場合、プロンプトに full body や full shot を記載しても、なかなか全身ショットにならず、どうしても上半身の画像が多くなっていました。

そんな中で、

[Major Update] sd-webui-controlnet 1.1.400

を見つけたので、早速試してみました。

はじめに

SDXL 1.0用 ControlNet

画像生成AI「Stable Diffusion」向けの拡張機能で、画像生成AIに対して画面上の棒人間を使ってポーズを指示できる「ControlNet」を作成している米スタンフォード大学のLvmin Zhang氏のGithub(https://github.com/Mikubill/sd-webui-controlnet/discussions/2039)のDiscussionsに

「[Major Update] sd-webui-controlnet 1.1.400 #2039

が投稿されました。(公式サイトの日本語訳(google翻訳)です)

拡張機能 sd-webui-controlnet により、コミュニティからのいくつかの制御モデルのサポートが追加されました。新しいモデルの多くは SDXL に関連しており、Stable Diffusion 1.5 用のモデルもいくつかあります。

sd-webui-controlnet 1.1.400 は、1.6.0 以降の webui 用に開発されました。

新しくサポートされたモデルのリスト:

diffusers_xl_canny_full.safetensors

diffusers_xl_canny_mid.safetensors

diffusers_xl_canny_small.safetensors

diffusers_xl_depth_full.safetensors

diffusers_xl_depth_mid.safetensors

diffusers_xl_depth_small.safetensors

ioclab_sd15_recolor.safetensors

ip-adapter_sd15.pth

ip-adapter_sd15_plus.pth

ip-adapter_xl.pth

kohya_controllllite_xl_depth_anime.safetensors

kohya_controllllite_xl_canny_anime.safetensors

kohya_controllllite_xl_scribble_anime.safetensors

kohya_controllllite_xl_openpose_anime.safetensors

kohya_controllllite_xl_openpose_anime_v2.safetensors

kohya_controllllite_xl_blur_anime_beta.safetensors

kohya_controllllite_xl_blur_anime.safetensors

kohya_controllllite_xl_blur.safetensors

kohya_controllllite_xl_canny.safetensors

kohya_controllllite_xl_depth.safetensors

sai_xl_canny_128lora.safetensors

sai_xl_canny_256lora.safetensors

sai_xl_depth_128lora.safetensors

sai_xl_depth_256lora.safetensors

sai_xl_recolor_128lora.safetensors

sai_xl_recolor_256lora.safetensors

sai_xl_sketch_128lora.safetensors

sai_xl_sketch_256lora.safetensors

sargezt_xl_depth.safetensors

sargezt_xl_depth_faid_vidit.safetensors

sargezt_xl_depth_zeed.safetensors

sargezt_xl_softedge.safetensors

t2i-adapter_xl_canny.safetensors

t2i-adapter_xl_openpose.safetensors

t2i-adapter_xl_sketch.safetensors

t2i-adapter_diffusers_xl_canny.safetensors

t2i-adapter_diffusers_xl_depth_midas.safetensors

t2i-adapter_diffusers_xl_depth_zoe.safetensors

t2i-adapter_diffusers_xl_lineart.safetensors

t2i-adapter_diffusers_xl_openpose.safetensors

t2i-adapter_diffusers_xl_sketch.safetensors

thibaud_xl_openpose.safetensors

thibaud_xl_openpose_256lora.safetensors

以下のメソッドがサポートされていますが、制御モデルは必要ありません

revision (SDXL)

reference (SDXL)

すべてのファイルはhttps://huggingface.co/lllyasviel/sd_control_collection/tree/mainにミラーリングされています(モデルをダウンロードするにはこのリンクを使用してください)

ここに来て、一気にSDXL 1.0用のControlNetの各モデルが、出揃ってきた感じですね。

時間と回線とディスクに余裕がある場合は、全部ダウンロードしてしまいましょう。

SDXL 1.0用 ControlNetのインストール

利用するのはいつも通り、AUTOMATIC1111版web UIでの利用を前提とします。

sd-webui-controlnet 1.1.400はDiscussionsに書かれていたとおり、v.1.6.0以降である必要があります。

web-ui-versionv1.6.0

web-ui を起動したら、Extensions タブを押下し、拡張機能管理画面を開きます。

change Extensions

こちらの例ではすでに ControlNetをインストール済みですが、まだ、ControlNetをインストールしていない方は、Install from URL に以下のURLを記載して、Installボタンを押してインストールしてください。







install from URL

最新のControlNetがインストールできたら、Apply and restart UIボタンを押して、web uiを再起動して最新のControlNetを有効にしてください。

現時点(2023年9月30日)であれば、以下がsd-webui-controlnetの最新バージョンとなります。

controlnet-v1.1.410

あとは、モデルをダウンロードして、以下のディレクトリに配置します。

stable-diffusion-webui\models\ControlNet

ControlNetを使う

ControlNet v1.1.410 の右にある◀をクリックして、ControlNetの画面を開きます。open controlnet

ControlNetを利用する場合は、元になる画像を「ここに画像をドロップまたはクリックしてアップロード」にアップロードし、Enable を☑し、利用するControl Type を選択、さらに、Control Type にあった、Preprocessor と Model を選んだら、後はいつもの画像生成と同様にプロンプトを入力して、Generate ボタンを押すだけです。

また、たくさんのモデルが利用できるようになっていますが、今回は、Discussionsの後半に記載されているkohyaさん作成のControl-LLLiteを利用します。理由は、このモデルは処理も軽く使いやすいからです。

実際に利用する場合には、それぞれ特徴があると思いますので、自分に合ったモデルを探してみてください。

canny 線画でポーズ指定

ここまで忠実にポーズが指定できるのかと驚かされます。

また、ポーズだけではなく、服装も類似して生成されるようですね。

輪郭画像も同時にに出力されるので、保存しておくと、プリプロセッサを指定せずにに、線画からポーズを指定した画像を生成することができます。

利用したモデル:kohya_controllllite_xl_canny

canny created

openpose 骨格検出でポーズ指定

元画像から棒人間を抽出してポーズを指定できます。

cannyとは異なり、服装などは類似しないため、ポーズだけを反映したい場合に効果的ですが、棒人間への抽出レベルが悪いのか、ポーズの忠実度があまりよくないです。

骨格の抽出画像(棒人間)も生成されるため、保存しておくと、プリプロセッサを指定せずにに、棒人間からポーズを指定した画像を生成することができます。

利用したモデル:kohya_controllllite_xl_openpose_anime_v2

openpose created

Depth 深度情報からポーズ指定

Depth は奥行きを正確に抽出できるようです。

手前が白色・奥に行くほど黒色で表現されるのが深度マップで、同時に深度マップが作成されるので、保存しておくと、プリプロセッサを指定せずにに、深度マップからポーズを指定した画像を生成することができます。

Depthには以下の4種類があります。

・depth_leres
・depth_leres++
・depth_midas
・depth_zoe

こちらも画像に合わせて使い分けるとよいと思います。

利用したプリプロセッサ:depth_leres++

利用したモデル:kohya_controllllite_xl_depth

Depth created

まとめ

SDXL 1.0用のControlNetがリリースされたことによって、画像のポーズ指定が簡単になり、SDXL 1.0で生成した作品のクオリティを上げることができるようになりました。また、今回利用したポーズ指定の機能以外にも、SDXL 1.0で利用できるものがありますので、次回またご報告させていただきます。

Stable Diffusionをはじめ、様々なAIが常に進化していますので、チェックしながら最新にトライしてみてください。

きっとあなたにぴったりのAIが見つかると思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA