🧙‍♂️

【Stable Diffusion】 ControlNet でキャラクターの衣装を変えてみた

2024/12/22に公開

こんにちは!『麦ちゃーはん』です。

今回は、Stable Diffusionの拡張機能「ControlNet」で遊んでみました。

キャラクターの衣装を変えたり、好きな姿勢のイラストを生成したりと、便利な機能が揃っています。ぜひ最後までご覧ください!

ControlNetの環境構築

手順1: Stable Diffusionのインストール

長くなるので、Stable Diffusionのインストール方法は省略させていただきます。
筆者はこちらのサイトを参考にさせていただきました。
https://dosparaplus.com/library/details/001497.html

手順2: ControlNetのインストール

まず、Stable Diffusionの「Extensions」のタブを選択してください。

次に、「Install from URL」を選択してください。

以下のURLを入力して、ControlNetの拡張機能をインストールしてください。

https://github.com/Mikubill/sd-webui-controlnet

インストールが完了したら、Stable Diffusionを再起動してください。

手順3: ControlNetモデルの準備

ControlNetの機能である、「Canny」や「OpenPose」を使用するためのモデルをダウンロードします。以下のページから、「control_v11p_sd15_canny.pth」と「control_v11p_sd15_openpose.pth」をダウンロードしてください。
https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main?_fsi=9ZIsMtEJ

ダウンロードしたファイルは、以下のディレクトリに配置してください。

stable-diffusion-webui\models\ControlNet

Canny

さっそく、Cannyを試していきましょう。Cannyはエッジ検出を行う機能です。画像のエッジを強調することで、線画のような表現に変換します。この結果を利用して、Stable Diffusionに「基礎的な形状や構造」を入力として提供できます。

以下の画像をCannyで変換してみます。

まず、txt2imgのタブを選択してください。

ここで、ControlNetの設定を開きます。

以下の画像と同じになるように赤枠の部分を変更してください。
モデルの選択肢が表示されない場合は、青枠で囲まれている更新ボタンを押すと出てくると思います。

最後に画像をセットして、エッジ検出を行います。
実行ボタン(爆発マークみたいなやつ)を押してください。

以下のようなエッジが検出されました!

あとは画像生成を実行するだけです。
シンプルなプロンプトを入力して実行してみました。

black hair

出力された画像はこちらです。あっという間に色の塗り替えができてしまいました。
プロンプトをより詳細に入力すれば、思い通りのイラストに変換できるはずです。

OpenPose

次は「OpenPose」を試します。OpenPoseは人間のポーズ(姿勢)を検出する機能です。検出した姿勢のデータを利用して、同じ姿勢の画像を生成することができます。

今回使用する画像はこちらにしました。

まず、ControlNetの設定をOpenPoseに変更してください。

Cannyのときと同じように画像をセットして、実行ボタンを押してください。

以下のような画像が出力されると思います。これは、検出した姿勢を図示しているものです。

最後にプロンプトを入力して、画像生成を実行しましょう!
今回は、以下のように指定してみました。

  • 表情:笑顔
  • 服:黒色のドレス
  • 背景:グレー
high quality, smiling cute girl, wearing a black dress, the background is gray

生成された画像はこちらです!検出した姿勢とプロンプトの内容がしっかりと反映されていますね。

使用したStable Diffusionモデル

画像の生成にはこちらのモデルを使用させていただきました。
https://civitai.com/models/23900/anylora-checkpoint

おわりに

今回は Stable Diffusionの拡張機能「ControlNet」についてまとめてみました。
ControlNetでは他にも、「高解像度化」や「範囲を指定して修正」といった機能が使用できるので、ぜひ遊んでみてください。

ここまでお読みいただき、心から感謝いたします。

Discussion