上一次我们已经介绍了如何通过代码的方式使用ControlNet,Stable Diffusion WebUI里面包含了很详细的使用设置,我们可以直接在上面进行操作,所以本文将介绍如何以傻瓜的方式直接使用ControlNet。
如果你用过Stable Diffusion,可能已经注意到图像的输出有无限的结果可能性,就像在赌博一样,即使你输入了如此复杂和精心设计的提示,控制AI的能力仍然是有限的。所以我们就需要一种在最大大程度上能控制输出的方式。
ControlNet是斯坦福大学研究人员开发的Stable Diffusion的扩展,使创作者能够轻松地控制AI图像和视频中的对象。它将根据边缘检测、草图处理或人体姿势等各种条件来控制图像生成。ControlNet可以概括为一种简单的稳定扩散微调方法。
安装插件
在Stable Diffusion WebUI,可以通过下面的标签使用:
如果你没有看到这个标签,可以在最上方的 Extensions 进行安装,如下图所示:
上面图中的地址是:https://github.com/Mikubill/sd-webui-controlnet
安装完后记得点击 Apply and restart UI
打开 ControlNet标签,如下所示:
这样我们就可以在创建图像时具有更高的精度和更好的控制。ControlNet的流行的原因是由于它使用简单,一个特定的姿势或形状可以获得很好的生成效果。
ControlNet功能介绍
安装完成后,我们就开始介绍ControlNet的每个部分,介绍每个配置如何影响输出。
在ControlNet Image复选框中,有几个选项:
- Enable :选中此框以启用ControlNet。
- Invert Input Color:用于检测用户上传的图像。预处理器和模型通常需要在黑色图像上使用白线来检测(也就是灰度图)。但如果你的图是白色图像上有一条黑线,可以使用这个工具来切换颜色。
- RGB to BGR :用于检测用户导入图像中的颜色信息。有时图像中的颜色信息可能与扩展所期望的不同。如果您正在使用“法线映射”,则可以跳过此步骤
- Low VRAM:这将减缓ETA进程,但有助于使用更少的计算空间(显存小于6 GB VRAM建议使用)
- Guess Mode:ControlNet自动识别图像(不需要提示和负面提示)与选定的预处理器,但是这个效果不一定好
Resize提供了调整ControlNet大小和上传图像的纵横比。
- Envelope (Outer Fit):调整Txt2Image的大小以适应ControlNet图像的尺寸。它将调整图像的大小,直到Txt2Image设置可以适合ControlNet图像。
- Scale to Fit (Inner Fit):调整ControlNet图像的大小以适应Txt2Image的尺寸。它将调整图像的大小,直到它能够适应Txt2Image设置的宽度和高度。
- Just Resize:不保留纵横比的情况下,改变ControlNet图像的大小以匹配Txt2Img设置的宽度和高度。这包括拉伸或压缩图像以适应指定的尺寸。
Canvas Width 和 Canvas Height 提供手动创建绘图或草图以,不上传任何图像(最好使用 Scribble 预处理器以获得良好的输出)。它会调整空白画布的大小来进行绘制,不会影响上传的原始图像。
“Preview Annotator Result”能够快速查看选择的预处理器是如何将上传的图像或绘图转换为 ControlNet 的检测图。这对于在渲染输出图像之前尝试各种预处理器特别有用,可以节省我们的时间。如果要删除预览图像,可以单击“Hide Annotator Result”选项。
Preprocessor 和Model 是ControlNet 的主要选项。根据所需的输出,用户可以选择相应的控制方法。每个预处理器都有自己的模型,模型的设计和命名都是一样的。但是它并不限制你混合和匹配所有的预处理器和模型,但是混合多了就会产生负面效果,所以最好使用更加匹配的模型并且越少越好。下面我们介绍几个著名的 ControlNet,并在下面举例说明如何使用它。
常用的ControlNet
1、Canny边缘检测
Canny通过使用边缘检测器创建高对比度区域的轮廓来检测输入图像。线条可以捕捉到非常详细的信息,但如果你的图像背景中有一些物体,它很可能会检测到不需要的物体。所以背景中物体越少效果越好。用于此预处理器的最佳模型是control_sd15_canny。
2、Depth & Depth Leres
这个预处理器有助于生成输入图像的深度估计。深度通常用于控制图像内物体的空间定位。浅色区域意味着它离用户更近,而深色区域则离用户更远。
在大图像时它可能会丢失图像内部的细节(面部表情等)。一般会与control_sd15_depth模型组合使用。Midas Resolution函数用于增加或减少detectmap中的大小和细节级别。它的级别越高,将使用更多的VRAM,但可以生成更高质量的图像,反之亦然。
Depth Leres有与Depth 相同的基本概念,但在地图中包含更广泛的范围。但有时它会从图片中捕获了太多信息,可能会生成与原始图像略有不同的图像。所以最好先试用两种预处理器,然后决定哪一种。
3、HED (Holistically-Nested Edge Detection)
Hed可以在物体周围创建清晰和精细的边界,输出类似于Canny,但减少了噪声和更柔软的边缘。它的有效性在于能够捕捉复杂的细节和轮廓,同时保留细节特征(面部表情、头发、手指等)。Hed预处理器可用于修改图像的风格和颜色。用于此预处理器的最佳模型是control_sd15_hed。
4、MLSD ( Mobile Line Segment Detection)
MLSD Preprocessor 最适合生成强有力的线条,这些线条能够检测出需要独特和刚性轮廓的建筑和其他人造作品。但是它不适用于处理非刚性或弯曲的物体。MLSD适用于生成室内布局或建筑结构,因为它可以突出直线和边缘。用于此预处理器的最佳模型是control_sd15_mlsd。
5、Normal map
法线图使用了三种主要颜色(红、绿、蓝),通过不同的角度来精确定位物体的粗糙度和光滑程度。它生成法线图的基本估计,可以保留相当多的细节,但可能会产生意想不到的结果,因为法线图完全来自图像,而不是在3D建模软件中构建的。
法线图有利于突出复杂的细节和轮廓,并且在定位对象方面也很有效,特别是在接近度和距离方面。“Normal Background Threshold”用于调整背景成分。设置一个更高的阈值可以移除背景的远处部分(将其混合成紫色)。降低阈值将命令AI保留甚至显示额外的背景元素。用于此预处理器的最佳模型是control_sd15_normal。
6、OpenPose
这个预处理器生成了一个基本的骨骼火柴人形象。这种技术被广泛采用,因为多个 OpenPose 骨架可以组合成一个图像,这有助于引导稳定扩散生成多个一致的主题。骨架图有很多关节点,每个点代表如下图所示
要优化 OpenPose 的结果,建议上传一张人体图像(全身或半身)以及想要提取的姿势。用于此预处理器的最佳模型是 control_sd15_openpose。
7、Scribble
涂鸦的目的是从简单的黑白线条画和草图生成图像。用户也可以使用“Canvas”选项创建特定大小的空白画布,用于手动素描(也可以直接上传图像)。如果草图和绘图由白色背景上的黑线组成,则需要选中“Invert Input Color”复选框。用于这个预处理器的最佳模型是control_sd15_openpose。
8、Segmentation
分割预处理器检测并将上传的图像分割为同一图像内的段或区域。该模型在生成一组新的图像时,将detectmap图像应用于文本提示。用于此预处理器的最佳模型是control_sd15_seg。
以上就是常用的ControlNet类型了。
总结
ControlNet是一个非常好的控制Stable Diffusion的方法,如果你想进一步了解ControlNet,可以访问这个链接:
https://github.com/lllyasviel/ControlNet
它基本上包含了ControlNet的所有资源。
相关文章:
stable-diffusion-webui本地部署stable diffusion 2.0和微调教程
作者:Antalpha.io