当前位置: 首页 > news >正文

稳定扩散ControlNet v1.1 权威指南

ControlNet 是一种稳定扩散模型,可让你从参考图像中复制构图或人体姿势。

经验丰富的稳定扩散用户知道生成想要的确切成分有多难。图像有点随机。你所能做的就是玩数字游戏:生成大量图像并选择你喜欢的图片。

借助 ControlNet,稳定扩散用户终于有了一种精确控制拍摄对象位置和外观的方法!

在这篇文章中,我们将介绍有关ControlNet的所有信息。

在这里插入图片描述

推荐:用 NSDT编辑器 快速搭建可编程3D场景

1、什么是ControlNet?

ControlNet是用于控制稳定扩散模型的神经网络模型。你可以将 ControlNet 与任何稳定扩散模型一起使用。

使用稳定扩散模型的最基本形式是文本到图像。它使用文本提示作为条件来引导图像生成,以便生成与文本提示匹配的图像。

ControlNet 除了文本提示之外,还增加了一个条件。额外的调节可以在ControlNet中采取多种形式。

让我向你展示ControlNet可以执行的操作的两个示例:使用(1)边缘检测和(2)人体姿势检测来控制图像生成。

1.1 ControlNet边缘检测示例

如下图所示,ControlNet 获取额外的输入图像并使用 Canny 边缘检测器检测其轮廓。然后,包含检测到的边缘的图像将另存为控制图。它作为文本提示的额外条件馈送到 ControlNet 模型中。

在这里插入图片描述

具有边缘检测的稳定扩散控制网络

从输入图像中提取特定信息(在本例中为边缘)的过程称为注解(在这篇研究文章中)或预处理(在ControlNet扩展中)。

1.2 ControlNet人体姿势检测示例

边缘检测不是预处理图像的唯一方法。Openpose 是一种快速的人类关键点检测模型,可以提取人类姿势,如手、腿和头部的位置。请参阅下面的示例。

在这里插入图片描述

使用Openpose进行人体姿势检测的带注解的输入图像

下面是使用 OpenPose 的 ControlNet 工作流程。使用OpenPose从输入图像中提取关键点,并将其保存为包含关键点位置的控制图。然后,它与文本提示一起作为额外的条件被馈送到稳定扩散。图像是基于这两个条件生成的。
在这里插入图片描述

使用Canny边缘检测和Openpose有什么区别?Canny边缘检测器可以提取主体和背景的边缘。它倾向于更忠实地翻译场景。你可以看到跳舞的男人变成了女人,但轮廓和发型被保留了下来。

OpenPose仅检测人类的关键点,例如头部,手臂等的位置。图像生成更加自由,但遵循原始姿势。

上面的示例生成了一个女人跳起来,左脚指向侧面,与原始图像和 Canny Edge 示例中的图像不同。原因是OpenPose的关键点检测没有指定脚的方向。

2、安装稳定扩散ControlNet

