StableDiffusion_使い方③ControlNetの使い方
概要
今回は、StableDiffusion(SD)の使い方③回目です。前々回①、前回②ではVast.aiでStableDiffusionを使うための環境構築、LoraとEmbeddingの使い方の説明を行いました。ここまでで結構きれいな画像を生成できるようになったと思います。
お手本を見ながら、いい感じの画像を生成するならここまででOKです。ここからは、自分の希望の画像を生成するための、少し凝った使い方を説明します。
ただ、自分の希望の画像を生成するには多くのテクニックを駆使する必要があります。今回は、そのテクニックの一つのControlNetの使い方について説明します。
目標画像
今回は以下の画像を生成することを目標にしています。
しかし、前回②のLoraとEmbeddingを使っただけでは、以下のような少し異なった画像が生成されました。画像の雰囲気は同じですが、姿勢など異なりますね。
この画像を、ControlNetを使って、目標画像に近づけていきたいと思います。
ControlNetのインストール
ControlNetのインストールは以下サイトを参考に実行します。
Stable Diffusion WebUIを使ったインストール手順を簡単に記載すると以下となります。
[Extensions]タブを開く
[Install from URL]タブを開く
URL欄に https://github.com/Mikubill/sd-webui-controlnet.git を入力する
[Install]をクリックする
[Installed]タブを開く
[Apply and restart UI]ボタンをクリックする
ControlNetのモデル取得
次に、実際にControlNetを使うために、モデルをダウンロードしていきます。
ControlNetでは様々なモデルを使う事ができます。
注意点としては、今回使うCHEKPINTは、SDXLのため、SDXL用のControlNetモデルをダウンロードします。
様々なモデル(SDXL用)が一覧でまとまっている以下サイトからダウンロードします。そして、Vast.AIで借りたサーバーに保存していきます。
Vast.AIで借りたサーバーに保存するコードは以下となります。
sdxl系
#ControlNetフォルダを作成する
mkdir /home/user1/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/ip-adapter_sd15_plus.pth?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/ip-adapter_sd15_plus.pth
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/ip-adapter_xl.pth?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/ip-adapter_xl.pth
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_blur.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_blur.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_blur_anime.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_blur_anime.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_blur_anime_beta.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_blur_anime_beta.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_canny.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_canny.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_canny_anime.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_canny_anime.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_depth.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_depth.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_depth_anime.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_depth_anime.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_openpose_anime.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_openpose_anime.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_openpose_anime_v2.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_openpose_anime_v2.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_scribble_anime.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/kohya_controllllite_xl_scribble_anime.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_canny_128lora.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sai_xl_canny_128lora.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_canny_256lora.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sai_xl_canny_256lora.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_depth_128lora.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sai_xl_depth_128lora.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_depth_256lora.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sai_xl_depth_256lora.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_recolor_128lora.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sai_xl_recolor_128lora.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_recolor_256lora.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sai_xl_recolor_256lora.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_sketch_128lora.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sai_xl_sketch_128lora.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_sketch_256lora.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sai_xl_sketch_256lora.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sargezt_xl_depth.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sargezt_xl_depth.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sargezt_xl_depth_faid_vidit.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sargezt_xl_depth_faid_vidit.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sargezt_xl_depth_zeed.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sargezt_xl_depth_zeed.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sargezt_xl_softedge.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/sargezt_xl_softedge.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_canny.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/t2i-adapter_diffusers_xl_canny.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_depth_midas.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/t2i-adapter_diffusers_xl_depth_midas.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_depth_zoe.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/t2i-adapter_diffusers_xl_depth_zoe.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_lineart.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/t2i-adapter_diffusers_xl_lineart.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_openpose.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/t2i-adapter_diffusers_xl_openpose.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_sketch.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/t2i-adapter_diffusers_xl_sketch.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_xl_canny.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/t2i-adapter_xl_canny.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_xl_openpose.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/t2i-adapter_xl_openpose.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_xl_sketch.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/t2i-adapter_xl_sketch.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/thibaud_xl_openpose.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/thibaud_xl_openpose.safetensors
wget https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/thibaud_xl_openpose_256lora.safetensors?download=true -O /home/user1/stable-diffusion-webui/models/ControlNet/thibaud_xl_openpose_256lora.safetensors
以上を実行すると、SDXLで使えるControlNetモデルを保存する事ができます。
以上で、ControlNetが使える用になったので、次から具体的に目標画像に近づけていきたいと思います。ただ、ControlNetにも多くの機能があります。すべては試しきれないので、今回は、以下3つの機能(Canny、Depth、OPENPOSE)に限定して説明します。
Cannyによる画像生成
目標画像のエッジ(輪郭線)を元に画像を生成します。Connyにもいくつかのモデルがありますが、今回使用したモデルは、sai_xl_canny_256lora [566f20af]です。
設定は以下となります。最初に目標画像をドラッグ&ドロップ(1)します。次に2~7の順で設定をします。
7の画像が、エッジ(輪郭線)となります。以下に目標画像の輪郭線を示します。
以上輪郭線を使って画像を生成します。その他の設定は、②のLoraとEmbeddingのものと同じです。
生成された画像は以下です。
顔の印象は目標の画像と異なりますが、その他の姿勢等は目標画像とほぼ同じになりました。
Depthによる画像生成
目標画像の奥行情報を元に画像を生成します。Depthにもいくつかのモデルがありますが、今回使用したモデルは、sai_xl_depth_256lora [73ad23d1]です。
設定は以下となります。最初に目標画像をドラッグ&ドロップ(1)します。次に2~7の順で設定をします。
7の画像が、奥行き情報となります。以下に目標画像の奥行き情報を示します。
以上奥行き情報を使って画像を生成します。その他の設定は、②のLoraとEmbeddingのものと同じです。
生成された画像は以下です。
こちらも顔の印象は目標の画像と異なりますが、その他の姿勢等は目標画像とほぼ同じになりました。
OPENPOSEによる画像生成
人物の骨格(関節の位置や姿勢)を元に画像を生成します。OPENPOSEにもいくつかのモデルがありますが、今回使用したモデルは、t2i-adapter_xl_openpose [18cb12c1]です。
設定は以下となります。最初に目標画像をドラッグ&ドロップ(1)します。次に2~7の順で設定をします。
7の画像が、人物の骨格情報となります。以下に目標画像の人物の骨格情報を示します。
以上人物の骨格情報を使って画像を生成します。その他の設定は、②のLoraとEmbeddingのものと同じです。
生成された画像は以下です。
OPENPOSEは、骨格情報のみ使うため、姿勢は目標画像と近いですが、背景などは大きく異なりました。この辺は、ControlNetの特徴を考慮しながら使い分けをする事が重要だと思います。
まとめ
今回は、ControlNetの使い方を説明しました。ControlNetには多くの機能があるため、一部の機能(Canny、Depth、OPENPOSE)の説明となりました。ControlNetの様々な機能を使うには、色々試しながら慣れていく必要があると思います。
今回ControlNetを使って、目標の画像に近づける事が出来ました。ただ、完全に同じ画像とすることはできませんでした。SDを使った画像生成は、経験とコツが必用だと痛感しました。
以上で、①環境構築、②LoraとEmbedding、③ControlNetと3回にわたった説明を終了します。
次からは、自分でオリジナルLoraを作る方法について書いていきたいと思います。