这几天我又生成了很多漂亮的二维码图片,有了一些感受和想法,特总结此文,分享给大家。需要图片参数的同学可直接看文章最后,我生成了100多张不同风格的图片。

先看效果,喜欢的可以继续读下去。

背景

在这篇文章之前,我写了两篇文章来介绍SD WebUI制作艺术二维码的方法:

AI制作艺术二维码-文生图

AI制作艺术二维码-图生图

在“文生图”一文中介绍了使用提示词+标准二维码生成艺术二维码的方法,演示了生成狮子头像二维码的实例,实际出图的效果也还不错,但是不能控制图片的细节,这也是只使用提示词生成图片的通常问题。

在“图生图”一文中介绍了使用图片+标准二维码生成艺术二维码的方法,演示了生成美女头像二维码的实例,通过这种方法,我们可以把一张选好的照片附加到二维码上,比如自己的Logo,但是图片的美观程度不是那么好,二维码比较灰暗,而且人脸出现了深颜色的斑块,其实在“文生图”中也存在这个问题,只是我们没有使用人脸。

另外这两种方法还存在一个问题:二维码的痕迹比较明显,大家一眼就能看出来这是一个二维码,对于追求视觉效果或者不想让别人看出来是二维码的场景,就力不从心了。

在实际出图的过程中,我还遇到过很多生成的二维码无法识别的情况:有时候是完全无法扫出;有时候是手机摄像头可以扫码,但是应用中长按不能识别;还有Android手机摄像头和长按都可以,但是iPhone长按不可以。对于需求者来说,二维码肯定是要能被识别的,只是好看没有用处。

对于艺术二维码,总结下来就是这几个需求

  1. 要容易被识别。
  2. 视觉效果要好(特别的:人脸要好看),不要那么二维码。
  3. 能控制一些细节。

所以我又去找了一些资料,试图解决所有这些问题,结果很难十全十美,但是获得一定程度上的平衡还是可行的,现在分享给大家。

基本思路

1、给二维码做一些变形,让它看起来更杂乱无章,不像是二维码。这里会用到一个工具,下边实际生成时会介绍。

具体方法包括:

  • 降低二维码的容错率,让它更简单一些,但也不要太低。
  • 将像素块由正方形变为弧形、圆形、线形等;
  • 在二维码的外围增加一些形似二维码中像素块的区块。
  • 旋转二维码,让它不是常规的角度,增加人眼识别难度;
  • 给定位标志换一些样式,比如用圆圈或者菱形代替方块,用断线代替直线等;
  • 给二维码的像素块增加一些结晶效果,这样可以方便融入别的图像。
  • 给二维码换一个颜色,让它可以和图像更好的融合。

变形演示图片:

2、将二维码融入背景,让肉眼很难分辨。我这里想到两种做法:

  • 将整个二维码区域和图像融合,比如森林或者照片墙之类的。
  • 将二维码部分作为整个图像的某个区域,比如墙上的画框或者院子里的屏风。

3、如果需要人像,使用某些Lora或者插件进行优化。

4、修正二维码,包括:

修正不和谐的画面元素,比如人脸上的斑块。这可以通过图生图局部绘制来实现。

修正二维码的错误像素块,让它更容易被识别。这会用到别的工具。

1、二维码处理

这个插件可以生成标准二维码,对二维码进行变形,还可以对SD生成的艺术二维码进行像素块修正。

(1)直接在SD中安装插件:https://github.com/antfu/sd-webui-qrcode-toolkit.git

重启SD WebUI:

(2)打开二维码工具:

设置生成二维码的参数:

生成好了之后 ,点击二维码下方的Download,保存起来备用。

2、人像处理

adetailer这个插件可以根据模型检测、伪装和修复图像中的某些部分,如果需要在二维码中合成头像,则需要这个步骤,否则跳过即可。

(1)安装这个细节处理插件:https://github.com/Bing-su/adetailer,注意安装完成后需要重启。

(2)下载插件需要的模型。

正常情况下,重启后这个插件会自动下载需要的模型,但是由于众所周知的网络限制问题,有时候不能自动下载成功,这时候就需要手动下载。

这里我们先只下载一个修脸的模型,下载后放到 SD WebUI 的models目录下。

https://huggingface.co/Bingsu/adetailer/tree/main

(3)重启后,在图像生成种子的下边会看到多了一个ADetailer的区块,选择我们刚刚下载的这个模型,最先变有个参数 Mask erosion 设置为-4,是为了让脸部不要太影响二维码。

(4)这里可能还存在一个问题:找不到模块 ultralytics。

我的Stable Diffusion WebUI是在云端运行的,用的别人的镜像,生成图片的时候报这个错误,此时需要在对应的Python运行环境中安装这个包。参考:

source /root/stable-diffusion-webui/venv/bin/activate
pip install ultralytics

