问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ControlNet模型详解:从零开始到慢慢熟悉

创作时间:
作者:
@小白创作中心

ControlNet模型详解:从零开始到慢慢熟悉

引用
CSDN
1.
https://m.blog.csdn.net/2403_89132630/article/details/144164003

ControlNet模型详解:从零开始到慢慢熟悉。本文将详细介绍ControlNet模型的各个方面,包括其概述、最新进展、安装使用方法、参数含义以及预处理器的类型和应用。

一、概述

ControlNet模型是一种基于条件生成对抗网络(Conditional Generative Adversarial Networks)的深度学习模型,主要用于图像生成和控制。它能够精确控制图像的特定元素,如姿势、表情、手指等,从而生成高质量的图像。

ControlNet模型由张吕敏开源,支持多种预处理器和模型选择,以适应不同的生成需求。通过不同的预处理器和模型,可以控制图像的边缘、线稿、涂鸦等特征,使得生成的图像更加符合用户的预期。例如,用户可以通过上传参考图来控制人物的姿势、表情或手指动作,生成具有特定姿势和表情的人物图像;也可以上传线稿让AI填色渲染,控制人物的姿态,或生成图片线稿等。

二、ControlNet模型的最新进展和未来趋势

ControlNet模型在2023年3月中下旬开始受到广泛关注,随着StableDiffusion的流行,ControlNet插件也得到了大量应用。最新版本ControlNet v1.1.400支持配合SDXL模型使用,进一步扩展了其应用范围。社区中也出现了许多针对SDXL的ControlNet模型,这些模型虽然没有完全遵照官方模型的命名规则,但也能从名称上看出模型的类型,如xl表示针对SDXL使用的模型。

三、ControlNet模型的安装和使用方法

安装ControlNet模型可以通过HuggingFace的代码仓库下载。ControlNet V1.1.150版本,一共有37种,目前所用的是V1.1.455版本。下载后将其放入以下路径就可以使用了:

\sd-webui-aki-v4.9.1\models\Stable-diffusion

用户可以根据需要选择官方模型或社区模型,并通过不同的预处理器和模型来控制图像的特定特征。例如:

  1. 使用OpenPose模型可以控制人物的姿势和手指动作;
  2. Canny、SoftEdge和Lineart模型可以用于线稿上色和涂鸦成图等方法。

四、ControlNet模型使用说明和参数含义

使用ControlNet模型,首先要点击ControlNet标签后面的三角,如图1所示。


图1 ControlNet模型标签

展开后如图2所示。图中可见,需要分别勾选启用、允许预览、上传所要处理图片。

图2启用ControlNet模型界面

鼠标下滑,然后进入图3界面。

图3 预处理器和参数

图3中,可以选择预处理器类型。接下来,点击右侧爆炸按钮,生成手表线稿。

各参数的含义分别为:

1)启用(Enable)

勾选此选项后,点击 “生成” 按钮时,ControlNet 才会生效。

2)低显存优化(Low VRAM)

低显存模式,如果你的显卡内存小于等于4GB,建议勾选此选项。

3)预处理器(Preprocessor)

在此列表可选择需要的预处理器,每个 ControlNet 的预处理器都有不同的功能,后续将会详细介绍。

4)模型(Model)

配套各预处理器需要的专属模型。该列表内的模型必须与预处理选项框内的名称选择一致,才能保证正确生成预期结果。如果预处理与模型不致其实也可以出图,但效果无法预料,且一般效果并不理想。


图4 模型

5)权重(Weight)

权重,代表使用 ControlNet 生成图片时被应用的权重占比。权重越大,影响越大。

6)预处理器分辨率(Preprocessor Resolution)

预处理器分辨率数值越高越精细,也越吃显存。但如果数值太低生成的线条也会很粗糙。默认512,具体设置时需根据素材大小和实际情况来做权衡。

7)引导介入时机(Guidance Start(T))

