Stable Diffusion WebUI (on Colab) : ControlNet 1.1

Stable Diffusion WebUI (on Colab) : ControlNet 1.1 (ブログ)

作成 : Masashi Okumura (@ClassCat)
作成日時 : 04/27/2023

* 本ページは、以下のドキュメントを参考にしています :

* サンプルコードの動作確認はしておりますが、動作環境の違いやアップグレード等によりコードの修正が必要となるケースはあるかもしれません。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Website: www.classcat.com  ;   ClassCatJP

 

Stable Diffusion WebUI (on Colab) : ControlNet 1.1

ControlNet 1.1 が今月 (2023/04) 公開されましたので導入してみます。1.1 では提供モデル数が 8 から 14 に増加し、更に新機能が追加されています。実験的ですが、Instruct Pix2Pix も利用できるようになっています。

ControlNet はユーザが画像生成過程をカスタマイズすることを可能にする最小限のインターフェイスを提供します。ControlNet を使用してユーザは、深度マップ, セグメンテーション・マップ, エッジ (境界) 検出画像, 走り描き, ポーズ推定画像 etc. のような様々な構造情報を持つ、空間的コンテキストにより生成過程を簡単に条件付けることができます。

この記事では Stable Diffusion WebUI で ControlNet 1.1 (lllyasviel/ControlNet-v1-1-nightly) を導入して使用する方法について簡単に説明します。
※ 現時点では nightly ビルドで安定版ではありませんが、ControlNet 1.0 の機能拡張版であり十分動作しています。

 
前提条件 :

Stable Diffusion WebUI で ControlNet 1.1 を試すには、別途 WebUI の動作環境が必要です。Google Colab 上でのその構築方法については以下の 1 を参照してください :

  1. PyTorch 2.0 : Google Colab で Stable Diffusion WebUI 入門
  2. Stable Diffusion WebUI (on Colab) : HuggingFace モデル / VAE の導入
  3. Stable Diffusion WebUI (on Colab) : LoRA の利用
  4. Stable Diffusion WebUI (on Colab) : 🤗 Diffusers による LoRA 訓練

 

ControlNet 1.1 用拡張ライブラリの新機能とインストール

Stable Diffusion WebUI で ControlNet 1.1 を利用するためには、対応する拡張ライブラリとモデルチェックポイントのインストールが必要です。

このセクションでは ControlNet 用 WebUI 拡張 1.1 Mikubill/sd-webui-controlnet の新機能とインストールについて說明します。この WebUI 拡張は WebUI が ControlNet をサポートすることを可能にします。
※ Stable Diffusion WebUI の構築は完了しているものとします。

 

WebUI 拡張 1.1 の新機能

※ このセクションは New Features in A1111 ControlNet Extension 1.1 の just 翻訳です。

すべての ControlNet 1.0/1.1 と T2I アダプタモデルの完全なサポート

T2I スタイル・アダプタと ControlNet 1.1 Shuffle 用の完全なサポートを含む、利用可能なすべてのモデルとプリプロセッサを完全にサポートするようになりました。(YAML ファイル名とモデルファイル名が同じであることを確認してください、”stable-diffusion-webui/extensions/sd-webui-controlnet/models” の YAML ファイルもご覧ください。)

 

A1111 High-Res. Fix の完全なサポート

A1111 で High-Res Fix を有効にすると、各 controlnet は 2 つの異なる制御画像: 小さいものと大きいものを出力するようになりました。小さいものは基本的な生成のためで、大きいものは High-Res Fix 生成用です。2 つの制御画像は “超高品質な制御画像リサンプリング” と呼ばれるスマートなアルゴリズムで計算されます。これはデフォルトで有効になっていて、設定を変更する必要はありません。

 

A1111 I2I と Mask の完全なサポート

ControlNet は、”Inpaint masked” / “Inpaint not masked”, “Whole picture” / “Only masked”, そして “Only masked padding” & “Mask blur” を含む、A1111 の様々なタイプのマスクで広範囲にテストされています。リサイズは A1111 の “Just resize” / “Crop and resize” / “Resize and fill” に完全に一致します。つまり、A1111 UI 内の殆どどこでも ControlNet を困難なく利用することができます!

 

Pixel Perfect モード

pixel-perfect モードを有効にすると、プリプロセッサ (annotator) の解像度を手動で設定する必要がありません。ControlNet は最善の annotator 解像度を自動的に計算し、その結果各ピクセルは Stable Diffusion に完全にマッチします。

 

ユーザーフレンドリーな GUI と Preprocessor プレビュー

“canvas width/height for new canvas” のような幾つかの以前の混乱しがちな UI を再編成し、それは今では 📝 ボタン内にあります。プレビュー GUI は “allow preview” オプションとトリガーボタン 💥 により制御されます。プレビュー画像サイズは前よりも良くなり、スクロールアップとダウンをする必要はありません – a1111 GUI はもうごちゃごちゃしません!

 

