🚀 Controlnet - v1.1 - Openpose版本
Controlnet v1.1是一款强大的图像生成控制模型,它能为Stable Diffusion等扩散模型添加额外条件控制,实现如边缘图、关键点等条件输入,极大丰富了图像生成的可控性和应用场景。
🚀 快速开始
Controlnet v1.1是Controlnet v1.0的后续模型,由Lvmin Zhang发布于lllyasviel/ControlNet-v1-1。
此检查点是将原始检查点转换为diffusers
格式,可与Stable Diffusion结合使用,例如runwayml/stable-diffusion-v1-5。
更多详细信息,请查看🧨 Diffusers文档。
ControlNet是一种神经网络结构,通过添加额外条件来控制扩散模型。

此检查点对应基于openpose图像的ControlNet。
✨ 主要特性
- 支持与Stable Diffusion结合使用,实现多样化图像生成。
- 可通过添加额外条件,如边缘图、分割图、关键点等,控制图像生成。
- 训练速度快,可在个人设备上进行训练,也可扩展到大量数据。
📦 安装指南
安装外部依赖
安装https://github.com/patrickvonplaten/controlnet_aux
$ pip install controlnet_aux==0.3.0
安装diffusers
及相关包
$ pip install diffusers transformers accelerate
💻 使用示例
基础用法
建议将此检查点与Stable Diffusion v1-5结合使用,因为该检查点是基于此模型训练的。实验表明,该检查点也可与其他扩散模型(如dreamboothed 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 OpenposeDetector
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15_openpose"
image = load_image(
"https://huggingface.co/lllyasviel/control_v11p_sd15_openpose/resolve/main/images/input.png"
)
prompt = "chef in the kitchen"
processor = OpenposeDetector.from_pretrained('lllyasviel/ControlNet')
control_image = processor(image, hand_and_face=True)
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这样的大型扩散模型可以通过ControlNets进行增强,以实现边缘图、分割图、关键点等条件输入。这可能会丰富控制大型扩散模型的方法,并进一步促进相关应用的发展。
其他发布的v1-1检查点
作者发布了14种不同的检查点,每种都基于Stable Diffusion v1-5在不同类型的条件下进行训练:
Openpose 1.1的改进
- 此模型的改进主要基于我们对OpenPose的改进实现。我们仔细审查了PyTorch OpenPose和CMU的C++ OpenPose之间的差异。现在处理器应该更加准确,特别是对于手部。处理器的改进导致了Openpose 1.1的提升。
- 支持更多输入(手部和面部)。
- 之前的cnet 1.0训练数据集存在几个问题,包括(1)一小部分灰度人体图像被重复了数千次(!!),导致之前的模型有些容易生成灰度人体图像;(2)一些图像质量低、非常模糊或有明显的JPEG伪影;(3)一小部分图像由于数据处理脚本中的错误而存在错误的配对提示。新模型修复了训练数据集的所有问题,在许多情况下应该更加合理。
更多信息
更多信息,请查看Diffusers ControlNet博客文章和官方文档。
📄 许可证
本项目采用CreativeML OpenRAIL M许可证,这是一种Open RAIL M许可证,改编自BigScience 和 RAIL Initiative 在负责任AI许可领域的联合工作。有关我们许可证所基于的 BLOOM Open RAIL许可证文章 也可参考。