模型:

DionTimmer/controlnet_qrcode-control_v11p_sd21

英文

QR Code条件下的ControlNet模型用于稳定扩散2.1

模型描述

这个存储库包含了QR码条件下用于稳定扩散v2.1的safetensors和diffusers版本的ControlNet。稳定扩散2.1版本在一定程度上更加有效,因为它是为了解决我的特定需求而开发的。然而,还训练了一个1.5版本的模型,用于那些使用旧版本的人。

如何使用diffusers

pip -q install diffusers transformers accelerate torch xformers
import torch
from PIL import Image
from diffusers import StableDiffusionControlNetImg2ImgPipeline, ControlNetModel, DDIMScheduler
from diffusers.utils import load_image

controlnet = ControlNetModel.from_pretrained("DionTimmer/controlnet_qrcode-control_v11p_sd21",
                                             torch_dtype=torch.float16)

pipe = StableDiffusionControlNetImg2ImgPipeline.from_pretrained(
    "stabilityai/stable-diffusion-2-1",
    controlnet=controlnet,
    safety_checker=None,
    torch_dtype=torch.float16
)

pipe.enable_xformers_memory_efficient_attention()
pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()

def resize_for_condition_image(input_image: Image, resolution: int):
    input_image = input_image.convert("RGB")
    W, H = input_image.size
    k = float(resolution) / min(H, W)
    H *= k
    W *= k
    H = int(round(H / 64.0)) * 64
    W = int(round(W / 64.0)) * 64
    img = input_image.resize((W, H), resample=Image.LANCZOS)
    return img


# play with guidance_scale, controlnet_conditioning_scale and strength to make a valid QR Code Image

# qr code image
source_image = load_image("https://s3.amazonaws.com/moonup/production/uploads/6064e095abd8d3692e3e2ed6/A_RqHaAM6YHBodPLwqtjn.png")
# initial image, anything
init_image = load_image("https://s3.amazonaws.com/moonup/production/uploads/noauth/KfMBABpOwIuNolv1pe3qX.jpeg")
condition_image = resize_for_condition_image(source_image, 768)
init_image = resize_for_condition_image(init_image, 768)
generator = torch.manual_seed(123121231)
image = pipe(prompt="a bilboard in NYC with a qrcode",
             negative_prompt="ugly, disfigured, low quality, blurry, nsfw", 
             image=init_image,
             control_image=condition_image,
             width=768,
             height=768,
             guidance_scale=20,
             controlnet_conditioning_scale=1.5,
             generator=generator,
             strength=0.9, 
             num_inference_steps=150,
            )

image.images[0]

性能和局限性

这些模型在大多数情况下表现良好,但请注意它们并不百分之百准确。在某些情况下,QR码的形状可能不如预期。您可以增加ControlNet权重来强调QR码的形状。然而,请注意这可能会对输出的风格产生负面影响。为了优化扫描效果,请使用纠错模式为“H”(30%)生成您的QR码。

为了在样式和形状之间取得平衡,可能需要对控制权重进行轻微的微调,这基于各个输入、期望的输出以及正确的提示。直到您大幅增加权重,某些提示可能不起作用。在这些因素之间找到合适的平衡的过程既是艺术的一部分,也是科学的一部分。为了获得最佳效果,建议以768的分辨率生成您的艺术品。这样可以在最终产品中增加更多的细节,增强基于QR码的艺术品的质量和效果。

安装

使用这个模型的最简单方法是将.safetensors模型及其.yaml配置文件放在您安装其他controlnet模型的文件夹中,每个应用程序不同。对于在auto1111中的使用,可以将它们放在webui/models/ControlNet文件夹中。可以通过webui的扩展选项卡安装controlnet webui扩展,它可以通过extensions选项卡在webui中安装( https://github.com/Mikubill/sd-webui-controlnet )。确保启用controlnet单元并将输入图像设置为QR码。将模型设置为SD2.1或1.5版本,具体取决于您的基础稳定扩散模型,否则会出错。不需要预处理器,但您可以使用反转预处理器获取不同的结果变化。768是推荐的生成分辨率,因为它允许更多的细节。如果卡住了,请确保查阅有关如何使用controlnet的其他信息,一旦您的webui已经运行起来,安装controlnet扩展也很容易。