ControlNet 和其他基於注入的 SD 控制項的 WebUI 擴充功能。
此擴充適用於 AUTOMATIC1111 的穩定擴散 Web UI,讓 Web UI 將 ControlNet 新增至原始穩定擴散模型以產生影像。新增是即時的,不需要合併。
https://github.com/Mikubill/sd-webui-controlnet.git
到「擴充 git 儲存庫的 URL」。您可以在這裡找到所有下載連結:https://github.com/Mikubill/sd-webui-controlnet/wiki/Model-download。
現在我們完美支援所有可用的型號和預處理器,包括完美支援 T2I 樣式適配器和 ControlNet 1.1 Shuffle。 (確保您的 YAML 檔案名稱和模型檔案名稱相同,請同時參閱「stable-diffusion-webuiextensionssd-webui-controlnetmodels」中的 YAML 檔案。)
現在,如果您在 A1111 中開啟 High-Res Fix,每個控制網路將輸出兩個不同的控制影像:一大一小。小的用於您的基本生成,大的用於您的高分辨率修復生成。這兩個控製影像是透過稱為「超高品質控製影像重採樣」的智慧演算法計算的。預設此功能處於開啟狀態,您無需變更任何設定。
現在,ControlNet 使用A1111 的不同類型的遮罩進行了廣泛的測試,包括“遮罩修復”/“未遮罩修復”、“全圖”/“僅遮罩”、“僅遮罩填充”和“遮罩模糊」。調整大小與A1111的“僅調整大小”/“裁剪並調整大小”/“調整大小並填充”完美匹配。這意味著您可以毫無困難地在 A1111 UI 中的幾乎所有位置使用 ControlNet!
現在,如果您開啟像素完美模式,則無需手動設定預處理器(註釋器)解析度。 ControlNet 將自動為您計算最佳註釋器分辨率,以便每個像素完美匹配穩定擴散。
我們重新組織了一些以前令人困惑的使用者介面,例如“新畫布的畫布寬度/高度”,現在它位於按鈕中。現在預覽 GUI 由「允許預覽」選項和觸發按鈕 ? 控制。預覽影像尺寸比以前更好,您不需要上下滾動 - 您的 a1111 GUI 將不再混亂!
現在ControlNet 1.1幾乎可以支援所有的Upscaling/Tile方法。 ControlNet 1.1 支援腳本「Ultimate SD upscale」和幾乎所有其他基於圖塊的擴充。請不要將“Ultimate SD upscale”與“SD upscale”混淆 - 它們是不同的腳本。請注意,最建議的升級方法是“平鋪 VAE/擴散”,但我們測試了盡可能多的方法/擴展。請注意,自 1.1.117 起支援“SD upscale”,如果您使用它,則需要將所有 ControlNet 影像保留為空白(我們不建議“SD upscale”,因為它有些錯誤並且無法維護 - 使用“終極SD 高檔”而不是)。
我們修復了之前1.0的猜測模式中的許多錯誤,現在它被稱為控制模式
現在您可以控制哪個方面更重要(您的提示或您的 ControlNet):
「平衡」:CFG 刻度兩側的 ControlNet,與關閉 ControlNet 1.0 中的「猜測模式」相同
「我的提示更重要」:CFG規模兩側的ControlNet,逐漸減少SD U-Net注入(layer_weight*=0.825**I,其中0<=I <13,13表示ControlNet注入SD 13次)。透過這種方式,您可以確保您的提示完美地顯示在生成的圖像中。
「ControlNet 更重要」:ControlNet 僅在 CFG 規模的條件側(A1111 的 batch-cond-uncond 中的 cond)。這表示如果您的 cfg-scale 為 X,則 ControlNet 的強度將增強 X 倍。請注意,此處的 X 倍強度與「控制重量」不同,因為您的重量沒有修改。這種「更強」的效果通常具有較少的偽影,並為 ControlNet 提供更多空間來猜測提示中缺少的內容(在之前的 1.0 中,稱為「猜測模式」)。
輸入(深度+canny+hed) | “均衡” | “我的提示更重要” | “ControlNet 更重要” |
現在我們有一個reference-only
預處理器,不需要任何控制模型。它可以直接以圖像為參考來指導擴散。
(提示「草原上奔跑的狗,品質最好,…」)
此方法類似於基於修復的參考,但它不會使您的影像變得混亂。
許多專業的A1111用戶都知道透過修復參考來擴散影像的技巧。例如,如果您有一張 512x512 的狗圖像,並且想要生成另一張具有同一隻狗的 512x512 圖像,有些用戶會將 512x512 狗圖像和 512x512 空白圖像連接成 1024x512 圖像,發送到 inpaint 512x512 部分來漫射具有相似外觀的狗。然而,這種方法通常不太令人滿意,因為影像是相連的並且會出現許多失真。
這個reference-only
ControlNet 可以直接將 SD 的注意力層連結到任何獨立影像,以便您的 SD 可以讀取任意影像以供參考。您至少需要 ControlNet 1.1.153 才能使用它。
要使用,只需選擇reference-only
作為預處理器並放置影像。您的 SD 將僅使用該影像作為參考。
請注意,此方法盡可能「無意見」。它只包含非常基本的連接代碼,沒有任何個人偏好,用於將注意力層與您的參考圖像連接起來。然而,即使我們盡力不包含任何有意見的程式碼,我們仍然需要編寫一些主觀實作來處理權重、cfg-scale 等 - 技術報告正在進行中。
更多範例請參見此處。
另請參閱 ControlNet 1.1 的文檔:
https://github.com/lllyasviel/ControlNet-v1-1-nightly#model-specation
這是我的設定。如果遇到任何問題,可以使用此設定作為健全性檢查
https://huggingface.co/lllyasviel/ControlNet/tree/main/models
您仍然可以使用先前的 ControlNet 1.0 中的所有先前模型。現在,以前的“深度”現在稱為“深度_midas”,以前的“法線”稱為“normal_midas”,以前的“hed”稱為“softedge_hed”。從1.1開始,所有的線圖、邊緣圖、線稿圖、邊界圖都將有黑色背景和白色線條。
(取自騰訊ARC/T2I-Adapter)
若要使用 T2I 轉接器型號:
請注意,“CoAdapter”尚未實現。
以下結果來自 ControlNet 1.0。
來源 | 輸入 | 輸出 |
---|---|---|
(無預處理器) | ||
(無預處理器) | ||
以下範例來自 T2I-Adapter。
來自t2iadapter_color_sd14v1.pth
:
來源 | 輸入 | 輸出 |
---|---|---|
來自t2iadapter_style_sd14v1.pth
:
來源 | 輸入 | 輸出 |
---|---|---|
(剪輯,非影像) |
--xformers
並在 UI 中勾選Low VRAM
模式,最高可達 768x832此選項允許單代有多個 ControlNet 輸入。若要啟用此選項,請變更設定中的Multi ControlNet: Max models amount (requires restart)
。請注意,您需要重新啟動 WebUI 才能使變更生效。
來源A | 來源B | 輸出 |
權重是controlnet「影響力」的權重。它類似於提示注意/強調。例如(我的提示: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