用Stable Diffusion生成隐藏式二维码
最近用SD进行AI绘画创作二维码突然火了起来,因为各种插件模型的流行,现在可以在AI作画的情况下利用颜色对比来生成一个比较隐蔽的二维码,让它看上去是一幅画,但是可以用手机扫出来。找了一些教程试了一下,如果要实现巧妙伪装+方便扫码还是有一定难度的,不过过程还是挺有意思。
一些效果图(实际上这些图经过高清修复后都几乎无法以图片形式识别,需要用相机扫码或转成较低分辨率才行):
参考内容与要求条件
我自己实现此功能的时候,主要参考了以下教程:
【AI二维码喂饭级教学,完美隐藏定位点,超高成功率 #aigc #Ai绘画 #人工智能】个人配置为i5-13600KF + 3080 12g + 32g ddr4,图片尺寸为512 * 512,尝试768 * 768大概率会爆显存。
你需要准备以下资源,部分网站可能需要魔法:
- Stable Difussion,我使用的是秋叶大佬的整合包:
- 合适的模型,你需要综合考虑你自己的喜好、二维码的隐蔽性及机器识别能力,同时测试下来部分模型会出现问题,我选用的是Counterfeit-V3.0,比较著名的二次元模型:
一些SD的插件,包括ControlNet、ADetailer、QR Toolkit。
ControlNet的模型,包括qrcode-monster与brightness:
control_v1p_sd15_brightness.safetensors
安装资源
SD的安装下载秋叶的整合包即可,教程可以参考相关b站视频,已经很傻瓜了,如果安装不成功大概率是网络或操作问题。安装完成后,启动前还需要先下载底模。
底模的下载主要可以在civitAI找,右上角筛选勾选checkpoint,出来的就都是大模型了。成人向模型需要登录后才可查看。如果如果和我一样使用Counterfeit模型的话推荐使用额外的VAE,在启动器 => 模型管理 => 变分自编码器(VAE)模型中下载 vae-ft-mse-840000-ema-pruned.ckpt。模型下载后分别扔到”./models/Stable-diffusion/“和”./models/VAE/“目录下即可。
模型配置完成后,需要下载相应的插件,在webui => 扩展 => 可用点击“加载自:”,搜索三个插件 ControlNet 插件、sd-webui-qrcode-toolkit、adetailer,安装之后重启即可。ControlNet装完之后在webui => 设置 => ControlNet中”Multi ControlNet 的最大网络数量”拉至2或以上,然后保存重启。
ControlNet模型,下载之后扔到”\extensions\sd-webui-controlnet\models”文件夹就行。
二维码配置
如果你需要美化QQ、微信等已有的二维码,需要将二维码先解码,往上随便搜一下就可以。如果是用来做指定网站链接的可以忽略这一步。
得到你需要生成二维码的文本后,在webui的QR Toolkit栏配置你的二维码,可以选择定位与像素点颜色形状等,可以根据自己喜好挑,建议就方形。Error Correction纠错率越右边准确率越高,但像素越密,生成的图像不一定好看。
配置可以参考我的,反正我也是抄的。
完成后把图片保存下来。
生成图片
接下来就是生成二维码图片了。SD的标准配置如图,图片尺寸用方形,因为比较吃显存,原图尺寸不宜过大。提示词需要考虑你的任务和背景构图,考虑二维码的可识别性两种主要颜色就可以了,像草地、花丛、白裙子这种都可以,具体可以自己试。高清修复不要开,其他随意,采样方法对后面ControlNet权重有些影响,不太确定。
Adetail勾选enable,其他保持默认即可。
ControlNet插件需要用到两个unit,把之前保存的图片扔到里面,分别设置brightness和qrcode_monster模型,预处理器不用选,启用。
brightness用于增强图片的明暗对比度,权重Control Weight不用太高,进入时间Starting Control Step和退出时间Ending Control Step取后半段即可。
qrcode_monster就是用于控制二维码图片的生成了,最核心的设置,控制时间从0至1全程,权重1.5左右,权重越大就越像二维码,但是本身图片违和感也就越强。根据实际出图效果再调整,不同模型和提示词对最后二维码的识别性都有影响。
后处理
得到一个能扫的出来的且比较好看的画之后可以扔到附加功能里高清修复一下,放大看效果也还不错。不过一些伪装效果比较好的图高清放大后不一定能够识别成功,太清晰导致像素块不好定位。一般用相机扫或者手动通过截图减小分辨率可以识别的出来。
最新评论