模型:
DionTimmer/controlnet_qrcode-control_v11p_sd21
这个存储库包含了QR码条件下用于稳定扩散v2.1的safetensors和diffusers版本的ControlNet。稳定扩散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_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扩展也很容易。