NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 - 3D道路快速建模
ControlNet 是一种稳定的扩散模型,可以复制构图和人体姿势。 经验丰富的 Stable Diffusion 用户知道生成想要的精确姿势有多么困难。 一切都是……随机的……就像扩散一样。 ControlNet 解决了这个问题。 它功能强大且用途广泛,可让你将其与任何 Stable Diffusion 模型一起使用。
在本文中,我们将介绍有关 ControlNet 所需的一切:它是什么、如何在 AUTOMATIC1111 中安装和使用它、每个设置的含义以及一些常见用例。
1、什么是控制网?
ControlNet 是一种改进的稳定扩散模型。 稳定扩散模型的最基本形式是文本到图像。 它使用文本提示作为引导图像生成的条件。 ControlNet 增加了一个条件。 让我向你展示两个 ControlNet 示例:(1) 边缘检测和 (2) 人体姿势检测。
- 边缘检测
在下面所示的工作流程中,ControlNet 获取额外的输入图像并使用 Canny 边缘检测器检测其轮廓。 检测到的边缘被保存为控制图,然后作为文本提示之外的额外条件输入到 ControlNet 模型中。
![](http://www.bimant.com/blog/content/images/2023/03/image-174.png)
从输入图像中提取特定信息(在本例中为边缘)的过程称为注解(在研究文章中)或预处理(在 ControlNet 扩展中)。
- 人体姿态检测
你可能已经猜到,边缘检测并不是预处理图像的唯一方法。 Openpose 是一种快速关键点检测模型,可以提取人体姿势,如手、腿和头部的位置。 请参见下面的示例。
![](http://www.bimant.com/blog/content/images/2023/03/image-175.png)
下面是使用 OpenPose 的 ControlNet 工作流程。 使用 OpenPose 从输入图像中提取关键点,并将其保存为包含关键点位置的控制图。 然后将其作为额外条件与文本提示一起提供给 Stable Diffusion。 图像是根据这两个条件生成的。
![](http://www.bimant.com/blog/content/images/2023/03/image-176.png)
使用 Canny 边缘检测和 Openpose 有什么区别? Canny 边缘检测器提取主题和背景的边缘。 它倾向于更忠实地翻译场景。 你可以看到跳舞的男人变成了女人,但轮廓和发型都很相似。
OpenPose 仅检测关键点,因此图像生成更加自由,但遵循原始姿势。 在上面的示例中,它生成了一个左脚指向侧面的女人跳起来,这与原始图像和 Canny 边缘示例中的图像不同。 原因是 OpenPose 的关键点检测没有指定脚的方向。
2、可用的 ControlNet模型
现在让我们看看 ControlNet 模型可以做什么。 当我解释如何使用 ControlNet 扩展时,你将确切地了解它们的作用。
2.1 OpenPose 检测器
OpenPose 检测人体关键点,例如头部、肩膀、手等的位置。它对复制人体姿势很有用,但对其他细节(例如服装、发型和背景)没有帮助。
![](http://www.bimant.com/blog/content/images/2023/03/image-177.png)
2.2 Canny边缘检测器
Canny 边缘检测器是一种通用的老式边缘检测器。 它提取图像的轮廓。 它对于保留原始图像的构图很有用。
![](http://www.bimant.com/blog/content/images/2023/03/image-178.png)
2.3 直线检测器
ControlNet 可与 M-LSD(移动线段检测)一起使用,这是一种快速直线检测器。 它对于提取具有直边的轮廓非常有用,例如室内设计、建筑物、街景、相框和纸张边缘。
![](http://www.bimant.com/blog/content/images/2023/03/image-179.png)
2.4HED 边缘检测器
HED(整体嵌套边缘检测)是一种边缘检测器,擅长像真人一样生成轮廓。 根据 ControlNet 的作者,HED 适用于重新着色和重新设计图像。
![](http://www.bimant.com/blog/content/images/2023/03/image-180.png)
2.5 涂鸦
Controlnet 还可以将你涂鸦的东西变成图像!
![](http://www.bimant.com/blog/content/images/2023/03/image-181.png)
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。
![](http://www.bimant.com/blog/content/images/2023/03/image-182.png)
按播放按钮启动 AUTOMATIC1111。 就可以了!
3.2 在 Windows PC 或 Mac 上安装 ControlNet
你可以在 Windows PC 或 Mac 上将 ControlNet 与 AUTOMATIC1111 结合使用。 如果你尚未安装 AUTOMATIC1111,请按照这些文章中的说明进行安装。
如果您已经安装了 AUTOMATIC1111,请确保您的副本是最新的。
要安装 ControlNet 扩展,请转至扩展选项卡并选择可用子选项卡。 按load from按钮。
![](http://www.bimant.com/blog/content/images/2023/03/image-183.png)
在新出现的列表中,找到扩展名为 sd-webui-controlnet 的行。 按安装。
![](http://www.bimant.com/blog/content/images/2023/03/image-184.png)
重新启动 AUTOMATIC1111 webui。
如果扩展安装成功,你将在 txt2img 选项卡中看到一个名为 ControlNet 的新可折叠部分。 它应该位于脚本下拉菜单的正上方。
![](http://www.bimant.com/blog/content/images/2023/03/image-185.png)
这表示扩展安装成功。
ControlNet 的作者发布了一些预训练的 ControlNet 模型,可以在这个页面上找到。
WebUI 社区托管半精度版本的 ControlNet 模型,其文件大小更小。 它们下载速度更快,存储更容易,为什么不呢? 你可以在这里找到它们。
要使用这些模型,请下载模型文件并将它们放在扩展的模型文件夹中。 模型文件夹的路径是
stable-diffusion-webui/extensions/sd-webui-controlnet/models
不需要下载所有模型。 如果这是你第一次使用 ControlNet,可以直接下载 openpose 模型。
4、在 AUTOMATIC1111 中使用 ControlNet
你将在本节中学习使用扩展的一个简单示例。 稍后将看到每个设置的详细说明。
你应该安装 ControlNet 扩展以跟上本节的内容,可以通过查看下面的 ControlNet 部分进行验证。
![](http://www.bimant.com/blog/content/images/2023/03/image-186.png)
按右侧的插入符号以展开 ControlNet 面板。 它显示了控制旋钮的完整部分和图像上传画布。
![](http://www.bimant.com/blog/content/images/2023/03/image-188.png)
我将使用下图向你展示如何使用 ControlNet。 你可以使用下载按钮下载图像以按照教程进行操作。
![](http://www.bimant.com/blog/content/images/2023/03/image-189.png)
4.1 文本到图像设置
ControlNet 需要与稳定扩散模型一起使用。 在 Stable Diffusion 检查点下拉菜单中,选择要与 ControlNet 一起使用的模型。 选择 v1-5-pruned-emaonly.ckpt 以使用 v1.5 基础模型。
![](http://www.bimant.com/blog/content/images/2023/03/image-190.png)
在 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 应该如下所示。
![](http://www.bimant.com/blog/content/images/2023/03/image-191.png)
4.2 ControlNet 设置
现在我将讨论需要在 ControlNet 面板中执行的操作。
首先将图像上传到图像画布。
选中启用复选框。
你将需要选择预处理器和模型。 Preprocessor只是前面提到的annotator的不同名称,比如OpenPose keypoint detector。 让我们选择 openpose 作为预处理器。
所选的 ControlNet 模型必须与预处理器一致。 对于 OpenPose,你应该选择 control_openpose-fp16 作为模型。
ControlNet 面板应如下所示。
![](http://www.bimant.com/blog/content/images/2023/03/image-192.png)
就这样。 现在按生成开始使用 ControlNet 生成图像。
你应该看到生成的图像遵循输入图像的姿势。 最后一张图像直接来自预处理步骤。 在这种情况下,它是检测到的关键点。
![](http://www.bimant.com/blog/content/images/2023/03/image-193.png)
这是使用 ControlNet 的基础知识! 完成后,取消选中启用复选框以禁用 ControlNet 扩展。
原文链接:ControlNet: Control human pose in Stable Diffusion
BimAnt翻译整理,转载请标明出处