当前位置:   article > 正文

[AIGC] Stable Diffusion ControlNet v1.1:完整指南_ip-adapter_sd15_plus.pth

ip-adapter_sd15_plus.pth

英文原文:https://stable-diffusion-art.com/controlnet/

ControlNet 是一种神经网络,通过添加额外条件来控制Stable Diffusion中的图像生成。详细信息请参阅 Lvmin Zhang 及其同事撰写的文章“向文本到图像扩散模型添加条件控制”。

它改变了游戏规则。您可以使用 ControlNet 进行以下操作:

  • 指定人体姿势。
  • 从另一张图像复制构图。
  • 生成类似的图像。
  • 将涂鸦变成专业图像。

在这篇文章中,您将了解有关 ControlNet 所需的一切。

  • 什么是 ControlNet 及其工作原理。
  • 如何在 Windows、Mac 和 Google Colab 上安装 ControlNet。
  • 如何使用 ControlNet。
  • 所有 ControlNet 模型的解释。
  • 一些用法示例。

文章目录

什么是 ControlNet?

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

使用Stable Diffusion模型的最基本形式是文本到图像。它使用文本提示作为指导图像生成的条件,以便您生成与文本提示匹配的图像。

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

让我向您展示 ControlNet 功能的两个示例:通过 (1) 边缘检测和 (2) 人体姿势检测控制图像生成。

边缘检测示例

如下图所示,ControlNet 获取额外的输入图像并使用 Canny 边缘检测器检测其轮廓。然后将包含检测到的边缘的图像保存为控制图。它被输入 ControlNet 模型作为文本提示的额外条件。
在这里插入图片描述
从输入图像中提取特定信息(在本例中为边缘)的过程称为 annotation(在研究文章中)或预处理(在 ControlNet 扩展中)。

人体姿态检测示例

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

在这里插入图片描述
使用 Openpose 通过人体姿势检测注释的输入图像。

以下是使用 OpenPose 的 ControlNet 工作流程。使用 OpenPose 从输入图像中提取关键点,并将其保存为包含关键点位置的控制图。然后将其与文本提示一起作为额外条件输入到Stable Diffusion。图像是根据这两个条件生成的。
在这里插入图片描述
使用 Canny 边缘检测和 Openpose 有什么区别? Canny 边缘检测器可提取拍摄对象和背景的边缘。它往往会更忠实地翻译场景。你可以看到跳舞的男人变成了女人,但轮廓和发型都保留了。

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

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

安装Stable Diffusion ControlNet

让我们逐步了解如何在 AUTOMATIC1111 中安装 ControlNet,这是一种流行且功能齐全(并且免费!)的Stable Diffusion GUI。我们将使用这个扩展,它是使用 ControlNet 的事实上的标准。

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

在 Google Colab 中安装 ControlNet

通过我们的快速入门指南中的一键Stable Diffusion Colab 笔记本,可以轻松使用 ControlNet。

在 Colab 笔记本的扩展部分中,选中 ControlNet。

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

在 Windows PC 或 Mac 上安装 ControlNet

您可以在 Windows PC 或 Mac 上将 ControlNet 与 AUTOMATIC1111 结合使用。如果您尚未安装 AUTOMATIC1111,请按照这些文章中的说明进行操作。

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

安装 ControlNet 扩展 (Windows/Mac)

  1. 导航至“扩展”页面。
  2. 选择“Install from URL”选项卡。
  3. 将以下 URL 添加到扩展程序存储库的 URL 字段中。

https://github.com/Mikubill/sd-webui-controlnet

  1. 点击“Install”按钮。
  2. 等待表示扩展已安装的确认消息。
  3. 重新启动 AUTOMATIC1111。
  4. 访问 ControlNet 模型页面。
  5. 下载所有模型文件(文件名以 .pth 结尾)。
    (如果不想全部下载,可以暂时下载最常用的openpose和canny模型。)
  6. 将模型文件放入 ControlNet 扩展的模型目录中。

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

