🚀 Controlnet - v1.1 - instruct pix2pix 版本
Controlnet v1.1 是一种神经网络结构,可通过添加额外条件来控制扩散模型。本项目基于 Stable Diffusion,能实现强大的图像生成功能,为图像创作带来更多可能。
🚀 快速开始
本检查点可与 Stable Diffusion 结合使用,例如 runwayml/stable-diffusion-v1-5。
安装依赖
$ pip install diffusers transformers accelerate
运行代码示例
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 diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11e_sd15_ip2p"
image = load_image("https://huggingface.co/lllyasviel/control_v11e_sd15_ip2p/resolve/main/images/input.png").convert('RGB')
prompt = "make it on fire"
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=image).images[0]
image.save('images/image_out.png')


✨ 主要特性
- 条件控制:ControlNet 是一种神经网络结构,可通过添加额外条件来控制扩散模型。
- 多场景适配:可与 Stable Diffusion 等模型结合使用,适用于多种图像生成场景。
- 多种检查点:作者发布了 14 种不同的检查点,每种都针对不同类型的条件进行了训练。
📦 安装指南
安装 diffusers
及相关依赖包:
$ pip install diffusers transformers accelerate
💻 使用示例
基础用法
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 diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11e_sd15_ip2p"
image = load_image("https://huggingface.co/lllyasviel/control_v11e_sd15_ip2p/resolve/main/images/input.png").convert('RGB')
prompt = "make it on fire"
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=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 上针对不同类型的条件进行了训练:
更多信息
如需更多信息,请查看 Diffusers ControlNet 博客文章 和 官方文档。
📄 许可证
本项目采用 CreativeML OpenRAIL M 许可证。