🚀 Controlnet - v1.1 - 軟邊緣版本
Controlnet v1.1 是一款基於擴散模型的圖像生成控制網絡,它可以為預訓練的大型擴散模型添加額外的條件控制,支持邊緣圖、分割圖、關鍵點等多種條件輸入,從而豐富了控制大型擴散模型的方法,進一步推動了相關應用的發展。
🚀 快速開始
Controlnet v1.1 是 Controlnet v1.0 的後續模型,由 Lvmin Zhang 在 lllyasviel/ControlNet-v1-1 中發佈。
此檢查點是將 原始檢查點 轉換為 diffusers
格式後的版本,可與 Stable Diffusion 結合使用,例如 runwayml/stable-diffusion-v1-5。
更多詳細信息,請查看 🧨 Diffusers 文檔。
ControlNet 是一種神經網絡結構,通過添加額外條件來控制擴散模型。

此檢查點對應於基於 軟邊緣 條件的 ControlNet。
✨ 主要特性
- 支持額外輸入條件:ControlNet 可以控制預訓練的大型擴散模型,支持邊緣圖、分割圖、關鍵點等額外輸入條件。
- 端到端學習:ControlNet 以端到端的方式學習特定任務的條件,即使訓練數據集較小(< 50k),學習過程也很穩健。
- 訓練速度快:訓練 ControlNet 的速度與微調擴散模型相當,並且可以在個人設備上進行訓練。如果有強大的計算集群,模型也可以擴展到大量(數百萬到數十億)的數據。
📦 安裝指南
安裝外部依賴
如果你想處理圖像以創建輔助條件,需要安裝以下外部依賴:
$ pip install controlnet_aux==0.3.0
安裝 diffusers
及相關包
$ pip install diffusers transformers accelerate
💻 使用示例
基礎用法
建議將此檢查點與 Stable Diffusion v1-5 一起使用,因為該檢查點是在其上進行訓練的。實驗表明,該檢查點也可以與其他擴散模型(如經過微調的 Stable Diffusion)一起使用。
import torch
import os
from huggingface_hub import HfApi
from pathlib import Path
from diffusers.utils import load_image
from PIL import Image
import numpy as np
from controlnet_aux import PidiNetDetector, HEDdetector
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15_softedge"
image = load_image(
"https://huggingface.co/lllyasviel/control_v11p_sd15_softedge/resolve/main/images/input.png"
)
prompt = "royal chamber with fancy bed"
processor = HEDdetector.from_pretrained('lllyasviel/Annotators')
processor = PidiNetDetector.from_pretrained('lllyasviel/Annotators')
control_image = processor(image, safe=True)
control_image.save("./images/control.png")
controlnet = ControlNetModel.from_pretrained(checkpoint, torch_dtype=torch.float16)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", controlnet=controlnet, torch_dtype=torch.float16
)
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
generator = torch.manual_seed(0)
image = pipe(prompt, num_inference_steps=30, generator=generator, image=control_image).images[0]
image.save('images/image_out.png')

📚 詳細文檔
模型詳情
模型介紹
Controlnet 由 Lvmin Zhang 和 Maneesh Agrawala 在 Adding Conditional Control to Text-to-Image Diffusion Models 中提出。
論文摘要如下:
我們提出了一種神經網絡結構 ControlNet,用於控制預訓練的大型擴散模型,以支持額外的輸入條件。ControlNet 以端到端的方式學習特定任務的條件,即使訓練數據集較小(< 50k),學習過程也很穩健。此外,訓練 ControlNet 的速度與微調擴散模型相當,並且可以在個人設備上進行訓練。或者,如果有強大的計算集群,模型可以擴展到大量(數百萬到數十億)的數據。我們報告稱,像 Stable Diffusion 這樣的大型擴散模型可以通過 ControlNet 進行增強,以支持邊緣圖、分割圖、關鍵點等條件輸入。這可能會豐富控制大型擴散模型的方法,並進一步推動相關應用的發展。
其他已發佈的 v1-1 檢查點
作者發佈了 14 種不同的檢查點,每種檢查點都在 Stable Diffusion v1-5 上針對不同類型的條件進行了訓練:
軟邊緣 1.1 的改進
- 軟邊緣 1.1 在之前的 ControlNet 中被稱為 HED 1.0。
- 之前的 cnet 1.0 訓練數據集存在幾個問題,包括:(1)一小部分灰度人體圖像被重複了數千次(!!),導致之前的模型有些容易生成灰度人體圖像;(2)一些圖像質量較低,非常模糊,或有明顯的 JPEG 偽影;(3)一小部分圖像由於數據處理腳本中的錯誤而存在錯誤的配對提示。新模型解決了訓練數據集中的所有問題,在許多情況下應該更加合理。
- 軟邊緣 1.1 在幾乎 100% 的情況下明顯優於 HED 1.0。這主要是因為 HED 或 PIDI 估計器傾向於在軟邊緣圖中隱藏原始圖像的損壞灰度版本,而之前的模型 HED 1.0 過擬合於恢復那個隱藏的損壞圖像,而不是執行邊界感知擴散。軟邊緣 1.1 的訓練使用了 75% 的“安全”過濾,以去除控制圖中隱藏的損壞灰度圖像。這使得軟邊緣 1.1 非常穩健。在我們的測試中,軟邊緣 1.1 的可用性與深度模型相當,並且有潛力更頻繁地使用。
更多信息
更多信息,請查看 Diffusers ControlNet 博客文章 和 官方文檔。
📄 許可證
本項目採用 CreativeML OpenRAIL M 許可證。