Stable Diffusion WebUI (on Colab) : ControlNet (6) OpenPose (ブログ)
作成 : Masashi Okumura (@ClassCat)
作成日時 : 04/22/2023
* サンプルコードの動作確認はしておりますが、動作環境の違いやアップグレード等によりコードの修正が必要となるケースはあるかもしれません。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Website: www.classcat.com ; ClassCatJP
Stable Diffusion WebUI (on Colab) : ControlNet (6) OpenPose
Stable Diffusion の研究は生成過程の結果に対して更に制御を持てる方法を模索してきました。ControlNet はユーザが生成過程をかなりカスタマイズすることを可能にする最小限のインターフェイスを提供します。ControlNet を使用して、ユーザは、深度マップ, セグメンテーション・マップ, 走り描き, キー・ポイント, 等々のような様々な空間的コンテキストにより生成を簡単に条件付けることができます。
この記事では Stable Diffusion WebUI で ControlNet を使用する方法について簡単に説明します。今回は OpenPose による条件付けを扱います。
前提条件 :
Stable Diffusion WebUI で ControlNet を試すには、別途 WebUI の動作環境が必要です。その構築方法については以下の 1 を参照してください :
- PyTorch 2.0 : Google Colab で Stable Diffusion WebUI 入門
- Stable Diffusion WebUI (on Colab) : HuggingFace モデル / VAE の導入
- Stable Diffusion WebUI (on Colab) : LoRA の利用
- Stable Diffusion WebUI (on Colab) : 🤗 Diffusers による LoRA 訓練
- Stable Diffusion WebUI (on Colab) : ControlNet (1) 深度マップ
- Stable Diffusion WebUI (on Colab) : ControlNet (2) Canny エッジ検出
- Stable Diffusion WebUI (on Colab) : ControlNet (3) HED 境界
- Stable Diffusion WebUI (on Colab) : ControlNet (4) M-LSD (線分検出)
- Stable Diffusion WebUI (on Colab) : ControlNet (5) 法線マップ
ControlNet 用拡張ライブラリのインストール
Stable Diffusion WebUI で ControlNet を利用するためには、必要な拡張ライブラリとモデルチェックポイントのインストールが必要です。Stable Diffusion WebUI の構築は完了しているものとします。
◇ まず、ControlNet 用の WebUI 拡張 Mikubill/sd-webui-controlnet をインストールします。この拡張は、ControlNet を元の Stable Diffusion モデルに追加することを WebUI に可能にします。
この拡張は WebUI からでもインストールできますが、extensions ディレクトリに “git clone” すれば簡単です :
%cd /content/stable-diffusion-webui/extensions/
!git clone https://github.com/Mikubill/sd-webui-controlnet
◇ そして、lllyasviel/ControlNet のモデルチェックポイントを extensions/sd-webui-controlnet/models に配備します。ここでは safetensors 形式に変換されたチェックポイントを使用しています :
%cd /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_hed-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_mlsd-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_normal-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_scribble-fp16.safetensors
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_seg-fp16.safetensors
今回は OpenPose を扱いますので、以下だけでも十分です :
%cd /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/
!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors
Openpose Editor
ControlNet はポーズの骨格 (ボーン とも呼称) の画像を条件として使用することもできます。ボーンの画像を作成するためには一般のポーズ推定モデルを利用することもできますが、Stable Diffusion WebUI に組み込んで使える Openpose Editor という優れたインターフェイスが公開されていますのでこれを利用しましょう。
Openpose Editor の導入
Openpose Editor は Stable Diffusion WebUI からインストールすることもできますが、(ControlNet 用の WebUI 拡張と同様に) extensions ディレクトリに直接 “git clone” すれば簡単です :
%cd /content/stable-diffusion-webui/extensions/
!git clone https://github.com/fkunn1326/openpose-editor
Openpose Editor の簡単な使い方
fkunn1326/openpose-editor をインストールしてから WebUI を起動すると、”OpenPose Editor” のタブが追加されていますのでそれをクリックすると以下のようなエディター画面に移行します :
そして右側の領域に表示されているボーンはマウスで関節の部分を移動させることで直接編集することができますので、希望のボーンを作成することができます。
◇ しかしながら直接ボーンを編集するのは実際にやってみると慣れが必要なので、ここでは画像からボーンを推定させてみましょう。”Detect from Image” ボタンをクリックすると画像を読み込ませることができます。例として次の画像をロードします :
すると、数秒で以下のようにポーズ推定された画像が右側のペインに表示されますので、更にこのボーンをマウスで編集することもできます :
注意点として :
- ポーズ推定に失敗する場合もあります。その場合は何も起きません。最初は推定しやすい画像で試すと良いでしょう。
- ポーズ推定の結果は、特に複雑なポーズの場合は同じ画像に対しても試行毎に微妙に差異があります。
このポーズ推定結果をローカルにセーブすることもできますが、”Send to txt2img” ボタンをクリックすれば、そのまま ControlNet を使用して画像生成することができます。
WebUI での ControlNet : OpenPose の使用方法
Openpose Editor で作成したボーン画像を “Send to txt2img” ボタンで転送すると、txt2img タブの ControlNet の設定画面は以下のようになります :
最小限必要な設定は以下です :
- M-LSD (線分検出) 画像のアップロード
- “Enable” ボタンをクリックして有効にする。
- このケースでは Preprocessor を使いませんので “none” に設定します。
- Model として “control_openpose-fp16” を選択します。
以上を設定した上で、例えばプロンプトを “a witch with a black cat rides a broom and flies high in the sky” として “Generate” ボタンをクリックすれば画像生成されます :
以上