注意 /root/stable-diffusion-webui/venv/bin/activate 需要换成你的 Python 虚拟运行环境路径。

3、ControlNet设置

之前合成二维码时我们使用了 tile 和 brightness 模型,这里我们使用专门处理二维码的模型:control_v1p_sd15_qrcode_monster。

下载地址:https://huggingface.co/monster-labs/control_v1p_sd15_qrcode_monster/tree/main

(1)这里下载以 .safetensors 为后缀名的文件,下载后放到 SD WebUI 的 models/controlnet 目录下。

(2)设置ControlNet。

首先上传需要合成的二维码:

然后刷新模型,选中我们刚下载的模型,这里选择了一个预处理器 invert,它会将二维码颜色反转,这样图片会比较亮一些,视觉效果好。

这里 Control Weight 参数也很重要,如果二维码的痕迹比较重,则需要降低这个权重,如果扫不出来,则需要增加这个权重。大家需要根据自己的二维码和要生成的图片效果进行设置,没有放之四海皆可的标准值。

4、大模型设置

(1)经过测试,revAnimated 这个模型出各种图的效果都还不错,建议大家使用。

其它根据你的图片风格,也可以试试 comix 系列的模型。

(2)提示词比较多,这里粘贴出来一个(其它提示词请看文章最后)。

正向提示词:1 girl, upper body, serene expression, mesmerizing eyes, straight long hair, flowing dress, poised posture, porcelain skin, subtle blush, warm tones, sun flare, soft shadows, vibrant colors, painterly effect, dreamy atmosphere, scenic lake, big trees, mottled shadows, many stones in water,peaceful ambiance, idyllic sunset, ultra detailed, 8k wallpaper, mandala, RTX, raytracing
反向提示词: NSFW,nude,bad-hands-5,bad-picture-chill-75v,badhandv4,easynegative,ng_deepnegative v1 75t , watermark,character watermark,photo date watermark,Datewatermarking,sketch, duplicate, ugly, huge eyes, text, logo, monochrome, (bad and mutated hands:1.3), (worst quality:2.0), (low quality:2.0), (blurry:2.0), horror, geometry, bad_prompt, (bad hands), (missing fingers), multiple limbs, bad anatomy, (interlocked fingers:1.2), Ugly Fingers, (extra digit and hands and fingers and legs and arms:1.4), ((2girl)), (deformed fingers:1.2), (long fingers:1.2),(bad-artist-anime), bad-artist, extra legs, nipples,disfigured, poorly drawn face, deformed, extra limbpoorly drawn hands

(3)生成参数设置:

这些参数都可以可以调整的,可以换换试试看。

如果你的宽度和高度设置的不大于512,可以勾选“高分辨率修复”,大于512时勾选会消耗比较多的资源,生成也会变慢。

生成次数和每次数量用于批量跑图,因为生成一张好图的概率可能比较低,所以一次多生成几张,从中挑选 ,这样会节省时间。

看看我这次出图的效果(一个花姑娘):

5、修复二维码

生成的图片存在一些问题,比如脸不好看,扫不出来等,这时候可以采用一些补救措施。

(1)图生图(局部绘制)

适合修复视觉效果出问题的图片,比如脸上难看的板块。

(2)使用之前安装的二维码插件 QR ToolKit。

在它的选项卡Compare这里可以上传生成的图片和二维码图片,它会对比两张图,找出错误的像素点,点击右侧的 “Preview Correction”可以预览修复效果,点击“Download”可以下载修复后的图,下边还有一些修复参数,可以点击看看效果,这里就不啰嗦了。

(3)一个别人分享的经验

这是知识星球上别人分享的一个经验(特别感谢),有些图能扫码但是不能长按识别,或者有些图在Android中可以长按识别但是在iPhone中不能,此时不要点开大图识别,可以给小图截屏,然后再长按识别,此时一般就能够成功了 。

(4)图片的颜色不要过于杂乱

这个不是绝对的,但是颜色少点确实比较容易识别。再给大家参考两张图(只截取了部分):

6、下载参考图片

这几天我使用不同的模型 、提示词和二维码生成了一百多张图片,每张都经过了手机扫码测试(不保证长按识别),可以给大家提供一些生成的思路,有兴趣的请关注微信公众号:萤火遛AI,回复“AI二维码”即可获取下载地址。

后续有新的AI思路,我也会发到公众号,欢迎及时关注,以免错过精彩内容。


参考文章,感谢大佬们的分享:

https://antfu.me/posts/ai-qrcode

https://antfu.me/posts/ai-qrcode-refine

https://qrcode.antfu.me/

https://qrbtf.com/

https://mp.weixin.qq.com/s/i4WR5ULH1ZZYl8Watf3EPw

