Mistoline: 超高质量控线的Controlnet【附加代码演示】

MistoLine 是 SDXL-ControlNet 模型,可适应任何类型的线条图输入,具有高精确度和出色的稳定性。它可以根据用户提供的各种类型的线稿(包括手绘草图、不同的 ControlNet 线稿预处理器和模型生成的轮廓)生成高质量图像(短边大于 1024px)。MistoLine 无需为不同的线条预处理器选择不同的 ControlNet 模型,因为它在不同的线条艺术条件下都能表现出强大的概括能力。

在这里插入图片描述

MistoLine 的方法是,采用一种新颖的线条预处理算法(Anyline),并在稳定的 Unetai/ stable-diffusion-xl-base-1.0 基础上重新训练 ControlNet 模型,同时在大型模型训练工程方面进行创新。MistoLine 在不同类型的线条艺术输入方面都表现出卓越的性能,在细节还原、及时对齐和稳定性方面超越了现有的 ControlNet 模型,尤其是在更复杂的情况下。

MistoLine 与 @lllyasviel 发布的 ControlNet 架构保持一致,如下示意图所示:

除 PlaygroundV2.5、CosXL 和 SDXL-Lightning(也许)外,该型号与大多数 SDXL 型号兼容。它可与 LCM 和其他 ControlNet 型号结合使用。

在这里插入图片描述

代码

pip install accelerate transformers safetensors opencv-python diffusers

原图
在这里插入图片描述

controlnet

from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL
from diffusers.utils import load_image
from PIL import Image
import torch
import numpy as np
import cv2

prompt = "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting"
negative_prompt = 'low quality, bad quality, sketches'

image = load_image("https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/hf-logo.png")

controlnet_conditioning_scale = 0.5  # recommended for good generalization

controlnet = ControlNetModel.from_pretrained(
    "./controlnet-canny-sdxl-1.0",
    torch_dtype=torch.float16
)
vae = AutoencoderKL.from_pretrained("./sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
    "./stable-diffusion-xl-base-1.0",
    controlnet=controlnet,
    vae=vae,
    torch_dtype=torch.float16,
)
pipe.enable_model_cpu_offload()

image = np.array(image)
image = cv2.Canny(image, 100, 200)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
image = Image.fromarray(image)

images = pipe(
    prompt, negative_prompt=negative_prompt, image=image, controlnet_conditioning_scale=controlnet_conditioning_scale,
    ).images

images[0].save(f"hug_lab.png")

result:

在这里插入图片描述

Mistoline

from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL
from diffusers.utils import load_image
from PIL import Image
import torch
import numpy as np
import cv2

prompt = "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting"
negative_prompt = 'low quality, bad quality, sketches'

image = load_image("https:/huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/hf-logo.png")

controlnet_conditioning_scale = 0.5

controlnet = ControlNetModel.from_pretrained(
    "./MistoLine",
    torch_dtype=torch.float16, variant="fp16", use_safetensors=True # 官方实例会出现 diffusion_pytorch_model.bin缺失的OSError, 这里我修改成了读取safetensors模式
)
vae = AutoencoderKL.from_pretrained("./sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
    "./stable-diffusion-xl-base-1.0",
    controlnet=controlnet,
    vae=vae,
    torch_dtype=torch.float16,
)
pipe.enable_model_cpu_offload()

image = np.array(image)
image = cv2.Canny(image, 100, 200)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
image = Image.fromarray(image)

images = pipe(
    prompt, negative_prompt=negative_prompt, image=image, controlnet_conditioning_scale=controlnet_conditioning_scale,
    ).images

images[0].save(f"hug_lab2.png")

result:
在这里插入图片描述

生成结果不一定和我的结果一致,仍需要批量生成后选择自己喜好的。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值