ControlNet v1.1:完整指南
作者:[够儿]
ControlNet 是一种稳定的扩散模型,可让您从参考图像复制构图或人体姿势。
经验丰富的 Stable Diffusion 用户知道生成您想要的精确合成有多么困难。这些图像有点随机。您所能做的就是玩数字游戏:生成大量图像并选择您喜欢的图像。
借助 ControlNet,Stable Diffusion 用户终于可以精确地控制对象的位置和外观!
在这篇文章中,您将了解您需要了解的有关 ControlNet 的所有信息。
- 什么是控制网
- 如何在 Windows、Mac 和 Google Colab 上安装 ControlNet
- 设置和一些常见用例。
什么是 ControlNet ?
ControlNet 是一种用于控制Stable Diffusion 模型的神经网络模型。您可以将 ControlNet 与任何稳定扩散模型一起使用。
使用稳定扩散模型的最基本形式是文本到图像。它使用文本提示作为条件来引导图像生成,以便您生成与文本提示匹配的图像。
除了文本提示之外,ControlNet 还添加了一个条件。额外的调节在 ControlNet 中可以采用多种形式。
展示 ControlNet 可以做什么的两个示例:通过 (1) 边缘检测和 (2) 人体姿势检测来控制图像生成。
边缘检测示例
如下图所示,ControlNet 使用额外的输入图像并使用 Canny 边缘检测器检测其轮廓。然后将包含检测到的边缘的图像保存为 控制图 。它作为文本提示的额外条件输入到 ControlNet 模型中。
从输入图像中提取特定信息(在本例中为边缘)的过程称为 注释 (在研究文章中)或 预处理 (在 ControlNet 扩展中)。
人体姿势检测示例
Openpose是一种快速人体关键点检测模型,可以提取人体姿势,如手、腿和头部的位置。请参见下面的示例。
使用 Openpose 进行人体姿势检测注释的输入图像。
下面是使用 OpenPose 的 ControlNet 工作流。使用 OpenPose 从输入图像中提取关键点,并将其保存为包含关键点位置的控制图。然后将其作为额外条件与文本提示一起提供给 Stable Diffusion。图像是根据这两个条件生成的。
使用Canny边缘检测和Openpose有什么区别?Canny 边缘检测器提取主体和背景的相似边缘。它倾向于更忠实地翻译场景。可以看到跳舞的男人变成了女人,但轮廓和发型都保留了下来。
OpenPose 只检测人体关键点,如头部、手臂等位置。图像生成更自由,但遵循原始姿势。
上面的示例生成了一个左脚指向侧面的女人跳起来,这与原始图像和 Canny Edge 示例中的图像不同。原因是 OpenPose 的关键点检测没有指定脚的方向。
如何使用
按右侧的插入符号以展开 ControlNet 面板。它显示了控制旋钮的完整部分和图像上传画布。
文本到图像设置
ControlNet 需要与稳定扩散模型一起使用 。在Stable Diffusion 检查点下拉菜单中,选择要与 ControlNet 一起使用的模型。选择v1-5-pruned-emaonly.ckpt
使用v1.5 基本模型。
在txt2image选项卡中,编写一个提示和一个可选的否定提示以供 ControlNet 使用。我将使用下面的提示。
迅速的:
全身,年轻女性,头发突出,在餐厅外跳舞,棕色眼睛,穿着牛仔裤
否定提示:
毁容的,丑陋的,坏的,不成熟的
设置图像生成的图像大小。我将为我的演示图像使用宽度 512 和高度 776。请注意, 图像大小是在 txt2img 部分中设置的,而不是在 ControlNet 部分中设置的 。
GUI 应该如下所示。
ControlNet 设置
现在让我们转到 ControlNet 面板。
首先,将图像上传 到图像画布。
选中 启用复选框 。
您将需要选择预处理器和 模型 。Preprocessor只是前面提到的annotator的不同名称,比如OpenPose keypoint detector。让我们选择 openpose 作为 Preprocessor 。
所选的 ControlNet 模型必须与预处理器一致。对于 OpenPose,您应该选择 control_openpose-fp16 作为模型 。
ControlNet 面板应如下所示。
就这样。现在按生成开始使用 ControlNet 生成图像。
您应该看到生成的图像遵循输入图像的姿势。最后一张图像直接来自预处理步骤。在这种情况下,它是检测到的关键点。
完成后,取消选中启用复选框以禁用 ControlNet 扩展。
这是使用 ControlNet 的基础知识!
剩下的就是理解
- 有哪些预处理器可用(有很多!)
- ControlNet 设置
预处理器和模型
使用 ControlNet 的第一步是选择预处理器。打开预览很有帮助,这样您就知道预处理器在做什么。预处理完成后,原始图像将被丢弃,只有预处理后的图像将用于 ControlNet。
要打开预览:
- 选择允许预览
- 或者选择Pixel Perfect:ControlNet 将使用您在文本到图像中指定的图像高度和宽度来生成预处理图像。
- 单击预处理器下拉菜单旁边的爆炸图标
某些控制模型可能会过多地影响图像。如果您发现颜色问题或其他伪像,请降低控制权重。
打开姿势
有多个 OpenPose 预处理器。
OpenPose检测人体关键点,例如头部、肩部、手部等的位置。它对于复制人体姿势非常有用,而无需复制服装、发型和背景等其他细节。
所有 openpose 预处理器都需要与ControlNet 模型下拉菜单中的openpose模型一起使用。
OpenPose 预处理器是:
- OpenPose :眼睛、鼻子、眼睛、脖子、肩膀、肘部、手腕、膝盖和脚踝。
- OpenPose_face : OpenPose + 面部细节
- OpenPose_hand : OpenPose + 手和手指
- OpenPose_faceonly :仅面部细节
- OpenPose_full :以上所有
打开姿势
OpenPose 是基本的 OpenPose 预处理器,可检测眼睛、鼻子、眼睛、颈部、肩部、肘部、腕部、膝盖和脚踝的位置。
OpenPose_face
OpenPose_face 执行 OpenPose 处理器执行的所有操作,但会检测其他面部细节。
它对于复制面部表情很有用。
示例图像:
OpenPose_faceonly
OpenPose 人脸只检测人脸而不检测其他关键点。这对于仅复制面部而不是其他关键点很有用。
请参阅下面的文本到图像示例。身体不受约束。
OpenPose_hand
OpenPose_hand 将关键点检测为 OpenPose 以及手和手指。
示例图像:
OpenPose_full
OpenPose full 检测 openPose 面部和 openPose 手所做的一切。
示例图像:
瓷砖重采样
Tile resample 模型用于向图像添加细节。它通常与放大器一起使用以同时放大图像。
参考
Reference是一组新的预处理器,可让您生成与参考图像相似的图像。图像仍会受到稳定扩散模型和提示的影响。
参考预处理器不使用控制模型。您只需要选择预处理器而不是模型。(实际上,模型下拉菜单将在选择参考预处理器后隐藏。)
有 3 个参考预处理器。
- 参考亚当:通过自适应规范化进行。(纸)
- 仅参考 :将参考图像直接链接到注意力层。
- 参考 adain+attn :以上的组合。
选择这些预处理器之一来使用。
下面是一个例子。
参考图像(输入)。
使用 CLIP 询问器猜测提示。
一个粉红色头发的女人,穿着机器人套装,带有科幻、Artgerm、赛博朋克风格、赛博朋克艺术、复古未来主义
毁容的,丑陋的,坏的,不成熟的
型号:Protogen v2.2
参考亚当
仅供参考
参考adain+attn
我会说如果你扭动我的手臂,仅参考效果最好。
以上图片均来自平衡模式。我看不出改变风格保真度有什么大的不同。
精明
Canny 边缘检测器是一种通用的老式边缘检测器。它提取图像的轮廓。它对于保留原始图像的构图很有用。
在预处理器和模型下拉菜单中选择canny以使用。
在预处理器和模型下拉菜单中选择canny以使用。
生成的图像将遵循轮廓。
深度
深度预处理器根据参考图像猜测深度信息。
- Depth Midasdepth-to-image
:经典的深度估计器。也用于 Official v2
模型。
- Depth Leres
:更多细节但也倾向于渲染背景。
- Depth Leres++
:更多细节。
- Zoe
:细节水平介于 Midas 和 Leres 之间。
参考图片:
深度图:
迈达斯勒雷斯莱雷斯++佐伊
提示与否定提示:
女人复古未来主义
毁容的,丑陋的,坏的,不成熟的
您可以看到生成的图像跟随深度图 (Zoe)。
使用 Depth Zoe 进行文本转图像。
比较详细的Leres++:
具有深度 Leres 的文本到图像。
线条艺术
Line Art 渲染图像的轮廓。它试图将其转换为简单的绘图。
有一些线条艺术预处理器。
- 线条艺术动漫 :动漫风格的线条
- 线条艺术动漫降噪 :细节较少的动漫风格线条。
- Line art realistic :写实风格的线条。
- 粗线条 :写实风格的线条,重量较重。
与线性控制模型一起使用。下面的图像是在控制权重设置为 0.7 的情况下生成的。
线条艺术动漫
线条艺术动漫降噪
线条艺术写实
粗线艺术
MLSD
M-LSD(Mobile Line Segment Detection)是一种直线检测器。它对于提取具有直边的轮廓非常有用,例如室内设计、建筑物、街景、相框和纸张边缘。
曲线将被忽略。
法线贴图
法线贴图指定表面的方向。对于 ControlNet,它是一个图像,用于定义每个像素所在表面的方向。图像像素代表方向,而不是颜色值。
法线贴图的使用类似于深度贴图。它们用于传输参考图像的 3D 合成。
法线贴图预处理器:
- Normal Midas:从Midas
深度图估计法线图。
- Normal Bae法线不确定性方法
:使用Bae等人提出的
估计法线图。
普通迈达斯
与 Midas 深度贴图一样,Midas 法线贴图非常适合将主体与背景隔离开来。
普通裴
Bae 法线贴图倾向于在背景和前景中渲染细节。
涂鸦
涂鸦预处理器将图片变成涂鸦,就像手绘的一样。
所有这些预处理器都应该与涂鸦控制模型一起使用。
涂鸦HED
HED 产生粗糙的涂鸦线条。
涂鸦小笛
Pidinet 倾向于生成细节很少的粗线。它适用于复制没有精细细节的电路板轮廓。
涂鸦 xDoG
细节级别可通过调整XDoG 阈值来控制,使 xDoG 成为创建涂鸦的多功能预处理器。
分割
分割预处理器标记参考图像中的对象类型。
下面是一个正在运行的分段处理器。
建筑物、天空、树木、人和人行道都标有不同的预定义颜色。
您可以在此处的颜色图中找到ufade20k和ofade20k的对象类别和颜色。
有几个细分选项
请注意,ADE20k 和 COCO 分割的颜色图是不同的。
您可以使用分段预处理器来传输对象的位置和形状。
下面是使用具有相同提示和种子的预处理器。
未来城市,树木,建筑,赛博朋克
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 的相同提示。配色方案截然不同。
彩格T2I适配器
彩色网格 T2i 适配器预处理器将参考图像缩小 64 倍,然后将其扩展回原始大小。净效果是局部平均颜色的网格状补丁。原始参考图像:
使用 t2ia_color_grid 预处理:
然后可以将预处理图像与 T2I 颜色适配器 ( ) 控制模型一起使用t2iadapter_color
。
图像生成将在空间上松散地遵循配色方案。
现代客厅
增加 ControlNet 权重以使其更紧密地跟随。
您也可以为此 T2I 颜色模型使用预处理器 None。
在我看来,它与image-to-image非常相似。
Clip vision 型 T2I 适配器
t2ia_style_clipvision将参考图像转换为 CLIP 视觉嵌入。此嵌入包含有关图像内容和样式的丰富信息。
您将需要使用控制模型 t2iadapter_style_XXXX 。
看看这个惊人的风格转换:
参考图片:
T2I 适配器 – CLIP 视觉:
科幻女孩
如果关闭 ControlNet,此提示将生成以下内容。
所有 ControlNet 设置说明
您会在 ControlNet 扩展中看到很多设置!当您第一次使用它时可能会有点害怕,但让我们一个一个地了解它们。
这将是一次深潜。休息一下,如果需要的话去洗手间……
输入控件
图像画布 :您可以将输入图像拖放到此处。您还可以单击画布并使用文件浏览器选择一个文件。 输入图像将由预处理器下拉菜单中选定的预处理器进行处理 。将创建一个控制图。
写入图标 :创建一个带有白色图像的新画布,而不是上传参考图像。它用于直接创建涂鸦。
相机图标 :使用设备的相机拍照并将其用作输入图像。您需要授予浏览器访问相机的权限。
选型
启用 :是否启用 ControlNet。
低 VRAM :适用于 VRAM 低于 8GB 的 GPU。这是一项实验性功能。检查您是否用完了 GPU 内存,或者想要增加处理的图像数量。
允许预览 :选中此选项可在参考图像旁边启用预览窗口。我建议您选择此选项。使用预处理器下拉菜单旁边的爆炸图标来预览预处理器的效果。
Preprocessor : 预处理器(在研究文章中称为注释器),用于对输入图像进行预处理,例如检测边缘、深度和法线贴图。None使用输入图像作为控制图。
模型 :要使用的 ControlNet 模型。如果您选择了预处理器,您通常会选择相应的模型。ControlNet 模型与在 AUTOMATIC1111 GUI 顶部选择的稳定扩散模型一起使用。
控制体重
在预处理器和模型下拉菜单下方,您将看到三个滑动条,可让您调整控制效果: 控制权重 、开始和 结束控制步骤 。
我会用下图来说明控制体重的效果。这是一个女孩坐下的图像。
但是在提示中,我会要求生成 一个站着的女人 。
全身,年轻女性,头发上的亮点,站在餐厅外,蓝眼睛,穿着裙子,侧光
Weight :相对于提示给予控制图的强调程度。它类似于提示中的关键字权重,但适用于控制图。
以下图像是使用 ControlNet OpenPose 预处理器和 OpenPose 模型生成的。
重量 1重量 0.5重量 0.3重量 0.1
如您所见, Controlnet weight 控制相对于 prompt 遵循控制图的程度 。权重越低,ControlNet 对图像遵循控制图的要求就越低。
启动 ControlNet 步骤 :首先应用 ControlNet 步骤。0 表示第一步。
结束 ControlNet 步骤 :ControlNet 步骤结束。1 表示最后一步。
让我们将开始步骤固定为 0,并更改结束 ControlNet 步骤以查看会发生什么。
结束 ControlNet 步骤:1结束 ControlNet 步骤:0.3结束 ControlNet 步骤:0.2结束 ControlNet 步骤:0.1
由于初始步骤设置了全局组成(采样器在每个步骤中去除了最大量的噪声,并且它从潜在空间中的随机张量开始),即使您仅将 ControlNet 应用于少至 20% 的部分,姿势也会被设置第一个采样步骤。
相比之下,更改结束 ControlNet 步骤的影响较小,因为全局组合是在开始步骤中设置的。
控制方式
平衡 :ControlNet 应用于采样步骤中的条件化和非条件化。这是标准的操作模式。
我的提示更重要: ControlNet 的效果在 U-Net 注入的实例中逐渐减少(一个采样步骤中有 13 个)。最终效果是您的提示比 ControlNet 具有更大的影响力。
ControlNet 更重要 :在无条件时关闭 ControlNet。实际上,CFG 规模也可以作为 ControlNet 效果的乘数。
如果您不完全了解它们的实际工作原理,请不要担心。选项标签准确地说明了效果。
调整模式
调整大小模式控制当输入图像或控制图的大小与要生成的图像的大小不同时要做什么。如果它们具有相同的纵横比,则您无需担心这些选项。
我将通过设置文本到图像生成横向图像来演示调整大小模式的效果,而输入图像/控制图是纵向图像。
Just Resize :独立缩放控制图的宽度和高度以适合图像画布。 这将改变控制贴图的纵横比 。
女孩现在需要身体前倾,这样她仍然在画布内。您可以使用此模式创建一些有趣的效果。
控制图生成的图像Just Resize缩放控制图以适合图像画布。
裁剪和调整大小 :使图像画布适合控制地图。裁剪控制图,使其与画布大小相同。
因为控制图在顶部和底部被裁剪了,所以我们的女孩也是如此。
控制图生成的图像裁剪和调整大小使图像画布适合并裁剪控制图。
调整大小和填充 :使整个控制图适合图像画布。使用空值扩展控制图,使其与图像画布大小相同。
与原始输入图像相比,侧面有更多空间。
控制图生成的图像调整大小和填充使整个控制图适合图像画布并扩展控制图。
好的,现在(希望)您知道所有设置。让我们探索一些使用 ControlNet 的想法。
多个控制网
您可以多次使用 ControlNets 来生成图像。让我们来看一个例子。
型号 :Protogen v2.2
提示 :
一位宇航员坐着,外星球
否定提示:
毁容的,畸形的,丑陋的
此提示生成具有多种构图的图像。
假设我想独立控制宇航员和背景的组成。为此,我们可以使用多个(在本例中为 2 个)ControlNet。
我将使用此参考图像来固定宇航员的姿势。
ControlNet 0的设置:
- 启用 :是
- 预处理器 :OpenPose
- 型号 :control_xxxx_openpose
- 调整大小模式:调整大小和重新填充(因为我的原始参考图像是纵向的)
我将使用以下参考图像作为背景。
深度模型非常适合这个目的。您将想要使用哪种深度模型和设置来提供您想要的深度图。
ControlNet 1的设置:
- 启用 :是
- 控制重量 :0.45
- 预处理器 :depth_zeo
- 型号 :control_XXXX_depth
- 调整大小模式 :裁剪和调整大小
现在我可以独立控制主体和背景的构图:
尖端:
- 如果其中一个没有完成其工作,请调整 ControlNet 权重。
- 如果您有最终图像的不同尺寸的参考图像,请注意调整大小模式。
使用 ControlNet 的一些想法
复制人体姿势
也许 ControlNet 最常见的应用是复制人体姿势。这是因为通常很难控制姿势……直到现在!输入图像可以是 Stable Diffusion 生成的图像,也可以是从真实相机拍摄的图像。
OpenPose模型
要使用 ControlNet 传输人体姿势,请按照说明在 AUTOMATIC1111 中启用 ControlNet。使用以下设置。
预处理器 :openpose
型号 :control_…._openpose
确保您已选中 Enable 。
这里有一些例子。
示例 1:从图像复制姿势
作为一个基本示例,让我们复制下图一位欣赏树叶的女性的姿势。
输入图像
使用各种模型和提示,您可以显着改变内容但保持姿势不变。
梦幻般的逼真模型任何v3模型梦想塑造者模型任何v3模型
示例 2:重新混合电影场景
您可以将低俗小说中标志性的舞蹈场景重现为公园里的一些瑜伽练习。
这将 ControlNet 与DreamShaper 模型结合使用。
提示:女性在公园外做瑜伽的照片。负面提示:毁容、丑陋、不良、不成熟
这是使用相同的提示,但使用Inkpunk Diffusion 模型。(您需要在提示中添加激活关键字nvinkpunk )
与墨水朋克扩散模型相同的提示。
使用 ControlNet 风格化图像
使用提示
下面是v1.5的模型但是各种提示实现不同的风格。使用了具有各种预处理功能的 ControlNet。最好试验一下,看看哪个效果最好。
像素艺术,精明3D 渲染,精明黑与白,HED水彩,普通在提示中使用关键字通过 ControlNet 对图像进行风格化。
使用模型
您还可以使用模型来风格化图像。下面是使用Anythingv3、DreamShaper和OpenJourney模型使用提示“贝多芬的绘画”生成的。
任何v3梦想塑造者开放旅程墨水朋克扩散
使用 Magic Pose 控制姿势
有时您可能无法找到具有您想要的确切姿势的图像。您可以使用Magic Poser(信用)等软件工具创建自定义姿势。
第 1 步:转到Magic Poser 网站。
第二步:移动模型关键点,自定义姿势。
第 三 步:按预览。截取模型的屏幕截图。您应该得到如下图所示的图像。
来自 Magic Poser 的人体姿势。
第 4 步:使用 OpenPose ControlNet 模型。选择您选择的模型和提示以生成图像。
下面是使用1.5 模型和DreamShaper模型生成的一些图像。在所有情况下都很好地复制了姿势。
室内设计理念
您可以使用 Stable Diffusion ControlNet 的直线探测器 MLSD 模型来生成室内设计创意。以下是 ControlNet 设置。
预处理器 :mlsd
型号 :mlsd
从任何室内设计照片开始。让我们以下面的一个为例。
迅速的:
获奖客厅
模型 :稳定扩散 v1.5
下面是生成的一些设计思路。
或者,您可以使用深度模型。它将强调保留深度信息而不是直线。
预处理器 :Depth Midas
型号 : 深度
生成的图像:
Stable Diffusion深度模型与ControlNet的区别
Stable Diffusion 的创造者 Stability AI 发布了一个深度到图像的模型。它与 ControlNet 有很多相似之处,但也有重要区别。
先说说有什么相似之处。
- 它们都是稳定扩散模型……
- 他们都使用两个条件(预处理图像和文本提示)。
- 他们都使用MiDAS来估计深度图。
不同之处在于
- Depth-to-image 模型是 v2 模型。ControlNet 可用于任何 v1 或 v2 模型。ControlNet 可以使用任何v1.5 基本模型的
这一点很重要,因为众所周知 v2 模型很难使用。人们很难生成好的图像。
v1 模型这一事实不仅打开了对
深度调节,而且还打开了社区发布的数千个特殊模型。
- ControlNet 更通用。除了深度,它还可以用边缘检测、姿势检测等条件。
- ControlNet 的深度图比图像深度图具有更高的分辨率。
ControlNet 如何工作?
如果不解释 ControlNet 在幕后的工作原理,本教程将是不完整的。
ControlNet 的工作原理是将可训练的网络模块附加到稳定扩散模型的U-Net (噪声预测器)的各个部分。Stable Diffusion 模型的权重是锁定的,因此它们在训练过程中是不变的。在训练期间仅修改附加模块。
研究论文中的模型图很好地总结了这一点。最初,附加网络模块的权重全部为零,使新模型能够利用经过训练和锁定的模型。
在训练期间,每个训练图像都会提供两个条件。(1) 文本提示,以及 (2) 控制图 ,例如 OpenPose 关键点或 Canny 边。ControlNet 模型学习根据这两个输入生成图像。
每种控制方法都是独立训练的。
转自
[https://stable-diffusion-art.com/controlnet/](https://stable-diffusion-art.com/controlnet/)stable-diffusion-art.com/controlnet/