加载中...

「SD 零基础入门 11」ControlNet 进阶:打造炫酷的艺术字和二维码


0x00 导航

鉴于 AI 绘画的知识点较多,限于篇幅及便于分类组织,我会以一个系列文章的形式记录:

你当前正在阅读的是系列 11:《ControlNet 进阶:打造炫酷的艺术字和二维码

0x10 前言

仔细看这两张图,能看出这张图里有什么吗?

看不到?走远一点,再看一次?

没错,就是让你 “一键三连” 哦 ! 三连之后我就告诉你这张神奇的图片是怎么生成的:

在这一节中,我们将深入探讨 ControlNet 的高阶应用,学会如何打造属于自己的个性化艺术字、创造个人品牌 Logo、制作令人眼前一亮的光影设计、以及生成各种炫酷的二维码。

0x20 个性化艺术字

0x21 形体控制基础

首先我们要掌握一些基本的形体控制技巧,这里先体会一个简单的例子。

第一步,需要利用 PS 制造一张白底黑字的文字图,字体建议选择笔触较粗的,AI 可以有更多发挥空间,效果会更好:

第二步,打开 SD WebUI :

  1. 切换到文生图
  2. 展开 ControlNet 功能面板
  3. 导入前面 PS 生成的 玫瑰 文字图
  4. 勾选 “启用”
  5. 勾选 “低显存优化” (当 GPU 显存不大时,可选)
  6. 勾选 “完美像素”
  7. Control Type 控制类型选择 “Depth”
  8. 预处理器选择 “depth_midas”
  9. 模型选择 “control_v11f1p_sd15_depth.pth” (没有安装的话请参考上一节
  10. 点击 “预览” 可以查看 “Depth” 模型的 ControlNet 效果(注意,通过预览其实可以看到一个大致的蒙版轮廓,绘画的位置主要在浅色的地方,深色的地方绘制的内容相对会少一些)

第三步,选择大模型,在系列的《AI 绘画模型推荐》可以找到各种模型的绘制效果。

这里我选择了一个真实风格质感的模型 majicMIX realistic,做出来的效果更偏写实化:

第四步,书写提示词。

在正向提示词中,输入希望画面生成的内容,这里我直接使用 ChatGPT 帮我生成内容提示词,从中选择几个就可以了:

但是在系列的《文生图》中我们也说过,除了内容提示词之外,我们还需要加一些画质、视角等固定的提示词、引导 AI 生成质量更好的内容:

分类 提示词
内容 (Rose:1.2), (petals:1.1), Rose arbor,
画质 high quality, highres, masterpiece,
视角 from above, (从上方看、顶视角,可以看到艺术字全貌)
背景 simple background, (简单背景,让背景更干净,突出文字)

反向提示词则用固定的就好了:

NSFW, (tranny:1.331),
(worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, lowers, blurry, 
((monochrome)), ((grayscale)),
skin spots, acnes, skin blemishes, age spot, (ugly:1.331), 
(duplicate:1.331), (morbid:l.2l), (mutilated:l.2l), mutated hands, (poorly drawn hands:1.5), (bad anatomy:l.2l), (bad proportions:1.331), extra limbs, (disfigured:1.331), (missing arms:1.331), (extra legs:1.331), (fused fingers:1.61051), (too many fingers:1.61051), extra digits, (((extra arms and legs))), (unclear eyes:1.331), bad hands, missing fingers,
bad prompt,

第五步,设置文生图的其他参数,这里主要注意的就两个地方:

  1. 采样器选择大模型对应的,majicMIX realistic 的作者建议选择 Euler
  2. 生成图片的宽高要和前面白底黑字的文字图比例保持一致

最后点击生成按钮,就可以得到一幅最基本的艺术字图画:

0x22 参数优化

如果希望绘制的内容不要集中在文字上、而是绘制在文字周围,可以把 ControlNet 的预处理器设置为 none

此时再点击预览,会发现预览图的颜色被取反了。前面也说过,绘画的位置主要在浅色的地方,此时重新生成图像,就可以得到一种镂空文字的效果:

但是有时候字体的笔触比较细,导致 ControlNet 生成字体蒙版的时候、浅色区域太少,最后生成的文字效果和 PPT 的艺术字一样、非常的硬:

这是 ControlNet 的控制强度太强导致的,要弱化控制,ControlNet 功能面板有三个相关参数:

  1. 控制权重 Control Weight:直接决定 ControlNet 对最终产出物整体的强度,默认是 1,可以稍微下调到 0.6 左右
  2. 开始介入控制步数 Starting Control Step: 决定 ControlNet 在什么时候才对画面内容产生影响,默认是 0,可以稍微上调到 0.2 左右。关联配置是 “采样迭代步数”。
  3. 结束介入控制步数 Ending Control Step: 决定 ControlNet 在什么时候结束对画面内容的影响,默认是 1,可以稍微下调到 0.8 左右。关联配置是 “采样迭代步数”。

在系列早期也提过, AI 绘画是通过扩散来画的,扩散每迭代一步、图像的内容就会越丰富,而在越前面的步数扩散得到的内容,对最终产出的影响是最大的。

由于默认开始介入的步数是 0,换言之字体的轮廓再一开始就形成了,当笔触又很细的时候, AI 难以在其中扩散更多内容,直接导致字体和整体画面割裂,给人的感觉就是格格不入、很硬。

为了给 AI 更多发挥空间,我们可以延迟 ControlNet 的介入时间,让其先扩散出字体外的其他内容,这也是为什么把介入的起止分别调为 0.2 和 0.8 的原因,目的是起到一个 “淡入淡出” 的效果。

更改参数后重新生成,构图是不是自然很多呢:

0x23 推荐组合

不同的 ControlNet 的类型,可以改变 AI 读取这个文字信息的方式,以达到不同的效果。

这里推荐几个个人觉得比较好的组合:

组合 1 - 深海奇遇

  • 控制类型: Depth
  • 预处理器: depth_midas
  • 模型: control_v11f1p_sd15_depth.pth
  • 效果描述: Depth 是依靠空间深度识别和组织画面内容的,它可以让画面内容组装成文字
  • 效果图:

效果图内容提示词: Ocean, Coral reef, conch, fish,

组合 2 - 海底星空

  • 控制类型: Depth
  • 预处理器: none
  • 模型: control_v11f1p_sd15_depth.pth
  • 效果描述: 预处理器选择 none 后,会在背景中形成凹陷镂空的文字效果
  • 效果图:

效果图内容提示词: Ocean, Undersea starry sky, Coral reef, conch, fish,

组合 3 - 甜品诱惑

  • 控制类型: Canny
  • 预处理器: canny
  • 模型: control_v11p_sd15_canny.pth
  • 效果描述: Canny 会勾勒文字形体的边沿特征、保留内部细节,使得文字会作为图片的一部分融入到画面中
  • 效果图:

效果图内容提示词: Candy, candy house, cake, lollipop, chocolate, cream,

组合 4 - 铅细线艺

效果图内容提示词: Pencil, yarn, arrows, target,

组合 5 - 告白糖果

  • 控制类型: All
  • 预处理器: invert
  • 模型: control_v11p_sd15_scribble.pth
  • 效果描述: scribble 是更自由奔放的涂鸦,invert 和 none 相反(反转前景背景),文字纤细时用这个组合有奇效
  • 效果图:

效果图内容提示词: heart, balloon, rose, window, sunshine, Candy, cake, lollipop, chocolate, cream,

既然文字可以画,Logo 肯定也是可以画的。

以我博客的 Logo 为例,先用 PS 处理成白底黑字:

然后和文字图一样导入 SD,提示词可以追加海报设计的引导 Poster design,搭配不同的 CrontrolNet 、AI 就能围绕这个 Logo 的形状能打造出各种创意无限的宣传图了:

内容提示词: future, science fiction, machinery, artificial intelligence, 4K intricate vevtor illustration, Poster design, high quality, highres, masterpiece,

不难注意到图片右下角有个二维码,该二维码是单独生成再合成在一起的,二维码的具体生成方式在下文会提及。

0x40 光影融合

掌握上述所有艺术字的生成技巧之后,如何制作一幅文中开头糅合了光影效果的画面,对你而言就是信手捏来的事情了。

要制作光影效果,需要用到两个新模型:

这两个模型是由国内团队 IoC Lab 制作的,去 hunggingface 下载后,放到 %{NovelAI}/models/ControlNet/ 目录下即可使用。

这两个模型从名字上很容易让人混淆,但是实现的效果却是有所不同。

0x41 brightness 亮度模型

这个模型可以控制图像整体亮度,即决定图像哪些地方亮、哪些地方暗,它可以被直观应在在类似的图片文字融合中,因为只要这张图的某些地方比周围更亮一些,就能实现文字信息的传递。

同样地,我们先把白底黑字的文字图导入到 ControlNet 中:

前面也提到过,invert 预处理器会 “交换黑白”,所以黑色文字在最终画面上的亮度是最高的,换言之也就是会用 “光” 来描绘文字;而如果期望最终画面用 “阴影” 来描绘文字,预处理器可以选择 none 。

来看一下具体的配置和实际生成的效果:

  • 控制类型: All
  • 预处理器: invert
  • 模型: control_v1p_sd15_brightness.safetensors
  • ControlNet(为了使光线更柔和的融入画面,控制强度不易太高,否则画面的明暗差异会很明显):
    • 权重: 建议 0.2 ~ 0.5
    • 开始介入: 建议 0.1
    • 结束介入: 建议 0.8
  • 内容提示词: 1girl, sitting, reading, library, window, sunshine,

这张图妙就妙在,放大看,不容易看出端倪;但是缩小看,一眼就能辨认出 “一键三连” 四个字。

而且不难发现,“一键三” 分别融入到了窗框、大楼和书本中,而 “连” 则是光影延申到人物身上组成的:

可以对比一下当预处理器选择 none 时的阴影文字效果:

0x42 illumination 明度模型

其实从效果图不难发现,brightness 因为光影效果太强了,会导致空间扭曲以致主体内容可能略微变形。

而 illumination 的光影效果相对而言比较温和,可以一定程度上避免这种情况发生。

现在保持所有参数不变,把模型切换到 control_v1p_sd15_illumination.safetensors

这次替换文字图为 “一键三连” 的 logo ,图形边缘做高斯模糊处理,可以让光线更自然:

同时我希望设计一个构图,使得 “投币” 的图案出现在人物的衣服上,故而我多开了一个 Openpose 的 ControlNet 控制人物位置和姿势:

再次生成图像:

对比 brightness 生成的画面,明显这次嵌进去的 logo 更为柔和,而且留意 “投币” 的图案,出现在人物衣服上、和衣服的皱褶完美融为一体,没有造成空间扭曲的现象。

如果 illumination 生成的光影不明显,可以适当拉高 ControlNet 的权重

0x50 炫酷二维码

最早用 AI 生成二维码的应该是这个作者《AI 生成可扫码图像》,而技术逐渐成熟,现在网上各个平台以及出现许多 AI 生成的炫酷二维码了,而且这些二维码还真的能扫出东西:

其实如果只是想围绕二维码的形状生成风格化的样式,按照前面的操作方式去生成图像就可以了,而且由于摄像头是依赖明暗度去识别二维码信息的,所以推荐使用 brightness 模型。

但是 brightness 生成的二维码太硬了,没有那种二维码融入图像的感觉,因此这里更推荐使用 QRCode Monster 模型生成二维码:

安装方法也很简单,只需要下载这两个文件到 %{NovelAI}/models/ControlNet/ 目录下即可:

随后我们需要生成一张存储了信息的二维码图片,可以到 草料二维码 平台生成:

亦可在 SD 安装插件 sd-webui-qrcode-toolkit 生成二维码:

接下来的操作就和前面大同小异了:

  • 到文生图的 ControlNet 中导入该二维码(要求白底黑字)
  • 控制类型: All
  • 预处理器: invert
  • 模型:control_v1p_sd15_qrcode_monster.safetensors
  • ControlNet(二维码就是强化控制程度,否则很难被扫出来):
    • 权重: 建议 1.5 ~ 1.8
    • 开始介入: 建议 0.1 ~ 0.2,至少 0.1,避免生成效果过于死板
    • 结束介入: 建议 0.9 ~ 1
  • 输出分辨率: 768x768 以上,二维码内部比较复杂,如果分辨率太低,可能会丢失信息
  • 内容提示词: Mountains, rivers, starry sky, night sky, Milky Way, high quality, highres, masterpiece,
  • 效果图:

最后就以大家扫描这个银河二维码来结束本节的教程吧(扫不出来可以拿远点手机、或者缩小图片)。

0xF0 参考文档


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
 上一篇
「SD 零基础入门 12」AI 动画初探:整个宇宙为你而闪烁 「SD 零基础入门 12」AI 动画初探:整个宇宙为你而闪烁
AIGC 的流行趋势已经逐渐从图像转化到视频,现在通过设置合适的模型、并搭配一些流行的扩展插件,就可以很轻松把任意一个视频重绘成自己想要的风格 ...
2023-09-10
下一篇 
「SD 零基础入门 10」ControlNet:姿态控制 「SD 零基础入门 10」ControlNet:姿态控制
固定构图、定义姿势、描绘轮廓,单凭线稿就能生成一张丰满精致的插画,甚至有人用它画出了二维码。它使得 AI 绘画界有了革命性的突破、从此迈向产业化 ...
2023-06-18
  目录