ControlNet およびその他のインジェクションベースの SD コントロール用の WebUI 拡張機能。
この拡張機能は AUTOMATIC1111 の安定拡散 Web UI 用であり、Web UI が元の安定拡散モデルに ControlNet を追加して画像を生成できるようにします。追加はその場で行われるため、結合は必要ありません。
https://github.com/Mikubill/sd-webui-controlnet.git
を入力します。すべてのダウンロード リンクはここにあります: https://github.com/Mikubill/sd-webui-controlnet/wiki/Model-download。
現在、T2I スタイル アダプターと ControlNet 1.1 Shuffle の完全なサポートを含め、利用可能なすべてのモデルとプリプロセッサを完全にサポートしています。 (YAML ファイル名とモデル ファイル名が同じであることを確認してください。「stable-diffusion-webuiextensionssd-webui-controlnetmodels」の YAML ファイルも参照してください。)
ここで、A1111 で高解像度修正をオンにすると、各コントロールネットは 2 つの異なるコントロール イメージ (小さいものと大きいもの) を出力します。小さいものは基本的な生成用で、大きいものは高解像度修正の生成用です。 2 つの制御画像は、「超高品質制御画像リサンプリング」と呼ばれるスマート アルゴリズムによって計算されます。これはデフォルトでオンになっており、設定を変更する必要はありません。
現在、ControlNet は、「マスクされた修復」/「マスクされていない修復」、「画像全体」/「マスクされたのみ」、「マスクされたパディングのみ」および「マスクのぼかし」など、A1111 のさまざまなタイプのマスクを使用して広範囲にテストされています。サイズ変更は、A1111 の「サイズ変更するだけ」/「切り取ってサイズ変更する」/「サイズ変更して塗りつぶす」と完全に一致します。これは、A1111 UI のほぼどこでも ControlNet を問題なく使用できることを意味します。
ピクセルパーフェクト モードをオンにすると、プリプロセッサ (アノテーター) の解像度を手動で設定する必要がなくなります。 ControlNet は、各ピクセルが安定した拡散に完全に一致するように、最適なアノテーター解像度を自動的に計算します。
「新しいキャンバスの幅/高さ」など、以前はわかりにくかった UI が再編成され、ボタン内に表示されるようになりました。プレビュー GUI は、「プレビューを許可」オプションとトリガー ボタン ? によって制御されるようになりました。プレビュー画像のサイズは以前よりも向上しており、上下にスクロールする必要はありません。a1111 の GUI が混乱することはもうありません。
ControlNet 1.1 は、ほぼすべてのアップスケーリング/タイル メソッドをサポートできるようになりました。 ControlNet 1.1 は、スクリプト「Ultimate SD upscale」およびその他のほぼすべてのタイルベースの拡張機能をサポートしています。 「Ultimate SD upscale」と「SD upscale」を混同しないでください。これらは異なるスクリプトです。最も推奨されるアップスケーリング方法は「タイル化 VAE/拡散」ですが、可能な限り多くの方法/拡張機能をテストしていることに注意してください。 「SD アップスケール」は 1.1.117 以降サポートされており、これを使用する場合は、すべての ControlNet イメージを空白のままにしておく必要があることに注意してください (「SD アップスケール」は多少バグがあり、メンテナンスできないため、お勧めしません。「代わりに「究極の SD アップスケール」を使用します)。
以前の 1.0 の推測モードの多くのバグが修正され、現在はコントロール モードと呼ばれています。
これで、どちらの側面がより重要であるかを制御できるようになりました (プロンプトまたは ControlNet)。
「バランス」: CFG スケールの両側に ControlNet、ControlNet 1.0 で「Guess Mode」をオフにするのと同じ
「私のプロンプトの方が重要です」: CFG スケールの両側で ControlNet を使用し、SD U-Net インジェクションを徐々に減らします (layer_weight*=0.825**I、0<=I <13、13 は ControlNet が SD を 13 回インジェクトしたことを意味します) )。このようにして、生成された画像にプロンプトが完全に表示されていることを確認できます。
「ControlNet の方が重要です」: ControlNet は CFG スケールの条件側 (A1111 のバッチ-cond-uncond の cond) でのみ使用されます。これは、cfg-scale が X の場合、ControlNet は X 倍強力になることを意味します。たとえば、cfg-scale が 7 の場合、ControlNet は 7 倍強力になります。ウェイトは変更されないため、ここでの X 倍の強度は「コントロール ウェイト」とは異なることに注意してください。この「より強力な」効果は通常、アーティファクトが少なく、プロンプトに何が欠けているかを ControlNet が推測する余地を与えます (以前の 1.0 では、これは「推測モード」と呼ばれていました)。
入力 (深度+キャニー+ヘッド) | 「バランスの取れた」 | 「私のプロンプトの方が重要です」 | 「ControlNetの方が重要です」 |
これで、制御モデルを必要としないreference-only
プリプロセッサが完成しました。画像を参考にして直接拡散を誘導できます。
(プロンプト「草原を走る犬、最高の品質、...」)
この方法は修復ベースの参照に似ていますが、画像が乱れることはありません。
多くのプロの A1111 ユーザーは、インペイントで参照を含む画像を拡散させるテクニックを知っています。たとえば、犬の 512x512 の画像があり、同じ犬の別の 512x512 画像を生成したい場合、一部のユーザーは 512x512 の犬の画像と 512x512 の空白の画像を 1024x512 の画像に接続し、修復に送信してマスクアウトします。空白の 512x512 部分を使用して、同様の外観の犬を拡散します。ただし、この方法では画像がつながってしまったり、歪みが多くなったりするため、通常はあまり満足のいくものではありません。
このreference-only
ControlNet は、SD のアテンション レイヤーを任意の独立した画像に直接リンクできるため、SD は参照用に任意の画像を読み取ることができます。これを使用するには、少なくとも ControlNet 1.1.153 が必要です。
使用するには、プリプロセッサとしてreference-only
を選択し、画像を配置するだけです。 SD は画像を参照として使用するだけです。
この方法は可能な限り「意見を取り入れない」ものであることに注意してください。これには、アテンション レイヤーを参照画像に接続するための、個人的な好みを含まない、非常に基本的な接続コードのみが含まれています。ただし、意見のあるコードを含めないように最善を尽くしたとしても、重み付けや CFG スケールなどに対処するために主観的な実装をいくつか記述する必要があります。技術レポートは準備中です。
その他の例はこちら。
ControlNet 1.1 のドキュメントも参照してください。
https://github.com/lllyasviel/ControlNet-v1-1-nightly#model-specation
これが私の設定です。問題が発生した場合は、この設定を健全性チェックとして使用できます。
https://huggingface.co/lllyasviel/ControlNet/tree/main/models
以前の ControlNet 1.0 の以前のモデルはすべて引き続き使用できます。ここで、以前の「深さ」は「 Depth_midas 」と呼ばれ、以前の「normal」は「normal_midas」と呼ばれ、以前の「hed」は「softedge_hed」と呼ばれます。 1.1 からは、すべてのライン マップ、エッジ マップ、線画マップ、境界マップの背景が黒になり、線が白になります。
(TencentARC/T2I アダプターより)
T2I アダプター モデルを使用するには:
「CoAdapter」はまだ実装されていないことに注意してください。
以下の結果は ControlNet 1.0 からのものです。
ソース | 入力 | 出力 |
---|---|---|
(プリプロセッサなし) | ||
(プリプロセッサなし) | ||
以下の例は T2I アダプターからのものです。
t2iadapter_color_sd14v1.pth
から:
ソース | 入力 | 出力 |
---|---|---|
t2iadapter_style_sd14v1.pth
から:
ソース | 入力 | 出力 |
---|---|---|
(クリップ、非画像) |
--xformers
を有効にし、UI でLow VRAM
モードにチェックを入れると、最大 768x832 になります。このオプションでは、単一世代に対して複数の ControlNet 入力が可能になります。このオプションを有効にするには、設定でMulti ControlNet: Max models amount (requires restart)
を変更します。変更を有効にするには、WebUI を再起動する必要があることに注意してください。
ソースA | ソースB | 出力 |
Weight は、コントロールネットの「影響」の重みです。これは、注意を促したり強調したりすることに似ています。例: (マイプロンプト: 1.2)。技術的には、これは、ControlNet 出力を元の SD Unet とマージする前に乗算する係数です。
ガイダンスの開始/終了は、コントロールネットが適用する合計ステップの割合です (ガイダンスの強度 = ガイダンスの終了)。これは、編集/シフトのプロンプトに似ています。例 [myprompt::0.8] (最初から合計ステップの 80% まで適用されます)
任意のユニットをバッチ モードにすると、すべてのユニットに対してバッチ モードが有効になります。各ユニットのバッチ ディレクトリを指定するか、img2img バッチ タブの新しいテキスト ボックスをフォールバックとして使用します。テキストボックスは img2img バッチ タブにありますが、これを使用して txt2img タブで画像を生成することもできます。
この機能は、gradio ユーザー インターフェイスでのみ使用できることに注意してください。カスタム バッチ スケジュールのために、必要なだけ API を呼び出します。
この拡張機能は、API または外部拡張機能呼び出しを介して txt2img または img2img タスクを受け入れることができます。外部通話の設定で、 Allow other scripts to control this extension
有効にする必要がある場合があることに注意してください。
API を使用するには、引数--api
を指定して WebUI を起動し、 http://webui-address/docs
にアクセスしてドキュメントまたはチェックアウトの例を参照します。
外部呼び出しを使用するには: Checkout Wiki
この拡張機能は、次のコマンド ライン引数を webui に追加します。
--controlnet-dir ADD a controlnet models directory
--controlnet-annotator-models-path SET the directory for annotator models
--no-half-controlnet load controlnet models in full precision
--controlnet-preprocessor-cache-size Cache size for controlnet preprocessor results
--controlnet-loglevel Log level for the controlnet extension
--controlnet-tracemalloc Enable malloc memory tracing
pytorch で毎晩テスト: #143 (コメント)
この拡張機能を mps および通常の pytorch で使用するには、現時点では--no-half
を指定して WebUI を起動する必要がある場合があります。
以前のバージョン (sd-webui-controlnet 1.0) は次の場所にアーカイブされています。
https://github.com/lllyasviel/webui-controlnet-v1-archived
このバージョンを使用しても、更新が一時的に停止されるわけではありません。すべての更新を永久に停止します。
以前のすべての結果をピクセルごとに 100% 再現する必要があるプロのスタジオで作業している場合は、このバージョンを検討してください。
この実装は kohya-ss/sd-webui-Additional-networks からインスピレーションを得ています。