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

模型详情
简介
ControlNet由张吕敏和Maneesh Agrawala在论文《为文本到图像扩散模型添加条件控制》中提出。
摘要如下:
我们提出了一种神经网络结构ControlNet,通过额外输入条件来控制预训练的大型扩散模型。该模型能以端到端方式学习任务特定条件,即使在小训练集(<5万)下仍保持鲁棒性。训练速度与微调扩散模型相当,可在个人设备上完成。若配备高性能计算集群,还能处理海量数据(百万至十亿级)。实验表明,像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 HEDdetector
from diffusers.utils import load_image
hed = HEDdetector.from_pretrained('lllyasviel/ControlNet')
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-scribble/resolve/main/images/bag.png")
image = hed(image, scribble=True)
controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-scribble", 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("手提包", image, num_inference_steps=20).images[0]
image.save('bag_scribble_out.png')



训练过程
涂鸦模型在50万组涂鸦-图像-标题对上训练。涂鸦图像通过HED边界检测及数据增强(阈值处理、掩码、形态学变换和非极大抑制)生成。使用Nvidia A100 80G显卡以canny模型为基模型训练150 GPU小时。
博客文章
更多信息请参阅官方ControlNet博客。