🚀 Controlnet - HED边界版本
ControlNet是一种神经网络结构,可通过添加额外条件来控制扩散模型。此检查点对应的是基于HED边界条件的ControlNet,可与Stable Diffusion结合使用。

✨ 主要特性
- 可对预训练的大型扩散模型进行条件控制,支持额外的输入条件。
- 以端到端的方式学习特定任务的条件,即使训练数据集较小(< 50k),学习过程也很稳健。
- 训练速度与微调扩散模型相当,可在个人设备上进行训练;若有强大的计算集群,也能处理大量(数百万到数十亿)数据。
- 可增强像Stable Diffusion这样的大型扩散模型,使其支持边缘图、分割图、关键点等条件输入。
📦 安装指南
安装依赖库
- 安装https://github.com/patrickvonplaten/controlnet_aux
$ pip install controlnet_aux
- 安装
diffusers
及相关包:
$ pip install diffusers transformers accelerate
💻 使用示例
基础用法
from PIL import Image
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
import torch
from controlnet_aux import HEDdetector
from diffusers.utils import load_image
hed = HEDdetector.from_pretrained('lllyasviel/ControlNet')
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-hed/resolve/main/images/man.png")
image = hed(image)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-hed", torch_dtype=torch.float16
)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", controlnet=controlnet, safety_checker=None, torch_dtype=torch.float16
)
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_xformers_memory_efficient_attention()
pipe.enable_model_cpu_offload()
image = pipe("oil painting of handsome old man, masterpiece", image, num_inference_steps=20).images[0]
image.save('images/man_hed_out.png')
高级用法
暂未提供高级用法的相关内容。

📚 详细文档
模型详情
简介
Controlnet由Lvmin Zhang和Maneesh Agrawala在 Adding Conditional Control to Text-to-Image Diffusion Models 中提出。
论文摘要如下:
我们提出了一种神经网络结构ControlNet,用于控制预训练的大型扩散模型,以支持额外的输入条件。ControlNet以端到端的方式学习特定任务的条件,即使训练数据集较小(< 50k),学习过程也很稳健。此外,训练ControlNet的速度与微调扩散模型相当,并且可以在个人设备上进行训练。或者,如果有强大的计算集群,该模型可以处理大量(数百万到数十亿)的数据。我们发现,像Stable Diffusion这样的大型扩散模型可以通过ControlNets进行增强,以支持边缘图、分割图、关键点等条件输入。这可能会丰富控制大型扩散模型的方法,并进一步促进相关应用的发展。
已发布的检查点
作者发布了8个不同的检查点,每个检查点都基于 Stable Diffusion v1 - 5 在不同类型的条件下进行训练:
训练
HED边缘模型在300万个边缘图像 - 标题对上进行训练。该模型使用Nvidia A100 80G,以Stable Diffusion 1.5为基础模型,训练了600个GPU小时。
博客文章
如需更多信息,请查看 ControlNet官方博客文章。
🔧 技术细节
HED边界版本的ControlNet是基于Stable Diffusion 1.5进行训练的,通过添加额外的HED边界条件来控制图像生成过程。在训练过程中,使用了300万个边缘图像 - 标题对,经过600个GPU小时的训练,使得模型能够学习到HED边界与图像生成之间的关系。在推理阶段,通过StableDiffusionControlNetPipeline
和ControlNetModel
结合使用,利用输入的HED边界图像来引导图像生成。
📄 许可证
本项目使用 The CreativeML OpenRAIL M license,这是一种 Open RAIL M license,改编自 BigScience 和 the RAIL Initiative 在负责任的AI许可领域的联合工作。另见 关于BLOOM Open RAIL许可的文章,本许可证基于此。