模型:

DionTimmer/controlnet_qrcode-control_v1p_sd15

英文

QR Code Conditioned ControlNet模型稳定扩散1.5

模型描述

该存储库保存了稳定扩散v1.5版本的QR代码条件控制网络的safetensors和diffusers版本。稳定扩散2.1版本在一定程度上更有效,因为它是根据我的特定需求开发的。然而,这个1.5版本模型也是在相同的数据集上进行训练的,供那些使用较旧版本的人使用。

如何与扩散器一起使用

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_v1p_sd15",
                                             torch_dtype=torch.float16)

pipe = StableDiffusionControlNetImg2ImgPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    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]

性能和限制

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

为了在风格和形状之间平衡,可能需要适当微调控制权重,这取决于个别输入和期望的输出,以及正确的提示。有些提示在您大幅增加权重之前可能无效。在找到这些因素之间的正确平衡的过程中,既需要艺术性,又需要科学性。为了获得最佳结果,建议以768的分辨率生成艺术作品。这样可以获得更高级别的细节,在QR代码艺术作品的质量和效果上提升。

安装

最简单的方法是将.safetensors模型及其.yaml配置文件放置在其他ControlNet模型安装的文件夹中,具体位置因应用程序而异。在auto1111中使用时,可以将它们放置在webui/models/ControlNet文件夹中。可以通过在webui的扩展选项卡中安装controlnet webui扩展来加载它们( https://github.com/Mikubill/sd-webui-controlnet )。确保启用您的控制网络单元,并将输入图像设置为QR代码。将模型设置为SD2.1或1.5版本,取决于您的基本稳定扩散模型,否则将会出错。无需预处理器,尽管您可以使用反转预处理器获得不同变体的结果。768是生成的首选分辨率,因为它允许更多的细节。如果遇到困扰,请查阅有关如何使用controlnet的其他信息,一旦您启动了webui并运行良好,安装controlnet扩展也非常容易。