重新启动 AUTOMATIC1111 webui。

如果扩展安装成功,您将在 txt2img 选项卡中看到一个名为 ControlNet 的新可折叠部分。它应该位于脚本下拉菜单的正上方。
在这里插入图片描述
这表明扩展安装成功。

安装 T2I adaptiers

T2I adaptiers是神经网络模型,用于为Stable Diffusion的图像生成提供额外的控制。它们在概念上与 ControlNet 类似,但设计不同。
在这里插入图片描述
A1111 ControlNet 扩展可以使用 T2I adapters。您需要在此处下载模型。获取文件名类似于 t2iadapter_XXXXX.pth 的文件

许多 T2I adapters的功能与 ControlNet 模型重叠。我只会介绍以下两个。

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

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

更新 ControlNet 扩展

ControlNet 是一个经过快速发展的扩展。发现您的 ControlNet 副本已过时的情况并不罕见。

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

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

选项 1:从 Web-UI 更新

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

  1. 转到扩展页面。
  2. 在“Installed”选项卡中,单击“Check for updates”。
  3. 等待确认消息。
  4. 完全关闭并重新启动 AUTOMATIC1111 Web-UI。
    在这里插入图片描述

选项 2:命令行

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

步骤 1:打开终端应用程序 (Mac) 或 PowerShell 应用程序 (Windows)。
步骤 2:导航到 ControlNet 扩展的文件夹。 (如果您安装在其他地方,请相应调整)

cd stable-diffusion-webui/extensions/sd-webui-controlnet
步骤 3:通过运行以下命令更新扩展。
git pull

使用 ControlNet – 一个简单的例子

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

按右侧的插入符号以展开 ControlNet 面板。它显示了控制旋钮的完整部分和图像上传画布。

在这里插入图片描述
我将通过下图向您展示如何使用ControlNet。您可以使用下面的图像以按照教程进行操作。
在这里插入图片描述

文本转图像设置

ControlNet 需要与Stable Diffusion模型一起使用。在稳定扩散检查点下拉菜单中,选择要与 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 应该如下所示。
在这里插入图片描述

ControlNet 设置

现在让我们转到 ControlNet 面板。

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

选中启用复选框。

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

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

ControlNet 面板应如下所示。

在这里插入图片描述
就这样。现在按“Generate”开始使用 ControlNet 生成图像。

您应该看到生成的图像遵循输入图像的姿势。最后一张图像直接来自预处理步骤。在本例中,它是检测到的关键点。
在这里插入图片描述
完成后,取消选中 Enable 复选框以禁用 ControlNet 扩展。

这是使用 ControlNet 的基础知识!

剩下的就是理解

  • 可用的preprocessors (预处理器)有哪些(有很多!)
  • ControlNet 设置

预处理器和模型

使用 ControlNet 的第一步是选择预处理器。打开预览很有帮助,这样您就可以了解预处理器正在做什么。预处理完成后,原始图像将被丢弃,仅预处理后的图像将用于 ControlNet。

要打开预览:

  1. 选择Allow Preview。
  2. (可选)选择 Pixel Perfect。 ControlNet 将使用您在文本到图像中指定的图像高度和宽度来生成预处理图像。
  3. 单击“Preprocessor”下拉菜单旁边的explosion icon(爆炸图标)。
    在这里插入图片描述
    某些控制模型可能对图像影响太大。如果您发现颜色问题或其他伪影,请减少控制权重。

选择正确的模型

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

很容易辨别 v1.1 中使用的正确模型。您所需要做的就是选择与预处理器具有相同起始关键字的模型。

例如:

Preprocessor模型
depth_xxxxcontrol_xxxx_depth
lineart_xxxxcontrol_xxxx_lineart
openpose_xxxxcontrol_xxxx_openpose

OpenPose

有多个 OpenPose 预处理器。

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

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

OpenPose 预处理器是:

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

OpenPose

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

OpenPose_face

OpenPose_face 执行 OpenPose 处理器执行的所有操作,但会检测其他面部细节。

