首先本章要介绍的ControlNet是Stable Diffusion WebUI中的一个重要插件,它可以帮助AI绘制出我们想要的“姿态”、“手”与“物件”。可以让WebUI免于“抽卡”,实现绘图姿态自由。
参考视频:https://www.bilibili.com/video/BV1vL411X7U9

0. ControlNet安装流程

打开WebUI,点击“扩展”(Extensions)菜单栏。在“扩展的git仓库网址”(URL for extension’s repository)参数栏中输入controlnet的git仓库地址:

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

然后点击安装,回到“设置”菜单栏重启WebUI以激活ControlNet插件。
此时如果安装成功的话,就可以在文生图的首页看见“controlnet”的插件框了。

1. ControlNet模型下载

controlnet需要另外安装自己的控制模型来进行辅助。
原本的大型预训练模型: https://huggingface.co/lllyasviel/ControlNet/tree/main/models
而压缩模型、第三方模型:https://huggingface.co/TencentARC/T2I-Adapter/tree/main/models
其中:

  1. 大型预训练模型有8个5.71GB的大模型
  2. 精简模型在第二个链接中,以“coadapter”开头,一共有6个(加载运算时间更短,对设备更友好)【推荐】
  3. 第三方模型是TX提供的,更快更小,而且有新功能color和style两个新模型。

其中各个模型与ControlNet预处理器的对应关系如下图所示:
A013-1.png

我们需要把下载好的ControlNet模型丢到—>启动器根目录下的

1
\extensions\sd-webui-controlnet\models

目录下,就OK拉!

2. ControlNet插件参数介绍

这里主要介绍一些大众常用的参数调节,由于ControlNet插件仍处于高频更新状态,所以可能界面大家都不太一样,但是主要的参数不会变化太多。

  1. 启用:就是选了就启用
  2. 低显存优化:显存不够就选它(有时候我6G显存也会爆,就靠它了)
  3. 预处理器下拉菜单:每一个预处理器都决定了ControlNet不同的功能。(预处理器和模型都需要对应使用)
  4. 权重:Controlnet的发挥占比(低重绘+高权重=锁定图片细节/更改画风滤镜;高重绘+低权重=修改图片细节)
  5. 引导介入时机(输入权重)/引导退出时机(输出权重):分别代表了ControlNet在第几步开始介入/退出。
  6. 画布宽高:ControlNet影响的画布大小(与生成的宽高比无关)
  7. 预处理预览:可以看见各个预处理器的预渲染。

3. Controlnet预处理器介绍

每个ControlNet预处理器都有着不同的功能,下面就进行介绍:

3.1 Canny (边缘检测)

1
canny (Canny 边缘检测 (Canny edge detection)) -- control_sd15_canny

“线稿”预处理器,用于标注轮廓,褶皱,动作,表情。多用于3转2(二次元开心)
缺点:主体容易受到背景轮廓影响。
具体参数:

  • 预处理器分辨率:线稿的细节强度(分辨率越高线稿越细致)
  • 弱/强边缘判断:数值越大,检测到的细节就越少。(用于手绘线稿)

3.2 HED (边缘检测)

1
hed (HED 边缘检测 (soft HED edge detection, 保留细节)) -- control_sd15_hed [fef5e48e]

也是一种线稿类预处理器,但细节程度不可以调整。但是其可以保留光影效果,且在表现上高于Canny,所以更推荐HED

3.3 Depth (深度检测)

1
depth (MiDaS 深度信息估算 (MiDaS depth estimation))/或者其他depth预处理器比如lerse -- control_sd15_depth [fef5e48e]

depth系列作为深度检测,都可以获取景深(画面越白,离我们越近)
缺点:无法捕捉细节
所以常用于更换画风/主体/更换背景

【如何利用Depth更换背景?】

  1. 先丢一张图片到controlnet插件中,点击启用和guess mode。
  2. 文生图中输入背景信息(负面prompt可以用EasyNegative,采样建议使用DPM++ 2M Karras)
  3. 调整一下controlnet的权重到0.4-0.5左右。
  4. 生成!

3.4 MLSD (线性检测)

1
mlsd (M-LSD 线条检测 (M-LSD line detection)) -- control_sd15_mlsd [fef5e48e]

这个预处理器对线性十分敏感,不会改变图片的结构和透视关系,所以在房屋建筑/室内设计中很常用。
对于直线/棱角的检测很优秀。
可以通过添加“nobody”tag,去除示意图中的人物,只留下室内图。

3.5 Normal map (法线贴图)

1
normal_map (法线贴图 (Normal map)) -- control_sd15_normal [fef5e48e]

这个预处理器通过计算光线在每一个切面上的法线反射,生成一种凹凸的效果。因此,常用于检测主体,构建光影。
适合单主体/3D建模。
其中,背景识别阈值可以用于调整背景的识别(阈值越高,背景识别的可能性就越低,但是主体也有概率被吃掉)
总结来说,其功能为去除背景/保留光影。

3.6 Openpose (姿态检测)【❤】

1
(OpenPose 姿态检测 (OpenPose pose detection)) -- control_sd15_openpose [fef5e48e]

openpose可以用于判断主体的姿态动作,常配合另一个插件“openpose editor”
仓库地址如下:

1
https://github.com/fkunn1326/openpose-editor

从菜单栏打开openpose编辑器,主要要注意的有画布的宽高,以及“Detect from Image”可以从现成的图片识别姿态(半身图有概率识别出BUG)
调整好姿态以后,就可以点击文生图转到文生图的Controlnet插件中。
注意:此时,预处理器要选“none”,模型依旧“control_sd15_openpose [fef5e48e]”没有关系。

3.7 Segmentation (语意分割)

用于修改风景图/室内设计图。

3.8 Scribble (涂鸦)

1
scribble (涂鸦 (scibble)) -- control_sd15_scribble [fef5e48e]

这个预处理器用于拯救手残,画稿上色等领域。
只有拥有一定绘画基础的人才能驾御住。

3.9 Fake scribble (伪涂鸦)

常用于材质更换,(设计图洗稿?)