许可协议:apache-2.0
标签:
- 文本生成图像
- 扩散模型
- 控制网络
- controlnet-canny-sdxl-1.0
管线类型:文本生成图像
像Midjourney一样绘画!快来体验吧!

Controlnet-Canny-Sdxl-1.0
大家好,我很高兴发布controlnet-canny-sdxl-1.0模型,这是一款非常强大的控制网络,能够生成视觉效果媲美Midjourney的高分辨率图像。
该模型通过大量高质量数据(超过1000万张图像)训练而成,并经过精心筛选和标注(使用强大的vllm模型)。此外,训练过程中应用了多种技巧,包括数据增强、多重损失和多分辨率训练。仅通过单阶段训练,其性能已超越其他开源Canny模型([diffusers/controlnet-canny-sdxl-1.0]、[TheMistoAI/MistoLine])。我发布此模型,希望能推动稳定扩散模型的应用。Canny是ControlNet系列中最重要的模型之一,可应用于许多与绘画和设计相关的工作。
模型详情
模型描述
- 开发者: xinsir
- 模型类型: ControlNet_SDXL
- 许可协议: apache-2.0
- 微调自模型 [可选]: stabilityai/stable-diffusion-xl-base-1.0
模型来源 [可选]
- 论文 [可选]: https://arxiv.org/abs/2302.05543
用途
示例
提示词:两位亡灵节模特的特写,侧脸,大型花卉头饰,完整的亡灵节妆容,饱满的红唇,蝴蝶,花朵,柔和色调,侧脸,丛林,鸟类,色彩和谐,极度细致,复杂,华丽,动态,惊艳,美丽,独特,柔和光线

提示词:威尼斯狂欢节中戴着瘟疫医生面具的幽灵,超现实主义风格

提示词:被蓝色星星和金色星星环绕的画面,发光,深海军蓝和灰色调,点缀着浅银色和金色,活泼,节日氛围,纯净织物,粉笔,FHD 8K

提示词:美味的素食披萨,配蘑菇、番茄、马苏里拉奶酪、辣椒和黑橄榄,白色背景隔离,透明白色背景,俯视图,工作室照片,透明PNG,清晰锐利焦点,高端修饰,美食杂志摄影,获奖摄影,广告摄影,商业摄影

提示词:夏日枫林中戴着花冠的金发新娘,约翰·威廉·沃特豪斯风格的水彩画,浪漫主义,空灵光线

动漫示例(注意:需将基础模型切换为CounterfeitXL,其他设置不变)





快速开始
使用以下代码快速体验模型:
from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL
from diffusers import DDIMScheduler, EulerAncestralDiscreteScheduler
from PIL import Image
import torch
import numpy as np
import cv2
def HWC3(x):
assert x.dtype == np.uint8
if x.ndim == 2:
x = x[:, :, None]
assert x.ndim == 3
H, W, C = x.shape
assert C == 1 or C == 3 or C == 4
if C == 3:
return x
if C == 1:
return np.concatenate([x, x, x], axis=2)
if C == 4:
color = x[:, :, 0:3].astype(np.float32)
alpha = x[:, :, 3:4].astype(np.float32) / 255.0
y = color * alpha + 255.0 * (1.0 - alpha)
y = y.clip(0, 255).astype(np.uint8)
return y
controlnet_conditioning_scale = 1.0
prompt = "你的提示词,越长越好,尽可能详细描述"
negative_prompt = '长身体,低分辨率,解剖结构错误,手部错误,缺手指,多手指,裁剪,最差质量,低质量'
eulera_scheduler = EulerAncestralDiscreteScheduler.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", subfolder="scheduler")
controlnet = ControlNetModel.from_pretrained(
"xinsir/controlnet-canny-sdxl-1.0",
torch_dtype=torch.float16
)
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=controlnet,
vae=vae,
safety_checker=None,
torch_dtype=torch.float16,
scheduler=eulera_scheduler,
)
controlnet_img = cv2.imread("你的图像路径")
height, width, _ = controlnet_img.shape
ratio = np.sqrt(1024. * 1024. / (width * height))
new_width, new_height = int(width * ratio), int(height * ratio)
controlnet_img = cv2.resize(controlnet_img, (new_width, new_height))
controlnet_img = cv2.Canny(controlnet_img, 100, 200)
controlnet_img = HWC3(controlnet_img)
controlnet_img = Image.fromarray(controlnet_img)
images = pipe(
prompt,
negative_prompt=negative_prompt,
image=controlnet_img,
controlnet_conditioning_scale=controlnet_conditioning_scale,
width=new_width,
height=new_height,
num_inference_steps=30,
).images
images[0].save(f"你的保存路径,PNG格式通常比JPG或WEBP画质更好但体积更大")
评估指标
1 Laion美学评分 [https://laion.ai/blog/laion-aesthetics/]
2 感知相似度 [https://github.com/richzhang/PerceptualSimilarity]
评估数据
测试数据随机采样自Midjourney放大图像及其提示词。由于本项目目标是让用户绘制Midjourney级别的图像,而Midjourney用户包含大量专业设计师,其放大图像通常具有更高的美学评分和提示词一致性,适合作为测试集评估控制网络能力。我们随机选取300组提示词-图像对,每组生成4张图像,共1200张生成图。通过Laion美学评分衡量美感,感知相似度衡量控制能力,发现图像质量与指标值高度一致。
量化结果
指标 |
xinsir/controlnet-canny-sdxl-1.0 |
diffusers/controlnet-canny-sdxl-1.0 |
TheMistoAI/MistoLine |
laion美学评分 |
6.03 |
5.93 |
5.82 |
感知相似度 |
0.4200 |
0.5053 |
0.5387 |
laion美学评分(越高越好)
感知相似度(越低越好)
注:数值基于WEBP格式计算,若保存为PNG格式美学值将提升0.1-0.3但相对关系不变。
训练细节
模型使用高质量数据训练,仅进行单阶段训练,分辨率设置与sdxl-base相同(1024*1024)。采用随机阈值生成Canny图像(类似lvming zhang的方法),合理的数据增强超参数对模型性能至关重要。此外,使用随机掩码遮盖部分Canny图像以强制模型学习提示词与线条间的语义关联。训练数据超过1000万张,经严格标注,CogVLM被证明是强大的图像标注模型[https://github.com/THUDM/CogVLM]。动漫图像推荐使用Waifu Tagger生成特殊标签[https://huggingface.co/spaces/SmilingWolf/wd-tagger]。训练使用超过64张A100显卡,实际批次大小为2560(采用梯度累积)。
训练数据
数据来源多样,包括Midjourney、laion 5B、danbooru等,经过严格筛选和标注。
结论
评估显示,该模型在真实图像上的美学评分优于stabilityai/stable-diffusion-xl-base-1.0,在卡通风格图像上表现相当。得益于更强的数据增强和更多训练步数,模型在控制能力(感知相似度)上更优。此外,模型生成异常图像(如人体结构错误)的概率更低。