🚀 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 许可证的文章。