它对于复制面部表情很有用。
在这里插入图片描述
例子:
在这里插入图片描述

OpenPose_faceonly

OpenPose面部仅检测面部而不检测其他关键点。这对于仅复制面部而不是其他关键点很有用。
在这里插入图片描述
请参阅下面从文本到图像的示例。身体不受约束。
在这里插入图片描述

OpenPose_hand

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

在这里插入图片描述
示例图像:
在这里插入图片描述

OpenPose_full

OpenPose 全面检测 openPose 面部和 openPose 手所做的一切。
在这里插入图片描述
示例图像:
在这里插入图片描述

dw_openpose_full

DWPose 是一种新的姿势检测算法,基于研究文章《Effective Whole-body Pose Estimation with Two-stage Distillation》。它完成与 OpenPose Full 相同的任务,但做得更好。您应该使用 dw_openpose_full 而不是 openpose_full。

如果您在预处理器菜单中没有看到 dw_openpose_full,请更新 ControlNet。
在这里插入图片描述
OpenPose 和 DW OpenPose 的参考图像。
在这里插入图片描述
DW OpenPose 在检测手和手指方面做得更好。

Tile resample(平铺重采样)

平铺重采样模型用于向图像添加细节。它通常与放大器一起使用,同时放大图像。

请参阅 ControlNet Tile Upscaling 方法。

参考

参考是一组预处理器,可让您生成与参考图像类似的图像。稳定扩散模型和提示仍然会影响图像。

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

有 3 个参考预处理器。

  1. Reference adain:通过自适应实例规范化进行风格传输。
  2. Reference only:将参考图像直接链接到注意层。
  3. 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

在这里插入图片描述
如果你拧我的胳膊,我会说仅供参考的效果最好。

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

图片提示词适配器(IP-adapter)

图像提示适配器(IP-adapter)是一种 ControlNet 模型,允许您使用图像作为提示。阅读 He Ye 和同事撰写的文章 IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models,并访问他们的 Github 页面了解实现细节。

在这里插入图片描述

安装 IP-adapter 模型

在 ControlNet 中使用 IP 适配器之前,请下载 v1.5 型号的 IP-adapter 模型。

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

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

使用 IP-adapter

IP-adapter 允许您使用图像作为提示,因此您需要提供参考图像。让我们使用下面的图像。
在这里插入图片描述
图像提示的参考图像。

在 ControlNet 部分中,将图像上传到图像画布。
在这里插入图片描述
以下是使用 IP-adapter 的 ControlNet 设置的其余部分

  • Enable: Yes
  • Pixel Perfect: Yes
  • Control Type: IP-Adapter
  • Preprocessor: ip-adapter_clip_sd15
  • Model: ip-adapter_sd15

下面是带有和不带有 IP-adapter 的图像。
在这里插入图片描述
查看参考图像的特征,例如转移到生成图像的花朵和深色!

SD 1.5 Plus IP-Adapter 型号具有类似的功能,但效果更强。
在这里插入图片描述
SD1.5 Plus 模型非常强大。它几乎会复制参考图像。您可以减少控制权重来调低它。
在这里插入图片描述

Canny(精明的)

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

在预处理器和模型下拉菜单中选择要使用的canny。
在这里插入图片描述
生成的图像将遵循轮廓。
在这里插入图片描述

Depth(深度)

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

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

参考图片:
在这里插入图片描述
深度图:
在这里插入图片描述
提示词和反向提示词:

a woman retrofuturism

disfigured, ugly, bad, immature

您可以看到生成的图像遵循深度图 (Zoe)。
在这里插入图片描述
与更详细的Leres++比较:
在这里插入图片描述

Line Art(线条艺术)

线条艺术呈现图像的轮廓。它试图将其转换为简单的绘图。

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

  • 动漫线条艺术:动漫风格的线条
  • 线条艺术动漫降噪:动漫风格的线条,细节较少。
  • 线条艺术写实:写实风格的线条。
  • 粗线条:写实风格的线条,粗重。

