模型:
DionTimmer/controlnet_qrcode-control_v1p_sd15
该存储库保存了稳定扩散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扩展也非常容易。