在理解此功能之前,应该先知道生成图片的 Sampling steps 采样步数功能,步数代表生成一张图片要刷新计算多少次,Guidance Start(T) 设置为 0 即代表开始时就介入,默认为 0,设置为 0.5 时即代表 ControlNet 从 50% 步数时开始介入计算。

8)引导退出时机(Guidance End(T))

和引导介入时机相对应,如设置为1,则表示在100%计算完时才会退出介入也就是不退出,默认为 1,可调节范围 0-1,如设置为 0.8 时即代表从80% 步数时退出介入。

9)缩放模式(Resize Mode)

用于选择调整图像大小的模式:默认使用(Scale to Fit (Inner Fit))缩放至合适即可,将会自动适配图片。有3个选项,分别为:

  • 仅调整大小(Just Resize):直接拉伸,比例不对会出现变形。
  • 缩放后填充空白(Scale to Fit (Inner Fit)): 先把图片缩小指定的尺寸,然后再填充空白部分,可以看到原图像的左右部分被填充了,若仔细看的话,应该还能看到填充的痕迹,后续都可以再调整。会在原图上产生新的内容。
  • 裁剪后缩放(Crop and Resize):裁剪掉了上下两边内容,如果是横向图的话,就是裁剪到左右两边的内容。会丢失原图部分内容。

10)画布宽度和高度(Canvas Width 和 Canvas Height)

这里的宽高,并不是指 SD 生成图片的图像宽高比。

该宽高代表 ControlNet 引导时所使用的控制图像的分辨率,假如用 SD 生成的图片是 1000x2000 分辨率,那么使用 ControlNet 引导图像时,对显存的消耗将是非常大的;因此,可以将引导控制图像的分辨率设置为 500x1000 ,也就是缩放为原本图像一半的分辨率尺寸去进行引导,这有利于节省显存消耗。

11)打开新画布

如果之前使用过 ControlNet 功能,那么将会在 ControlNet 的图像区域留有历史图片,点击该按钮可以清空之前的历史,也就是创建一张空白的画布,如下图所示。


图5 打开新画布

12)提示词引导系数(CFG)

提示词引导系数的设置范围通常在1到1.2之间。

提示词引导系数(CFG)的作用是通过调整生成模型对提示词的敏感度来影响生成结果。通过调整CFG的值,可以控制生成图像的多样性和质量。较低的CFG值会增加生成结果的多样性,而较高的CFG值则会提高生成结果的准确性。因此,根据具体需求调整CFG值,可以在多样性和准确性之间找到平衡点。

13)随机种子

“随机种子”(Random Seed)是指在随机数生成器(Random Number Generator, RNG)中设定的一个初始值。当这个初始值被固定时,即使RNG的输出看起来是随机的,实际上每次运行都会得到完全相同的结果序列。这是因为大多数伪随机数生成器都是确定性的算法,它们通过一系列数学运算来产生看似随机的数字,而随机种子就是这一系列运算的起始点。经验总结,设定相同的种子可以让多次生成的内容相近,随机种子为-1每次都随意选取种子。

五、预处理器含义

目前,预处理器的类型很多。控制类型中点选全部,然后在图6中点击三角形,就可以看到你所安装的所有的预处理器的模型。图7中,如果点选Depth深度,预处理器一栏就会自动切换到depth_midas深度模型,点击三角还可以选择不同的depth模型。

图6 预处理器模型

图7 控制类型

  1. Canny边缘检测

(1)预处理器分辨率

Canny边缘检测预处理器可很好识别出图像内各对象的边缘轮廓,常用于生成线稿。

预处理器分辨率数值越高越精细,也越吃显存。但如果数值太低生成的线条也会很粗糙。默认512,具体设置时需根据素材大小和实际情况来做权衡。

(2)长和宽的阈值

这个值越高线条越简单,越低线条越复杂。

图8 长宽阈值

  1. Depth 深度检测

