🚀 Controlnet - v1.1 - 線稿版本
Controlnet v1.1 是一種用於控制擴散模型的神經網絡結構,通過添加額外條件來引導圖像生成過程。本版本基於線稿圖像進行條件控制,可與 Stable Diffusion 結合使用,為圖像生成提供更精確的控制。
🚀 快速開始
ControlNet 是一種通過添加額外條件來控制擴散模型的神經網絡結構。本檢查點對應於基於線稿圖像進行條件控制的 ControlNet。
Controlnet v1.1 由 Lvmin Zhang 在 lllyasviel/ControlNet-v1-1 中發佈。此檢查點是將 原始檢查點 轉換為 diffusers
格式後的版本,可與 Stable Diffusion(如 runwayml/stable-diffusion-v1-5)結合使用。
更多詳細信息,請查看 🧨 Diffusers 文檔。

✨ 主要特性
- 條件控制:通過添加額外條件,如線稿圖像,精確控制擴散模型的生成過程。
- 兼容性強:可與 Stable Diffusion 等主流文本到圖像生成模型結合使用。
- 端到端學習:ControlNet 能夠以端到端的方式學習特定任務的條件,即使在訓練數據集較小(< 50k)的情況下,學習效果依然穩健。
- 訓練高效:訓練速度與微調擴散模型相當,可在個人設備上進行訓練;若有強大的計算集群,也可處理大規模(數百萬到數十億)的數據。
📦 安裝指南
安裝依賴庫
- 安裝 https://github.com/patrickvonplaten/controlnet_aux
$ pip install controlnet_aux==0.3.0
- 安裝
diffusers
及相關包:
$ pip install diffusers transformers accelerate
💻 使用示例
基礎用法
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 LineartDetector
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "ControlNet-1-1-preview/control_v11p_sd15_lineart"
image = load_image(
"https://huggingface.co/ControlNet-1-1-preview/control_v11p_sd15_lineart/resolve/main/images/input.png"
)
image = image.resize((512, 512))
prompt = "michael jackson concert"
processor = LineartDetector.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(0)
image = pipe(prompt, num_inference_steps=30, generator=generator, image=control_image).images[0]
image.save('images/image_out.png')
示例圖片

注意事項
⚠️ 重要提示
如果要處理圖像以創建輔助條件,需要安裝外部依賴庫,具體安裝步驟見安裝指南。
💡 使用建議
建議將此檢查點與 Stable Diffusion v1-5 結合使用,因為該檢查點是基於此模型進行訓練的。不過,實驗表明,此檢查點也可與其他擴散模型(如經過微調的 Stable Diffusion)一起使用。
📚 詳細文檔
模型詳情
模型介紹
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 在不同類型的條件下進行訓練:
更多信息
如需瞭解更多信息,請查看 Diffusers ControlNet 博客文章 和 官方文檔。
📄 許可證
本模型使用 CreativeML OpenRAIL M 許可證,這是一種 Open RAIL M 許可證,改編自 BigScience 和 RAIL Initiative 在負責任的人工智能許可領域的合作成果。有關此許可證的更多信息,請參閱 關於 BLOOM Open RAIL 許可證的文章。