control_v11p_sd15_normalbae 项目介绍
项目背景
control_v11p_sd15_normalbae 是一款基于 ControlNet v1.1 的模型,继承自 ControlNet v1.0。由研究者张露敏和 Maneesh Agrawala 开发,该项目的目标是为文本到图像扩散模型(如 Stable Diffusion)添加条件控制功能。
ControlNet 简介
ControlNet 是一种用于控制扩散模型的神经网络结构,它通过添加额外的输入条件来增强预训练的大型扩散模型。它允许模型在训练数据不足 5 万的情况下也能稳健学习。ControlNet 的训练速度与微调扩散模型相当,并且可以在个人设备上进行。如果有强大的计算集群,模型还可以扩展以处理数百万到数十亿的数据。ControlNet 能够让 Stable Diffusion 等大型扩散模型支持条件输入,如边缘图、分割图、关键点等。
项目特点
- 开发团队:张露敏、Maneesh Agrawala
- 模型类型:基于扩散的文本到图像生成模型
- 语言:英文
- 许可证:CreativeML OpenRAIL M 许可证
Normalbae 版本的优势
- 技术改进:Normal 1.1 相比于 Normal 1.0,采用了一种更为合理的深度预测方法,使得模型能够更好地处理由渲染引擎生成的真实法线图。
- 可靠性增强:新版本模型的训练遵循了可信的协议,使得法线图的预测更加准确。
- 性能提升:相比之前的版本,新模型在测试中显示出了与深度模型相当的稳健性,具备了更广泛的应用潜力。
使用示例
为了使用该模型,请安装以下依赖:
$ pip install controlnet_aux==0.3.0
$ pip install diffusers transformers accelerate
然后可以通过以下代码生成图像:
import torch
from diffusers.utils import load_image
from controlnet_aux import NormalBaeDetector
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15_normalbae"
image = load_image("https://huggingface.co/lllyasviel/control_v11p_sd15_normalbae/resolve/main/images/input.png")
prompt = "A head full of roses"
processor = NormalBaeDetector.from_pretrained("lllyasviel/Annotators")
control_image = processor(image)
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(33)
image = pipe(prompt, num_inference_steps=30, generator=generator, image=control_image).images[0]
image.save('images/image_out.png')
其他相关信息
崭新的 ControlNet v1-1 版本包括 14 种不同的训练检查点,各自用于不同类型的图像条件输入。在 GitHub 仓库 和 论文 中可以找到更多资料和技术背景。您还可以查看 Diffusers 的博客文章 和 官方文档以获取更多信息。