许可协议:openrail
基础模型:runwayml/stable-diffusion-v1-5
标签:
- 艺术
- controlnet
- stable-diffusion
- controlnet-v1-1
- 图像生成
复刻来源:ControlNet-1-1-preview/control_v11p_sd15_mlsd
ControlNet - v1.1 - MLSD版本
ControlNet v1.1 是 ControlNet v1.0 的继任模型,由 Lvmin Zhang 在 lllyasviel/ControlNet-v1-1 发布。
此检查点是将 原始检查点 转换为 diffusers
格式的版本。
它可以与 Stable Diffusion 结合使用,例如 runwayml/stable-diffusion-v1-5。
更多详情,请参阅 🧨 Diffusers 文档。
ControlNet 是一种通过添加额外条件来控制扩散模型的神经网络结构。

此检查点对应于基于 MLSD 图像 条件的 ControlNet。
模型详情
-
开发者: Lvmin Zhang, Maneesh Agrawala
-
模型类型: 基于扩散的文本到图像生成模型
-
语言: 英语
-
许可协议: CreativeML OpenRAIL M 许可证,改编自 BigScience 和 RAIL Initiative 在负责任 AI 许可领域的合作成果。另请参阅基于 BLOOM Open RAIL 许可证 的相关文章。
-
更多资源: GitHub 仓库, 论文。
-
引用方式:
@misc{zhang2023adding,
title={Adding Conditional Control to Text-to-Image Diffusion Models},
author={Lvmin Zhang and Maneesh Agrawala},
year={2023},
eprint={2302.05543},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
简介
ControlNet 由 Lvmin Zhang 和 Maneesh Agrawala 在论文 Adding Conditional Control to Text-to-Image Diffusion Models 中提出。
摘要如下:
我们提出了一种神经网络结构 ControlNet,用于控制预训练的大型扩散模型以支持额外的输入条件。
ControlNet 以端到端的方式学习任务特定条件,即使训练数据集较小(< 5 万)也能稳健学习。
此外,训练 ControlNet 的速度与微调扩散模型相当,并且可以在个人设备上完成。
如果有强大的计算集群可用,模型还可以扩展到海量数据(数百万到数十亿)。
我们报告称,像 Stable Diffusion 这样的大型扩散模型可以通过 ControlNet 增强,以支持边缘图、分割图、关键点等条件输入。
这可以丰富控制大型扩散模型的方法,并进一步促进相关应用。
示例
建议将此检查点与 Stable Diffusion v1-5 结合使用,因为检查点已基于其训练。
实验表明,该检查点也可与其他扩散模型(如 Dreambooth 微调的 Stable Diffusion)配合使用。
注意:如需处理图像以生成辅助条件,需安装以下外部依赖项:
- 安装 controlnet_aux:
$ pip install controlnet_aux==0.3.0
- 安装
diffusers
及相关包:
$ pip install diffusers transformers accelerate
- 运行代码:
import torch
import os
from huggingface_hub import HfApi
from pathlib import Path
from diffusers.utils import load_image
from PIL import Image
import numpy as np
from controlnet_aux import MLSDdetector
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15_mlsd"
image = load_image(
"https://huggingface.co/lllyasviel/control_v11p_sd15_mlsd/resolve/main/images/input.png"
)
prompt = "豪华皇家卧室"
processor = MLSDdetector.from_pretrained('lllyasviel/ControlNet')
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(0)
image = pipe(prompt, num_inference_steps=30, generator=generator, image=control_image).images[0]
image.save('images/image_out.png')



其他 v1-1 版本检查点
作者发布了 14 个不同的检查点,每个均基于 Stable Diffusion v1-5 训练,对应不同的条件类型:
MLSD 1.1 的改进:
- 修复了此前 cnet 1.0 训练数据集的问题,包括:(1) 部分灰度人像图像重复数千次,导致模型易生成灰度人像;(2) 部分图像质量低、模糊或存在明显 JPEG 伪影;(3) 少量图像因数据处理脚本错误导致提示词配对错误。新模型修复了所有问题,生成结果更合理。
- 通过 MLSD 筛选包含超过 16 条直线的图像,新增 30 万张训练数据。
- 应用了左右随机翻转等数据增强技术。
- 基于 MLSD 1.0 继续训练,累计使用 200 A100 80G GPU 小时。
更多信息
更多信息请参阅 Diffusers ControlNet 博客文章 和 官方文档。