Stable Diffusion web UIがポーズを指定できるようになったと聞いて、自分の環境にも適用しました。
[] ControlNet 1.1について気がついたら色々と変わってました。特にControlNet 1.1(現行版)は利用するモデルが変わったみたい。
関連部分を全部を書き直すと辛いので、ダウンロード対象のモデルだけコマンド類を書き直しました。
利用方法も拡張されてますが、既に利用してるユーザーなら感で操作できると思います(丸投げ)。
◆ Stable Diffusion web UIのインストール方法について
純正のStable Diffusionをコマンド実行するのは実用的に厳しいです。なので、最も人気のあるStable Diffusion web UIをWSLとUbuntuの環境に構築したいと思います。 [20240303]環境構築後にCUDA ToolkitやcuDNNを更新する方法です。本記事のバージョンが合わない場合、以下の記事も参考にしてください。 [20240620]Stable Diffusion web UIを更新する方法です。既に環境を構築済みの人は参考にしてください。...
拡張機能の導入
機能の追加
Stable Diffusion web UIには拡張機能を簡単に追加できる仕組みがあります。
以下を参考にUI経由で[Extensions -> Install from URL]を選択します。
次に上側のテキストボックスに以下を入力してInstallボタンを選択します。
https://github.com/Mikubill/sd-webui-controlnet.git
インストールが完了すると以下の文字が出ます。そしたらStable Diffusion web UIを再起動します。
Installed into /home/user/stable-diffusion-webui/extensions/sd-webui-controlnet. Use Installed tab to restart.
再起動が完了すると、いつものUI画面にControlNetが追加されてます。
モデルの追加
現行のControlNet 1.1は利用するモデルが変わってます。
よって、次項に書いたモデルのみを入手すれば問題ないです。
実際にポーズ指定を利用するには対応するモデルが必要になります。
モデルには種類があるのですが、考えるのも手間なので全部追加しておきましょう。
https://huggingface.co/webui/ControlNet-modules-safetensors/tree/main
モデルはmodels/ControlNetディレクトリに格納します。以下は各モデルをダウンロードするコマンドです。
cd ~/stable-diffusion-webui
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors -O ./models/ControlNet/control_canny-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors -O ./models/ControlNet/control_depth-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_hed-fp16.safetensors -O ./models/ControlNet/control_hed-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_mlsd-fp16.safetensors -O ./models/ControlNet/control_mlsd-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_normal-fp16.safetensors -O ./models/ControlNet/control_normal-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors -O ./models/ControlNet/control_openpose-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_scribble-fp16.safetensors -O ./models/ControlNet/control_scribble-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_seg-fp16.safetensors -O ./models/ControlNet/control_seg-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_keypose-fp16.safetensors -O ./models/ControlNet/t2iadapter_keypose-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_seg-fp16.safetensors -O ./models/ControlNet/t2iadapter_seg-fp16.safetensors
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_sketch-fp16.safetensors -O ./models/ControlNet/t2iadapter_sketch-fp16.safetensors
モデルの追加 (ControlNet 1.1用)
ControlNetがポーズ指定に限定された仕組みじゃないので色々とモデルが増えてます。
https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main
モデルの格納先は変わらずmodels/ControlNetディレクトリになります。pthがモデル本体でyamlが設定です。
Openposeしか利用しないなら以下のコマンドで大丈夫です。他の機能も利用する場合は対応するモデルが必要です。
cd ~/stable-diffusion-webui
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.pth?download=true -O ./models/ControlNet/control_v11p_sd15_openpose.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_openpose.yaml
容量を気にせず全部欲しい人は以下のコマンドを使ってください。ただし、各1.5GBあるので相当なサイズになります。
cd ~/stable-diffusion-webui
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_ip2p.pth?download=true -O ./models/ControlNet/control_v11e_sd15_ip2p.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_ip2p.yaml?download=true -O ./models/ControlNet/control_v11e_sd15_ip2p.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_shuffle.pth?download=true -O ./models/ControlNet/control_v11e_sd15_shuffle.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_shuffle.yaml?download=true -O ./models/ControlNet/control_v11e_sd15_shuffle.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1e_sd15_tile.pth?download=true -O ./models/ControlNet/control_v11f1e_sd15_tile.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1e_sd15_tile.yaml?download=true -O ./models/ControlNet/control_v11f1e_sd15_tile.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.pth?download=true -O ./models/ControlNet/control_v11f1p_sd15_depth.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.yaml?download=true -O ./models/ControlNet/control_v11f1p_sd15_depth.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth?download=true -O ./models/ControlNet/control_v11p_sd15_canny.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_canny.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_inpaint.pth?download=true -O ./models/ControlNet/control_v11p_sd15_inpaint.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_inpaint.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_inpaint.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart.pth?download=true -O ./models/ControlNet/control_v11p_sd15_lineart.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_lineart.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_mlsd.pth?download=true -O ./models/ControlNet/control_v11p_sd15_mlsd.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_mlsd.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_mlsd.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae.pth?download=true -O ./models/ControlNet/control_v11p_sd15_normalbae.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_normalbae.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.pth?download=true -O ./models/ControlNet/control_v11p_sd15_openpose.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_openpose.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble.pth?download=true -O ./models/ControlNet/control_v11p_sd15_scribble.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_scribble.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_seg.pth?download=true -O ./models/ControlNet/control_v11p_sd15_seg.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_seg.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_seg.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge.pth?download=true -O ./models/ControlNet/control_v11p_sd15_softedge.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge.yaml?download=true -O ./models/ControlNet/control_v11p_sd15_softedge.yaml
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15s2_lineart_anime.pth?download=true -O ./models/ControlNet/control_v11p_sd15s2_lineart_anime.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15s2_lineart_anime.yaml?download=true -O ./models/ControlNet/control_v11p_sd15s2_lineart_anime.yaml
利用方法
使い方ですが、少し難しので必要な設定箇所を画像で説明します。以下の画像(赤枠)を見ながらControlNet関連の設定を行ってください。
利用する画像はポーズが判断できれば何でも大丈夫です。ここでは肖像権または著作権の問題があるので画像は載せません。
- Enable: 機能有効
- Preprocessor: 次のModelと同じのを選択
- Model: 利用するModel (canny or openpose 辺りがオススメ)
- Canvas Width: 利用する画像の幅
- Canvas Height: 利用する画像の高さ
後は通常通りPromptを指定して画像を生成しましょう。
Openpose Editorを機能追加
もっと手軽に利用できるようにOpenpose Editorをインストールしましょう。
これはStable Diffusion web UIを使ってポーズ用の棒人間を作る拡張機能です。
拡張機能なのでインストール方法は先程と同じです。テキストボックスには以下のURLを入力してください。
https://github.com/fkunn1326/openpose-editor.git
完了すると以下のタブが増えます。右の棒人間を操作して好きなポーズを作りましょう。
ポーズが出来たら右下(赤枠)のSend to txt2img or Send to img2imgから画像にポーズを指定できます。
その後は先程と同じでPrompt等を指定します。その際にModelはopenposeを指定。Preprocessorはnoneを指定してください。
これは作成者のリポジトリに「ControlNetの "Preprocessor" には、何も指定しないようにしてください。」と記載されてるからです。
そしてGenerate!
この時にffmpegが見つからない的なErrorが出た場合は以下の方法で解決できます。
sudo apt-get -y install ffmpeg
これが生成画像です。完璧じゃないけど指定したポーズには近いと思う。
ParametersSampler: DPM++ 2S a Karras, Steps: 25, CFG scale: 8, Seed: 1834883418, Size: 512x768, Model: Counterfeit-V2.5
Promptcute and beautiful girl, look at viewer
NegativePromptEasyNegative, watermark, username, artist name, text
ControlNetControlNet Module: none, ControlNet Model: control_openpose-fp16, ControlNet Weight: 1, ControlNet Guidance Start: 0, ControlNet Guidance End: 1
あとがき
他にもポーズ指定の方法はあるみたいで色々と遊びたい。
この記事は参考になりましたか?
コメント