玩转AI二维码:揭秘我的漂亮二维码生成秘诀的更多相关文章

  1. 小白都能看懂的 Spring 源码揭秘之依赖注入(DI)源码分析

    目录 前言 依赖注入的入口方法 依赖注入流程分析 AbstractBeanFactory#getBean AbstractBeanFactory#doGetBean AbstractAutowireC ...

  2. 如何使用二维码进行表白-一键制作二维码,gif二维码制作

    " 如何使用二维码进行表白-一键制作二维码" 二维码在我们现在生活中随处可见,因为一次突发奇想,那我们可不可以制作一个自己的二维码呢!然后让女朋友去扫描一下----嘿嘿嘿--不行, ...

  3. C# 生成二维码,彩色二维码,带有Logo的二维码及普通条形码

    每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...

  4. (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

    场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老 ...

  5. Thinkphp3.2结合phpqrcode生成二维码(含Logo的二维码),附案例

    首先,下载phpqrcode,将其解压到项目ThinkPHP\Library\Vendor目录下.Index_index.html(模板可自行配置) <form action="{:U ...

  6. js生成二维码以及点击下载二维码

    js生成二维码 jquery.qrcode.js可以快速使用页面生成二维码.但改项目有两个小问题:1.不支持中文:2.不支持二维码中间生成图片. 支持中文的jquery-qrcode jquery.q ...

  7. php--------php库生成二维码和有logo的二维码

    php生成二维码和带有logo的二维码,上一篇博客讲的是js实现二维码:php--------使用js生成二维码. 今天写的这个小案例是使用php库生成二维码: 效果图:        使用了 php ...

  8. 二维码(QR code)基本结构及生成原理

    什么是二维码 二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的. 在许多种类的二维条码中,常用的码制 ...

  9. Opencv+Zbar二维码识别(标准条形码/二维码识别)

    使用Opencv+Zbar组合可以很容易的识别图片中的二维码,特别是标准的二维码,这里标准指的是二维码成像清晰,图片中二维码的空间占比在40%~100%之间,这样标准的图片,Zbar识别起来很容易,不 ...

  10. 二维码之zxing仿新浪微博二维码

    在前言中最后部分,提到了二维码开发工具资源ZXing.网上有它最新1.7版的源码,感兴趣的可以下载下来看看,要打包生成core比较麻烦,网上有相关教程.嫌麻烦的朋友,可以去我的资源里下载Java版的c ...

随机推荐

  1. XmlSerializer 反射类型xxx时出错,反射属性xxx时出错。

    在使用XmlSerializer将类序列化成XML时出错,看到InnerException的message可以知道是这个receiver里有错误,进入这个类查看一下代码发现有重名的类 NodeId类修 ...

  2. Gateway服务网关+过滤器

    为什么需要网关 Gateway网关是我们服务的守门神,所有微服务的统一入口. 网关的核心功能特性: 请求路由 权限控制 限流 架构图: 权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果 ...

  3. Nuxt3环境变量配置

    Nuxt3 正式发布还不到半年,在投入生产环境使用后,遇到了不少问题,很难找到合适的解决方案,其中环境变量配置就是其中一个,之前一直未能解决,最近要上持续集成,无法绕过这个问题,所以花了点时间研究了一 ...

  4. 数据结构(DataStructure)-02

    数据结构-02 **数据结构-01回顾** **数据结构-02笔记** **作业讲解** **链表作业题一** **链表作业题二** **链表作业题三** **线性表 - 栈(LIFO)** **线性 ...

  5. NC51101 Lost Cows

    题目链接 题目 题目描述 \(N (2 \leq N \leq 8,000)\) cows have unique brands in the range 1..N. In a spectacular ...

  6. P2482 [SDOI2010] 猪国杀

    方法论 这是一道复杂的模拟题.由于游戏规则的条目很多,我们需要仔细考虑程序的组织.否则,在编写程序的过程中极容易陷入停滞的状态(不知道下一步应该怎么做),或在发现程序出问题时,难以快速定位到错误点,对 ...

  7. 讯飞星火大模型 与New Bing实测对比

    昨天科大讯飞发布了讯飞星火认知大模型,在发布会现场实测大模型的7种核心能力,并发布了它在教育.办公.汽车.数字员工领域的应用成果.科大讯飞董事长刘庆峰表示:认知大模型展示了通用人工智能的曙光,讯飞星火 ...

  8. 雪球 app 实战(1)

    开头 因为理论篇结束之后,需要一个实战,估选用了雪球app作为一个作业 业务场景: 雪球 app 自选设置(入口位于 行情 模块) 作业内容 使用 百度脑图 编写 思维导图 [自选设置]模块的测试用例 ...

  9. JavaWeb之day03js

    目录: 1.js的String对象(****) 2.js的Array对象 (****) 3.js的Date对象 (****) * 获取当前的月 0-11,想要得到准确的月 +1 * 获取星期时候,星期 ...

  10. 2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 由于答案可能非常大,请返回对 109

    2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值. 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 由于答案可能非常大,请返回对 109 ...