与线稿控制模型一起使用。

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

线条艺术动漫

在这里插入图片描述

线条艺术动漫降噪

在这里插入图片描述

线条艺术写实

在这里插入图片描述

粗线艺术

在这里插入图片描述

MLSD

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

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

法线贴图

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

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

法线贴图预处理器:

  • Normal Midas:根据 Midas 深度图估计法线贴图。
  • Normal Bae:使用 Bae 等人提出的 normal uncertainty method(法线不确定性方法)估计法线图。

Normal Midas

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

Normal Bae

Bae 法线贴图倾向于在背景和前景中渲染细节。

在这里插入图片描述

Scribbles(涂鸦)

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

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

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

Scribble HED

HED 产生粗糙的涂鸦线。
在这里插入图片描述

Scribble Pidinet

Pidit 往往会产生粗线条,细节很少。它非常适合复制没有细节的电路板轮廓。
在这里插入图片描述

Scribble xDoG

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

Segmentation(分割)

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

下面是一个正在运行的分割处理器。

在这里插入图片描述
建筑物、天空、树木、人和人行道都标有不同的预定义颜色。

您可以在此处的颜色图中找到 ufade20k 和 ofade20k 的对象类别和颜色。

有几个分段选项

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

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

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

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

Futuristic city, tree, buildings, cyberpunk

UniFormer ADE20k (ufade20k)

Uniformer 在此示例中准确地标记了所有内容。
在这里插入图片描述

OneFormer ADE20k (ofade20k)

在这种情况下,OneFormer 的噪点较多,但不会影响最终图像。
在这里插入图片描述

OneFormer COCO (ofcoco)

OneFormer COCO 的表现类似,但有一些标签错误。
在这里插入图片描述
细分是一项强大的技术。您可以进一步操作分割图以将对象放置在精确的位置。使用 ADE20k 的颜色图

Shuffle

随机预处理器搅动输入图像。让我们看看随机播放的效果。

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

输入图像:
在这里插入图片描述
Shuffle预处理器:
在这里插入图片描述
与其他预处理器不同,Shuffle 预处理器是随机的。它将受到您的种子值的影响。

将 Shuffle 预处理器与 Shuffle 控制模型结合使用。 Shuffle 控制模型可以与或不与 Shuffle 预处理器一起使用。

下图是 ControlNet Shuffle 预处理器和 Shuffle 模型(与上一节相同的提示)。配色方案大致遵循参考图像。
在这里插入图片描述
下图仅适用于 ControlNet Shuffle 模型(预处理器:无)。图像构图更接近原图。配色方案与随机排列类似。

在这里插入图片描述
供您参考,下图是在没有 ControlNet 的情况下具有相同提示的图像。配色方案截然不同。
在这里插入图片描述

color grid T2I adapter

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

原始参考图:
在这里插入图片描述
使用 t2ia_color_grid 进行预处理:
在这里插入图片描述
然后,预处理后的图像可以与 T2I 颜色适配器 (t2iadapter_color) 控制模型一起使用。

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

A modern living room

在这里插入图片描述
增加 ControlNet 权重以使其更紧密地跟随。

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

在我看来,它与 image-to-image 非常相似。

Clip vision style T2I adapter

t2ia_style_clipvision 将参考图像转换为 CLIP 视觉嵌入。这种嵌入包含有关图像内容和风格的丰富信息。

您将需要使用控制模型 t2iadapter_style_XXXX

看看这个惊人的风格转移的实际效果:

参考图片:
在这里插入图片描述
T2I adapter – CLIP vision:

sci-fi girl

在这里插入图片描述
在这里插入图片描述
以下是关闭 ControlNet 时会生成的提示信息。
在这里插入图片描述
该功能与 Reference ControlNet 非常相似,但我对 T2IA CLIP 视觉的评价更高。

ControlNet inpainting

ControlNet 修复可让您在修复中使用高降噪强度来生成较大的变化,而不会牺牲整个图片的一致性。

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

模型: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

