模型简介
模型特点
模型能力
使用案例
🚀 Controlnet - v1.1 - openpose 版本
Controlnet v1.1 是一个功能强大的图像生成模型,它是 Controlnet v1.0 的后续版本。该模型由 Lvmin Zhang 发布于 lllyasviel/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。
✨ 主要特性
模型优势
- 强大的条件控制:ControlNet 可以控制预训练的大型扩散模型,支持额外的输入条件,如边缘图、分割图、关键点等。
- 高效的训练方式:可以端到端地学习特定任务的条件,即使训练数据集较小(< 50k),学习过程也很稳健。训练速度与微调扩散模型相当,甚至可以在个人设备上进行训练。
- 广泛的兼容性:可以与 Stable Diffusion 等大型扩散模型结合使用,丰富了控制大型扩散模型的方法,促进了相关应用的发展。
版本改进
- 更高的准确性:基于改进的 OpenPose 实现,处理器更加准确,尤其是对手部的处理。
- 更多的输入支持:支持更多的输入,如手部和面部信息。
- 优化的训练数据集:解决了之前训练数据集中存在的问题,如重复图像、低质量图像和错误的提示配对等,使模型在更多情况下更加合理。
📦 安装指南
安装依赖库
如果要处理图像以创建辅助条件,需要安装以下外部依赖项:
- 安装 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')
高级用法
目前文档未提及高级用法相关内容,可参考官方文档获取更多信息。
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发者 | Lvmin Zhang, Maneesh Agrawala |
模型类型 | 基于扩散的文本到图像生成模型 |
语言 | 英文 |
许可证 | CreativeML OpenRAIL M 许可证 是一种 Open RAIL M 许可证,改编自 BigScience 和 RAIL Initiative 在负责任的 AI 许可领域的联合工作。有关许可证的更多信息,请参阅 关于 BLOOM Open RAIL 许可证的文章 |
更多信息资源 | GitHub 仓库,论文 |
引用方式 | @misc{zhang2023adding, title={Adding Conditional Control to Text-to-Image Diffusion Models}, author={Lvmin Zhang and Maneesh Agrawala}, year={2023}, eprint={2302.05543}, archivePrefix={arXiv}, primaryClass={cs.CV} } |
模型介绍
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 在不同类型的条件下进行训练:
模型名称 | 控制图像概述 | 控制图像示例 | 生成图像示例 |
---|---|---|---|
lllyasviel/control_v11p_sd15_canny 基于 Canny 边缘检测训练 |
黑色背景上带有白色边缘的单色图像。 | ![]() |
![]() |
lllyasviel/control_v11e_sd15_ip2p 基于像素到像素指令训练 |
无特定条件。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_inpaint 基于图像修复训练 |
无特定条件。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_mlsd 基于多级线段检测训练 |
带有注释线段的图像。 | ![]() |
![]() |
lllyasviel/control_v11f1p_sd15_depth 基于深度估计训练 |
带有深度信息的图像,通常表示为灰度图像。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_normalbae 基于表面法线估计训练 |
带有表面法线信息的图像,通常表示为彩色编码图像。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_seg 基于图像分割训练 |
带有分割区域的图像,通常表示为彩色编码图像。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_lineart 基于线稿生成训练 |
带有线稿的图像,通常是白色背景上的黑色线条。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15s2_lineart_anime 基于动漫线稿生成训练 |
带有动漫风格线稿的图像。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_openpose 基于人体姿态估计训练 |
带有人体姿态的图像,通常表示为一组关键点或骨架。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_scribble 基于涂鸦图像生成训练 |
带有涂鸦的图像,通常是随机或用户绘制的笔触。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_softedge 基于软边缘图像生成训练 |
带有软边缘的图像,通常用于创建更具绘画或艺术效果的图像。 | ![]() |
![]() |
lllyasviel/control_v11e_sd15_shuffle 基于图像打乱训练 |
带有打乱的图像块或区域的图像。 | ![]() |
![]() |
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 许可证的文章。
常用提示信息
⚠️ 重要提示
如果要处理图像以创建辅助条件,需要安装外部依赖项,如
controlnet_aux
和diffusers
等相关库。
💡 使用建议
建议将此检查点与 Stable Diffusion v1-5 结合使用,因为该检查点是基于此模型进行训练的。实验表明,该检查点也可以与其他扩散模型(如经过 dreamboothed 的 Stable Diffusion)一起使用。

