Stable Diffusion姿态控制

ControlNet 是一种稳定的扩散模型,可以复制构图和人体姿势。 经验丰富的 Stable Diffusion 用户知道生成想要的精确姿势有多么困难。 一切都是……随机的……就像扩散一样。 ControlNet 解决了这个问题。 它功能强大且用途广泛,可让你将其与任何 Stable Diffusion 模型一起使用。

在本文中,我们将介绍有关 ControlNet 所需的一切:它是什么、如何在 AUTOMATIC1111 中安装和使用它、每个设置的含义以及一些常见用例。

1、什么是控制网?

ControlNet 是一种改进的稳定扩散模型。 稳定扩散模型的最基本形式是文本到图像。 它使用文本提示作为引导图像生成的条件。 ControlNet 增加了一个条件。 让我向你展示两个 ControlNet 示例:(1) 边缘检测和 (2) 人体姿势检测。

  • 边缘检测

在下面所示的工作流程中,ControlNet 获取额外的输入图像并使用 Canny 边缘检测器检测其轮廓。 检测到的边缘被保存为控制图,然后作为文本提示之外的额外条件输入到 ControlNet 模型中。

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

  • 人体姿态检测

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

下面是使用 OpenPose 的 ControlNet 工作流程。 使用 OpenPose 从输入图像中提取关键点,并将其保存为包含关键点位置的控制图。 然后将其作为额外条件与文本提示一起提供给 Stable Diffusion。 图像是根据这两个条件生成的。

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

OpenPose 仅检测关键点,因此图像生成更加自由,但遵循原始姿势。 在上面的示例中,它生成了一个左脚指向侧面的女人跳起来,这与原始图像和 Canny 边缘示例中的图像不同。 原因是 OpenPose 的关键点检测没有指定脚的方向。

2、可用的 ControlNet模型

现在让我们看看 ControlNet 模型可以做什么。 当我解释如何使用 ControlNet 扩展时,你将确切地了解它们的作用。

2.1 OpenPose 检测器

OpenPose 检测人体关键点,例如头部、肩膀、手等的位置。它对复制人体姿势很有用,但对其他细节(例如服装、发型和背景)没有帮助。

2.2 Canny边缘检测器

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

2.3 直线检测器

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

2.4HED 边缘检测器

HED(整体嵌套边缘检测)是一种边缘检测器,擅长像真人一样生成轮廓。 根据 ControlNet 的作者,HED 适用于重新着色和重新设计图像。

2.5 涂鸦

Controlnet 还可以将你涂鸦的东西变成图像!

2.6 其他模型

其他可用的控制网模型包括:

  • Human Pose——使用 OpenPose 检测关键点。
  • 语义分割——根据从输入图像中提取的分割图生成图像。
  • 深度贴图——与稳定扩散 v2 中的深度到图像一样,ControlNet 可以从输入图像推断出深度图。 ControlNet 的深度图比 Stable Diffusion v2 的分辨率更高。
  • 法线贴图——法线贴图指定对象表面的 3D 方向。 这是在由多边形构成的低分辨率表面上伪造纹理的常用方法。 当然,你所拥有的只是一个 2D 输入图像。 法线贴图是从深度贴图计算出来的。

3、安装Stable Diffusion ControlNet

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

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

3.1 在 Google Colab 中安装 ControlNet

在我们的快速入门指南中,通过一键式稳定扩散 Colab 笔记本可以轻松使用 ControlNet。

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

按播放按钮启动 AUTOMATIC1111。 就可以了!

3.2 在 Windows PC 或 Mac 上安装 ControlNet

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

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

要安装 ControlNet 扩展,请转至扩展选项卡并选择可用子选项卡。 按load from按钮。

在新出现的列表中,找到扩展名为 sd-webui-controlnet 的行。 按安装。

重新启动 AUTOMATIC1111 webui。

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

这表示扩展安装成功。

ControlNet 的作者发布了一些预训练的 ControlNet 模型,可以在这个页面上找到。

WebUI 社区托管半精度版本的 ControlNet 模型,其文件大小更小。 它们下载速度更快,存储更容易,为什么不呢? 你可以在这里找到它们。

要使用这些模型,请下载模型文件并将它们放在扩展的模型文件夹中。 模型文件夹的路径是

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

不需要下载所有模型。 如果这是你第一次使用 ControlNet,可以直接下载 openpose 模型

4、在 AUTOMATIC1111 中使用 ControlNet

你将在本节中学习使用扩展的一个简单示例。 稍后将看到每个设置的详细说明。

你应该安装 ControlNet 扩展以跟上本节的内容,可以通过查看下面的 ControlNet 部分进行验证。

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

我将使用下图向你展示如何使用 ControlNet。 你可以使用下载按钮下载图像以按照教程进行操作。

4.1 文本到图像设置

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 应该如下所示。

4.2 ControlNet 设置

现在我将讨论需要在 ControlNet 面板中执行的操作。

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

选中启用复选框。

你将需要选择预处理器和模型。 Preprocessor只是前面提到的annotator的不同名称,比如OpenPose keypoint detector。 让我们选择 openpose 作为预处理器。

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

ControlNet 面板应如下所示。

就这样。 现在按生成开始使用 ControlNet 生成图像。

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

这是使用 ControlNet 的基础知识! 完成后,取消选中启用复选框以禁用 ControlNet 扩展。


原文链接:ControlNet: Control human pose in Stable Diffusion

BimAnt翻译整理,转载请标明出处