前回、AUTOMATIC1111 版 Stable Diffusion WebUI に拡張機能(Extension)をインストールする方法をご紹介しました。
今回は、Stable Diffusion WebUI の拡張機能の中で、特に便利で人気なControlNet を詳しくご紹介します。
おすすめの拡張機能: ControlNet
ControlNetは、Stable Diffusionでイラストのポーズを指定して生成することができる拡張機能です。非常に有名でよく使われており、思い通りのイラストを作成するためには必要な拡張機能と言えます。ぜひ、試してみてください。
ControlNetとは?
ControlNetは、Stable Diffusion WebUIの拡張機能の1つです。他の画像からポーズを抜き出し、そのポーズを反映させて新しい画像を生成することができます。生成する画像の構成をある程度コントロールできるため、プロンプトだけでは生成できなかった構図やポーズを簡単に作成することができます。
ControlNetの導入方法
以下の手順でControlNetをWebUIで使用できるようにしましょう。
ControlNetのインストール
まず、前回の記事を参照し、ControlNet本体をインストールします。
インストールURLはこちらです。
https://github.com/Mikubill/sd-webui-controlnet
プロンプトの一番下のあたりにControlNetの項目が追加されていれば、インストールが成功しています。
ただし、ControlNetを動作させるには、専用のモデルもダウンロードする必要があります。
モデルのダウンロード
モデルの公開ページは以下の通りです。
V.1.0
V.1.1
「control」から始まる「canny」~「seg」のモデルファイルが8種類あります。
各モデルはポーズ抽出手法が異なるため、全ての手法を使いたい場合は8種類全てのモデルが必要ですが、多くのストレージ容量が必要になりますので、必要に応じてダウンロードしてください。また、V1.1は新しいモデルで、モデルの種類が14種類に増え、精度が向上していますが、容量が大幅に増えているため注意が必要です。
今回はよく使われる「canny」と「openpose」を例として使用し、その2つのモデルをダウンロードしています。
モデルの移動
これらのダウンロードしたモデルを、stable-diffusion-webui の下の、「\extensions\sd-webui-controlnet\models 」フォルダに移動します。
これでControlNetの導入は完了です。
各モデルの説明
以下が各モデルの特徴を簡単に説明したものです。ただ、文章だけでは分かりにくいと思いますので、実際に試してみてください。
- canny:画像の輪郭を抽出し、同じ輪郭で画像を生成する
- depth:深度情報を抽出し、同じ奥行きで画像を生成する
- hed:ソフトな輪郭を抽出し、画像を生成する
- mlsd:直線的な線を抽出し、画像を生成する(背景や構造物に向いている)
- normal:法線マップを抽出し、画像を生成する
- openpose:人間のポーズを検出し、棒人間を生成、それと同じポーズで描画
- scribble:フリーハンドの落書きをもとに画像を生成する
- seg:領域の属性を検出(セマンティックセグメンテーション)し、画像を生成する
検証
ControlNet を使わずに、モデル ChilloutMix で生成した画像を ControlNet を使ってポーズを変更していきます。
以降の ControlNet の canny と openpose の検証では、この画像と同じプロンプト、同じシード、同じ条件で生成しています。
cannyを使用する場合
設定
以下のように設定します。
- Enable にチェックを入れる
- Preprocessor で cannyを選択
- Model でダウンロードした cannyのモデルを選択
- Image でポーズのモデルとなる入力画像をドラッグ&ドロップで指定
- VRAM が少ない場合は Low VRAM にチェックを入れる
生成
今回は、上記の「検証」の画像と同じ条件で生成しています。
いつもは、通常の生成手順と同じように、生成すれば問題ありません。
入力画像の輪郭が抽出されます。
それを元にポーズを反映させた画像が生成されます。
これがcannyの使い方です。イラストのような輪郭がはっきりした画像であれば、この方法で簡単にポーズを変更できます。
openposeを使用する場合
設定
こちらも以下のように設定します。
- Enable にチェックを入れる
- Preprocessor で openposeを選択
- Model でダウンロードした openpose のモデルを選択
- Image でポーズのモデルとなる入力画像をドラッグ&ドロップで指定
- VRAM が少ない場合は Low VRAM にチェックを入れる
生成
今回は、上記の「検証」の画像と同じプロンプト、同じシード、同じ条件で生成しています。
こちらも、通常の生成手順と同じように、生成すれば問題ありません。
入力画像を元に棒人間が生成されます。
それを元にポーズを反映させた画像が生成されます。
これが openpose の使い方です。openpose は canny と同様によく使われます。棒人間を入力画像なしに直接作成する拡張機能もあり、それと組み合わせる方法もあります。これにより、非常に簡単にポーズを付けられると思います。
まとめ
これでControlNetの使い方について説明しました。
ControlNetは他にも様々なモデルがあり、それぞれのモデルによって異なる特徴を持っています。ぜひ、自分に合ったモデルを見つけて、イラストのポーズを変更するのに役立ててください。
非常に便利な拡張機能です。