让我们来看看如何在 AUTOMATIC1111 中安装 ControlNet,这是一款流行且功能齐全(且免费!稳定的扩散图形用户界面。我们将使用此扩展(事实上的标准)来使用 ControlNet。

如果你已经安装了 ControlNet,则可以跳到下一部分以了解如何使用它。

2.1 在Colab中安装ControlNet

在我们的快速入门指南中,将 ControlNet 与一键式稳定扩散 Colab 笔记本一起使用很容易。

在 Colab 笔记本的“扩展”部分中,选中“ControlNet”。
在这里插入图片描述

按Play按钮启动AUTOMATIC1111。就是这样!

2.2 安装 ControlNet 扩展 (Windows/Mac)

你也可以在 Windows PC 或 Mac 上将 ControlNet 与 AUTOMATIC1111 配合使用。按照这些文章中的说明安装 AUTOMATIC1111(如果尚未这样做)。

如果已经安装了 AUTOMATIC1111,请确保你的副本是最新的。

  • 导航到“扩展”页面。
  • 选择“从 URL 安装”选项卡。
  • 将以下 URL 放在扩展的存储库字段的 URL 中:
https://github.com/Mikubill/sd-webui-controlnet
  • 单击安装按钮。
  • 等待确认消息,说明扩展已安装。
  • 重新启动AUTOMATIC1111。
  • 访问ControlNet模型页面。
  • 下载所有模型文件(文件名以 .pth 结尾)。如果不想全部下载,可以立即下载最常用的openpose和canny模型。
  • 将模型文件放入 ControlNet 扩展的模型目录中:
stable-diffusion-webui\extensionssd-webui-controlnet\models
  • 重新启动AUTOMATIC1111 webui。

如果扩展成功安装,你将在 txt2img 选项卡中看到一个名为 ControlNet 的新可折叠部分。它应该在脚本下拉菜单的正上方。

在这里插入图片描述

这表示扩展安装成功。

3、安装 T2I 适配器

T2I 适配器是神经网络模型,用于为扩散模型的图像生成提供额外的控制。它们在概念上类似于ControlNet,但设计不同。
在这里插入图片描述

A1111 控制网扩展可以使用 T2I 适配器。你需要在此处下载模型。获取文件名读起来像 t2iadapter_XXXXX.pth 的那些

许多 T2I 适配器的功能与 ControlNet 型号重叠。我只介绍以下两个。

  • t2iadapter_color_sd14v1.pth
  • t2iadapter_style_sd14v1.pth

将它们放在 ControlNet 的模型文件夹中。

stable-diffusion-webui\extensions\sd-webui-controlnet\models

4、更新 ControlNet 扩展

ControlNet是一个经历了快速发展的扩展。发现你的 ControlNet 副本已过时的情况并不少见。

仅当你在 Windows 或 Mac 上本地运行 AUTOMATIC1111 时,才需要更新。网站的Colab笔记本始终运行最新的ControlNet扩展。

要确定你的 ControlNet 版本是否为最新版本,请将 txt2img 页面上“ControlNet”部分中的版本号与最新版本号进行比较。

4.1 选项 1:从 Web UI 更新

更新 ControlNet 扩展的最简单方法是使用 AUTOMATIC1111 GUI。

  • 转到“扩展”页面。
  • 在“已安装”选项卡中,单击“检查更新”。
  • 等待确认消息。
  • 完全关闭并重新启动AUTOMATIC1111 Web UI。

在这里插入图片描述

4.2 选项 2:命令行

如果你熟悉命令行,则可以使用此选项更新 ControlNet,这样你就可以放心,Web-UI 不会执行其他操作。

步骤1:打开终端应用程序(Mac)或PowerShell应用程序(Windows)。

第 2 步:导航到 ControlNet 扩展的文件夹。(如果安装在其他地方,请相应地调整)

cd stable-diffusion-webui/extensions/sd-webui-controlnet

步骤 3:通过运行以下命令更新扩展。

git pull

5、使用 ControlNet的简单例子

现在你已经安装了 ControlNet,让我们通过一个简单的使用它的示例!稍后你将看到每个设置的详细说明。

你应该安装ControlNet扩展以跟上本节的内容。可以通过查看下面的控制网络部分进行验证。
在这里插入图片描述

按右侧的插入符号展开“ControlNet”面板。它显示了控制旋钮的完整部分和图像上传画布。
在这里插入图片描述

我将使用下图展示如何使用 ControlNet。你可以点击这里下载按钮下载图像以按照教程进行操作。
在这里插入图片描述

5.1 文本到图像设置

ControlNet需要与稳定扩散模型一起使用。在稳定扩散检查点下拉菜单中,选择要与 ControlNet 一起使用的模型。选择 v1-5-pruned-emaonly.ckpt 以使用 v1.5 基本模型。
在这里插入图片描述

在 txt2image 选项卡中,编写提示和(可选)供 ControlNet 使用的否定提示。我将使用以下提示。

提示:

full-body, a young female, highlights in hair, dancing outside a restaurant, brown eyes, wearing jeans

负面提示:

disfigured, ugly, bad, immature

设置图像生成的图像大小。我将使用宽度 512 和高度 776 作为我的演示图像。请注意,图像大小是在 txt2img 部分中设置的,而不是在 ControlNet 部分中设置的。

GUI 应如下所示。
在这里插入图片描述

5.2 ControlNet设置

现在让我们转到“ControlNet”面板。

首先,将图像上传到图像画布。

选中启用复选框。

你需要选择预处理器和模型。预处理器只是前面提到的注释器的不同名称,例如 OpenPose 关键点检测器。让我们选择 openpose 作为预处理器。

选定的 ControlNet 模型必须与预处理器一致。对于OpenPose,应该选择control_openpose-fp16作为模型。

“ControlNet”面板应如下所示。

在这里插入图片描述

就这样。现在按生成开始使用控制网络生成图像。

你应该会看到生成的图像以遵循输入图像的姿势。最后一个图像直接来自预处理步骤。在这种情况下,它是检测到的关键点。
在这里插入图片描述

完成后,取消选中启用复选框以禁用 ControlNet 扩展。

这是使用ControlNet的基础知识!

剩下的就是要理解:

  • 有哪些预处理器可用(有很多!)
  • 控制网设置

6、预处理器和模型

使用 ControlNet 的第一步是选择预处理器。打开预览很有帮助,以便你知道预处理器正在做什么。预处理完成后,原始图像将被丢弃,只有预处理后的图像将用于 ControlNet。

要打开预览:

  • 选择允许预览。
  • (可选)选择像素完美。ControlNet 将使用你在文本到图像中指定的图像高度和宽度来生成预处理的图像。
  • 单击预处理器下拉菜单旁边的爆炸图标。

在这里插入图片描述

某些控制模型可能会对图像产生太大影响。如果看到颜色问题或其他伪影,请减小控制权重。

6.1 选择正确的模型

选择预处理器后,必须选择正确的模型。

很容易判断哪个模型是在 v1.1 中使用的正确模型。你需要做的就是选择与预处理器具有相同起始关键字的模型。

例如:

预处理器模型
depth_xxxxcontrol_xxxx_depth
lineart_xxxxcontrol_xxxx_lineart
openpose_xxxxcontrol_xxxx_openpose

6.2 OpenPose预处理器

有多个 OpenPose 预处理器。

OpenPose检测人类的关键点,例如头部,肩膀,手的位置等。它可用于复制人类姿势而无需复制服装、发型和背景等其他细节。

所有 openpose 预处理器都需要与 ControlNet 的 Model 下拉菜单中的 openpose 模型一起使用。

OpenPose 预处理器包括:

  • OpenPose:眼睛、鼻子、眼睛、颈部、肩膀、肘部、手腕、膝盖和脚踝。
  • OpenPose_face:OpenPose+面部细节
  • OpenPose_hand:OpenPose+手和手指
  • OpenPose_faceonly:仅面部细节
  • OpenPose_full:以上所有内容
  • dw_openPose_full:OpenPose_full的增强版本

OpenPose是基本的OpenPose预处理器,可检测眼睛,鼻子,眼睛,颈部,肩部,肘部,手腕,膝盖和脚踝的位置。
在这里插入图片描述

OpenPose_face执行OpenPose处理器所做的一切,但会检测到其他面部细节。

它对于复制面部表情很有用。

在这里插入图片描述

OpenPose 人脸仅检测人脸,而不检测其他关键点。这对于仅复制人脸而不适用于其他关键点。
在这里插入图片描述

OpenPose_hand检测关键点为 OpenPose 以及手和手指。

在这里插入图片描述

OpenPose full检测所有openPose面部和openPose手所做的一切。

在这里插入图片描述

DWPose是一种基于研究文章两阶段蒸馏的有效全身姿势估计的新姿势检测算法。它完成了与OpenPose Full相同的任务,但做得更好。应该使用dw_openpose_full而不是openpose_full。
在这里插入图片描述

如果在预处理器菜单中看不到dw_openpose_full,请更新 ControlNet。
在这里插入图片描述

DW OpenPose在检测手和手指方面做得更好。

6.3 切片重采样

切片重采样(tile resample)模型用于向图像添加细节。它通常与升频器一起使用以同时放大图像。

请参阅ControlNet Tile Scaling方法。

6.4 引用预处理器

引用(reference)是一组新的预处理器,可用于生成与引用图像类似的图像。图像仍将受到稳定扩散模型和提示的影响。

引用预处理器不使用控制模型。你只需要选择预处理器,而不需要选择模型。实际上,选择参考预处理器后,模型下拉菜单将被隐藏。

有 3 个引用预处理器。

  • reference adain:通过自适应实例规范化进行样式迁移。论文
  • reference only:将引用图像直接链接到注意层。
  • reference adain+attn:上述组合。

选择其中一个要使用的预处理器。

下面是一个示例。
在这里插入图片描述

引用图像

使用 CLIP 询问器猜测提示。

a woman with pink hair and a robot suit on, with a sci – fi, Artgerm, cyberpunk style, cyberpunk art, retrofuturism

负向提示:

disfigured, ugly, bad, immature

模型:Protogen v2.2

Reference adain:
在这里插入图片描述

Reference only:
在这里插入图片描述

Reference adain + attn:

在这里插入图片描述

我会说,Reference only的效果最好。

以上图片均来自平衡模式。我认为改变样式保真度没有太大区别。

6.5 Canny边缘检测器

Canny的边缘检测器是一种通用的老式边缘检测器。它提取图像的轮廓。它对于保留原始图像的构图很有用。

在预处理器和模型下拉菜单中选择canny。
在这里插入图片描述

生成的图像将遵循轮廓。
在这里插入图片描述

6.6 深度预处理器

深度预处理器从参考图像中猜测深度信息。

  • Depth Midas:经典的深度估算器。也用于官方 v2 图像深度模型。
  • Depth:更多细节,但也倾向于渲染背景。
  • Depth Leres++:更多细节。
  • Zoe:细节水平介于迈达斯和莱雷斯之间。

参考图片:
在这里插入图片描述

深度图:
在这里插入图片描述

提示:

a woman retrofuturism
否定提示:

disfigured, ugly, bad, immature

可以看到生成的图像遵循深度图(Zoe)。

在这里插入图片描述

与更详细的 Leres++ 进行比较:

在这里插入图片描述

6.7 线条艺术

艺术线条(Line Art)渲染图像的轮廓。它尝试将其转换为简单的绘图。

有一些线条艺术预处理器。

  • 线条艺术动漫:动漫风格的线条
  • 线条艺术动漫降噪:细节较少的动漫风格线条。
  • 线条艺术逼真:写实风格的线条。
  • 线条艺术粗糙:具有较重重量的逼真风格的线条。

与艺术线条控制模型一起使用。

下面的图像是在控制权重设置为 0.7 的情况下生成的。

线条艺术动漫
在这里插入图片描述

线条艺术动漫降噪
在这里插入图片描述

线条艺术逼真:

在这里插入图片描述

线条艺术粗糙:

在这里插入图片描述

6.8 MLSD

M-LSD(移动线段检测)是一种直线检测器。它可用于提取具有直边的轮廓,如室内设计、建筑物、街景、相框和纸边。

曲线将被忽略。
在这里插入图片描述

6.9 法线贴图

法线贴图指定曲面的方向。对于 ControlNet,它是一个图像,用于指定每个像素所在的表面的方向。图像像素表示表面朝向的方向,而不是颜色值。

法线贴图的使用与深度贴图类似。它们用于传输参考图像的 3D 构图。

法线贴图预处理器:

  • Normal Midas:根据迈达斯深度图估计法线贴图。
  • Normal Bae:使用裴等人提出的正态不确定性方法估计法态图。

与迈达斯深度贴图一样,迈达斯法线贴图也非常适合将主体与背景隔离开来。
在这里插入图片描述

Bae 法线贴图倾向于在背景和前景中渲染细节。
在这里插入图片描述

6.10 涂鸦

涂鸦(Scribble)预处理器将图片变成涂鸦,就像手绘一样。

  • Scribble HED:整体嵌套边缘检测 (HED) 是一种边缘检测器,擅长像真人一样生成轮廓。根据ControlNet的作者的说法,HED适用于重新着色和重新设计图像。
  • Scribble Pidinet:像素差分网络(Pidinet)检测曲线和直边。它的结果类似于HED,但通常会导致线条更清晰,细节更少。
  • Scribble xdog:高斯差异(XDoG)是一种边缘检测方法技术。调整 xDoG 阈值并观察预处理器输出非常重要。

所有这些预处理器都应与scribble控制模型一起使用。

Scribble HED产生粗略的涂鸦线。

在这里插入图片描述

Scribble Pidinet倾向于产生几乎没有细节的粗线条。它适用于复制没有精细细节的电路板轮廓。
在这里插入图片描述

通过调整 Scribble XDoG 阈值可以控制细节级别,使 xDoG 成为创建涂鸦的多功能预处理器。
在这里插入图片描述

6.11 分割预处理器

分割(segment)预处理器标记参考图像中的对象类型。

下面是一个正在运行的分割处理器。
在这里插入图片描述

建筑物、天空、树木、人物和人行道都标有不同的预定义颜色。

可以在这里的 ufade20k 和 ofade20k 的颜色图中找到对象类别和颜色。

有几个细分选项

  • ufade20k:在ADE20K数据集上训练的UniFormer (uf)分割。
  • ofade20k:在ADE20k数据集上训练的OneFormer (of)分割。
  • ofcoco:在COCO数据集上训练的前者分割。

请注意,ADE20k和COCO分割的色彩图是不同的。

可以使用分割预处理器来传输对象的位置和形状。

下面使用这些预处理器具有相同的提示和种子。

Futuristic city, tree, buildings, cyberpunk

UniFormer ADE20k (ufade20k)在此示例中 准确标记所有内容。
在这里插入图片描述

OneFormer ADE20k (ofade20k)在这种情况下噪点更大一些,但不会影响最终图像。

在这里插入图片描述

OneFormer COCO (ofcoco)的表现类似,但有一些标签错误。

在这里插入图片描述

分割是一种强大的技术。你可以进一步操作分割贴图以将对象放置在精确位置。使用 ADE20k 的色彩图。

6.12 随机播放

随机播放(Shuffle)预处理器搅动输入图像。让我们看看实际效果。

与随机播放控制模型一起,随机播放预处理器可用于传输参考图像的配色方案。

输入图像:
在这里插入图片描述

随机播放预处理器:
在这里插入图片描述

与其他预处理器不同,随机预处理器是随机的。它将受到你的种子值的影响。

将随机预处理器与随机播放控制模型一起使用。随机控制模型可以与随机预处理器一起使用,也可以不使用随机播放预处理器。

下图是 ControlNet Shuffle 预处理器和 Shuffle 模型(与上一节的提示相同)。配色方案大致遵循参考图像。

在这里插入图片描述

下图仅包含 ControlNet Shuffle 模型(预处理器:无)。图像构图更接近原始图像。配色方案类似于洗牌。

在这里插入图片描述

下图具有相同的提示,没有 ControlNet。配色方案截然不同。

在这里插入图片描述

6.13 颜色栅格T2I 适配器

颜色栅格 T2i 适配器预处理器将参考图像缩小到 64 倍,然后将其扩展回原始大小。净效果是局部平均颜色的网格状斑块。

原始参考图像:
在这里插入图片描述

使用t2ia_color_grid进行预处理:
在这里插入图片描述

然后,可以将预处理的图像与 T2I 颜色适配器 (t2iadapter_color) 控制模型一起使用。

图像生成将在空间上松散地遵循配色方案。

A modern living room

在这里插入图片描述

增加 ControlNet 权重以使其更紧密地跟踪。

还可以对此 T2I 颜色模型使用预处理器 None 。

在我看来,它与图像到图像非常相似。

6.14 Clip vision style T2I 适配器

t2ia_style_clipvision将参考图像转换为 CLIP 视觉嵌入。此嵌入包含有关图像内容和样式的丰富信息。

你将需要使用控制模型t2iadapter_style_XXXX。

看看这个惊人的风格转换的效果:

参考图片:
在这里插入图片描述

T2I adapter – CLIP vision:

sci-fi girl
在这里插入图片描述

以下是关闭控制网时此提示将生成的内容。
在这里插入图片描述

该功能与参考控制网非常相似,但我认为T2IA CLIP Vision更强大。

6.15 ControlNet InPainting

ControlNet InPainting允许在Inpainting中使用高降噪强度来生成较大的变化,而不会牺牲与整个图像的一致性。

例如,我对现实的人使用了提示。

模型: HenmixReal v4

photo of young woman, highlight hair, sitting outside restaurant, wearing dress, rim lighting, studio lighting, looking at the camera, dslr, ultra quality, sharp focus, tack sharp, dof, film grain, Fujifilm XT3, crystal clear, 8K UHD, highly detailed glossy eyes, high detailed skin, skin pores

否定提示:

disfigured, ugly, bad, immature, cartoon, anime, 3d, painting, b&w

我有这个图像,想用InPainting来重新生成面部。
在这里插入图片描述

如果我用高去噪强度(> 0.4)在脸上涂漆,结果可能会在全局范围内不一致。以下是具有去噪强度1的未上色图像:
在这里插入图片描述

ControlNet Inpainting是解决方案。

要使用 ControlNet 修复,请执行以下操作:

1、最好使用生成图像的同一模型。在 txt2img 页面上生成图像后,单击“发送到 Inpaint”,将图像发送到 Img2img 页面上的 Inpaint 选项卡。

2、使用画笔工具在要再生的区域上创建蒙版。如果不熟悉,请参阅有关Inpainting的初学者教程。

在这里插入图片描述

3、将“上色区域”设置为“仅蒙版”。(整个图片也有效)

4、将降噪强度设置为 1。如果没有 ControlNet,你通常不会将其设置得这么高。

5、在“ControlNet”部分中设置以下参数。无需上传参考图片。

  • 启用:是
  • 预处理器:Inpaint_global_harmonious
  • 模型: ControlNet

在这里插入图片描述

6、按生成开始修复。

现在,即使在最大降噪强度(1)下,我也能获得与全局形象一致的新面孔!
在这里插入图片描述

目前,有3个inpainting预处理器

  • Inpaint_global_harmonious:提高全局一致性,并允许你使用高降噪强度。
  • Inpaint_only:不会更改未遮罩的区域。它与 AUTOMATIC1111 中
  • Inpaint_global_harmonious相同。
  • Inpaint_only+lama:用lama模型处理图像。它往往会产生更干净的结果,并且有利于对象删除。
    在这里插入图片描述

7、ControlNet设置完整说明

你在 ControlNet 扩展中看到了很多设置!当第一次使用它时,它可能有点吓人,但让我们一一介绍它们。

这将是一次深入的潜水。休息一下,如果需要的话去洗手间…

7.1 输入控制

在这里插入图片描述

  • 图像画布:你可以将输入图像拖放到此处。也可以单击画布并使用文件浏览器选择一个文件。输入图像将由预处理器下拉菜单中的选定预处理器进行处理。将创建一个控制图。
  • 写入图标:使用白色图像创建新画布,而不是上传参考图像。它用于直接创建涂鸦。
  • 相机图标:使用设备的相机拍照并将其用作输入图像。你需要向浏览器授予访问相机的权限。

7.2 模型选择

在这里插入图片描述

  • 启用:是否启用 ControlNet。
  • 低 VRAM:适用于 VRAM 小于 8GB 的 GPU。这是一个实验性功能。检查 GPU 内存是否不足,或者是否要增加处理的图像数量。
  • 允许预览:选中此选项以启用参考图像旁边的预览窗口。我建议您选择此选项。使用预处理器下拉菜单旁边的分解图标预览预处理器的效果。
  • 预处理器:预处理器(在研究文章中称为注释器),用于预处理输入图像,例如检测边缘、深度和法线贴图。均不使用输入图像作为控制图。
  • 模型:要使用的控制网络模型。如果选择了预处理器,通常会选择相应的模型。ControlNet 模型与在 AUTOMATIC1111 GUI 顶部选择的稳定扩散模型一起使用。

7.3 控制权重

在预处理器和模型下拉菜单下方,你将看到三个滑动条,可用于控制效果:控制权重、开始和结束控制步骤。
在这里插入图片描述

我将使用以下图像来说明控制权重的效果。这是一个女孩坐下来的形象。
在这里插入图片描述

但是在提示中,我会要求生成一个站起来的女人。

full body, a young female, highlights in hair, standing outside restaurant, blue eyes, wearing a dress, side light

权重:相对于提示给予控件映射的强调程度。它类似于提示中的关键字权重,但适用于控件映射。

以下图像是使用 ControlNet OpenPose 预处理器和 OpenPose 模型生成的。
在这里插入图片描述

如你所见,Controlnet 权重控制相对于提示遵循的控制映射的程度。权重越低,ControlNet 对图像遵循控制图的要求就越少。

启动 ControlNet 步骤:首先应用步骤 ControlNet。0 表示第一步。

结束控制网步骤:步骤控制网结束。1 表示最后一步。

让我们修复固定为 0 的起始步骤,并更改结束 ControlNet 步骤以查看会发生什么。
在这里插入图片描述

由于初始步骤设置了全局组合(采样器在每个步骤中去除了最大数量的噪声,并且它从潜在空间中的随机张量开始),因此即使你仅将 ControlNet 应用于前采样步骤的 20%,也会设置姿势。

相反,更改结束 ControlNet 步骤的效果较小,因为全局组合是在开始步骤中设置的。

7.4 控制模式

在这里插入图片描述

  • 平衡:控制网适用于采样步骤中的调节和非调节。这是标准操作模式。
  • 我的提示更重要:ControlNet 的效果在 U-Net 注入实例中逐渐降低(一个采样步骤中有 13 个)。最终效果是你的提示比控制网络具有更大的影响力。
  • ControlNet 更重要:在解除调节时关闭 ControlNet。实际上,CFG量表还可以作为控制网效果的乘数。

如果你不完全了解它们的实际工作原理,请不要担心。选项标签准确说明效果。

7.5 调整大小模式在这里插入图片描述

调整大小模式控制当输入图像或控制图的大小与要生成的图像的大小不同时要执行的操作。如果这些选项具有相同的纵横比,则无需担心它们。

我将通过设置文本到图像来生成横向图像来演示调整大小模式的效果,而输入图像/控制地图是纵向图像。

  • 只需调整大小:独立缩放控件映射的宽度和高度以适合图像画布。这将更改控件映射的纵横比。

女孩现在需要向前倾,这样她才能仍然在画布内。你可以使用此模式创建一些有趣的效果。
在这里插入图片描述

  • 裁剪和调整大小:使图像画布适合控制图。裁剪控件映射,使其与画布大小相同。

因为控制地图在顶部和底部被裁剪,所以我们的女孩也是如此。
在这里插入图片描述

  • 调整大小和填充:使整个控件映射适合图像画布。使用空值扩展控件映射,使其与图像画布的大小相同。

与原始输入图像相比,侧面有更多的空间。
在这里插入图片描述

现在(希望)你知道所有设置。让我们探讨一些使用 ControlNet 的想法。

8、 多个ControlNet

你可以多次使用 ControlNet 来生成图像。让我们来看一个例子。

模型: Protogen v2.2

提示:

An astronaut sitting, alien planet

否定提示:

disfigured, deformed, ugly

此提示会生成具有各种构图的图像。
在这里插入图片描述

假设我想独立控制宇航员和背景的构图。为此,我们可以使用多个(在本例中为 2 个)控制网。

我将使用此参考图像来固定宇航员的姿势。

在这里插入图片描述

ControlNet 0 的设置:

  • 启用:是
  • 预处理器:OpenPose
  • 模型: control_xxxx_openpose
  • 调整大小模式:调整大小和重新填充(因为我的原始参考图像是纵向的)

在这里插入图片描述

我将使用以下参考图像作为背景。

在这里插入图片描述

深度模型非常适合此目的。

ControlNet 1 的設定:

  • 启用:是
  • 控制权重:0.45
  • 预处理器:depth_zeo
  • 模型: control_XXXX_depth
  • 调整大小模式:裁剪和调整大小

在这里插入图片描述

现在我可以独立控制主体和背景的构图:

在这里插入图片描述

技巧:

  • 调整 ControlNet 权重,如果其中一个没有完成其工作。
  • 如果有最终图像不同大小的参考图像,请注意调整大小模式。

9、模仿人体姿势

也许ControlNet最常见的应用是复制人类的姿势。这是因为通常很难控制姿势…直到现在!输入图像可以是稳定扩散生成的图像,也可以是从真实相机拍摄的图像。

要使用 ControlNet 传输人体姿势,请按照说明在 AUTOMATIC1111 中启用 ControlNet。使用以下设置。

  • 预处理器:openpose
  • 模型: control_…_openpose
  • 确保已选中启用。

以下是一些示例。

9.1 示例 1:从图像复制姿势

作为基本示例,让我们复制以下欣赏树叶的女人图像的姿势。
在这里插入图片描述

使用各种模型和提示,你可以显著地更改内容,但保持姿势。

在这里插入图片描述

9.2 示例 2:重新混合影片场景

你可以将Pulp Fiction中的标志性舞蹈场景重新塑造为公园中的一些瑜伽练习。
在这里插入图片描述

这使用带有DreamShaper模型的ControlNet。
在这里插入图片描述

这是相同的提示,但使用墨水朋克扩散模型。你需要在提示中添加激活关键字 nvinkpunk:
在这里插入图片描述

10、使用 ControlNet 对图像进行风格化处理

下面是v1.5模型,但各种提示实现不同的风格。使用了具有各种预处理的ControlNet。最好进行实验,看看哪一个效果最好。
在这里插入图片描述

你还可以使用模型对图像进行样式化。下面是使用提示“贝多芬的绘画”与Anythingv3,DreamShaper和OpenJourney模型生成的。
在这里插入图片描述

11、使用魔术姿势控制姿势

有时,你可能无法找到具有所需确切姿势的图像。可以使用魔术姿势等软件工具创建自定义姿势。

第 1 步:转到魔术姿势网站。
在这里插入图片描述

第2步:移动模型的关键点以自定义姿势。

第 3 步:按预览。截取模型的屏幕截图。应该得到如下所示的图像。

在这里插入图片描述

第 4 步:使用 OpenPose ControlNet 模型。选择你选择的模型和提示以生成图像。

以下是使用1.5模型和DreamShaper模型生成的一些图像。在所有情况下,姿势都复制得很好。
在这里插入图片描述

12、室内设计思路

可以使用稳定扩散控制网的直线探测器MLSD模型来生成室内设计思路。以下是ControlNet设置。

  • 预处理器:mlsd
  • 模型: MLSD

从任何室内设计照片开始。让我们以下面的一个为例。
在这里插入图片描述

提示:

award winning living room

模型:Stable Diffusion v1.5

以下是一些产生的设计思路。

在这里插入图片描述

或者,你可以使用深度模型。它将强调保留深度信息,而不是直线。

  • 预处理器:Depth Midas
  • 模型:Depth

生成的图像:
在这里插入图片描述

13、稳定扩散深度模型与ControlNet的区别

稳定扩散的创建者Stability AI发布了一个深度图像模型。它与ControlNet有很多相似之处,但存在重要差异。

让我们先谈谈相似之处。

  • 它们都是稳定扩散模型…
  • 它们都使用两种条件(预处理的图像和文本提示)。
  • 他们都使用MiDAS来估计深度图。

区别在于:

  • 图像深度模型是 v2 模型。ControlNet 可用于任何 v1 或 v2 模型。这一点很重要, 因为 v2 模型是出了名的难以使用。人们很难产生好的形象。ControlNet 可以使用任何 v1 模型的事实不仅为 v1.5 基础模型开放了深度调节,而且还为社区发布的数千种特殊模型开放了条件反射。
  • ControlNet更加通用。除了深度之外,它还可以通过边缘检测、姿势检测等进行调节。
  • ControlNet的深度图具有比图像深度更高的分辨率。

14、ControlNet如何工作?

如果不解释 ControlNet 在后台的工作原理,本教程将是不完整的。

ControlNet 的工作原理是将可训练的网络模块附加到稳定扩散模型的 U-Net(噪声预测器)的各个部分。稳定扩散模型的权重被锁定,以便在训练期间保持不变。在训练期间仅修改附加的模块。

研究论文中的模型图很好地总结了这一点。最初,附加网络模块的权重全部为零,使新模型能够利用经过训练和锁定的模型。
在这里插入图片描述

在训练期间,每个训练图像一起提供两个条件:(1) 文本提示,以及 (2) 控制映射,例如 OpenPose 关键点或 Canny 边缘。ControlNet 模型学习基于这两个输入生成图像。

每个控制方法都是独立训练的。


原文链接:ControlNet v1.1权威指南 — BimAnt

相关文章:

稳定扩散ControlNet v1.1 权威指南

ControlNet 是一种稳定扩散模型,可让你从参考图像中复制构图或人体姿势。 经验丰富的稳定扩散用户知道生成想要的确切成分有多难。图像有点随机。你所能做的就是玩数字游戏:生成大量图像并选择你喜欢的图片。 借助 ControlNet,稳定扩散用户…...

【golang】结构体及其方法的使用(struct)

函数是独立的程序实体。我们可以声明有名字的函数,也可以声明没名字的函数,还可以把它们当做普通的值传来传去。我们能把具有相同签名的函数抽象成独立的函数类型,以作为一组输入、输出(或者说一类逻辑组件)的代表。 …...

【数据结构】-- 排序算法习题总结

排序 时间复杂度 空间复杂度 稳定性 冒泡排序 O(n^2) 优化后O(n) O(1) 稳定 快速排序 最好O(n*logn) 最坏O(n^2) 最好O(logn) 最坏O(n) 不稳定直接插入排序…...

第十章 CUDA流(stream)实战篇

cuda教程目录 第一章 指针篇 第二章 CUDA原理篇 第三章 CUDA编译器环境配置篇 第四章 kernel函数基础篇 第五章 kernel索引(index)篇 第六章 kenel矩阵计算实战篇 第七章 kenel实战强化篇 第八章 CUDA内存应用与性能优化篇 第九章 CUDA原子(atomic)实战篇 第十章 CUDA流(strea…...

如何进行电脑文件夹分类与整理?

本科电脑用了四年,毕业后发现空间很满,但是真正有用的东西仿佛就一点。好像是在学开发的时候,听到一个老师说,根目录不要放太多文件夹,不然就相当于没有根目录了。刚好研究生有了新的台式电脑,开始有规划的…...

kafka-python 消费者消费不到消息

排除步骤1: 使用group_id”consumer_group_id_001“ 和 auto_offset_reset"earliest" from kafka import KafkaConsumerconsumer KafkaConsumer(bootstrap_servers["dev-kafka01.test.xxx.cloud:9092"],enable_auto_commitTrue, auto_commit…...

穿起“新架构”的舞鞋,跳一支金融数字化转型的华尔兹

华尔兹,是男女两位舞者,通过形体的控制,舞步技巧的发挥,完美配合呈现而出的一种舞蹈形式。华尔兹舞姿,如行云流水、潇洒自如、飘逸优美,素有“舞中皇后”的美称。 在跳华尔兹的时候,如果舞者双…...

SpringBoot 常用注解

随着Spring及Spring Boot的发展,基于Java的配置已经慢慢替代了基于xml的配置形式。本篇文章为大家整理和简介Spring Boot中常用的注解及其功能。 SpringBoot注解 SpringBootApplication:开启Spring Boot自动配置的核心注解,相关等同于Configu…...

k8s deployment创建pod流程图

参考 k8s 创建pod和deployment的流程 - SoulChild随笔记...

C++ 逗号运算符

使用逗号运算符是为了把几个表达式放在一起。 整个逗号表达式的值为系列中最后一个表达式的值。 从本质上讲,逗号的作用是将一系列运算按顺序执行。 表达式1, 表达式2求解过程是:先求解表达式 1,再求解表达式 2。整个逗号表达式的值是表达…...

jdbc集成phoneix hbase

为什么使用jdbc集成 需求简单,只是往phoneix存储数据原本项目已经有mysql的mybatis plus集成,如果采用dataSource方式就需要采用多数据源的方式,造成架构复杂化,使用复杂化,并且修改地方过多。 Qualifier("phoe…...

16.遍历二叉树,线索二叉树

目录 一. 遍历二叉树 (1)三种遍历方式 (2)递归遍历算法 (3)非递归遍历算法 (4)层次遍历算法 二. 基于递归遍历算法的二叉树有关算法 (1)二叉树的建立 …...

电商平台按关键字搜索商品淘宝京东拼多多api接口PHP示例

关键词搜索商品接口的作用是通过调用接口来实现在电商平台中进行商品搜索。具体而言,该接口可以提供以下功能和作用: 商品搜索:用户可以通过输入关键词,在电商平台上进行商品搜索。接口可以根据关键词对商品的名称、描述、标签等…...

胖小酱之恰恰是什么

意思是:指所指的事物截然不同,正好相反。 恰恰相反的近义词:事与愿违、适得其反 一、事与愿违 [ sh yǔ yun wi ] 【解释】:事实与愿望相反。指原来打算做的事没能做到。 【出自】:茅盾《子夜》十六:不…...

豪越科技受邀出席2023中国算力大会

2023年8月17日-8月20日,“算汇银川 数创未来”创新中国行走进银川暨2023中国算力大会在银川中关村创新中心召开。政府领导、行业领袖、专家学者、以及大型科技企业负责人齐聚大会现场,围绕算力基础设施建设、创新应用和产业发展成果等方面开展广泛交流与…...

python脚本——批量将word文件转换成多张图片

前提:有时候需要快速查看word文档的内容是否自己需要的,或者就是单纯需要将word文档转换成一张张图片。 思路:word文档直接生成图片比较蛮烦,可能会引起格式变化,就先将word文档转换成PDF,然后将PDF文档转…...

FairyGUI编辑器的弹窗操作【插件】

之前在FairyGUI编辑器菜单扩展中,我使用了App.Alert("复制失败")来提示操作是否成功。这篇则会说一下我们可以使用的弹窗提示,以及做到类似资源发布成功时的“发布成功”飘窗。 打开APP的API脚本,可以看到有很多公开方法&#xff…...

Elasticsearch(十三)搜索---搜索匹配功能④--Constant Score查询、Function Score查询

一、前言 之前我们学习了布尔查询,知道了filter查询只在乎查询条件和文档的匹配程度,但不会根据匹配程度对文档进行打分,而对于must、should这两个布尔查询会对文档进行打分,那如果我想在查询的时候同时不去在乎文档的打分&#…...

直播系统源码协议探索篇(二):网络套接字协议WebSocket

上一篇我们分析了直播平台的会话初始化协议SIP,他关乎着直播平台的实时通信和多方互动技术的实现,今天我们来讲另一个协议,叫网络套接字协议WebSocket,WebSocket基于TCP在客户端与服务器建立双向通信的网络协议,并且可…...

Windows 11 下使用 VMWare Workstation 17 Pro 新建 CentOS Stream 9 64位 虚拟机 并配置网络

文章目录 为什么选择 CentOS Stream 9下载安装访问连接快照克隆网络配置 为什么选择 CentOS Stream 9 CentOS Linux 8: 已经过了 End-of-life (EOL)CentOS Linux 7: EOL Jun 30th, 2024CentOS Stream 8: EOL May 31st, 2024CentOS Stream 9: End of RHEL9 full support phase …...

生信豆芽菜-缺氧评分的计算

网址:http://www.sxdyc.com/gradeHypoxia 1、数据准备 表达谱数据,行为基因,列为样本 2、提交后,等待运行成功即可下载 当然,如果不清楚数据是什么样的,可以选择下载我们的示例数据,也可以…...

C++:通过find/substr分割字符串

find函数可以在一个目标字符串中查找子字符串&#xff0c;返回值为子字符串在目标字符串中的起始位置 substr通过起始位置和长度可以截取一段字符串 将find和substr结合可以用于分割字符串 #include <iostream> #include <string> #include <tuple>using …...

sql developer 连不上oracle数据库 报错 ORA-01031: insufficient privileges

sql developer 连不上oracle数据库 报错 ORA-01031: insufficient privileges 1、问题描述2、问题原因3、解决方法4、sql developer 连接oracle 成功 1、问题描述 使用sys账户以SYSDBA角色登录失败 报错 ORA-01031: insufficient privileges 2、问题原因 因为没有给sys账户分…...

LeetCode 面试题 01.07. 旋转矩阵

文章目录 一、题目二、C# 题解 一、题目 给你一幅由 N N 矩阵表示的图像&#xff0c;其中每个像素的大小为 4 字节。请你设计一种算法&#xff0c;将图像旋转 90 度。 不占用额外内存空间能否做到&#xff1f; 点击此处跳转题目。 示例 1: 给定 matrix [ [1,2,3], [4,5,6], …...

vue3 pdf、word等文件下载

效果&#xff1a; <div class"byLawBox"><div class"titleBox">规章制度公示</div><div class"contentBox"><TableList:loading"byLawloading"ref"byLawtablistRef":hasImport"false"…...

带你了解SpringBoot---开启Durid 监控

文章目录 数据库操作--开启Durid 监控整合Druid 到Spring-Boot官方文档基本介绍Durid 基本使用代码实现 Durid 监控功能-SQL 监控需求:SQL 监控数据SQL 监控数据-测试页面 Durid 监控功能-Web 关联监控需求:Web 关联监控配置-Web 应用、URI 监控重启项目 Durid 监控功能-SQL 防…...

matlab 点云精配准(3)——Trimmed ICP

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,matlab 点云精配准(3)——Trimmed ICP。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、原理概述 见论文:[1] 李鑫,莫思特,黄华,…...

nodejs开发环境搭建示例

服务与后端 {"name": "AsaiCC","private": true,"version": "1.0.0","description": "","main": "main.js","bin": "index.js","author": "&…...

网络安全(大厂)面试题

以下为网络安全各个方向涉及的面试题&#xff0c;星数越多代表问题出现的几率越大&#xff0c;祝各位都能找到满意的工作。 注&#xff1a;本套面试题&#xff0c;已整理成pdf文档&#xff0c;但内容还在持续更新中&#xff0c;因为无论如何都不可能覆盖所有的面试问题&#xf…...

GC面临的困境,JVM是如何解决跨代引用的?

本文已收录至GitHub&#xff0c;推荐阅读 &#x1f449; Java随想录 微信公众号&#xff1a;Java随想录 原创不易&#xff0c;注重版权。转载请注明原作者和原文链接 文章目录 跨代引用问题记忆集卡表写屏障写屏障的伪共享问题 前面我们讲了可达性分析和根节点枚举&#xff0c…...

温州建设网站公司/seo是什么岗位的缩写

http://www.chromclass.com/product/gc10/...

wordpress去除顶部导航/手机网站seo免费软件

HTML5 中工作线程&#xff08;Web Worker&#xff09;简介 至 2008 年 W3C 制定出第一个 HTML5 草案开始&#xff0c;HTML5 承载了越来越多崭新的特性和功能。它不但强化了 Web 系统或网页的表现性能&#xff0c;而且还增加了对本地数据库等 Web 应用功能的支持。其中&#xff…...

国外免费网站做推广/俄罗斯搜索引擎yandex推广

小哼买书&#xff08;C&Java实现&#xff09; 本篇博客主要是《啊哈&#xff01;算法》的读书笔记&#xff0c;一本很好的算法书&#xff0c;这里做一下记录。 分别利用三种算法解小哼买书问题&#xff0c;主要依据书中代码&#xff0c;顺带写了一下Java语言的实现。 1、桶…...

中国100强企业排名表/今日头条seo

&#x1f525;《嵌入式系统开发》系列专栏主要以LPC1100系列微控制器为硬件平台&#xff0c;详细介绍Cortex—-M0微控制器的原理与开发技术&#xff0c;基于keil仿真软件平台设计最小应用系统板和具有在板仿真器的口袋开发板以及相关例程。 &#x1f525;本文已收录于嵌入式系统…...

机械网站建设价格/技能培训网

作者&#xff1a;SmartMax 链接&#xff1a;https://www.zhihu.com/question/30711594/answer/164335112 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 如下过程部署服务器。 这时候默认的安全组配置 &#xff0…...

网站改版 升级的目的是什么意思/搜索引擎优化是免费的吗

现在的服务器一般都是多核了&#xff0c;但是中断很多时候都是只用一个核&#xff0c;如果有些中断要求比较高&#xff0c;可以把它独立分配给一个cpu使用。查看irq资源cat /proc/interruptsCPU0 CPU1 CPU2 CPU30: 131 0 0 1914 IO-APIC-edge timer1: 0 0 0 2 IO-APIC-edge i80…...