我有这张图像,想通过修复来重新生成脸部。

在这里插入图片描述
如果我用较高的去噪强度(> 0.4)对人脸进行内绘,结果很可能是全局不一致的。以下是去噪强度为 1 的未绘制图像。

在这里插入图片描述
在这里插入图片描述
ControlNet Inpainting 是您的解决方案。

要使用 ControlNet 修复:

  1. 最好使用生成图像的相同模型。在txt2img页面生成图像后,单击发送到Inpaint,将图像发送到Img2img页面的Inpaint选项卡。
  2. 使用画笔工具在要重新生成的区域上创建遮罩。如果您不熟悉,请参阅有关修复的初学者教程。
    在这里插入图片描述
  3. 将修复区域设置为仅遮罩。 (全图也可以)
  4. 将降噪强度设置为 1。(如果没有 ControlNet,通常不会将其设置这么高。)
  5. 在 ControlNet 部分设置以下参数。您不需要上传参考图像。
  • Enable: Yes
  • Preprocessor: Inpaint_global_harmonious
  • Model: ControlNet

在这里插入图片描述
6. 按“Generate”开始修复。

现在,即使在最大去噪强度 (1) 下,我也能得到与全局图像一致的新面孔!
在这里插入图片描述
在这里插入图片描述
目前,有 3 个修复预处理器

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

使用 ControlNet 复制一张脸

您可以使用特殊的 IP-adapter face 模型在多个图像中生成一致的面部。

安装 IP-adapter plus face 模型

  1. 确保您的 A1111 WebUIControlNet 扩展是最新的。
  2. 下载 ip-adapter-plus-face_sd15.bin 并将其放入 stable-diffusion-webui > models > ControlNet 中。
  3. 将文件扩展名从 .bin 重命名为 .pth。 (即文件名应为 ip-adapter-plus-face_sd15.pth)

使用 IP-adapter plus face模型

要使用 IP-adapter face 模型复制面部,请转至 ControlNet 部分并上传头像图像。
在这里插入图片描述
重要的 ControlNet 设置:

  • Enable: Yes
  • Preprocessor: ip-adapter_clip_sd15
  • Model: ip-adapter-plus-face_sd15

控制权重应约为 1。您可以使用多个 IP-adapter face ControlNet。确保相应地调整控制权重,使其总和为 1。

提示词:

A woman sitting outside of a restaurant in casual dress

负面提示词:

ugly, deformed, nsfw, disfigured

你得到:
在这里插入图片描述
与多个 IP-adapter face ControlNet 保持一致。

所有 ControlNet 设置说明

您会在 ControlNet 扩展中看到很多设置!当您第一次使用它时,可能会有点害怕,但让我们逐一介绍一下。

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

输入控制

在这里插入图片描述
Image Canvas(图像画布):您可以将输入图像拖放到此处。您还可以单击画布并使用文件浏览器选择文件。输入图像将由“预处理器”下拉菜单中选定的预处理器进行处理。将创建控制图。

Write icon(写入图标):使用白色图像创建新画布,而不是上传参考图像。它用于直接创建涂鸦。
Camera icon(相机图标):使用设备的相机拍摄照片并将其用作输入图像。您需要授予浏览器访问相机的权限。

模型选择

在这里插入图片描述
Enable(启用):是否启用 ControlNet。

Allow Preview(允许预览):选中此项可启用参考图像旁边的预览窗口。我建议您选择此选项。使用“预处理器”下拉菜单旁边的爆炸图标可以预览预处理器的效果。

Preprocessor(预处理器):预处理器(在研究文章中称为注释器),用于对输入图像进行预处理,例如检测边缘、深度和法线贴图。 None 使用输入图像作为控制图。

Model:要使用的 ControlNet 模型。如果您选择了预处理器,通常会选择相应的模型。 ControlNet 模型与在 AUTOMATIC1111 GUI 顶部选择的稳定扩散模型一起使用。

控制权重

