Stable Diffusion Web UI を使えば、プロンプトや既存の画像から様々な画像を生成することは可能ですが、ポーズに関してはなかなか思い通りにならないことも多いですね。
img2img でもそれっぽい事はできますが、Control Netを使えば確実に同じポーズで画像生成ができるようになります。
それ以外にも、人物の顔を引き継いで(顔を固定して)新たな画像を生成する機能や、画像の高画素化など、画像生成で痒いとこに手が届く便利機能が数多く搭載されています。
しかし、Control Netには数多くの機能があり、バージョンアップや拡張機能の追加が行われているため、全てを紹介しきれません。
そこで、本記事では代表的な機能の中から、入門者が知っておくと便利な機能に限定して詳しく紹介したいと思います。
Control Netとは
Control Netとは、Stable Diffusion WebUIの拡張機能の1つで、あらかじめ用意した画像からポーズ、輪郭、奥行きなどの情報(形状情報)を抽出し、それを用いて画像生成する技術です。
Control Netでは、用意した画像からどのような形状情報を抽出するかを指定する「プリプロセッサ(前処理)」と、それに対応したモデルを選択することで、元の画像の特徴を持った画像を新たに生成できるようになっています。

Control Net でいうモデルは、Stable Diffusion WebUI で指定する生成モデルと置き換わるのではなく、あくまでもプリプロセッサで処理された結果をインプットとしてControl Net内で使われるものです。
Control Netは、Stable Diffusion WebUI で設定した情報(プロンプト、パラメータ、モデルなど)と協力しあいながら画像生成してくれるので、txt2img や img2img、その他の機能と組み合わせることが可能です。
なお、本記事紹介する機能は、以下の通りです。

使えるようになるまでの手順
Control Net を使えるようにするには、次の4つの手順を実行する必要があります。

インストール方法
それでは、4つの手順についてスクリーンショットをまじえて解説していきましょう。
Control Net をインストール
Control Net は次のURLにアップロードされています。
stable diffusion の Extensionsタブを選択し、その中にあるInstall from URL タブを選択します。あとは、下図のとおり、上記のURLを貼り付け、Install ボタンをクリックして下さい。

stable diffusion を再起動
インストールが完了したら、Installed タブを選択し、「Apply and restart UI」ボタンをクリックしておきましょう。

環境によっては、下記のエラーが発生してリスタートできない場合があります。この時は焦らず webui.bat を実行して、stable diffusion を立ち上げ直してください。

ブラウザ側もエラーになっていると思いますが、stable diffusion が立ち上がったら、ブラウザのリロードアイコンをクリックすれば治ります。

Control Net用モデルのダウンロード
Control Net用のモデルは Hugging Face からダウンロードします。

Hugging Face のサイトに移動したら、controlnet で検索し、表示される ControlNet-v1-1を選択してください。
尚、ControlNet-v1-1は2023年6月時点の最新版なので、将来バージョンアップされると v1 が v2になったり v3になったりします。
その時は、新しいバージョンを入手するようにしてください。

ControlNet-v1-1 のダウンロード画面に移動したら、Files and versionsタブを選択します。
すると、拡張子pthとyaml のファイルがたくさん表示されますので、拡張子 pth の方をダウンロードして下さい。yaml をダウンロードしても構いませんが、使うことはありません。
拡張子pth と yaml を見分けるのが面倒だと思いますが、赤文字で「LFS」と書かれている行がpthファイルであり、この「LFS」をクリックするとダウンロードできます。

他のサイトでは、 ControlNet-modules-safetensors からモデルをダウンロードせよと書かれている場合もあります。
こちらは本家(前述)が公開しているモデルを safetensors 形式のフォーマットに変換したもの(セキュリティを強化したもの)なので、どちらを使っても構いません。ただ、本家のモデルが全て変換されているわけではないので、その点はご注意ください。

ダウンロードしたモデルを指定フォルダにコピー
モデルのダウンロードが終わったら、stable-diffusion-webui がインストールされているフォルダを起点に、 extensions→sd-webui-controlnet→models にモデルファイルをコピーします。

以上でインストール作業は終了です。
Control Netの使い方
ここからは Control Net の使い方について解説致します。
Control Netの呼び出し方
stable diffusion web ui の txt2img タブの下あたりに、ControlNet v1.1.215 と表示されていると思います(新しいバージョンをインストールされた方は、そのバージョンが表示されます)。
下図の赤枠の部分をクリックすると、Control Net のパラメータ設定画面が表示されます。

Control Netのパラメータ設定画面
下記がパラメータ表示画面です。ControlNet v1.1.215 の画面であるため、バージョンによって多少異なるかと思います。

