ControlNetで画像生成

ControlNetで画像生成 Stable Diffusion
ControlNetで画像生成

ControlNetは、条件(ポーズ構図境界など)をつけることにより、目的に合う画像を生成しやすくなるStable Diffusionの拡張機能です。
そんなControlNetは2023年4月にバージョン1.1をリリースしました。
機能も増え性能も向上した印象があります。
この記事ではControlNetとは何か、設定方法、使い方について紹介します。

ControlNetとは

Stable Diffusion のような拡散モデルの画像生成AIが台頭する以前、GAN画像処理を行って画像を生成していました。
ControlNetはそんなGANで用いた技術、画像処理方法を拡散モデルにも使おう!というイメージです。
(GANのedgeConnectはcannyエッジ画像を用いて画像生成していたが、ControlNetでもcannyエッジ画像を用いて画像生成しよう!という感じです。)

テキストから画像を生成する(text2image)例を考えますと、

  • 通常のStable Diffusion :テキスト → 画像
  • ControlNetを追加したStable Diffusion :テキスト + 特徴 → 画像

こんな感じで、特徴を使ってある程度生成する画像をコントロール(制限)してあげるイメージです。
この特徴を追加する機能が、バージョン1.1では14種類に増えたというわけです。

ControlNetの機能

#機能内容
1ip2pプロンプトで描く
2shuffle画像の全体をシャッフルして描く
3cannyエッジ(輪郭)を描く
4depth深度マップを描く
5inpaint画像の一部を補間して描く
6lineart線画(実写より)を描く
7mlsd直線を描く
8normalbae法線マップを描く
9openpose骨格(棒人間)を描く
10scribble輪郭を描く(softedgeより柔らかい)
11segセグメンテーションマップを描く
12softedge輪郭を描く(cannyより柔らかい)
13lineart_anime線画(2次元より)を描く
14tile高解像度で描く

lineartとlineart_animeは、得意な絵が3Dか2Dかの違い。
canny、softedge、scribbleなんかはどれも似た感じ。
shuffleは、マーブリングしたような画像にするので結構面白いです。

ControlNetの用語

Stable Diffusion Web UI のパラメータにある用語は以下の通り。

  • Preprocessor:特徴抽出方法。前処理。
  • Model:画像生成コントロール方法。後処理。

画像生成の流れはPreprocessorで入力画像から特徴を抽出し、Modelで特徴を制限しながら画像を生成します。
ControlNetは特徴を制限する(Model)部分を指します。

詳しくは論文を参照ください。
論文:https://arxiv.org/abs/2302.05543v1

ControlNetの追加方法

ControlNetの最新バージョン1.1のGitはこちらです。

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

ControlNetをStable Diffusion Web UI に追加する方法は以下を参考に実施ください。
通常の拡張機能の追加方法と同じです。


上記を追加しただけですと、モデルファイルはまだダウンロードできていません。
以下のサイトからモデルファイルをダウンロードしてください。
(本来、設定ファイルのyamlも必要ですが、ControlNetをインストールするとバージョン1.1のyamlも配置してくれるのでダウンロード不要です。)

名前がcontrol_v11●_sd15_▲_fp16.safetensorsとなっているのがモデルファイルです。
通常のpth(1.45GB)より軽い(723MB)ので、まずはこちらを試すと良いです。

全部で14種類のモデルファイルがありますが、
OpenPoseだとcontrol_v11p_sd15_openpose_fp16.safetensorsです。

ダウンロードしたモデルファイルは、Stable Diffusion Web UIの以下のフォルダに配置してください。

モデルファイルの配置場所
stable-diffusion-webui/extensions/sd-webui-controlnet/models/

ControlNetの使い方

ControlNetを追加しますと、Stable Diffusion Web UI の画面に「ControlNet」が追加されます。

ControlNetの使い方
ControlNetの使い方

クリックするとパラメータ設定画面が展開されます。
ControlNetは14種類ありますが、基本的な使い方は同じです。

ControlNetの使い方
  1. Enable にチェックを入れる
    (これがControlNetの有効/無効スイッチです)
  2. 画像を入力
  3. Preprocessor に前処理したい機能を選択
  4. Model に後処理したい機能を選択
  5. その他パラメータを設定
  6. Generate

Preprocessorは入力した画像に対して前処理をします。
例えばPreprocessorにOpenPoseを選択した場合、画像から骨格(棒人間)を抽出します。
抽出した棒人間画像はGenerate後に出力してくれます。

Modelは追加で制限する機能のことです。
例えばModelにOpenPoseを選択した場合、骨格(棒人間)の情報も使って画像生成します。

ControlNetはStable Diffusionにおける追加層ですので、今までの機能も併用して使えます。
image2imageで使うとき最初のうちは、この画像は普通の画像入力だっけ?ControlNetの方に入力にするんだっけ?と迷うかもしれません。(上記手順2の画像入力は、ControlNetの方です。)
LoRAももちろん併用可能です!

ControlNetで画像生成

ControlNetを使うことで生成できる画像の幅が広がります。
14種類の機能があり、それぞれ得意な画像生成が異なります。

以下を参考に画像生成をお試しください。
今までの画像生成よりレベルアップすること間違いなしです!
Mac(MPS)使いの方は、そのままではいくつか動かせない機能があります!

OpenPose



Segmentation

Scribble

Canny

コメント

タイトルとURLをコピーしました