Stable Diffusion Controlnet基础标志用法

ControlNet是一种图像生成AI技术,可以在保持输入图像结构不变的情况下,将输入图像转换为另一幅图像,例如可以使用ControlNet来生成通过使用简笔画等3D模型来实现具有指定人物姿势和构图的插图。

在这个过程中ControlNet可以从输入图像中提取轮廓、深度和分割等信息,并根据指令创建图像。因此可以使用ControlNet来将一张人物照片转换为一张美丽的插图,而不会改变人物的结构和特征。

工作原理大致如下:
在这里插入图片描述
ControlNet是一种可以控制大型预训练扩散模型以适应额外输入条件的技术。如上图所示,扩散模型的神经网络分为两种:固定权重的模型(locked)和复制权重的可训练模型(trainable copy)。

ControlNet可以通过仅在可训练模型上学习附加条件,即使是小数据集也可以高效且有效地进行学习。此外,为了稳定学习并加快学习速度,ControlNet还可以通过向可训练模型添加一个称为零卷积的块,将卷积层的权重初始化为 0。

ControlNet端的神经网络(Unet)的encoder部分被变成了可训练的副本。在输入前,Unet的decoder部分被替换成了零卷积,并与Stable Diffusion端的Unet(固定权重模型)相连接。

在这里插入图片描述

安装 Controlnet

确保自己已经有Stable Diffusion的Web UI版本,在扩展页面进行选择安装即可。点击安装,我这里是安装好的所以会显示installed。
在这里插入图片描述
如果自己不是一键集成的Stable Diffusion需要自己在git上进行下载后把项目放入extensions目录下,或者直接执行下面的命令也可以。

git clone https://github.com/Mikubill/sd-webui-controlnet.git

在这里插入图片描述
安装好了之后直接重启你的WebUI。

下载 Models

只安装了插件之后是无法直接使用的,需要自己下载对应的插件和模型。下载地址在

Hugging Face 下载地址

下载 annotator/ckpts 下的文件,并放入指定的文件夹,切记别放错了。
在这里插入图片描述

  • body_pose_model.pth 放入 …\sd-webui-controlnet\annotator\openpose
  • dpt_hybrid-midas-501f0c75.pt 放入 …\sd-webui-controlnet\annotator\midas
  • hand_pose_model.pth 放入 …\sd-webui-controlnet\annotator\openpose
  • mlsd_large_512_fp32.pth 放入 …\sd-webui-controlnet\annotator\mlsd
  • mlsd_tiny_512_fp32.pth 放入 …\sd-webui-controlnet\annotator\mlsd
  • network-bsds500.pth 放入 …\sd-webui-controlnet\annotator\hed
  • upernet_global_small.pth 放入 …\sd-webui-controlnet\annotator\uniformer

下载 models 下的文件,并放入 sd-webui-controlnet\models 目录下,可能会问有没有阉割版的,不建议使用,还是用原版的比较好一些。
在这里插入图片描述

说明 Models

官网的说明机翻大致这样,其实新手看了跟没说一样,一脸懵。

  • control_sd15_canny.pth:使用Canny边缘检测控制SD的ControlNet+SD1.5模型。
  • control_sd15_depth.pth:使用 Midas 深度估计控制 SD 的 ControlNet+SD1.5 模型。
  • control_sd15_hed.pth:ControlNet+SD1.5模型使用HED边缘检测(软边缘)来控制SD。
  • control_sd15_mlsd.pth:使用 M-LSD 线检测控制 SD 的 ControlNet+SD1.5 模型(也将与传统霍夫变换一起使用)。
  • control_sd15_normal.pth:ControlNet+SD1.5模型使用法线贴图控制SD。最好使用由该 Gradio应用程序生成的法线贴图。只要方向正确,其他法线贴图也可能有效(左边看起来是红色,右边看起来是蓝色,上面看起来是绿色,下面看起来是紫色)。
  • control_sd15_openpose.pth:ControlNet+SD1.5模型使用OpenPose姿态检测控制SD。直接操纵姿势骨架也应该有效。
  • control_sd15_scribble.pth:ControlNet+SD1.5模型,利用人类涂鸦来控制SD。该模型使用具有非常强数据增强的边界边缘进行训练,以模拟类似于人类绘制的边界线。
  • control_sd15_seg.pth:ControlNet+SD1.5模型使用语义分割控制SD。协议是 ADE20k。

转换成人话之后大致这样,自己理解先,后面会每个举例说明。

类别 模型名称
线稿类 control_sd15_canny
- control_sd15_hed
- control_sd15_scribble
- control_sd15_mlsd
动作类 control_sd15_openpose
深度类 control_sd15_depth
- control_sd15_normal
色块类 control_sd15_seg

应用模型

这里简单操作一下就是关键词对应的操作方法演示,具体细节自行调试吧。

统一操作

进入WebUI后,打开Control选项卡,按照实例图片拖动到对应位置即可。

对于新手有用的是Preprocessor(图像预处理)和模型,这里建议使用同样的配置,如果有特殊需求在理解完整体使用之后再自行尝试。

如果你显存8G一下记得要点上 Low VRAM。
在这里插入图片描述

线稿类

control_sd15_canny 边缘线几乎不做改变,适用于局部颜色更改,细致线稿上色。
在这里插入图片描述
在这里插入图片描述
control_sd15_hed 边缘线轻微变化,算法辅助修形,适用于轻微改图。
在这里插入图片描述
在这里插入图片描述

control_sd15_scribble 粗糙线稿(手绘、草稿)一键生图。
在这里插入图片描述
在这里插入图片描述
control_sd15_mlsd 直线边缘检测,适用于建筑、直线较多的场景。
在这里插入图片描述
在这里插入图片描述

动作类

control_sd15_openpose 骨骼识别,可以设置多人骨骼动作。

在这里插入图片描述
在这里插入图片描述

深度类

control_sd15_depth 场景复杂需要体现深度透视关系,用于多人复杂场景。
在这里插入图片描述
在这里插入图片描述

control_sd15_normal 场景简单突出个体使用。

在这里插入图片描述
在这里插入图片描述

色块类

control_sd15_seg 用于区域标注使用。

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_20288327/article/details/129354498