🚀 Controlnet - v1.1 - InPaint版本
Controlnet v1.1是一个用于控制扩散模型的神经网络结构,通过添加额外条件来增强图像生成的可控性。它可以与Stable Diffusion等模型结合使用,为图像生成任务提供更多的灵活性和创造性。
🚀 快速开始
安装依赖
首先,我们需要安装diffusers
及相关的依赖包:
$ pip install diffusers transformers accelerate
运行示例代码
以下是一个使用该模型的示例代码:
from diffusers import StableDiffusionControlNetInpaintPipeline, ControlNetModel
from diffusers.utils import load_image
import numpy as np
import torch
init_image = load_image(
"https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy.png"
)
init_image = init_image.resize((512, 512))
generator = torch.Generator(device="cpu").manual_seed(1)
mask_image = load_image(
"https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy_mask.png"
)
mask_image = mask_image.resize((512, 512))
def make_inpaint_condition(image, image_mask):
image = np.array(image.convert("RGB")).astype(np.float32) / 255.0
image_mask = np.array(image_mask.convert("L")).astype(np.float32) / 255.0
assert image.shape[0:1] == image_mask.shape[0:1], "image and image_mask must have the same image size"
image[image_mask > 0.5] = -1.0
image = np.expand_dims(image, 0).transpose(0, 3, 1, 2)
image = torch.from_numpy(image)
return image
control_image = make_inpaint_condition(init_image, mask_image)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/control_v11p_sd15_inpaint", torch_dtype=torch.float16
)
pipe = StableDiffusionControlNetInpaintPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", controlnet=controlnet, torch_dtype=torch.float16
)
pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
image = pipe(
"a handsome man with ray-ban sunglasses",
num_inference_steps=20,
generator=generator,
eta=1.0,
image=init_image,
mask_image=mask_image,
control_image=control_image,
).images[0]
示例图片

✨ 主要特性
- 可控性强:通过添加额外条件,如边缘图、分割图、关键点等,实现对图像生成过程的精细控制。
- 训练高效:训练速度快,可在个人设备上进行训练,也可扩展到大规模数据集。
- 兼容性好:可以与Stable Diffusion等主流扩散模型结合使用。
📦 安装指南
安装diffusers
及相关依赖包:
$ pip install diffusers transformers accelerate
💻 使用示例
基础用法
推荐将该检查点与Stable Diffusion v1-5一起使用,因为该检查点是在其上进行训练的。实验表明,该检查点也可以与其他扩散模型(如dreamboothed stable diffusion)一起使用。
高级用法
可以根据具体需求调整代码中的参数,如num_inference_steps
、eta
等,以获得不同的图像生成效果。
📚 详细文档
模型详情
模型介绍
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上针对不同类型的条件进行了训练:
更多信息
如需更多信息,请查看 Diffusers ControlNet博客文章 和 官方文档。
📄 许可证
本项目采用 The CreativeML OpenRAIL M license。