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

🚀 快速开始
若要使用此模型,可按以下步骤操作:
- 安装https://github.com/patrickvonplaten/controlnet_aux
$ pip install controlnet_aux
- 安装
diffusers
及相关包:
$ pip pip install diffusers transformers accelerate
- 运行代码:
from PIL import Image
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
import torch
from controlnet_aux import MLSDdetector
from diffusers.utils import load_image
mlsd = MLSDdetector.from_pretrained('lllyasviel/ControlNet')
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-mlsd/resolve/main/images/room.png")
image = mlsd(image)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-mlsd", 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("room", image, num_inference_steps=20).images[0]
image.save('images/room_mlsd_out.png')



✨ 主要特性
- 条件控制:ControlNet可通过添加额外条件来控制扩散模型,实现如边缘图、分割图、关键点等条件输入。
- 多类型检查点:作者发布了8种不同的检查点,每种都基于不同类型的条件进行训练。
📦 安装指南
安装依赖
$ pip install controlnet_aux
$ pip pip install diffusers transformers accelerate
💻 使用示例
基础用法
from PIL import Image
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
import torch
from controlnet_aux import MLSDdetector
from diffusers.utils import load_image
mlsd = MLSDdetector.from_pretrained('lllyasviel/ControlNet')
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-mlsd/resolve/main/images/room.png")
image = mlsd(image)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-mlsd", 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("room", image, num_inference_steps=20).images[0]
image.save('images/room_mlsd_out.png')
📚 详细文档
模型详情
发布的检查点
作者发布了8种不同的检查点,每种都基于Stable Diffusion v1-5在不同类型的条件下进行训练:
训练
霍夫线模型在60万个边缘图像 - 标题对上进行训练。该数据集由Places2生成,使用BLIP生成文本标题,使用深度霍夫变换生成边缘图像。模型以Canny模型为基础模型,使用Nvidia A100 80G进行了160个GPU小时的训练。
博客文章
更多信息请查看ControlNet官方博客文章。
🔧 技术细节
ControlNet由Lvmin Zhang和Maneesh Agrawala在论文Adding Conditional Control to Text-to-Image Diffusion Models中提出。其摘要如下:
我们提出了一种神经网络结构ControlNet,用于控制预训练的大型扩散模型以支持额外的输入条件。ControlNet以端到端的方式学习特定任务的条件,即使训练数据集较小(< 50k),学习过程也很稳健。此外,训练ControlNet的速度与微调扩散模型一样快,并且可以在个人设备上进行训练。或者,如果有强大的计算集群,模型可以扩展到大量(数百万到数十亿)的数据。我们发现,像Stable Diffusion这样的大型扩散模型可以通过ControlNet进行增强,以实现如边缘图、分割图、关键点等条件输入。这可能会丰富控制大型扩散模型的方法,并进一步促进相关应用的发展。
📄 许可证
本项目采用CreativeML OpenRAIL M许可证。