ControlNet 是一种Stable Diffusion模型,可让您从参考图像复制构图或人体姿势。
经验丰富的Stable Diffusion用户知道生成您想要的精确成分是多么困难。这些图像是随机的。你所能做的就是玩数字游戏:生成大量图像并选择你喜欢的一张。
借助 ControlNet,Stable Diffusion用户终于可以精确控制拍摄对象的位置和外观!
在这篇文章中,您将了解有关 ControlNet 所需的一切。
- 什么是Controlnet
- 如何在 Windows、Mac 和 Google Colab 上安装 ControlNet
- 设置和一些常见用例。
什么是ControlNet?
ControlNet 是一种用于控制Stable Diffusion模型的神经网络模型。您可以将 ControlNet 与任何Stable Diffusion模型一起使用。
使用Stable Diffusion模型的最基本形式是文本生成图像。它使用文本提示词作为指导图像生成的条件,以便您生成与文本提示词匹配的图像。
除了文本提示词之外,ControlNet 增加加了一项条件。ControlNet 中的额外调节可以采取多种形式。
让我向您展示 ControlNet 功能的两个示例:通过 (1) 边缘检测和 (2) 人体姿势检测控制图像生成。
边缘检测示例
如下图所示,ControlNet 获取额外的输入图像并使用 Canny 边缘检测器检测其轮廓。然后将包含检测到的边缘的图像保存为控制图。它被输入 ControlNet 模型作为文本提示的额外条件。
具有 Canny 边缘调节功能的Stable Diffusion ControlNet。
从输入图像中提取特定信息(在本例中为边缘)的过程称为标注(在研究文章中)或预处理(preprocessing)(在 ControlNet 扩展中)。
人体姿态检测示例
边缘检测并不是图像预处理的唯一方法。Openpose是一种快速人体关键点检测模型,可以提取人体姿势,例如手、腿和头部的位置。请参阅下面的示例。
以下是使用 OpenPose 的 ControlNet 工作流程。使用 OpenPose 从输入图像中提取关键点,并将其保存为包含关键点位置的控制图。然后将其与文本提示一起作为额外条件馈送到Stable Diffusion。图像是根据这两个条件生成的。
使用 Canny 边缘检测和 Openpose 有什么区别?Canny 边缘检测器可提取拍摄对象和背景的边缘。它往往会更忠实地翻译场景。你可以看到跳舞的男人变成了女人,但轮廓和发型都保留了。
OpenPose仅检测人体关键点,如头部、手臂等位置。图像生成更加自由,但遵循原始姿势。
上面的例子生成了一个左脚指向侧面的女人跳起来,与原始图像和 Canny Edge 例子中的图像不同。原因是OpenPose的关键点检测没有指定脚的方向。
安装Stable Diffusion ControlNet
(针对 ControlNet v1.1 更新了说明)
让我们逐步了解如何在AUTOMATIC1111中安装 ControlNet ,这是一种流行且功能齐全(并且免费!)的Stable Diffusion GUI。我们将使用这个扩展,它是使用 ControlNet 的事实上的标准。
如果您已经安装了 ControlNet,则可以跳至下一部分以了解如何使用它。
在 Google Colab 中安装 ControlNet
通过我们的快速入门指南中的一键Stable Diffusion Colab 笔记本,可以轻松使用 ControlNet 。
在Colab 笔记本的扩展部分中,选中ControlNet。
按播放按钮启动 AUTOMATIC1111。就是这样!
在 Windows PC 或 Mac 上安装 ControlNet
您可以在Windows PC或Mac上将 ControlNet 与 AUTOMATIC1111 结合使用。如果您尚未安装 AUTOMATIC1111,请按照这些文章中的说明进行操作。
如果您已经安装了 AUTOMATIC1111,请确保您的副本是最新的。
安装 ControlNet 扩展 (Windows/Mac)
- 导航到 扩展 页面。
2. 选择 从 URL 安装 选项卡。
3. 将以下 URL 放入 扩展存储库 字段的 URL 中。
https://github.com/Mikubill/sd-webui-controlnet
单击 “安装” 按钮。
5. 等待表示扩展已安装的确认消息。
6. 重新启动 AUTOMATIC1111。
7. 访问 ControlNet 模型 页面。
8. 下载所有模型文件(文件名以 结尾 .pth
)。
(如果不想全部下载,可以暂时下载最常用的openpose和canny模型。)
9. 将模型文件放入 ControlNet 扩展的models 目录中。
stable-diffusion-webui\extensions\sd-webui-controlnet\models
重新启动 AUTOMATIC1111 webui。
如果扩展安装成功,您将在txt2img选项卡中看到一个名为ControlNet的新可折叠部分。它应该位于脚本下拉菜单的正上方。
这表明扩展安装成功。
安装 T2I 适配器
T2I 适配器是神经网络模型,用于为扩散模型的图像生成提供额外的控制。它们在概念上与 ControlNet 类似,但设计不同。
A1111 ControlNet 扩展可以使用 T2I 适配器。您需要在此处下载模型。获取文件名如下的文件t2iadapter_XXXXX.pth
许多 T2I 适配器的功能与 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。
- 转到扩展页面。
- 在“已安装”选项卡中,单击“检查更新”。
- 等待确认消息。
- 完全关闭并重新启动 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 面板。它显示了控制旋钮的完整部分和图像上传画布。
我将通过下图向您展示如何使用ControlNet。
文本生成图像设置
ControlNet 需要与Stable Diffusion模型一起使用。在Stable Diffusion checkpoint下拉菜单中,选择要与 ControlNet 一起使用的模型。选择v1-5-pruned-emaonly.ckpt
使用v1.5 基本模型。
在txt2image选项卡中,编写一个提示词和反向提示词。我将使用下面的提示词。
提示词:
全身,年轻女性,头发亮点,在餐厅外跳舞,棕色眼睛,穿着牛仔裤
full-body, a young female, highlights in hair, dancing outside a restaurant, brown eyes, wearing jeans
反向提示词:
毁容、丑陋、不好、不成熟
disfigured, ugly, bad, immature
设置图像生成的图像尺寸(image size)。我将在演示图像中使用宽度 512 和高度 776。请注意,图像大小是在 txt2img 部分中设置的,而不是在 ControlNet 部分中设置的。
GUI 应该如下所示。
ControlNet设置
现在让我们转到 ControlNet 面板。
首先,将图像上传到图像画布。
选中启用(Enable)复选框。
您将需要选择一个预处理器(preprocessor)和一个模型。预处理器只是前面提到的标注器的不同名称,例如 OpenPose 关键点检测器。让我们选择openpose 作为 Preprocessor。
所选的 ControlNet 模型必须与预处理器一致。对于 OpenPose,您应该选择control_openpose-fp16 作为模型。
ControlNet 面板应如下所示。
就这样。现在按“生成”开始使用 ControlNet 生成图像。
您应该看到生成的图像遵循输入图像的姿势。最后一张图像直接来自预处理步骤。在本例中,它是检测到的关键点。
这是使用 ControlNet 的基础知识!
剩下的就是理解
- 可用的预处理器有哪些(有很多!)
- Controlnet设置
预处理器(Preprocessors)和模型
使用 ControlNet 的第一步是选择预处理器。打开预览很有帮助,这样您就可以了解预处理器正在做什么。预处理完成后,原始图像将被丢弃,仅预处理后的图像将用于 ControlNet。
要打开预览:
- 选择允许预览(Allow Preview)。
- (可选)选择“像素完美”。ControlNet 将使用您在文本到图像中指定的图像高度和宽度来生成预处理图像。
- 单击“预处理器”下拉菜单旁边的爆炸图标。
某些控制模型可能对图像影响太大。如果您发现颜色问题或其他伪影,请减少控制权重(Control Weight)。
选择正确的模型
选择预处理器后,您必须选择正确的模型。
很容易辨别 v1.1 中使用的正确模型。您所需要做的就是选择与预处理器具有相同起始关键字的模型。
例如:
预处理器 | 模型 |
---|---|
depth_xxxx | control_xxxx_depth |
lineart_xxxx | control_xxxx_lineart |
openpose_xxxx | control_xxxx_openpose |
OpenPose
有多个 OpenPose 预处理器。
OpenPose可检测人体关键点,例如头、肩膀、手的位置等。它对于复制人体姿势非常有用,而无需复制服装、发型和背景等其他细节。
所有 openpose 预处理器都需要与ControlNet 模型下拉菜单中的openpose模型一起使用。
OpenPose 预处理器是:
- OpenPose:眼睛、鼻子、眼睛、颈部、肩膀、肘部、手腕、膝盖和脚踝。
- OpenPose_face:OpenPose + 面部细节
- OpenPose_hand : OpenPose + 手和手指
- OpenPose_faceonly:仅面部细节
- OpenPose_full:以上所有
Openpose
OpenPose 是基本的 OpenPose 预处理器,可检测眼睛、鼻子、眼睛、颈部、肩膀、肘部、手腕、膝盖和脚踝的位置。
OpenPose_face
OpenPose_face 执行 OpenPose 处理器执行的所有操作,但会检测其他面部细节。
它对于复制面部表情很有用。
示例图像:
OpenPose_faceonly
OpenPose_faceonly检测面部而不检测其他关键点。这对于仅复制面部而不是其他关键点很有用。
请参阅下面从文本到图像的示例。身体不受约束。
OpenPose_hand
OpenPose_hand 将关键点检测为 OpenPose 以及手和手指。
示例图像:
OpenPose_full
OpenPose 全面检测 openPose 面部和 openPose 手所做的一切。
示例图像:
Tile resample平铺重采样
Tile resample平铺重采样模型用于向图像添加细节。它通常与放大器一起使用,同时放大图像。
请参阅ControlNet Tile Upscaling方法。
Reference参考
Reference参考是一组新的预处理器,可让您生成与参考图像类似的图像。图像仍会受到Stable Diffusion模型和提示词的影响。
Reference参考预处理器不使用控制模型。您只需要选择预处理器,而不需要选择模型。(事实上,选择参考预处理器后,模型下拉菜单将被隐藏。)
有 3 个Reference预处理器。
- Reference adain:通过自适应实例标准化进行风格转移。(论文)
- Reference only:将参考图像直接链接到注意层。
- Reference adain+attn:以上的组合。
选择要使用的这些预处理器之一。
下面是一个例子。
使用 CLIP 询问器猜测提示词。
粉红色头发、穿着机器人套装的女人,科幻、Artgerm、赛博朋克风格、赛博朋克艺术、复古未来主义
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效果最好。
以上图片均来自平衡模式。我认为改变风格保真度没有太大区别。
Canny
Canny 边缘检测器是一种通用的老式边缘检测器。它提取图像的轮廓。它对于保留原始图像的构图很有用。
在预处理器和模型下拉菜单中选择要使用的canny。
生成的图像将遵循轮廓。
Depth深度
Depth深度预处理器从参考图像中猜测深度信息。
- Depth Midas:经典的深度估计器。也用于官方 v2深度图像模型。
- Depth Leres:更多细节,但也倾向于渲染背景。
- Depth Leres++:更多细节。
- Zoe:细节程度介于 Midas 和 Leres 之间。
参考图片:
深度图:
提示词和反向提示词:
复古未来主义的女人
a woman retrofuturism
毁容、丑陋、不好、不成熟
disfigured, ugly, bad, immature
您可以看到生成的图像遵循深度图 (Zoe)。
与更详细的Leres++比较:
Line Art线稿
Line Art线条艺术呈现图像的轮廓。它试图将其转换为简单的绘图。
有一些线条艺术预处理器。
- Line art anime动漫线稿:动漫风格的线条
- Line art anime denoise线条艺术动漫降噪:动漫风格的线条,细节较少。
- Line art realistic线条艺术写实:写实风格的线条。
- Line art coarse粗线条:写实风格的线条,权重较重。
与Line art 控制模型一起使用。
下面的图像是在“控制权重”设置为 0.7 的情况下生成的。
Line Art Anime
Line Art Anime Denoise
Line Art Realistic
Line Art Coarse
MLSD
M-LSD(移动线段检测)是一种直线检测器。它对于提取具有直边的轮廓非常有用,例如室内设计、建筑物、街景、相框和纸张边缘。
曲线将被忽略。
Normal maps法线贴图
Normal maps法线贴图指定表面的方向。对于 ControlNet,它是一个图像,指定每个像素所在表面的方向。图像像素代表表面面向的方向,而不是颜色值。
法线贴图的用法与深度贴图类似。它们用于传输参考图像的 3D 合成。
法线贴图预处理器:
Normal Midas
与 Midas 深度图一样,Midas 法线贴图非常适合将主体与背景隔离。
Normal Bae
Bae 法线贴图倾向于在背景和前景中渲染细节。
Scribbles涂鸦
Scribbles涂鸦预处理器将图片变成涂鸦,就像手绘的一样。
- Scribble HED:整体嵌套边缘检测(HED) 是一种边缘检测器,擅长生成像真人一样的轮廓。据 ControlNet 的作者称,HED 适合对图像进行重新着色和重新设计样式。
- Scribble Pidinet:像素差异网络(Pidinet) 检测曲线和直线边缘。其结果与 HED 类似,但通常会产生更清晰的线条和更少的细节。
- Scribble xdog:EX倾向差分高斯( XDoG)是一种边缘检测方法技术。调整xDoG 阈值并观察预处理器输出非常重要。
所有这些预处理器都应与涂鸦控制模型一起使用。
涂鸦Scribbles HED
HED 产生粗糙的涂鸦线。
涂鸦Scribble Pidinet
Pidit 往往会产生粗线条,细节很少。它非常适合复制没有细节的电路板轮廓。
Scribble xDoG
通过调整XDoG 阈值可以控制细节水平,使 xDoG 成为用于创建涂鸦的多功能预处理器。
Segmentation分割
Segmentation分割预处理器标记参考图像中的对象类型。
下面是一个正在运行的分割处理器。
建筑物、天空、树木、人和人行道都标有不同的预定义颜色。
您可以在此处的颜色图中找到ufade20k和ofade20k的对象类别和颜色。
有几个分割选项
- ufade20k:在ADE20K数据集上训练的UniFormer (uf) 分割。
- ofade20k:在 ADE20k 数据集上训练的OneFormer(of)分割。
- ofcoco:在COCO数据集上训练的 OnFormer 分割。
请注意,ADE20k 和 COCO 分割的颜色图是不同的。
您可以使用Segmentation分割预处理器来传输对象的位置和形状。
下面使用具有相同提示词和种子的这些预处理器。
未来城市,树木,建筑物,赛博朋克
Futuristic city, tree, buildings, cyberpunk
UniFormer ADE20k (unfade20k)
Uniformer 在此示例中准确地标记了所有内容。
OneFormer ADE20k ( ofade20k )
在这种情况下,OneFormer 的噪点较多,但不会影响最终图像。
OneFormer COCO (ofcoco)
OneFormer COCO 的表现类似,但有一些标签错误。
分割是一项强大的技术。您可以进一步操作分割图以将对象放置在精确的位置。使用ADE20k 的颜色图。
Shuffle洗牌
Shuffle预处理器搅动输入图像。让我们看看Shuffle的实际效果。
与Shuffle控制模型一起,Shuffle预处理器可用于传输参考图像的配色方案。
输入图像:
Shuffle洗牌预处理器:
与其他预处理器不同,Shuffle 预处理器是随机的。它将受到您的种子价值的影响。
将 Shuffle 预处理器与 Shuffle 控制模型结合使用。Shuffle 控制模型可以与或不与 Shuffle 预处理器一起使用。
下图是 ControlNet Shuffle 预处理器和 Shuffle 模型(与上一节相同的提示词)。配色方案大致遵循参考图像。
下图仅适用于 ControlNet Shuffle 模型(预处理器:无)。图像构图更接近原图。配色方案与随机排列类似。
供您参考,下图是在没有 ControlNet 的情况下具有相同提示的图像。配色方案截然不同。
Color grid T2I adapter颜色网格T2I适配器
Color grid T2I adapter预处理器将参考图像缩小 64 倍,然后将其扩展回原始大小。最终效果是局部平均颜色的网格状斑块。
原始参考图:
使用 t2ia_color_grid 进行预处理:
然后,预处理后的图像可以与 T2I 颜色适配器 ( t2iadapter_color) 控制模型一起使用。
图像生成将在空间上松散地遵循配色方案。
一个现代的客厅
A modern living room
增加 ControlNet 权重以使其更紧密地跟随。
您还可以为此 T2I 颜色模型使用预处理器 None。
Clip vision style T2I adapter
t2ia_style_clipvision将参考图像转换为 CLIP vision embedding。此embedding包含有关图像内容和风格的丰富信息。
您将需要使用控制模型t2iadapter_style_XXXX。
看看这个惊人的风格转移的实际效果:
输入图片:
T2I 适配器 – CLIP vision:
科幻女孩
sci-fi girl
以下是关闭 ControlNet 时提示词生成的图像。
该功能与Reference ControlNet非常相似,但我对 T2IA CLIP vision的评价更高。
ControlNet Inpainting
ControlNet Inpainting可让您在修复中使用高去噪强度(denoising strength)来生成较大的变化,而不会牺牲整个图片的一致性。
例如,我使用了现实人物的提示词。
年轻女子的照片, 突出头发, 坐在餐厅外, 穿着裙子, 边缘照明, 工作室照明, 看着相机, 单反相机, 超品质, 锐焦, 锐利, 自由度, 胶片颗粒, Fujifilm XT3, 晶莹剔透, 8K UHD 、高细节光泽眼睛、高细节皮肤、皮肤毛孔
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
反向提示词
毁容、丑陋、不良、不成熟、卡通、动漫、3D、绘画、黑白
disfigured, ugly, bad, immature, cartoon, anime, 3d, painting, b&w
我有这张图像,想通过Inpainting来重新生成脸部。
如果我用高去噪强度(> 0.4)修复脸部,结果可能会在全局上不一致。下面是去噪强度为1的图像。
ControlNet Inpainting 是您的解决方案。
要使用 ControlNet Inpainting:
- 最好使用生成图像的相同模型。在txt2img页面生成图像后,单击发送到Inpaint,将图像发送到Img2img页面的Inpaint选项卡。
2. 使用画笔工具在要重新生成的区域上创建遮罩。如果您不熟悉,请参阅有关修复的初学者教程。
3. 将重绘区域设置为仅遮罩。(全图也有效)
4. 将去噪强度设置为 1。(如果没有 ControlNet,通常不会将其设置这么高。)
5. 在ControlNet部分设置以下参数。您无需上传参考图像。
启用:是
预处理器Preprocessor:Inpainting_global_harmonious
模型:ControlNet_xxx_inpaint
6. 按“生成”开始修复。
现在,即使在最大去噪强度 (1) 下,我也能得到与全局图像一致的新面孔!
所有 ControlNet 设置说明
您会在 ControlNet 扩展中看到很多设置!当您第一次使用它时,它可能有点令人生畏,但让我们逐一介绍它们。
这将是一次深入的探索。如果需要的话,休息一下并去洗手间……
输入控制
Image Canvas图像画布:您可以将输入图像拖放到此处。您还可以单击画布并使用文件浏览器选择文件。输入图像将由“预处理器”下拉菜单中选定的预处理器进行处理。将创建控制图。
Write icon铅笔图标:使用白色图像创建新画布,而不是上传参考图像。它用于直接创建涂鸦。
相机图标:使用设备的相机拍摄照片并将其用作输入图像。您需要授予浏览器访问相机的权限。
模型选择
启用:是否启用 ControlNet。
低Low VRAM:适用于 VRAM 小于 8GB 的 GPU。这是一个实验性功能。如果 GPU 内存不足或者想要增加处理的图像数量,选中它。
允许预览Allow Preview:选中此选项可启用参考图像旁边的预览窗口。我建议您选择此选项。使用“预处理器”下拉菜单旁边的爆炸图标可以预览预处理器的效果。
Preprocessor:预处理器(在研究文章中称为标注器),用于对输入图像进行预处理,例如检测边缘、深度和法线贴图。None使用输入图像作为控制图。
模型:要使用的 ControlNet 模型。如果您选择了预处理器,通常会选择相应的模型。ControlNet 模型与在 AUTOMATIC1111 GUI 顶部选择的Stable Diffusion模型一起使用。
Control Weight控制权重
在预处理器和模型下拉菜单下方,您将看到三个滑动条,可让您调节控制效果:控制权重、开始和结束控制步数。
我将用下图来说明控制权重的效果。这是一个女孩坐着的图像,作为控制参考图。
但在提示词中,我会要求生成一个站着的女人。
全身,年轻女性,头发亮点,站在餐厅外,蓝眼睛,穿着裙子,侧光
full body, a young female, highlights in hair, standing outside restaurant, blue eyes, wearing a dress, side light
权重:控制图相对于提示词的重视程度。它类似于提示中的关键字权重,但适用于控制图。
以下图像是使用 ControlNet OpenPose 预处理器和 OpenPose 模型生成的。
正如您所看到的,Controlnet 权重控制参考图相对于提示词的遵循程度。权重越低,ControlNet 对图像遵循参考图的要求就越少。
Starting ControlNet step 开始 ControlNet 步数:开始应用 ControlNet 步数。0 表示第一步。
Ending ControlNet step 结束 ControlNet 步数:结束ControlNet 的步骤。1表示最后一步。
让我们将开始步数固定为 0 并更改结束 ControlNet 步数,看看会发生什么。
由于初始几步设置了全局构图(采样器在每个步骤中消除了最大量的噪声,并且从潜在空间中的随机张量开始),即使您仅将 ControlNet 应用到前 20% 的位置,姿势设置也起作用了。
更改结束 ControlNet 步数的影响较小,因为全局构图是在开始步骤中设置的。
Control Mode控制模式
平衡:ControlNet 适用于采样步骤中的调节和非调节。这是标准操作模式。
My prompt is more important我的提示词更重要: ControlNet 的效果在 U-Net 注入的实例中逐渐减小(一个采样步骤中有 13 个实例)。最终效果是您的提示词比 ControlNet 具有更大的影响力。
ControlNet is more importantControlNet 更重要:CFG scale还充当 ControlNet 效果的乘数。
如果您不完全理解它们的实际工作原理,请不要担心。选项标签准确地说明了效果。
Resize mode调整大小模式
Resize mode调整大小模式控制当输入图像或控制图的大小与要生成的图像的大小不同时要执行的操作。如果这些选项具有相同的宽高比,则无需担心它们。
我将通过设置文本生成图像来生成横向图像来演示调整大小模式的效果,而输入图像/控制图是纵向图像。
Just Resize:独立缩放控制图的宽度和高度以适合图像画布。这将改变控制图的纵横比。
女孩现在需要向前倾斜,以便她仍在画布内。您可以使用此模式创建一些有趣的效果。
Crop and Resize裁剪和调整大小:使图像画布适合控制图。裁剪控制图,使其与画布大小相同。
因为控制图在顶部和底部被裁剪,所以我们的女孩也是如此。
Resize and fill 调整大小和填充:使整个控制图适合图像画布。使用空值扩展控制图,使其与图像画布的大小相同。
与原始输入图像相比,侧面有更多的空格。
好的,现在您知道所有设置。让我们探讨一些使用 ControlNet 的技巧。
多个控制网络,多个Controlnet
您可以多次使用 ControlNet 来生成图像。让我们来看一个例子。
模型:Protogen v2.2
提示词:
坐着的宇航员,外星球
An astronaut sitting, alien planet
反向提示词:
毁容的, 变形的, 丑陋的
disfigured, deformed, ugly
该提示词生成具有多种构图的图像。
假设我想独立控制宇航员和背景的构图。为此,我们可以使用多个(在本例中为 2 个)ControlNet。
我将使用此参考图像来固定宇航员的姿势。
ControlNet 0的设置:
- 启用:是
- 预处理器:OpenPose
- 型号:control_xxxx_openpose
- 调整大小模式:Resize and Refill 调整大小和重新填充(因为我的原始参考图像是纵向的)
我将使用以下参考图像作为背景。
深度模型非常适合此目的。您将想要使用哪个深度模型和设置来提供您想要的深度图。
ControlNet 1的设置:
- 启用:是
- 控制重量:0.45
- 预处理器:depth_zeo
- 型号:control_XXXX_depth
- 调整大小模式:Crop and resize 裁剪并调整大小
现在我可以独立控制主体和背景的构图:
技巧:
- 如果其中之一不起作用,请调整 ControlNet 权重。
- 如果您有与最终图像不同尺寸的参考图像,请注意“调整大小”模式。
使用 ControlNet 的一些技巧
复制人体姿势
也许 ControlNet 最常见的应用是复制人体姿势。这是因为通常很难控制姿势……直到现在!输入图像可以是Stable Diffusion生成的图像,也可以是从真实相机拍摄的图像。
OpenPose模型
要使用 ControlNet 传输人体姿势,请按照说明在 AUTOMATIC1111 中启用 ControlNet。使用以下设置。
预处理器:openpose
模型:control_…._openpose
确保您已选中启用。
这里有一些例子。
示例 1:从图像复制姿势
作为一个基本示例,让我们复制以下图像中一位女士欣赏树叶的姿势。
使用各种模型和提示词,您可以显着改变内容但保持姿势不变。
示例 2:重新混合电影场景
你可以将《低俗小说》中标志性的舞蹈场景改造成公园里的一些瑜伽练习。
这使用 ControlNet 和DreamShaper 模型。
提示词:妇女在公园外做瑜伽的照片。
photo of women doing yoga, outside in a park
反向提示词:毁容、丑陋、不好、不成熟
disfigured, ugly, bad, immature
这是具有相同的提示词,但使用Inkpunk Diffusion model。(您需要在提示词中添加激活关键字nvinkpunk )
使用 ControlNet 对图像进行风格化
使用提示词
以下是v1.5模型,但有不同的提示词来实现不同的风格。使用具有各种预处理的 ControlNet。最好进行试验,看看哪一种效果最好。
使用提示词中的关键字和 ControlNet 对图像进行风格化。
使用模型
您还可以使用模型来风格化图像。下面是使用提示词“贝多芬的绘画 Painting of Beethoven”与Anythingv3、DreamShaper和OpenJourney模型生成的。
使用 Magic Pose 控制姿势
有时您可能无法找到具有您想要的确切姿势的图像。您可以使用Magic Poser(图片来源)等软件工具创建自定义姿势。
第1步:访问Magic Poser网站。
步骤2:移动模型的关键点来定制姿势。
步骤 3:按预览。截取模型的屏幕截图。您应该得到如下图所示的图像。
Magic Poser 中的人体姿势。
步骤 4:使用 OpenPose ControlNet 模型。选择您选择的模型和提示来生成图像。
下面是使用1.5 模型和DreamShaper模型生成的一些图像。在所有情况下,姿势都被很好地复制了。
室内设计创意
您可以使用Stable Diffusion ControlNet 的直线检测器 MLSD 模型来生成室内设计创意。以下是 ControlNet 设置。
预处理器:mlsd
模型: MLSD
从任何室内设计照片开始。我们以下面这个为例。
提示词:
获奖客厅
award winning living room
模型:Stable Diffusion v1.5
以下是一些产生的设计想法。
或者,您可以使用深度模型。它将强调保留深度信息,而不是直线。
预处理器: Depth Midas
型号: Depth
生成的图像:
Stable Diffusion深度模型和 ControlNet 之间的区别
Stability AI 是 Stable Diffusion 的创建者,发布了深度图像模型。它与 ControlNet 有很多相似之处,但也有重要的区别。
我们先来说说相似之处。
差异是
- 图像深度模型是 v2 模型。ControlNet 可与任何 v1 或 v2 型号一起使用。这一点很重要,因为 v2 模型非常难以使用。人们很难产生好的图像。ControlNet 可以使用任何v1 模型这一事实不仅为v1.5 基础模型开辟了深度调节,而且还为社区发布的数千个特殊模型提供了深度调节。
- ControlNet 更加通用。除了深度之外,它还可以通过边缘检测、姿态检测等进行调节。
- ControlNet 的深度图比深度图像的分辨率更高。
ControlNet 是如何工作的?
如果不解释 ControlNet 的底层工作原理,本教程就不完整。
ControlNet 的工作原理是将可训练的网络模块附加到Stable Diffusion模型的U-Net (噪声预测器)的各个部分。Stable Diffusion模型的权重被锁定,以便它们在训练过程中保持不变。训练期间仅修改附加模块。
研究论文中的模型图很好地总结了这一点。最初,附加网络模块的权重均为零,使得新模型能够利用经过训练和锁定的模型。
在训练期间,每个训练图像都会提供两个条件。(1) 文本提示词,以及 (2)控制图,例如 OpenPose 关键点或 Canny 边缘。ControlNet 模型学习根据这两个输入生成图像。
每种控制方法都是独立训练的。
《ControlNet v1.1完整指南》有7条评论