①画像のアップロード | ここにポーズや棒人形など、元となる画像をドラッグ&ドロップします。 |
②Control-Netの有効化 | Control Netを使う場合、ここに必ずチェックを入れて下さい。 |
③プリプロセッサ(前処理)選択 | 元となる画像から輪郭や骨格などの形状情報のどれを抽出したいかを選びます。 |
④モデル選択 | 抽出したい形状情報に合わせて、モデルを選択します。 |
⑤プリプロセッサとモデルのフィルター | 例えば、OpenPose をクリックすると、プリプロセッサとモデルそれぞれに OpenPoseに関係するものだけが選べるようになります。 「よく使うプリプロセッサとモデルの組み合わせをボタン1つで選択できる」と考えていいでしょう。 |
⑥リロードボタン | モデルのドロップダウンリストが表示されない場合、ここをクリックすると表示できます。 |
⑦再現度及びステップの指定 | Control Weitは元の画像をどれくらい生成画像に反映させるかの指定です。 Starting ~と Ending~は、画像生成を行うステップにおいて、Control Net の機能をどこからどこまで反映させるかの指定です。 |
⑧プロンプトとControlNetの優先度指定 | 画像生成する際、プロンプトとControl Net のどちらの指示に重きを置くかを指定します。 |
⑨生成画像のリサイズ指定 | 元画像と生成画像の縦横比(アスペクト比)が異なる場合、どう生成させたいかの指定です。 Just Resize は、アスペクト比を無視して画像を生成します。 Crop and Resize は、アスペクト比を維持しますが、余白部分は黒く塗りつぶします。 Resize and Fillもアスペクト比を維持しますが、余白部分は画像を自動生成してくれます。 |
①プリプロセッサとモデルのフィルター には多くのボタンが並んでいますが、このボタンをクリックすことで、プリプロセッサとモデルのドロップダウンリストがフィルタリングされます。
例えば、Cannyをクリックすると、プリプロセッサには Canny、モデルには Control_v11p_sd15_canny が選択された状態になります。
OpenPose をクリックすると、プリプロセッサは openpose、モデルは control_v11p_sd15_openpose が選択された状態になります。この時、プリプロセッサのドロップダウンリストを表示させると、open pose、openpose_face、openpose_faceonly_・・・という具合に、openpose で使用できるプリプロセッサの候補だけが表示されるようになります。

Control Netを使った画像生成の方法
Control Net はあくまでも補助的な機能となるため、従来通りプロンプトとパラメータを指定します。
次に、ポーズに使いたい画像(形状情報を抽出する元の画像)をドラッグ&ドロップし、それに応じた Control Netのパラメータを設定(プリプロセッサやモデルの選択)を行い、最後にGenerateボタンで画像を生成します。

輪郭抽出によるポーズ指定
元の画像があった場合、一番確実にポーズ指定が出来る方法です。
- プリプロセッサ:canny
- モデル:control_v11p_sd15_canny
生成される画像、ポーズだけでなく顔や髪型、服装まで類似します。また、抽出された輪郭画像も同時に出力されるため、これを保存しておくことで再利用できます。

骨格検出によるポーズ指定
元の画像から骨格データ、いわゆる棒人間を作成後、それを使って画像を生成します。
- プリプロセッサ:openpose
- モデル:control_v11p_sd15_openpose
ポーズはまねてくれますが、衣装や背景は全く別のものが生成されるため、ポーズだけ引き継ぎたい場合に使います。また、棒人間も生成されるので、これを保存しておくと再利用できます。

骨格データ(棒人間)によるポーズ指定
棒人間(骨格データ)を使って画像を生成します。この場合はプリプロセッサは使わないので、none を指定しておきましょう。
- プリプロセッサ:none
- モデル:control_v11p_sd15_openpose
生成画像にあまりポーズが反映されていない場合は、Just Resizeを選択すると改善できます。

フリー画像の棒人間は CIVITAI で多数公開されています。pose で検索するとヒットしますので、気に入ったものをダウンロードしましょう。

ファイルはZip形式で圧縮されていて、1つのファイルに数百のポーズが格納されていることもあります。
ちなみに、今回の記事で使ったポーズ(骨格データ)は、こちらからダウンロードできます。
その他にも数多くのポーズ集が公開されていますので、興味のある方は「【知らなきゃ損】stable diffusionで使える棒人間ポーズ集はこれだ!」をご一読ください。
指定した範囲の画像生成
stable diffusion web ui の img2img のinpaint と同じ操作で同じことが出来ますが、こちらの方が高性能です。
- プリプロセッサ:inpaint_only
- モデル:control_v11p_sd15_inpaint

荒い画像の高画質化(繊細化)
同様の機能として画像を拡大しつつ詳細部分を生成する Hires. fix がありますが、こちらは更に画像を拡大できるだけでなく、メモリ不足によるエラーも発生しにくくなっています。
- プリプロセッサ:tile_resample
- モデル:control_v11p_sd15_tile

512×512の画像だと顔が崩れがちですが、Tile を使って1024×1024 で生成すると、綺麗に生成されていることが分かります。

顔を固定した画像生成
生成させた顔が気に入ったからといって、それ引き次いで別の画像を生成する場合、img2img で出来ないことはないですが、顔以外を塗りつぶす操作が非常に面倒でした。
Control Netを使えば、顔を引き継いだまま色々な画像を生成できるため、非常に便利です。
- プリプロセッサ:reference_onty
- モデル:なし(選択不可)

まとめ
今回は、Control Netのインストール方法と使い方について解説しました。
Control Netは元の画像からポーズや輪郭、奥行きなどの形状情報を抽出し、画像生成に反映させる技術です。
どの形状情報を抜き出すかをプリプロセッサのドロップダウンリストで選択し、それに応じたモデルを選択するすることで、元画像に関する様々な情報を生成画像に反映することが可能です。
Control Netは一般的にポーズ指定の代表的な方法として捉えられがちですが、実は顔を固定したまま様々な画像を生成したり、高画質化するといった機能も搭載されています。
stable diffusion web ui だけでは苦労していたことが簡単に出来るようになりますので、是非みなさんもインストールして、使ってみてください。