许可协议:openrail
基础模型:runwayml/stable-diffusion-v1-5
标签:
- 艺术
- controlnet
- stable-diffusion
- 图像生成图像
Controlnet - M-LSD直线检测版
ControlNet是一种通过添加额外条件来控制扩散模型的神经网络结构。
本检查点对应基于M-LSD直线检测条件训练的ControlNet模型。
可与Stable Diffusion结合使用。

模型详情
-
开发者: 张吕敏,Maneesh Agrawala
-
模型类型: 基于扩散的文本生成图像模型
-
支持语言: 英语
-
许可协议: CreativeML OpenRAIL M许可证,该协议改编自BigScience与RAIL倡议在负责任AI许可领域的合作成果。详见基于BLOOM Open RAIL许可证的条款。
-
更多资源: GitHub仓库,论文。
-
引用格式:
@misc{zhang2023adding,
title={为文本生成图像扩散模型添加条件控制},
author={张吕敏 and Maneesh Agrawala},
year={2023},
eprint={2302.05543},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
简介
ControlNet由张吕敏和Maneesh Agrawala在论文《为文本生成图像扩散模型添加条件控制》中提出。
摘要如下:
我们提出了一种神经网络结构ControlNet,用于控制预训练的大型扩散模型以支持额外输入条件。ControlNet以端到端方式学习任务特定条件,即使训练数据集较小(<5万)也能保持鲁棒性。训练ControlNet的速度与微调扩散模型相当,可在个人设备上完成。若拥有强大计算集群,该模型可扩展至百万至十亿级数据量。实验表明,像Stable Diffusion这样的大型扩散模型可通过ControlNet增强,接受边缘图、分割图、关键点等条件输入,这将丰富控制大型扩散模型的方法并推动相关应用发展。
已发布检查点
作者发布了8个不同检查点,均基于Stable Diffusion v1-5训练,对应不同条件类型:
使用示例
建议配合Stable Diffusion v1-5使用本检查点。实验表明,该检查点也可与其他扩散模型(如dreambooth优化的stable diffusion)配合使用。
注意:如需处理图像生成辅助条件,需安装以下依赖:
- 安装controlnet_aux:
pip install controlnet_aux
- 安装diffusers及相关包:
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")
processed_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()
output_image = pipe("room", processed_image, num_inference_steps=20).images[0]
output_image.save('images/room_mlsd_out.png')
训练过程
该直线检测模型在60万组边缘-图像对上进行训练。数据集通过BLIP生成文本描述,并采用深度霍夫变换生成边缘图像。模型在Nvidia A100 80G显卡上训练160小时,以Canny模型为基础。
博客文章
更多信息请参阅官方ControlNet博客文章。