借助 ControlNet 生成艺术二维码 – 基于 Stable Diffusion 的 AI 绘画方案

背景介绍

在过去的数月中,亚马逊云科技已经推出了多篇 Blog,来介绍如何在亚马逊云科技上部署 Stable Diffusion,或是如何结合 Amazon SageMaker 与 Stable Diffusion 进行模型训练和推理任务。

为了帮助客户快速、安全地在亚马逊云科技上构建、部署和管理应用程序,众多合作伙伴与亚马逊云科技紧密合作。他们提供各种各样的服务、深入的技术知识、最佳实践和解决方案,包括基础设施迁移、应用程序现代化、安全和合规性、数据分析、机器学习、人工智能、云托管、DevOps、咨询和培训。

最近,亚马逊云科技核心级服务合作伙伴 eCloudrover(伊克罗德 推出了基于 Stable Diffusion 的 AI 绘画解决方案——imAgine,既拥有经过广泛验证且易于部署的先进 AI 算法模型,又提供丰富且高性价比的云端资源以优化成本,旨在帮助游戏、电商、媒体、影视、广告、传媒等行业快速构建 AIGC 应用通路,打造 AI 时代的领先生产力。

本文主要分享我们在帮助客户使用 Stable Diffusion 时总结的实战经验,以及使用基于 Stable Diffusion 研发的 imAgine 产品生成艺术二维码的最佳实践。

我们将以 QRCode 作为 ControlNet 的输入,使 QRCode 数据点融入到艺术图像中,同时仍然可以被 QRCode 阅读器扫描。借助这项技术,您可以将任何二维码转化为独特的艺术作品,以一种全新的方式来表达和传递信息。以下为几张图片案例:

Stable Diffusion 实战技巧

古语有云:“万事开头难”,“致广大而尽精微”。这对应了在 Stable Diffusion 实战中,客户最常遇到的两方面问题,一是如何选择合适的提示词起手式,来生成满足期望的图片;二是如何对图片进行细节优化,使最终产出的结果能够满足生产应用需求。

我们根据过往服务客户使用 Stable Diffusion 的经验,整理了以下内容作为我们推荐的最佳实践,希望对读者使用 Stable Diffusion 进行创作时提供参考。

提示词工程

随着 Stable Diffusion 版本不断迭代,AI 对语义的理解越来越接近“常识”之后,对提示词(Prompts)的要求也会越来越高。很多提示词上的误区有时会对绘图产生反作用。

Prompt 的基本概念
  • 提示词分为正向提示词(positive prompt)和反向提示词(negative prompt),用来告诉 AI 哪些需要,哪些不需要。
Prompt 的误区
  • Prompt 在于精确,不在于数量;用最简短的单词阐述画面,比自然语言要更有效。
  • 提升质量的描绘词绝不是无脑堆砌、越多越好。
  • 经常出现的起手式:“masterpiece” “best quality” 等,很多时候会成为提示词中的累赘。这些词语在 NovelAI 时代是有意义的,因为当时 NovelAI 训练模型时大量使用了这些词汇来对图像进行评价;但在如今,经过 Civitai 上模型作者们不断重新炼制模型,这些提示词已经很难在生图结果中展现应有的作用。
调整提示词的权重
  • 词缀的权重默认值都是 1,从左到右依次减弱
  • 提示词权重会显著影响画面生成结果
  • 通过小括号+冒号+数字来指定提示词权重,写法如 (one girl:1.5)
注意提示词的顺序
  • 比如景色 Tag 在前,人物就会小,相反的人物会变大或半身
  • 选择正确的顺序、语法来使用提示词,将更好、更快、更有效率地展现所想所愿的画面
Prompt 中的 Emoji
  • Prompt 支持使用 emoji,且表现力较好,对于特定的人脸表情或动作,可通过添加 emoji 图来达到效果
  • 为了防止语义偏移,优先考虑 emoji,然后少用不必要的 with 一类的复杂语法
视角 Prompt 推荐
参数解释
extreme closeup脸部特写
close up头部
medium close up证件照
medium shot半身
cowboy shot无腿
medium full shot无脚
full shot全身

图片优化

很多时候我们生成了一张差强人意的图片,希望对这个结果进行进一步的优化,但往往不知道从何下手。这时您或许可以参考以下图片参数调优的最佳实践:

哪些参数需要调整
  • CFG Scale图像与提示词的相关度。该值越高,提示词对最终生成结果的影响越大,契合度越高。
    • CFG 2-6:有创意,但可能太扭曲,没有遵循提示。对于简短的提示来说,可以很有趣和有用。
    • CFG 7-10:推荐用于大多数提示。创造力和引导力度之间的良好平衡。
    • CFG 10-15:当您确定提示是详细且非常清晰的,对图片内容有极明确的要求时使用。
    • CFG 16-20:除非提示非常详细,否则通常不推荐。可能影响一致性和质量。
    • CFG >20:几乎无法使用。
  • Sampling Steps 迭代步数:步骤越多,每一步图像的调整也就越小、越精确。同时也会成比例地增加生成图像所需要的时间。
    • 对于大部分采样器,迭代越多次效果越好,但超过 50 步后就收效甚微。
  • Sampling method 采样方法:不同的采样方法,对应的最佳迭代步数是不同的,在进行对比时需要综合考虑。
    • Euler a:富有创造力,不同步数可以生产出不同的图片。并且这是一个效率较高的采样方法,可以用来快速检查 prompt 效果的好坏。
    • DPM2 a Karras:适合跑真实模型,30 步以后不好把控。
    • DPM++ 2M Karras:在高步数下表现优异,步数越高细节越多。
    • DDIM:收敛快,但效率相对较低,因为需要很多 step 才能获得好的结果,适合在重绘时候使用。
    • 不同模型与采样方法搭配出的结果也不同,以上仅供参考,在进行采样方法的选择时,最好使用 X/Y/Z 图表进行对比。
  • Seed 随机种子:随机种子值很多时候对构图的影响是巨大的,这也是 SD 生图随机性的最主要来源。
    • 保持种子不变,同样的提示词和模型,保持所有参数一致的情况下,相同的种子可以多次生成(几乎)相同的图像。
    • 在确定好一个合适的画面构图时,固定种子,对细节进行进一步打磨,是最合适的做法。
如何对比寻找最佳参数
  • 利用 X/Y/Z 图找最佳参数:通过使用 X/Y/Z 图,我们可以很清晰地对比不同参数下的结果,快速定位合适的参数范围,进行进一步的生成控制。

图片尺寸优化
  • 图片质量并不直接与图像尺寸挂钩。
  • 但尺寸在一定程度上影响了主题/图片内容,因为它潜在代表选择的类别(比如竖屏人物,横屏风景,小分辨率表情包等)。
  • 当出图尺寸太宽时,图中可能会出现多个主体。
  • 1024 之上的尺寸可能会出现不理想的结果,并且对服务器显存压力是巨大的。推荐使用小尺寸分辨率 + 高清修复。
优化多人物 / 宽幅单人物的生成
  • 单纯使用 txt2img 无法有效指定多人物情况下,单个人物的特征。
  • 较为推荐的方案是制作草稿 + img2img 或 ControlNet 的方式。
  • 宽幅画作+单人物生成最好打草图,进行色彩涂抹,确定画面主体;或使用 ControlNet 的 OpenPose 做好人物骨架。
  • 多人物确定人物数量,最好使用 ControlNet 的 OpenPose 来指定;该方案也适合画同一人物的三视图。
进行手部修复
  • 将图片送入 img2img inpaint,使用大致相同的提示词,将关于“手”的提示放在前面,根据希望手部特征变动多少来设置重绘幅度(如果只是希望手更完整,调至 0.25 以下),然后保留步骤和 CFG 与 txt2img 相同。
  • 找到一个满足期望的手部图片,借助 ControlNet 的 Canny 或 OpenPose_hands 等预处理器+模型,结合 inpaint 操作,能实现更精确的手部控制。
进行面部修复
  • 在绘制人物主体较小的图片时,经常会出现面部崩坏的情况。尤其是本文之后会介绍的生成艺术二维码流程,人物的面部经常会因为二维码码点的存在而崩坏。
  • 对面部的重绘,更推荐使用 !After Detailer 插件实现,通称 ADetailer。
  • 该插件会使用 yolo 算法对图片中的物体进行识别,我们设定其识别人物面部,并提供面部重绘的提示词和模型;该插件会在识别到的面部位置进行局部重绘,完成面部修复。
  • ADetailer 插件可以满足面部和手部的识别与修复。
  • 在 ADetailer 中也能引用 Lora 模型进行局部重绘生成。

借助 ControlNet 生成艺术二维码

Step1:优化二维码

二维码是一种借助特定几何图形分配,在二维空间上分布的、黑白相间的、记录数据符号信息的图形。二维码有多种不同的编码方式,我们此处采用通用度最高也是最基础的编码方式:QR Code。

输入的二维码是借助 SD 生成艺术二维码过程中最重要的部分之一。我们主要关心输入的二维码的以下两个特点:

1. 二维码中包含的信息量

无论二维码采用何种编码方式,承载的字符信息越多,二维码在视觉上呈现的黑白结构就越复杂。复杂的结构很容易导致我们在生成艺术创意时,极大地收到二维码本身信息的掣肘。因此我们首先要想办法精简二维码中包含的字符长度

对于最广泛的应用场景,二维码通常会包含一个网页链接;为了提升二维码生成的美观性,我们首先需要对网页链接进行缩短。市面上的链接缩短工具有很多,您可以自由选择。但需要注意,在中国大陆境内请选择有域名备案的缩链平台,否则会被微信、浏览器等阻挡。

例如我们有一个希望制作成二维码的网址:伊克罗德信息科技有限公司 - 南京伊克罗德信息科技有限公司,通过缩链处理后为:伊克罗德信息科技有限公司 - 南京伊克罗德信息科技有限公司。

通过下图可以比较直观地看出链接长短对于二维码视觉的影响,缩短的链接将更有利于我们接下来的创作。

2. 二维码的呈现形式

随着技术发展,二维码不仅只支持黑白方块状的图案样式,定位点和码元都支持多样化的呈现,例如以下几种样式

在实际操作中,我们可以尝试多种不同的码点形式,以使得生图效果符合我们的预期。

下图展示了不同的二维码形式对最终效果图的影响:

生成参数:

Prompt: mountain, green grassland, sky, cloud, bird, blue sky, no human, day, wide shot, flying, border, outdoors, white bird, scenery
Negative prompt: easynegative
Steps: 40, Sampler: DPM++ 2M Karras, CFG scale: 6, Seed: 3943213078, Size: 872x872, Model hash: 876b4c7ba5, Model: cetusMix_Whalefall2, Clip skip: 2, ControlNet: "preprocessor: none, model: control_v1p_sd15_qrcode_monster [a6e58995], weight: 1.35-1.5, starting/ending: (0.05, 1), resize mode: Resize and Fill, pixel perfect: True, control mode: Balanced, preprocessor params: (512, 64, 64)", Version: v1.3.

Step2:制作基础二维码

了解了上述要点后,我们将要开始使用二维码制作工具,生成一个输入给 SD 的基础二维码。互联网上有多种网页二维码生成工具,您可以自由选择。同时为了方便您使用,我们在 Blog 专用的 AMI 中已经预装了 QRCode 生成插件,只要您从正确的版本中启用 AMI,都可以直接在 Webui 上看到下述的 QRCode Toolkit:

  • Anthony’s QR Toolkit:整合在 Webui  QRCode 生成与优化工具

GitHub - antfu/sd-webui-qrcode-toolkit: Anthony's QR Toolkit for Stable Diffusion WebUI

接下来我们演示如何使用 Anthony’s QR Toolkit 来生成二维码,您可以参考下图完成二维码参数的配置。

完成二维码制作后,可以点击右侧的 “Download” 以下载到本地。或点击 “Send to ControlNet”,直接将二维码发送至 ControlNet 以进行下一步操作。

Step3:确定艺术风格

使用 Stable Diffusion 进行艺术创作的核心是选择合适的模型+提示词。我们在创作艺术二维码之前,建议先不使用 ControlNet,先进行一次普通的图片生成,以测试生图效果。

此处我希望二维码中有山川、蓝天、白云等自然景观,因此先使用以下参数,测试提示词和模型的生成效果。

生成参数:

Prompt: mountain, green grassland, sky, cloud, bird, blue sky, no human, day, wide shot, flying, border, outdoors, white bird, scenery
Negative prompt: easynegative
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4078355702, Face restoration: CodeFormer, Size: 512x512, Model hash: 876b4c7ba5, Model: cetusMix_Whalefall2, Clip skip: 2, Version: v1.3.2

Step4:在 ControlNet 中导入二维码

确认好图片风格后,我们将未经处理的二维码上传 ControlNet。请注意以下几个选项的配置:

  • “启用” 按钮:勾选以确保 ControlNet 在图片生成过程中生效;
  • 模型选框:请选择 “control_v1p_sd15_qrcode_monster” 来加强二维码的控制力度;
  • 控制权重:对于 qrcode_monster 模型,我们建议设置在 1.1-1.6 之间;
  • 引导介入/终止时机:介入时机建议在 0-0.1 之间,终止时机建议为 1

在文生图配置中建议调整两组数值:

  • 迭代步数:建议在 30-50 之间,默认值 20 不足以引导生成一个高质量的二维码图片
  • 宽度/高度:建议直接从 ControlNet 发送二维码原图的宽高比至上方

参数全部配置完成后,点击生成即可,可以看到此处我们生成了一个效果不错的图片,使用手机扫码测试也完全通过。

如果生成的二维码不能够达到期望,可以选择微调以下几个参数,并增加生成的总批次数,不断尝试抽卡以逼近最终期望的效果:

  • 提示词
  • 采样方法
  • ControlNet 控制权重
  • ControlNet 引导介入/终止时机

必要时可以选择使用 “脚本” 中的 X/Y/Z Plot,来对比不同参数下生成二维码的效果。我们此处对比了 ControlNet 的控制权重和引导介入时机:

附录

附录1:ControlNet QRCode 模型的选择

为方便您使用,我们在 Blog 专用的 AMI 中已经完成了 ControlNet QRCode 模型的植入,只要您从正确的版本中启用 AMI,都可以直接在 ControlNet 中选择模型。

截至目前,QRCode Monster 是我们测试后认为控制二维码成功率最高,也是二维码融入图像效果最好的模型,该模型可以在 HuggingFace 下载到:

https://huggingface.co/monster-labs/control_v1p_sd15_qrcode_monster

市面上也有另一个二维码模型:QR Pattern v2.0。该模型我们建议结合使用IoC Lab的 Brightness 模型作为辅助模型来提高局部对比度,也会产出不错的效果。但根据我们的测试,该模型自带的干扰内容较多,可能会导致图像风格发生很大的变化。这两个模型可以在下方链接下载:

https://civitai.com/models/90940/controlnet-qr-pattern-qr-codes

https://huggingface.co/ioclab/ioc-controlnet

附录2:如何使用 Stable Diffusion AI 绘图解决方案

imAgine 是一款由亚马逊云科技核心级服务合作伙伴伊克罗德,基于 Automatic1111 Stable Diffusion Webui,结合亚马逊云科技多种托管服务定制开发的AI绘图解决方案。imAgine 目前已经上线亚马逊云科技MarketPlace,用户能够在 Marketplace 中一键订阅,快速启动,无需进行复杂的环境配置,敏捷地在云上部署 AI 绘画环境。

同时还结合亚马逊云科技无服务器服务 Amazon API Gateway、AWS DynamoDB 等,将 WebUI 前端的训练、推理请求,无缝转发到 Amazon SageMaker 后端的专用推理、训练服务器上,实现算力的无缝扩展,并基于此架构基础实现前后端分离、精确的成本管控。

对于任何希望快速上手 AIGC 技术,并且希望得到全生命周期维护与技术支持的客户订阅并测试解决方案,限于篇幅,订阅 imAgine 解决方案的详细操作流程请参考 WorkShop 页面:Workshop Studio。

参考链接

  •  Stable Diffusion AI 方案 MarketPlace 订阅链接:AWS Marketplace: imAgine-eCloudrover AIGC text to image solution (Free Version)
  • Stable Diffusion AI 方案 Workshop:Workshop Studio
  • Stable Diffusion AI 方案解决方案官网:伊克罗德信息科技有限公司 - 南京伊克罗德信息科技有限公司
  • QR Toolkit 插件作者 Anthony Fu 的 QRCode 共创文档:Stable Diffusion QR Code 101
  • IoC Lab 模型展示:AI 生成可扫码图像 — 新 ControlNet 模型展示
  • IoC Lab Stable Diffusion 文档:aigc.ioclab.com

 亚马逊免费试用:亚马逊AWS海外区域账户免费套餐_免费云服务-AWS云服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/303732.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解锁前端新潜能:如何使用 Rust 锈化前端工具链

前言 近年来,Rust的受欢迎程度不断上升。首先,在操作系统领域,Rust 已成为 Linux 内核官方认可的开发语言之一,Windows 也宣布将使用 Rust 来重写内核,并重写部分驱动程序。此外,国内手机厂商 Vivo 也宣布…

汉泰克1025G信号发生器二次开发(python和C)

信号发生器:汉泰克1025G SDK开发资料:http://www.hantek.com.cn/products/detail/48 1.python接口 网上已经有大神制作了python的封装接口:https://github.com/AIMAtlanta/Hantek_1025G 这里为了方便查找就再张贴一遍: # -*- c…

升级 Vite 5 出现警告 The CJS build of Vite‘s Node API is deprecated.

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

DOM高级

1.1 自定义属性操作 1.1.1 获取属性值 element.属性 element.getAttribute(属性) 区别: element.属性:获取元素内置属性 element.getAttribute(属性):获取自定义的属性 1.1.2 设置属性值 element.属性 值 element.setAttribute(属性&a…

多特征变量序列预测(一)——CNN-LSTM风速预测模型

目录 往期精彩内容: 前言 1 多特征变量数据集制作与预处理 1.1 导入数据 1.2 数据集制作与预处理 2 基于Pytorch的CNN-LSTM 预测模型 2.1 定义CNN-LSTM预测模型 2.2 设置参数,训练模型 3 模型评估与可视化 3.1 结果可视化 3.2 模型评估 代码…

11.文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于文件系统的知识,但是这里我们并不浪费笔墨介绍这个概念,请大…

柯桥小语种学习,留学韩语 生活日常口语 语法

① N이다/A/V/았ㄹ/을지도 모르다 说不定 이미 도착했을 지도 모르니까 전화해 봐요 说不定已经到了,打电话试试 주말에 세일이 있을지도 모르니까 주말에 가 보자 周末说不定会搞活动,我们周末去吧 ② ㄴ/은/는/았었는/ㄹ/을지 모르다 不知道 처음이…

第四站:C/C++基础-指针

目录 为什么使用指针 函数的值传递,无法通过调用函数,来修改函数的实参 被调用函数需要提供更多的“返回值”给调用函数 减少值传递时带来的额外开销,提高代码执行效率 使用指针前: 使用指针后: 指针的定义: 指针的含义(进阶): 空指针…

4.6 BOUNDARY CHECKS

我们现在扩展了tile矩阵乘法内核,以处理具有任意宽度的矩阵。扩展必须允许内核正确处理宽度不是tile宽度倍数的矩阵。通过更改图4.14中的示例至33 M、N和P矩阵,图4.18创建了矩阵的宽度为3,不是tile宽度(2)的倍数。图4.…

怎么将营业执照图片转为excel表格?(批量合并识别技巧)

一、为何要将营业执照转为excel表格? 1、方便管理:将营业执照转为excel格式,可以方便地进行管理和整理,快速查找需要的信息。 2、数据处理:Excel可以提供丰富的计算和数据分析功能,转化为excel后方便数据…

【算法设计与分析】网络流

目录 max-flow 和 min-cut流网络 Flow network最小割 Min-cut最大流 Max-flow Greedy algorithmFord–Fulkerson algorithm剩余网络 Residual networkFord–Fulkerson algorithm算法流程 最大流最小割理论 max-flow min-cut theorem容量扩展算法 capacity-scaling algorithm时间…

Rustdesk本地配置文件存在什么地方?

环境: rustdesk1.1.9 Win10 专业版 问题描述: Rustdesk本地配置文件存在什么地方? 解决方案: RustDesk 是一款功能齐全的远程桌面应用。 支持 Windows、macOS、Linux、iOS、Android、Web 等多个平台。 支持 VP8 / VP9 / AV1 …

UDP 和 TCP 、HTTP、HTTPS、SOCKS5协议的不同之处及应用场景

UDP 和 TCP、HTTP、HTTPS、SOCKS5 协议的不同之处及应用场景: UDP (User Datagram Protocol): 不同之处:UDP 是无连接的,不保证数据包的顺序到达或完整性,也没有流量控制和拥塞控制机制。它尽可能快地将数据包从源主机…

STL标准库与泛型编程(侯捷)笔记4

STL标准库与泛型编程(侯捷) 本文是学习笔记,仅供个人学习使用。如有侵权,请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

面向应用的离线计算系统:周期任务组合策略

1 场景 业务应用系统想大批量利用数据中心的计算能力跑数,回传结果。比如一个个地区的详情数据。而大数据平台通常是调度平台系统,和业务系统是两个独立的平台系统,如何建立交互方式。 业务有个性化的实验策略,需要组合业务条件达到实验效果。比如捞取不同的数据实验算法…

4.8 SUMMARY 4.9 EXERCISES

总之,在现代处理器中,程序的执行速度可能会受到内存速度的严重限制。为了很好地利用CUDA设备的执行吞吐量,应该在内核代码中获得高计算与全局内存访问率。如果获得的比率很低,则内核受内存约束;即其执行速度受从内存访…

鸿蒙Ability开发-Stage模型下Ability的创建和使用

创建Ability和Page页面 创建两个Ability:EntryAbility,DetailsAbility,其中EntryAbility是由工程默认创建的,这里我们只讲如何创建DetailsAbility。 使用DevEco Studio,选中对应的模块,单击鼠标右键&…

IDEA+Git——项目分支管理

IDEAGit——项目分支管理 1. 前言2. 基础知识点2.1. 分支区分2.2. Git 代码提交规范2.3. 四个工作区域2.4. 文件的四种状态2.5. 常用命令2.6 注重点 3. IDEA分支管理 1. 前言 在Git中,分支是项目的不同版本,当开始开发一个新项目时,主分支通常…

关于外连接、内连接和子查询的使用(2)

目录 一. 前言 二. 使用外连接、内连接和子查询进行解答 三. 思维导图 一. 前言 在前面我们对外连接、内连接和子查询的使用有了一些了解,今天我们将继续更深入的进行学习。(这里缺少的八个题目在博主的前面博客有解答,大家可以移步前面一…

Tsmaster使用笔记整理

选择厂商 根据你所选择的CAN分析仪的厂商,确定你的厂商设备设置。 我一般会选择PEAK,和 ZLG多一点,其他的没有用过。除了上图中的,市面上的CAN分析仪还有CANanlyst、广成科技、创芯科技等,但它们都不能在Tsmaster上使…