ControlNet 1.1をインストールする - Stable Diffusion

ControlNet をインストールする手順を紹介します。

インストール手順: Stable Diffusion Web UI

GitHubのControlNetのリポジトリページ(https://github.com/Mikubill/sd-webui-controlnet)にアクセスします。
ページが表示されることを確認し、リポジトリがあることを確認します。


Stable Diffusion Web UIのサーバーを起動し、Webブラウザでアクセスします。
ページ上部の[Extensions]のタブをクリックします。下図のページに切り替わります。


ページ内の内側のタブの[Install from URL]のタブをクリックして選択します。下図のページが表示されます。


一番上のテキストボックス[URL for extension's git repository]にリポジトリの.gitファイルのURLを入力します。
https://github.com/Mikubill/sd-webui-controlnet.git


[Install]ボタンをクリックします。しばらく時間がかかりますが、インストールに成功すると、以下のメッセージが表示されます。
メッセージ
Installed into (stable-diffusion-webuiの配置ディレクトリ)\extensions\sd-webui-controlnet. Use Installed tab to restart.


[Installed]のタブをクリックして表示し、[Apply and restart UI]のボタンをクリックしてWeb UIを再起動するか, コマンドプロンプトのウィンドウを一度終了し、再度 webui-user.batを実行してWeb UIサーバーを起動します。

インストールの確認

WebブラウザでStable Diffusion Web UIのURLにアクセスし、上部の[Extension]タブをクリックします。 下図のページが表示されます。インストールされたExtensionの一覧が表示されます。
一覧に"sd-webui-controlnet"が追加されていることが確認できれば、ControlNetのインストールは完了です。

モデルのインストール : Stable Difission 1.x(1.5)の場合

ControlNetのUIはインストールできましたが、ControlNetの効果を与えるためのモデルは別途インストールする必要があります。
モデルのリポジトリのURL(https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main)をWebブラウザで開きます。

下図のページが表示されます。


モデルのファイルをダウンロードします。インストールする safetensorsファイルと、同名のyamlファイルをダウンロードします。


ダウンロードしたモデルファイルを以下のディレクトリにコピーして配置します。 モデル数が多いため、使用する可能性があるもののみを配置しても良いと思います。
(Stable Diffusion Web UIのプログラムを配置したディレクトリ)\models\ControlNet


モデルのインストール : Stable Difission 2.x(2.1)の場合

メモ
Stable Diffusion 1.5と動作が違ったり、意図したとおりに動作しないモデルがある印象です。完成度は1.5のモデルのほうが高そうです。
Waifu Diffusion 1.5 など、Stable Diffusion 2.1ベースのモデルを利用する場合は、インストールするモデルが異なります。
モデルのリポジトリのURL(https://huggingface.co/thibaud)をWebブラウザで開きます。
下図のページが表示されますので、[thibaud/controlnet-sd21]の項目をクリックします。


controlnet-sd21 のページが表示されます。[Files and versions]のタブをクリックします。


ControlNet 1.1 のStable Diffusion 2.1用のモデルのファイル一覧が表示されます。


モデルのファイルをダウンロードします。今回は各モデルのsafetensors ファイルをダウンロードします。
yamlファイルも必要ですが、記事掲載時点では、このページのyamlファイルには問題があるためか、正しくモデルファイルが開けない場合があります。


ダウンロードしたsafetensorsファイルを以下のディレクトリに配置します。
(Stable Diffusion Web UIのプログラムを配置したディレクトリ)\models\ControlNet


以下のファイルを (モデルファイルの名称).yaml のファイル名でモデルのsafetonsorsファイルと同じ位置に配置します。


yamlファイルの内容は以下です。

yamlファイルの内容
model:
  target: cldm.cldm.ControlLDM
  params:
    linear_start: 0.00085
    linear_end: 0.0120
    num_timesteps_cond: 1
    log_every_t: 200
    timesteps: 1000
    first_stage_key: "jpg"
    cond_stage_key: "txt"
    control_key: "hint"
    image_size: 64
    channels: 4
    cond_stage_trainable: false
    conditioning_key: crossattn
    monitor: val/loss_simple_ema
    scale_factor: 0.18215
    use_ema: False
    only_mid_control: False

    control_stage_config:
      target: cldm.cldm.ControlNet
      params:
        use_checkpoint: True
        image_size: 32 # unused
        in_channels: 4
        hint_channels: 3
        model_channels: 320
        attention_resolutions: [ 4, 2, 1 ]
        num_res_blocks: 2
        channel_mult: [ 1, 2, 4, 4 ]
        num_head_channels: 64 # need to fix for flash-attn
        use_spatial_transformer: True
        use_linear_in_transformer: True
        transformer_depth: 1
        context_dim: 1024
        legacy: False

    unet_config:
      target: cldm.cldm.ControlledUnetModel
      params:
        use_checkpoint: True
        image_size: 32 # unused
        in_channels: 4
        out_channels: 4
        model_channels: 320
        attention_resolutions: [ 4, 2, 1 ]
        num_res_blocks: 2
        channel_mult: [ 1, 2, 4, 4 ]
        num_head_channels: 64 # need to fix for flash-attn
        use_spatial_transformer: True
        use_linear_in_transformer: True
        transformer_depth: 1
        context_dim: 1024
        legacy: False

    first_stage_config:
      target: ldm.models.autoencoder.AutoencoderKL
      params:
        embed_dim: 4
        monitor: val/rec_loss
        ddconfig:
          #attn_type: "vanilla-xformers"
          double_z: true
          z_channels: 4
          resolution: 256
          in_channels: 3
          out_ch: 3
          ch: 128
          ch_mult:
          - 1
          - 2
          - 4
          - 4
          num_res_blocks: 2
          attn_resolutions: []
          dropout: 0.0
        lossconfig:
          target: torch.nn.Identity

    cond_stage_config:
      target: ldm.modules.encoders.modules.FrozenOpenCLIPEmbedder
      params:
        freeze: True
        layer: "penultimate"

以上でインストールは完了です。

モデルのインストール : Stable Difission XL (SDXL)の場合

コレクション

こちらのURLからSDXLに対応したモデルをダウンロードできます。複数の提供元からリリースされているモデルをまとめたHubです。(動作未検証)
https://huggingface.co/lllyasviel/sd_control_collection

Canny

こちらのURLからモデルをダウンロードできます。(動作未検証)
https://huggingface.co/diffusers/controlnet-canny-sdxl-1.0

Depth

こちらのURLからモデルをダウンロードできます。(動作未検証)
https://huggingface.co/SargeZT/controlnet-v1e-sdxl-depth

Seg

こちらのURLからモデルをダウンロードできます。(動作未検証)
https://huggingface.co/SargeZT/sdxl-controlnet-seg

補足:インストール時に GitCommandNotFound: Cmd('git') not found due to: エラーが発生する場合

[Install]ボタンクリック時に、次のエラーが発生する場合があります。
エラーメッセージ
GitCommandNotFound: Cmd('git') not found due to:FileNotFoundError('[WinError2] 指定されたファイルが見つかりません。') 
cmdline: git clone -v -- https://github.com/Mikubill/sd-webui-controlnet.git (stable-diffusion-webuiの配置ディレクトリ)\tmp\sd-webui-controlnet



このエラーが発生した場合は、GIT_PYTHON_GIT_EXECUTABLE システム環境変数を設定します。 設定手順はこちらの記事を参照してください。

著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2023-05-13
iPentec all rights reserverd.