项目介绍:control_v11p_sd15_mlsd
背景
control_v11p_sd15_mlsd是ControlNet v1.1的一个子版本,是ControlNet v1.0的后继型号。该项目由Lvmin Zhang和Maneesh Agrawala开发,模型通过将原有检查点转换为流行的diffusers
格式,与稳定扩散模型,如runwayml/stable-diffusion-v1-5结合使用。
控制网络(ControlNet)的介绍
ControlNet 是一个神经网络结构,用于通过增加额外条件来控制扩散模型。ControlNet支持文本到图像的生成,这样用户就可以为生成图像提供一些额外控制,例如边缘图、分割图、关键点等。
项目特点
- 开发者: Lvmin Zhang, Maneesh Agrawala
- 模型类型: 基于扩散的文本到图像生成模型
- 语言: 英语
- 许可证: CreativeML OpenRAIL M
主要功能
ControlNet提供了一种新的神经网络结构,可以让预训练的大型扩散模型支持额外的输入条件。通过ControlNet,模型可以学习特定任务的条件。即便在数据量较小的情况下(少于5万),这种学习也非常稳健。此外,训练ControlNet的速度与微调扩散模型相当,可以在个人设备上完成。如果有更强大的计算能力,也可以扩展到大规模数据(数百万到数十亿)。
使用指南
推荐将此检查点与Stable Diffusion v1-5一起使用,该检查点已经在此基础上进行了训练。用户还可以使用其他扩散模型进行实验,例如dreamboothed稳定扩散模型。
示例代码
为了生成带有辅助条件的图像,用户需按照以下步骤进行:
-
安装
controlnet_aux
包:$ pip install controlnet_aux==0.3.0
-
安装
diffusers
和相关包:$ pip install diffusers transformers accelerate
-
运行代码以生成图像:
import torch from diffusers import ( ControlNetModel, StableDiffusionControlNetPipeline, UniPCMultistepScheduler, ) checkpoint = "lllyasviel/control_v11p_sd15_mlsd" image = load_image("input_image_url") prompt = "royal chamber with fancy bed" processor = MLSDdetector.from_pretrained('lllyasviel/ControlNet') control_image = processor(image) 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('output.png')
Model v1.1的改进
- 修正了早期数据集中一些问题,例如重复的灰度人像、质量较差的图像,以及部分图片有错误的配对提示。
- 通过MLSD新增30万幅带直线图像的提升数据。
- 应用了合理的数据增强技术,如随机左右翻转。
- 从MLSD 1.0恢复,并继续进行了200 GPU小时的训练。
更多信息
想要了解更多关于ControlNet的信息,请参考Diffusers ControlNet博客文章以及官方文档。