如果我们想要让AI生成带有某个特定动作人物的图片,这是很难做到的。但是现在有了ControlNet,可以让我们更好的控制stable diffuion 模型的输出。AI可以根据构图和人体姿势参考图,得到自己想要的结果。
什么是ControlNet
ControlNet是一种改进过的稳定扩散模型,基本形式为文本到图像。它使用文本提示作为条件来引导图像生成,并添加了另一个条件:边缘检测和人体姿势检测。
边缘检测:该工作流程使用Canny边缘检测器检测输入图像的轮廓,并将其保存为控制地图,然后将其作为额外条件馈入ControlNet模型中。
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-35-1024x412.png)
人体姿势检测:Openpose是一种快速关键点检测模型,可以提取人体姿势,如手、腿和头的位置。使用OpenPose提取输入图像中的关键点,并将其保存为包含关键点位置的控制地图(control map)。然后,将其与文本提示一起作为额外条件反馈到稳定扩散模型中。
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-37-1024x384.png)
Canny边缘检测和Openpose的区别在于前者提取主体和背景的边缘,而后者只检测关键点并生成更自由但遵循原始姿势的图像。
ControlNet模型介绍
OpenPose检测人体关键点,如头部、肩膀、手等位置。它对于复制人类姿势很有用,但不包括服装、发型和背景等其他细节。
Canny边缘检测器是一种通用的、老式的边缘检测器,可提取图像轮廓,有助于保留原始图像的构成。
ControlNet可与M-LSD(移动线段检测)一起使用,后者是一种快速的直线检测器。它适用于提取具有直边轮廓的内部设计、建筑物、街景、画框和纸张边缘等。
HED(Holistically-Nested Edge Detection) 是一种边缘检测器,能够像真正的人一样产生轮廓线。根据ControlNet的创作者所说,HED适用于重新着色和改变图像风格。
Scribbles,Controlnet可以将你涂鸦的东西转换成图像。
在AUTOMATIC1111安装ControlNet
1、点击Load From
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-38-1024x289.png)
2、找到sd-webui-controlnet,点击install
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-39-1024x359.png)
3、重启AUTOMATIC1111 webui,如果扩展程序安装成功,你会在txt2img选项卡中看到
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-40-1024x683.png)
在AUTOMATIC1111中使用ControlNet
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-41-1010x1024.png)
前提条件:使用ControlNet需要与稳定扩散模型一起使用。在稳定扩散检查点下拉菜单中,选择要与ControlNet一起使用的模型。例如v1-5-pruned-emaonly.ckpt
下面介绍一个各个参数:
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-43-1024x645.png)
照相机图标:使用设备相机拍照并将其用作输入图像。需要授权浏览器访问相机。
Enable:是否启用控制网络。
Invert Input Color:交换黑白。上传涂鸦时可以使用它。ControlNet期望有黑色背景和白色涂鸦。如果使用带有白色背景的外部软件创建涂鸦,则必须使用此选项。如果使用ControlNet的界面创建涂鸦,则不需要使用此选项。
RGB to BGR:这是为了更改上传图像的颜色通道顺序或上传法线贴图的坐标顺序。如果上传图像并进行预处理,则无需勾选此框。
Low VRAM:适用于具有少于8GB VRAM的GPU。这是一个实验性功能,检查是否已经超出GPU内存或想要增加处理图片数量。
Guess Mode:也称为非提示模式。生成的图像可以完全不受文本提示指导,即使没有提示,它也会强制执行ControlNet编码器遵循输入控制映射(如深度、边缘等)。在使用此模式时,请选择更高步数(例如50)。通常情况下不需要勾选此框。
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-46-1024x117.png)
预处理器(preprocessor)用于对输入图像进行预处理,如检测边缘、深度和法线图等;而模型则(Model)是ControlNet模型,通常需要与相应的预处理器配合使用。同时,在AUTOMATIC1111 GUI中还需选择稳定扩散模型。
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-45-1024x100.png)
Weight权重指的是Control Map相对于提示词的权重。比如在ControlNet中给出的图片是站着的一个人,提示词里说的是坐着的一个人。权重低,最终出来的图主角就会是坐着的。相反,权重高,主角就是站着的。
Guidance Strength指导强度:这是应用ControlNet的步骤数。类似于图像到图像中的去噪强度。如果指导强度为1,则ControlNet应用于100%的采样步骤。如果指导强度为0.7且您正在执行50个步骤,则ControlNet将应用于采样步骤的前70%,即前35个步骤。
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-47.png)
Envelope (Outer Fit): 将图像画布适应于控制地图,裁剪控制地图使其与画布大小相同。
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-48-1024x336.png)
Scale to Fit (Inner Fit): 将整个控制地图调整到图像画布上。使用空值扩展控制地图,使其与图像画布大小相同。
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-49-1024x352.png)
Just Resize: 独立缩放控制地图的宽度和高度以适应图像画布。这将改变控制地图的长宽比。
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-50-1024x342.png)
ControlNet使用技巧
有时候你可能找不到想要的准确姿势的图片。你可以借助其他工具(如Magic Poser)创建自定义姿势。
![](https://shemmytalk.com/wp-content/uploads/2023/03/image-51-1024x458.png)