ControlNet
ControlNet是一个用于控制AI图像生成的插件,通过使用Conditional Generative Adversarial Networks(条件生成对抗网络)的技术来生成图像。它允许用户对生成的图像进行更精细的控制,从而在许多应用场景中非常有用,例如计算机视觉、艺术设计、虚拟现实等。
对于stable diffusion,ControlNet的出现提供了一种新的神经网络概念,通过额外的输入来控制预训练的大模型,例如stable diffusion。这种端对端的训练方式,让这种端对端的训练有了更好的应用空间。
举个需要使用ControlNet简单的例子,假如我们想要画一个人物画,需要人物摆一个固定的姿势,如果使用提示词就难以准确描述,即使可以用提示描述人物的姿势,但是因为扩散模型的的特性,生成图片的人物姿势还有部分不一样的随机性。利用ControlNet中的OpenPose模型,我们只需要给Stable Diffusion上传一张包含我们想要生成的姿势的图片即可生成我们想要的效果。
安装ControlNet插件
秋叶整合包内整合了ControlNet扩展插件,我们无需无需安装。没有安装的可以通过这个国内镜像仓库去下载安装
https://gitcode.net/ranting8323/sd-webui-controlnet,安装方法看上一篇文章。安装成功后,在文生图和图生图的界面里会出现ControlNet的可折叠选单了。
我们点击展开ControlNet的可折叠选单后,显示出ControlNet的所有参数如下。
ControlNet模型下载
除了下载ControlNet扩展插件外,还需要下载ControlNet控制模型,秋叶的整合包内包含ControlNet的模型文件,我们只需要把这些模型文件移动到SD webUi根目录 models\ControlNet文件夹下,重启 webUI即可。
基本使用
-
首先上传一张包含我们想要生成姿势的人物图片
-
上传完,启动选项会自动被勾选
-
如果你显存比较低,请点击低显存模式,代价就是出图会慢一点
-
如果你想要图片生成质量好,就点击完美像素模式,代价就是出图会慢一点
-
勾选 允许预览,
-
选择控制类型,人物姿势类的,就选择OpenPose (姿态)
-
预处理器和模型,点击控制类型后,系统会自己选择预处理器和匹配的模型。
-
控制类型选择OpenPose (姿态),系统会选择默认预处理器openpose_full,这个会从图片中读取人物基本姿势外,还会读取图片中人物的手部姿势和面部表情。如何你不需要控制面部和手部和原图保持一致。可以选择openpose即可。openpose_full要比openpose的生图时间长。
-
点击 预处理和模型中间的爆炸图标,可以预览ControlNet从图片中提取出来的人物姿势信息。
-
控制权重 可以通过调整ControlNet的权重来控制其对生成图像的影响程度。正常设置默认皆可。
-
引导介入时机和引导终止时机
-
引导介入时机(Guidance Start):
这个参数决定了ControlNet从何时开始介入生成图像的计算过程。在默认情况下,Guidance Start被设置为0,代表在开始时就介入。如果设置为0.5,则代表ControlNet从50%步数时开始介入计算。这个参数可以根据具体需求进行调整。
-
引导终止时机(Guidance End):
这个参数决定了ControlNet在生成图像的计算过程中何时终止介入。一般情况下,Guidance End的值会比Guidance Start的值稍大一些,以确保ControlNet在主要的图像生成过程结束后能够适时地停止介入。这个参数也需要根据具体需求进行调整。
-
控制模式
一般选择 均衡即可。如果生成的图片,提示词没有显示出来,可以设置更偏向提示词,如果人物姿势动作没有显示出来,就选择 更偏向ControlNet即可。缩放模式,和图生图的一样,如果我们不想出现人物出现拉伸现象,就悬着裁剪后缩放。预设功能。就是可以把我们 所有关于ControlNet的参数配置保存成一个预设配置。下次使用相同的配置,可以直接选择预设即可。
控制类型
Canny 边缘检测
Canny 边缘检测预处理器可很好识别出图像内各对象的边缘轮廓,常用于生成线稿。
对应ControlNet模型: control_canny
MLSD 线条检测
MLSD 线条检测用于生成房间、直线条的建筑场景效果比较好。
对应ControlNet模型: control_mlsd
Scribble 涂鸦
不用自己画,图片自动生成类似涂鸦效果的草图线条。
对应ControlNet模型: control_scribble
SoftEdge 边缘检测
SoftEdge 边缘检测可保留更多柔和的边缘细节,类似手绘效果。
对应ControlNet模型: control_softedge。
OpenPose 姿态检测
OpenPose 姿态检测可生成图像中角色动作姿态的骨架图(含脸部特征以及手部骨架检测),这个骨架图可用于控制生成角色的姿态动作。
对应ControlNet模型: control_openpose。
Segmentation 语义分割
语义分割可多通道应用,原理是用颜色把不同类型的对象分割开,让AI能正确识别对象类型和需求生成的区界。
对应ControlNet模型: control_seg。
Depth 深度检测
通过提取原始图片中的深度信息,生成具有原图同样深度结构的深度图,越白的越靠前,越黑的越靠后。
对应ControlNet模型: control_depth。
Normal Map 法线贴图
根据图片生成法线贴图,适合CG或游戏美术师。法线贴图能根据原始素材生成一张记录凹凸信息的法线贴图,便于AI给图片内容进行更好的光影处理,它比深度模型对于细节的保留更加的精确。法线贴图在游戏制作领域用的较多,常用于贴在低模上模拟高模的复杂光影效果。
对应ControlNet模型: control_normal。
Lineart 生成线稿
Lineart 边缘检测预处理器可很好识别出图像内各对象的边缘轮廓,用于生成线稿。
对应ControlNet模型: control_lineart。
Lineart Anime 生成线稿
Lineart Anime 边缘检测预处理器可很好识别出卡通图像内各对象的边缘轮廓,用于生成线稿。
对应ControlNet模型: control_lineart_anime。
Content Shuffle 内容打乱
Content Shuffle 图片内容变换位置,打乱次序,配合模型 control_v11e_sd15_shuffle 使用。
对应ControlNet模型: control_shuffle。
多ControlNet控制
我们可以通过界面看出 ControlNet默认有三个单元选卡(后台可以设置更多单元),我们可以单配不同ControlNet控制类型作为每个单元的设置。比如 OpenPose (姿态)搭配 Depth (深度)类型,可以解决人物手和脚的前后问题,单靠OpenPose 无法区分出图片中人物手和腿靠前还是靠后,假如 Depth (深度)类型的控制,可以实现完美控制。不过,使用的ControlNet单元越多,对显存的要求也高,出图也越慢。