在预处理器和模型下拉菜单下方,您将看到三个滑动条,可让您调节控制效果:控制权重、开始和结束控制步骤。
在这里插入图片描述
我将用下图来说明控制权重的效果。这是一个女孩坐着的图像。
在这里插入图片描述
但在提示词中,我会要求生成一个站着的女人。

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

Weight(权重):控制图相对于提示的重视程度。它类似于提示中的关键字权重,但适用于控制图。

以下图像是使用 ControlNet OpenPose 预处理器和 OpenPose 模型生成的。
在这里插入图片描述
正如您所看到的,Controlnet 权重控制控制图相对于提示的遵循程度。权重越低,ControlNet 对图像遵循控制图的要求就越少。

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

End ControlNet 步骤: ControlNet 步骤结束。 1表示最后一步。

让我们将起始步骤固定为 0,并更改 ControlNet 结束步骤,看看会发生什么。
在这里插入图片描述
由于初始步骤设置了全局构成(采样器在每个步骤中消除了最大量的噪声,并且从潜在空间中的随机张量开始),因此即使您仅将 ControlNet 应用到少至 20% 的位置,也会设置姿势第一个采样步骤。

相反,更改 ending ControlNet step 的影响较小,因为全局构成是在开始步骤中设置的。

控制模式

在这里插入图片描述
Balanced(平衡):ControlNet 适用于采样步骤中的调节和非调节。这是标准操作模式。

My prompt is more important(我的提示更重要):ControlNet 的效果在 U-Net 注入的实例中逐渐减小(一个采样步骤中有 13 个实例)。最终效果是您的提示词比 ControlNet 具有更大的影响力。
ControlNet is more important(ControlNet 更重要):在无调节时关闭 ControlNet。实际上,CFG Scale 还充当 ControlNet 效果的乘数。

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

调整模式大小

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

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

Just Resize(仅调整大小):独立缩放控制图的宽度和高度以适合图像画布。这将改变控制图的纵横比。

在这里插入图片描述
只需调整大小即可缩放控制图以适合图像画布。

Crop and Resize(裁剪和调整大小):使图像画布适合控制图。裁剪控制图,使其与画布大小相同。

因为控制图在顶部和底部被裁剪,所以我们的女孩也是如此。
在这里插入图片描述
裁剪和调整大小使图像画布适合并裁剪控制图。

Resize and fill(调整大小和填充):使整个控制图适合图像画布。使用空值扩展控制图,使其与图像画布的大小相同。

与原始输入图像相比,侧面有更多的空格。
在这里插入图片描述
调整大小和填充使整个控制图适合图像画布并扩展控制图。

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

多个控制网络

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

模型:Protogen v2.2

提示词:

An astronaut sitting, alien planet

负面提示词:

disfigured, deformed, ugly

该提示生成具有多种构图的图像。

在这里插入图片描述
假设我想独立控制宇航员和背景的构图。为此,我们可以使用多个(在本例中为 2 个)ControlNet。

我将使用此参考图像来固定宇航员的姿势。
在这里插入图片描述
ControlNet 0 的设置:

  • Enable:Yes
  • Preprocessor:OpenPose
  • 模型:control_xxxx_openpose
  • Resize mode:Resize and Refill(因为我的原始参考图像是纵向的)
    在这里插入图片描述
    我将使用以下参考图像作为背景。

在这里插入图片描述
深度模型非常适合此目的。您将想要使用哪个深度模型和设置来提供您想要的深度图。

ControlNet 1 的设置:

  • Enable:Yes
  • Control Weight: 0.45
  • Preprocessor:OpenPose
  • Model:control_XXXX_depth
  • Resize mode:Crop and resize

在这里插入图片描述
现在我可以独立控制主体和背景的构图:

在这里插入图片描述
在这里插入图片描述
小窍门:

  • 如果其中之一不起作用,请调整 ControlNet 权重。
  • 如果您有与最终图像不同尺寸的参考图像,请注意调整大小模式。

使用 ControlNet 的一些想法

复制人体姿势

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

