本文基于 Stable Diffusion Webui 制作,艺术二维码的制作流程并不复杂,但想要一个满意的效果需要不断尝试和调整控制参数,运气加上熟练使用,出图的概率会提高很多
环境准备
1、安装 QR Toolkit https://github.com/antfu/sd-webui-qrcode-toolkit
2、下载 ControNet 模型
二维码制作
在草料二维码平台 https://cli.im 进行二维码的生成,例如直接输入文字就可以生成一个二维码,扫码出来就是对应的文字了
本文的内容主要是介绍如何给二维码进行艺术化操作,首先打开二维码解码器 https://cli.im/deqr
直接将二维码拖进去就可以了,然后复制右边的解码url,再粘贴到下面 SD 的 QR Toolkit 插件里
QR Toolkit
二维码生成
关于 QR 工具的详细使用可以参考文档 https://antfu.me/posts/ai-qrcode-101
这里做简要的说明
error Correction
: 纠错码是控制容错率的,L到H越往后容错率越高,但二维码就越复杂,也意味着融合的效果可能越差,一般选择 M 或者 Q
- L(Low):7%的字码可被修正
- M(Medium):15%的字码可被修正
- Q(Quartile):25%的字码可被修正
- H(High):30%的字码可被修正
Markers
这几个参数是控制码点的形状和类型,需要控制二维码的图案分布尽可能均匀一点,少一些直角块。可以大概参考图中的设置,具体可以按需调整
Magin
设置二维码间距,点击右边的箭头可以展开,进行间距宽高的设置
Margin Noise
控制图案边缘部分的噪点,可以丰富画面的细节
例如,设置图案为长方形时,可以通过添加噪点的方式,可以对边缘的空白进行填充
version
二维码版本,是控制二维码的容量大小,保持 1 和 40
Safe space
保持 Full 填充
Pixel Size
像素大小,像素越大能被识别的概率越大
Transform
是对二维码图案进行变换的设置,可以变换 X和Y轴的角度,Scale 设置尺寸,可以微调,一般为1.04
最后点击 Save state 可以保存当前的设置,也可以点击 Reset State 进行重置
二维码验证
将生成好的图片二维码拖到这里,即可验证能否被微信长按识别,识别成功则微信长按大概也能识别成功,如果识别失败,则微信中识别一定不会成功
模型设置
二维码的融合需要借助 ControlNet 来实现
ControlNet 0
模型这里选择 qrcode_monster,这个在第一节中已经下载过了
控制权重 - 控制网络的权重。权重越高,输出将更受控制网络的影响
启动控制步骤 - 控制网络开始生效的生成过程百分比
结束控制步骤 - 控制网络停止生效的生成过程百分比
上图分别设置了引导的不同开始时机,越早介入,二维码的识别效果越好,画面的如何效果越差
为了能显示较好的效果,控制权重需要设置为1 ~ 1.3 左右,引导时机为 0 ~ 1,这样既保持了二维码的识别,也能让图案融合的更好看些
正向提示词
a young beauty,a beautiful dress,flower sea,(a lot of flowers:1.1),multicolored hair,zleaves are falling,wearing floral clothes,green skirt,(masterpiece:1,2),best quality,
负面提示词,直接用的 embedding
EasyNegative,
上面这个图片有时候可以通过扫码的方式识别的,识别率比较低,使用QR toolkit 的 Verify 无法识别,则基本可以认为在微信中也无法长按识别
这种情况就需要借助第二个 ControNet
ControlNet 1
通常无法完美的识别二维码,是因为二维码定位点的问题,这个时候需要增加一个 ControNet 模型,控制二维码的明暗程度,让定位点更加容易被识别到
如果你的界面只有一个 ControlNet 可以用,可以在设置里设置 ControlNet unit 的数量
与 ControlNet 0 一样的设置用法,需要改变的是控制模型,这里选用 Brightness 模型,这个模型用来控制明暗程度的,权重一般设置的较小以为我们只需要部分地方二维码更明显一些,引导时机也是相对控制的更短,一般差值在0.3左右,介入时机需要具体的调整,可以默认从 0.3 ~ 0.6 开始,然后根据显示的结果做出调整
生成的效果如下,这样的图片就可以被微信长按识别了
注意:少部分情况下使用一个 ControNet 就足以完成二维码的识别,额外增加一个 ControNet 模型会导致融合的效果更差,从上面的结果你也会发现,只用 ControNet 0 的图片效果明显是要更加好看的,但是为了二维码的识别准度,增加 ControNet 1 就不得不做一些取舍
人物细节修复
如果生成的是人物图片,会发现面部或者手部会有缺陷,可以使用 ADetailer 工具进行修复,如果没有可在扩展中下载 adetailer:https://gitcode.net/ranting8323/adetailer.git
哪里有问题就选择哪种算法模型,上图中面部的细节不太完美,使用face_yolov8n.pt
后, 对比修复前和修复后的效果,面部有了明显的改善
案例中完整的图片信息如下
正面提示词
a young beauty,a beautiful dress,flower sea,(a lot of flowers:1.1),multicolored hair,zleaves are falling,wearing floral clothes,green skirt,(masterpiece:1,2),best quality,
负面提示词
EasyNegative,
其他信息
Steps: 30, Sampler: Euler a, CFG scale: 7, Seed: 2623946212, Size: 768x768
Model: revAnimated_v122, Clip skip: 2,
ControlNet 0: "Module: none, Model: control_v1p_sd15_qrcode_monster [a6e58995], Weight: 1.3, Resize Mode: Crop and Resize, Low Vram: False, Guidance Start: 0, Guidance End: 1,
ControlNet 1: "Module: none, Model: control_v1p_sd15_brightness [5f6aa6ed], Weight: 0.3, Resize Mode: Crop and Resize, Low Vram: False, Guidance Start: 0.3, Guidance End: 0.61, Pixel Perfect: True,