🚀 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。
✨ 主要特性
- 灵活结合Stable Diffusion:可与Stable Diffusion模型结合,如runwayml/stable-diffusion-v1-5,实现多样化的图像生成。
- 多类型条件控制:支持多种条件输入,如边缘图、深度图、关键点等,丰富了图像生成的控制方式。
- 训练优化:新版本解决了旧版本训练数据集中的问题,如重复图像、低质量图像和错误提示等,使模型在更多情况下表现更合理。
- 通用性强:新的深度模型是相对无偏的模型,不依赖特定的深度估计方法,能更好地适应不同的深度估计、不同的预处理器分辨率,甚至是3D引擎生成的真实深度。
📦 安装指南
若要使用此检查点处理图像以创建辅助条件,需要安装外部依赖,步骤如下:
- 安装
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 transformers import pipeline
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15_depth"
image = load_image(
"https://huggingface.co/lllyasviel/control_v11p_sd15_depth/resolve/main/images/input.png"
)
prompt = "Stormtrooper's lecture in beautiful lecture hall"
depth_estimator = pipeline('depth-estimation')
image = depth_estimator(image)['depth']
image = np.array(image)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
control_image = Image.fromarray(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')



📚 详细文档
模型详情
模型介绍
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版本的改进
- 训练数据集优化:之前的cnet 1.0训练数据集存在一些问题,包括(1)一小部分灰度人体图像被重复数千次(!!),导致之前的模型有些容易生成灰度人体图像;(2)一些图像质量低、非常模糊或有明显的JPEG伪影;(3)一小部分图像由于数据处理脚本的错误而存在错误的配对提示。新模型解决了训练数据集中的所有问题,在许多情况下应该更加合理。
- 通用性增强:新的深度模型是相对无偏的模型。它不是通过某种特定的深度估计方法针对特定类型的深度进行训练的。它不会过度拟合某一种预处理器。这意味着该模型在不同的深度估计、不同的预处理器分辨率,甚至是3D引擎生成的真实深度下都能更好地工作。
- 数据增强:在训练过程中应用了一些合理的数据增强方法,如随机左右翻转。
- 兼容性提升:该模型是在深度1.0的基础上继续训练的,因此在深度1.0表现良好的所有情况下,它也应该表现良好。如果不是,请提供图像并提交一个问题,我们会查看具体情况。深度1.1在深度1.0的许多失败案例中表现良好。
- 性能表现:如果使用Midas深度(Web UI插件中的“深度”)和384的预处理器分辨率,深度1.0和1.1之间的差异应该很小。然而,如果尝试其他预处理器分辨率或其他预处理器(如leres和zoe),预计深度1.1会比1.0略好。
更多信息
如需更多信息,请查看Diffusers ControlNet博客文章和官方文档。
📄 许可证
本项目采用The CreativeML OpenRAIL M license。