Stable Diffusion的时尚二维码
使用Stable Diffusion和ControlNet创建了这张图片,并在Twitter和Instagram上分享了它——这是一幅既是插图又能作为可扫描的二维码的图像。
在这篇文章中,我想分享一些我学习过程中的见解以及我采用的方法来创建这个形象。此外,我想借此机会感谢那些使这个项目成为可能的出色工具和模型。
进入 Stable Diffusion
今年见证了令人难以置信的人工智能技术的爆炸式增长,例如ChatGPT、DALL-E、Midjourney、Stable Diffusion等等。作为一名曾经的摄影师,对设计和艺术也有一些兴趣,能够在几分钟内直接从想象中生成图像无疑是非常诱人的。
所以我开始尝试Midjourney,它非常易于使用,表现力很强,而且质量实际上相当不错。老实说,对于任何想要开始生成式人工智能艺术的人,这绝对是我的推荐。
QR码图像
几周前,Reddit上的一个用户发布了一系列使用Stable Diffusion和ControlNet创建的艺术二维码。这个概念让我着迷,我肯定想为自己制作一个。所以我进行了一些研究,并成功找到了原文《使用人工智能生成可扫描图像》。作者提供了他们的动机和训练模型的过程的见解,尽管他们没有发布模型本身。另一方面,他们正在建立一个名为QRBTF.AI的服务来生成这样的二维码,但目前尚不可用。
直到有一天,我在CivitAI上发现了一个社区模型QR Pattern Controlnet Model。我知道我必须试一试!
设置
我的目标是生成一个QR码图片,它能够指向我的网站,并展现出与我的兴趣相关的元素。最终,我选择了一个稍微带有密码朋克风格的设计,其中包含一个代表我自己的角色
免责声明:我绝对不是人工智能或相关领域的专家。在这篇文章中,我只是分享了我所学到的和我所遵循的过程。我的理解可能不完全准确,可能还有一些优化方法可以简化这个过程。如果您有任何建议或评论,请随时使用页面底部的链接与我联系。谢谢!
我基本上遵循了Stable DiffusionLoRA模型训练方法:一个完整的指南来安装web ui AUTOMATIC1111/stable-diffusion-webui,从CivitAI下载你感兴趣的模型等等。顺便说一下,我发现这个web ui的用户体验并不是非常友好,其中一些问题可能是一些架构问题,不容易改进,但幸运的是,我找到了一个相当不错的主题canisminor1990/sd-webui-kitchen-theme,它改进了许多小细节。
为了使用ControlNet,您还需要安装Mikubill/sd-webui-controlnet扩展程序以供Web UI使用。
然后您可以下载QR Pattern Controlnet模型,将两个文件( .safetensors
和 .yaml
)放在 stable-diffusion-webui/models/ControlNext
文件夹下,并重新启动Web界面。
创建一个二维码
有数百个充斥着广告或收费服务的二维码生成器,但我们确实不需要那些花哨的东西——因为我们将使它变得更加花哨 😝!
所以我最终找到了QR码生成器库,一个开源QR码生成器的游乐场。它简单而正好符合我的需求!最好使用中等纠错级别或更高级别,以便后期更容易识别。一个小提示是,你可以尝试使用不同的掩模模式,以找到更好的颜色分布,以适应你的设计。
文字转图像
正如常规的Text2Image工作流程,我们需要为AI提供一些提示,以便生成图像。以下是我使用的提示:
(one male engineer), medium curly hair, from side, (mechanics), circuit board, steampunk, machine, studio, table, science fiction, high contrast, high key, cinematic light,
(masterpiece, top quality, best quality, official art, beautiful and aesthetic:1.3), extreme detailed, highest detailed, (ultra-detailed)
(worst quality, low quality:2), overexposure, watermark, text, easynegative, ugly, (blurry:2), bad_prompt,bad-artist, bad hand, ng_deepnegative_v1_75t
我感觉很幸运!
在找到一组我满意的参数后,我会将批次数量增加到大约100个,并让模型随机生成变体。之后,我可以浏览它们并选择一个具有最佳构图和细节的作品进行进一步的改进。这可能需要很长时间,也会占用您处理器的大量资源。所以我通常会在睡前开始它,并让它在夜间运行。
以下是一些生成的变体示例(并非所有都可扫描):
从大约一百个变体中,我最终选择了以下图像作为起点:
这个构图相当有趣,虽然不像二维码那样明显。所以我决定继续进行,并增加一些细节。(你可以将其与最终结果进行比较,看看我所做的改变。)
优化细节
模型生成的图像在每个细节上并不完美。例如,您可能已经注意到手和脸部出现了轻微的扭曲,角落的三个锚定框也不够美观。我们可以使用修复功能告诉模型重新绘制图像的某些部分(最好保持与原始生成的提示相同或相似)。
修复通常需要与生成文本到图像相同的时间,并且需要运气或耐心。通常,我会利用Photoshop从先前生成的图像中“借用”一些部分,并使用修复画笔工具清除故障和伪影。我的Photoshop图层看起来会像这样:
在进行这些调整之后,我会再次将合并后的图像发送回去进行修复,以确保更加无缝的融合。或者寻找一些在其他图像中没有找到的其他组件。
具体来说,对于二维码而言,在某些情况下,控制网络可能没有足够的优先级,导致提示信息接管并导致二维码的某些部分不匹配。为了解决这个问题,我会将原始二维码图像叠加到生成的图像上(如下图左侧所示),识别任何不匹配的部分,并使用刷子工具将这些部分涂上正确的颜色(如下图右侧所示)。
我随后再次导出标记图像进行修复,将降噪强度调整到大约0.7。这样可以确保模型在一定程度上覆盖我们的标记,同时尊重颜色。
最终,我会多次重复这个过程,直到对每一个细节都感到满意。
升级
推荐的生成尺寸为920×920像素。然而,模型并不总是能在像素级别上生成高度详细的结果。因此,当面部和手部过小时,细节可能会显得模糊。为了克服这个问题,我们可以将图像放大,为模型提供更多的像素来处理。在 img2img
选项卡中的 SD Upscaler
脚本对此目的特别有效。您可以参考《稳定扩散图像放大指南》了解更多信息。
后期处理
最后,我使用Photship和Lightroom进行细微的色彩分级和后期处理,然后我们就完成了!
我最后得到的那个不太好容错性,你可能需要尝试几次或使用一个更宽容的扫描仪来进行扫描
结论
创建这个图像花了我整整一天的时间,总共学习、生成和完善了10个小时。这个过程对我来说非常愉快,我对最终结果感到非常兴奋!我希望这篇帖子能为您提供一些基本概念,或者激发您踏上自己的创造之旅。在这个领域中还有很多值得探索的地方,我迫不及待地想看到接下来会发生什么!