通过提取原始图片中的深度信息,生成具有原图同样深度结构的深度图,越白的越靠前,越黑的越靠后。depth模型用于精确复制房屋线条、物品等图片的前后顺序,适用于建筑图像、人物等的处理。

图9 Depth 深度检测

  • MiDaS 深度信息估算

MiDaS 深度信息估算,是用来控制空间距离的,类似生成一张深度图。一般用在较大纵深的风景,可以更好表示纵深的远近关系。注:有时也可以用于生成遮罩蒙版。

  • Leres 深度信息估算

LeReS 深度信息估算比 MiDaS 深度信息估算方法的成像焦点在中间景深层,这样的好处是能有更远的景深,且中距离物品边缘成像会更清晰,但近景图像的边缘会比较模糊,具体实战中需用哪个估算方法可根据需要灵活选择。

  1. OpenPose 姿态检测

OpenPose 姿态检测可生成图像中角色动作姿态的骨架图,这个骨架图可用于控制生成角色的姿态动作。这个没有涉及手部的骨架,所以手部控制不行有时会出问题。OpenPose 姿态及手部检测解决了姿态检测手的问题。通过控制人物姿势,在人物角色设计时也可以得到很好应用。

图9 OpenPose 姿态检测

4.Scribble 涂鸦(要配合 scribble 模型)

设置画布高度和宽度,一般默认 512x512 就可以了,点击 “Create blank canves” 创建画布。把画笔调小一点,勾画出想要的图像轮廓。再添加一些提示词描述,控制下生成效果。

图10 Scribble 涂鸦

  1. lineart 生成线稿

精准的控制物体的线条,并自动对线条进行艺术化处理,与canny类似,适合做一些偏艺术类的图片,简单说就是可以帮我们把图片转绘成手绘线稿图。

图11 生成线稿预处理器

图12 生成线稿预处理器

6.ReColor重新上色

在日常图片处理中,给一些老旧的黑白图片上色是一个常见的应用场景。通过SD实现老旧照片轻松变彩色。

在SD中实现老旧照片重上色,最直接的方式是通过ControlNet的模型Recolor实现,Recolor翻译过来的含义就是重上色。该模型可以保持图片的构图,它只会负责上色,图片不会发生任何变化。

图13 重新上色

7.M-LSD建筑物绘制

提取图片中物体的直线条,弯曲线条不会被提取,适合做室内设计和建筑设计提取直线结构图。如下图所示。

调节画面线条的工具,数值越大,画面线条越少,对远距离线条的处理,数值越大,远距离线条越少。大家可以试一试,

8.normal_bae发现贴图提取

从原图中提取3D物体的法向量,绘制的新图与原图的光影效果完全相同,通过凹凸的法线贴图记录空间信息,适合细节信息比较多的图片。

可以输入提示词:Lamborghini sports car,staring out of the windows,Moody lighting,High detail,realistic fur texture,digital paiting,trending on artstation,

9.soft Edge软边缘

提取图片中物体的轮廓线,与canny不同的是他会首先提取物体大的轮廓线,然后其它地方会有细的线。相当于canny和scribble的结合,有粗有细。如下图所示。

10.Tile

让一张模糊的图片变成高清的图片,或者是让一张不清晰的图片变成超多细节的图,可用于老照片修复,图片高清化处理,非常强大。加上合适的提示词就可以生成图片了。

六、重绘幅度

这部分内容已经和ControlNet无关了,只是补充记录一下对图生图和文生图中高分辨率修复“重绘幅度的理解,这个很重要。如下图所示:

  • 图中,重绘幅度的数值越小,越受原图控制,生成的图越接近原图;数值越大越不受原图控制,大模型就可以天马行空创意了,离原图越来越远。

控制在多少合适呢?默认的是0.7,可以调整到0.3-0.4试一试。

这篇文章暂且写这么多,如果有疏漏后面再继续补充。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号