這些是 ComfyUI 本機實現的自訂節點
我的貢獻僅限於 ComfyUI 的改編,所有功勞都歸於論文作者。
2024 年 5 月 16 日。 RAUNet 已實作。
2024 年 5 月 12 日。
2024年5月11日,實現影像批量處理。您甚至可以將 BrushNet 新增至 AnimateDiff vid2vid 工作流程中,但它們不能一起工作 - 它們是不同的模型,並且都嘗試修補 UNet。添加了更多示例。
2024 年 5 月 6 日。更新後您的工作流程可能無法正常運作。請勿恐慌!檢查BrushNode的end_at
參數,如果等於1,則將其變更為某個大數字。請閱讀下面的「使用」部分中的有關參數的資訊。
2024 年 5 月 2 日。但它需要積極和消極的調節,因此工作流程略有變化,請參見範例。
2024 年 4 月 28 日,再次返工,造成不便,請諒解。但現在 BrushNet 是 ComfyUI 原生的。著名的 cubiq 的 IPAdapter Plus 現已與 BrushNet 合作!我希望...:) 請報告您發現的任何錯誤。
2024 diffusers
4 月 18 日。可以使用 LoRA 模型。
2024 年 4 月 11 日。
將儲存庫克隆到custom_nodes
目錄並安裝需求:
git clone https://github.com/nullquant/ComfyUI-BrushNet.git
pip install -r requirements.txt
BrushNet的檢查點可以從這裡下載。
segmentation_mask_brushnet_ckpt
中的檢查點提供在 BrushData 上訓練的檢查點,該檢查點具有分段優先權(遮罩具有相同形狀的物件)。 random_mask_brushnet_ckpt
為隨機掩模形狀提供了更通用的 ckpt。
segmentation_mask_brushnet_ckpt
和random_mask_brushnet_ckpt
包含SD 1.5模型的BrushNet,而segmentation_mask_brushnet_ckpt_sdxl_v0
和random_mask_brushnet_ckpt_sdxl_v0
用於SDXL。
您應該將diffusion_pytorch_model.safetensors
檔案放置到models/inpaint
資料夾中。您也可以在extra_model_paths.yaml
中指定inpaint
資料夾。
對於 PowerPaint,您應該下載三個檔案。此處的diffusion_pytorch_model.safetensors
和pytorch_model.bin
應放置在您的models/inpaint
資料夾中。
您還需要 SD1.5 文字編碼器模型model.safetensors
。您可以從這裡或其他地方獲取它。您也可以使用 fp16 版本。它應該放置在您的models/clip
資料夾中。
這是我的models/inpaint
資料夾的結構:
你的可能會有所不同。
以下是預期工作流程的範例。此範例的工作流程可以在「example」目錄中找到。
工作流程
工作流程
工作流程
有時推理和 VAE 會破壞影像,因此您需要將修復影像與原始工作流程混合。您可以在第一張圖像中看到修復後模糊和損壞的文字以及我想如何修復它。
工作流程
ControlNet 精明邊緣
工作流程
工作流程
要升級,您應該使用基本模型,而不是 BrushNet。對於調節也是如此。 BrushNet 和 KSampler 之間的潛在升級將不起作用或會為您帶來奇怪的結果。這些限制是由於 BrushNet 的結構及其對 UNet 計算的影響所造成的。
工作流程
如果您遇到 OOM 問題,可以使用 AnimateDiff-Evolved 中的進化採樣:
工作流程
在上下文選項中,將 context_length 設定為可以載入到 VRAM 中的圖像數量。影像將以該大小的區塊進行處理。
工作流程
當您處理大圖像而修復蒙版很小時,最好剪切圖像的一部分,對其進行處理,然後將其混合回去。我為此類工作流程建立了一個節點,請參閱範例。
工作流程
工作流程
通常很難完全刪除該對象,尤其是當它位於前面時:
您應該嘗試在否定提示中新增物件描述並描述空白場景,如下所示:
dtype
,預設為torch.float16
。 BrushNet 的 torch.dtype。如果您有舊的 GPU 或 NVIDIA 16 系列卡,請嘗試切換到torch.float32
。 scale
,預設為 1.0:BrushNet 的「強度」。 BrushNet 的輸出先乘以scale
,然後再加入原始unet 中的殘差。start_at
,預設為 0:BrushNet 開始應用的步驟。end_at
,預設為 10000:BrushNet 停止應用的步驟。以下是使用最後兩個參數的範例。
CLIP
:應從 PowerPaintCLIPLoader 節點傳遞的 PowerPaint CLIP。fitting
:PowerPaint 貼合度。function
:PowerPaint 函數,詳細資料請參閱其頁面。save_memory
:如果設定此選項,注意力模組會將輸入張量分割成切片,以分幾個步驟計算注意力。這對於節省一些記憶體以換取速度降低很有用。如果您用完 VRAM 或在 Mac 上出現Error: total bytes of NDArray > 2**32
,請嘗試將此選項設為max
。當使用某些網路功能時,PowerPaint的作者建議在提示中加入短語:
empty scene blur
empty scene
empty scene
許多 ComfyUI 使用者使用自訂文字產生節點、CLIP 節點和許多其他調節。我不想破壞所有這些節點,所以我沒有添加提示更新,而是依賴用戶。我自己的實驗也表明,這些提示的添加並不是絕對必要的。
潛在圖像可以來自 BrushNet 節點,也可以不是,但它應該與原始圖像大小相同(在潛在空間中除以 8)。
BrushNet 和 PowerPaint 節點中的positive
negative
均用於內部運算,然後簡單地複製到輸出。
請注意,由於 BrushNet 的結構,並非所有工作流程和節點都適用於 BrushNet。也將模型變更放在 BrushNet 節點之前,而不是之後。如果您需要模型在 BrushNet 推理後處理圖像,請使用基礎一(請參閱下面的升級範例)。
du_start
,預設為 0:開始應用下取樣/上取樣調整大小的步驟。du_end
,預設為 4:下取樣/上取樣調整大小停止應用的步驟。xa_start
,預設為 4:開始套用 CrossAttention 大小調整的步驟。xa_end
,預設為 10:CrossAttention 調整大小停止應用的步驟。有關範例和解釋,請查看此處。
BrushNet 有一些限制(來自論文):
不幸的是,由於 BrushNet 程式碼的性質,某些節點與這些節點不相容,因為我們正在嘗試修補相同的 ComfyUI 功能。
已知不相容節點的列表。
該代碼基於