Control モード (以前は Guess モードと呼称)

以前の 1.0 の Guess モードの多くのバグを修正し、それは今では Control モードと呼称します。

Now you can control which aspect is more important (your prompt or your ControlNet)

 

WebUI 拡張 1.1 のインストール

ControlNet 1.1 用 WebUI 拡張 Mikubill/sd-webui-controlnet を実際にインストールします。この拡張は WebUI からでもインストールできますが、extensions ディレクトリに “git clone” すれば簡単です :

%cd /content/stable-diffusion-webui/extensions/

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

※ この操作は ControlNet 1.0 のときと同じです。

 

ControlNet 1.1 モデル・チェックポイントのインストール

ControlNet 1.1 用のモデル・チェックポイントは lllyasviel/ControlNet-v1-1 から取得して extensions/sd-webui-controlnet/models ディレクトリに配備します :

%cd /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/

!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_ip2p.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_shuffle.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_inpaint.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_mlsd.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_seg.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15s2_lineart_anime.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1e_sd15_tile.pth
#!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11u_sd15_tile.pth

 

ControlNet 1.1 モデル概要

ControlNet 1.1 Instruct Pix2Pix (実験的)

  • Instruct Pix2Pix による Stable Diffusion の制御
  • モデルファイル: control_v11e_sd15_ip2p.pth
  • Config ファイル: control_v11e_sd15_ip2p.yaml

 
ControlNet 1.1 Shuffle (実験的)

  • コンテンツ・シャッフルによる Stable Diffusion の制御
  • モデルファイル: control_v11e_sd15_shuffle.pth
  • Config ファイル: control_v11e_sd15_shuffle.yaml

 
ControlNet 1.1 Depth (バグ修正版)

  • 深度マップによる Stable Diffusion の制御
  • モデルファイル: control_v11f1p_sd15_depth.pth
  • Config ファイル: control_v11f1p_sd15_depth.yaml

 
ControlNet 1.1 Canny

  • Canny マップによる Stable Diffusion の制御
  • モデルファイル: control_v11p_sd15_canny.pth
  • Config ファイル: control_v11p_sd15_canny.yaml

 
ControlNet 1.1 Inpaint

  • インペインティングによる Stable Diffusion の制御
  • モデルファイル: control_v11p_sd15_inpaint.pth
  • Config ファイル: control_v11p_sd15_inpaint.yaml

 
ControlNet 1.1 Lineart

  • 線画 (lineart) による Stable Diffusion の制御
  • モデルファイル: control_v11p_sd15_lineart.pth
  • Config ファイル: control_v11p_sd15_lineart.yaml

 
ControlNet 1.1 MLSD

  • M-LSD 直線による Stable Diffusion の制御
  • モデルファイル: control_v11p_sd15_mlsd.pth
  • Config ファイル: control_v11p_sd15_mlsd.yaml

 
ControlNet 1.1 Normal

  • 法線マップによる Stable Diffusion の制御
  • モデルファイル: control_v11p_sd15_normalbae.pth
  • Config ファイル: control_v11p_sd15_normalbae.yaml

 
ControlNet 1.1 Openpose

  • モデルファイル: control_v11p_sd15_openpose.pth
  • Config ファイル: control_v11p_sd15_openpose.yaml
  • Openpose による Stable Diffusion の制御

 
ControlNet 1.1 Scribble

  • Scribble (走り書き) による Stable Diffusion の制御
  • モデルファイル: control_v11p_sd15_scribble.pth
  • Config ファイル: control_v11p_sd15_scribble.yaml

 
ControlNet 1.1 Segmentation

  • セマンティック・セグメンテーションによる Stable Diffusion の制御
  • モデルファイル: control_v11p_sd15_seg.pth
  • Config ファイル: control_v11p_sd15_seg.yaml

 
ControlNet 1.1 Soft Edge

  • ソフトエッジによる Stable Diffusion の制御
    (ソフトエッジは 1.0 では HED と呼称されていました)
  • モデルファイル: control_v11p_sd15_softedge.pth
  • Config ファイル: control_v11p_sd15_softedge.yaml

 
ControlNet 1.1 Anime Lineart

  • アニメ線画による Stable Diffusion の制御
  • モデルファイル: control_v11p_sd15s2_lineart_anime.pth
  • Config ファイル: control_v11p_sd15s2_lineart_anime.yaml

 
ControlNet 1.1 Tile

Update 2023 April 25: The previously unfinished tile model is finished now. The new name is “control_v11f1e_sd15_tile”. The “f1e” means 1st bug fix (“f1”), experimental (“e”). The previous “control_v11u_sd15_tile” is removed. Please update if your model name is “v11u”.

  • タイルによる Stable Diffusion の制御
  • モデルファイル: control_v11f1e_sd15_tile.pth
  • Config ファイル: control_v11f1e_sd15_tile.yaml

 

以上