🚀 Controlnet - v1.1 - 法線基礎版本
Controlnet v1.1是一款強大的圖像生成控制模型,它是Controlnet v1.0的繼任者,能與Stable Diffusion結合使用,通過添加額外條件精準控制圖像生成,在藝術創作、圖像編輯等領域具有廣泛的應用價值。
🚀 快速開始
Controlnet v1.1 是 Controlnet v1.0 的繼任模型,由 Lvmin Zhang 在 lllyasviel/ControlNet-v1-1 中發佈。
此檢查點是將 原始檢查點 轉換為 diffusers
格式後的版本。它可以與 Stable Diffusion 結合使用,例如 runwayml/stable-diffusion-v1-5。
更多詳細信息,請查看 🧨 Diffusers 文檔。
ControlNet 是一種神經網絡結構,可通過添加額外條件來控制擴散模型。

此檢查點對應於基於 法線基礎圖像 進行條件控制的 ControlNet。
✨ 主要特性
模型詳情
模型介紹
Controlnet 由 Lvmin Zhang 和 Maneesh Agrawala 在 為文本到圖像擴散模型添加條件控制 中提出。
論文摘要如下:
我們提出了一種神經網絡結構 ControlNet,用於控制預訓練的大型擴散模型以支持額外的輸入條件。ControlNet 以端到端的方式學習特定任務的條件,即使訓練數據集較小(< 50k),學習過程也很穩健。此外,訓練 ControlNet 的速度與微調擴散模型一樣快,並且可以在個人設備上進行訓練。或者,如果有強大的計算集群,模型可以擴展到處理大量(數百萬到數十億)的數據。我們發現,像 Stable Diffusion 這樣的大型擴散模型可以通過 ControlNets 進行增強,以支持邊緣圖、分割圖、關鍵點等條件輸入。這可能會豐富控制大型擴散模型的方法,並進一步促進相關應用的發展。
法線 1.1 版本的改進
- 法線 1.0 中的法線 - 米達斯方法既不合理也不符合物理規律。該方法在許多圖像上效果不佳,法線 1.0 模型無法解讀由渲染引擎創建的真實法線圖。
- 法線 1.1 更加合理,因為預處理器經過訓練,可以使用相對正確的協議(NYU - V2 的可視化方法)來估計法線圖。這意味著只要顏色正確(藍色朝前,紅色朝左,綠色朝上),法線 1.1 就可以解讀來自渲染引擎的真實法線圖。
- 在我們的測試中,該模型表現穩健,能夠達到與深度模型相似的性能。在之前的 CNET 1.0 中,法線 1.0 的使用頻率不高。但法線 1.1 有了很大改進,有潛力被更頻繁地使用。
📦 安裝指南
- 安裝 https://github.com/patrickvonplaten/controlnet_aux
$ 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 NormalBaeDetector
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15_normalbae"
image = load_image(
"https://huggingface.co/lllyasviel/control_v11p_sd15_normalbae/resolve/main/images/input.png"
)
prompt = "A head full of roses"
processor = NormalBaeDetector.from_pretrained("lllyasviel/Annotators")
control_image = processor(image)
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(33)
image = pipe(prompt, num_inference_steps=30, generator=generator, image=control_image).images[0]
image.save('images/image_out.png')



📚 詳細文檔
其他已發佈的 v1 - 1 檢查點
作者發佈了 14 種不同的檢查點,每種檢查點都基於 Stable Diffusion v1 - 5 在不同類型的條件下進行訓練:
更多信息
如需更多信息,請查看 Diffusers ControlNet 博客文章 和 官方文檔。
📄 許可證
本項目採用 CreativeML OpenRAIL M 許可證。