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