OpenPose 模型

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

  • Preprocessor: openpose
  • Model: control_…._openpose

这里有一些例子。

示例 1:从图像复制姿势

作为一个基础示例,让我们复制以下图像中一位女士欣赏树叶的姿势。
在这里插入图片描述
使用各种模型和提示,您可以显着改变内容但保持姿势不变。
在这里插入图片描述

示例 2:重新混合电影场景

你可以将《低俗小说》中标志性的舞蹈场景改造成公园里的一些瑜伽练习。
在这里插入图片描述
这使用 ControlNet 和 DreamShaper 模型。
在这里插入图片描述
提示词:妇女在公园外做瑜伽的照片。负面提示词:毁容、丑陋、不好、不成熟

这是具有相同的提示,但使用 Inkpunk Diffusion 模型。 (您需要在提示中添加激活关键​​字nvinkpunk)

在这里插入图片描述

使用 ControlNet 对图像进行风格化

使用提示词

以下是v1.5模型,但有不同的提示来实现不同的风格。使用具有各种预处理的 ControlNet。最好进行试验,看看哪一种效果最好。
在这里插入图片描述
使用提示中的关键字通过 ControlNet 对图像进行风格化。

使用模型

您还可以使用模型来风格化图像。下面是使用 Anythingv3DreamShaperOpenJourney 模型使用提示“贝多芬的绘画”生成的。

在这里插入图片描述

使用 Magic Pose 控制姿势

有时您可能无法找到具有您想要的确切姿势的图像。您可以使用 Magic Poser(来源)等软件工具创建自定义姿势。

第1步:访问Magic Poser网站
在这里插入图片描述
步骤2:移动模型的关键点来定制姿势。
步骤 3:按预览。截取模型的屏幕截图。您应该得到如下图所示的图像。
在这里插入图片描述
步骤 4:使用 OpenPose ControlNet 模型。选择您选择的模型和提示来生成图像。

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

室内设计理念

您可以使用稳定扩散 ControlNet 的直线检测器 MLSD 模型来生成室内设计创意。以下是 ControlNet 设置。

  • Preprocessor: mlsd
  • Model: mlsd

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

award winning living room

  • Model: Stable Diffusion v1.5

以下是一些产生的设计想法。

在这里插入图片描述
或者,您可以使用深度模型。它将强调保留深度信息,而不是直线。

  • Preprocessor: Depth Midas
  • Model: Depth

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

Stable Diffusion 深度模型和 ControlNet 之间的区别

Stability AI 是 Stable Diffusion 的创建者,发布了depth-to-image。它与 ControlNet 有很多相似之处,但也有重要的区别。

我们先来说说相似之处。

  1. 它们都是Stable Diffusion模型……
  2. 它们都使用两种条件(预处理的图像和文本提示)。
  3. 他们都使用 MiDAS 来估计深度图。

差异是:

  1. depth-to-image 模型是 v2 模型。 ControlNet 可与任何 v1 或 v2 型号一起使用。这一点很重要,因为 v2 模型非常难以使用。人们很难产生好的图像。 ControlNet 可以使用任何 v1 模型这一事实不仅为 v1.5 基础模型提供了深度调节功能,而且还为社区发布的数千个特殊模型提供了深度调节功能。
  2. ControlNet 更加通用。除了深度之外,它还可以通过边缘检测、姿态检测等进行调节。
  3. ControlNet 的深度图具有比深度图像更高的分辨率。

ControlNet 是如何工作的?

如果不解释 ControlNet 的底层工作原理,本教程就不完整。

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

研究论文中的模型图很好地总结了这一点。最初,附加网络模块的权重均为零,使得新模型能够利用经过训练和锁定的模型。
在这里插入图片描述
在训练期间,每个训练图像都会提供两个条件。 (1) 文本提示,以及 (2) 控制图,例如 OpenPose 关键点或 Canny 边缘。 ControlNet 模型学习根据这两个输入生成图像。

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/259823
推荐阅读
相关标签
  

闽ICP备14008679号