ControlNet已经更新到V1.1.230了。
引用ControlNet提出者编写的论文(地址:https://arxiv.org/abs/2302.05543)的描述:
This paper presents ControlNet, an end-to-end neural network architecture that controls large image diffusion models (like Stable Diffusion) to learn task-specific input conditions.The ControlNet clones the weights of a large diffusion model into a "trainable copy" and a "locked copy": the locked copy preserves the network capability learned from billions of images, while the trainable copy is trained on task-specific datasets to learn the conditional control.
机翻:ControlNet是一种可控制大型图像扩散模型(如Stable Diffusion)以学习特定于任务的输入条件的端到端神经网络架构。ControlNet 将大型扩散模型的权重克隆到“可训练副本”和 “锁定副本”中。锁定副本保留了从数十亿张图像中学习到的网络能力,而可训练副本则在特定任务的数据集上进行训练以学习条件控制。
简单来说,ControlNet是基于Checkpoint模型进行微调的技术。本文无意探究ControlNet的具体技术细节,而是从使用方面提出自己一些浅显的理解,目的是为了读者能够对ControlNet的基础模型有初步的了解。同时,如果可以的话本文也会给出一些可通过ControlNet与其它插件或技术协同的简单案例。受作者水平和精力所限无法对所有可能的场景进行介绍,敬请谅解。
本文基于ControlNet V1.1.230及Stable Diffusion Webui 1.4.0版本所著。因ControlNet更新迭代快,为达到更好的学习、使用体验,您应该用更新的版本。常用的整合包支持插件的更新功能,如果您需要自行安装和更新请打开Extensions(扩展)选项卡,在Install from URL(从网址安装)输入github地址(https://github.com/Mikubill/sd-webui-controlnet)进行安装,在Installed(已安装)中进行更新。
如个人认为非重点内容则不再另行说明,下述的内容尽量保持成稿时最新的内容至教程更新结束。
先看下通用的操作,在txt2img(文生图)、img2img(图生图)下都可以找到ControlNet插件。
从上到下简单介绍一些个人认为比较重要的选项,加粗选项为ControlNet V1.1新增功能:
ControlNet Unit:截图展示了Unit 0-Unit 3决定了最大能开4个Multi ControlNet,截图勾选了2个。(绝大多数情况用不了4个,开多了显存可能不够)
Single Image(单张图像):可以点击打开对应图像文件或者拖动图像文件到Image区域。
Batch(批量处理):从文件夹里批量打开图像文件。
Enable(启动):启动当前的Unit,不勾选的话即使选择了其它选项也是不生效的。
Low VRAM(低显存模式):在显存不足的时候启用。如果运行图像文件分辨率高或者开Multi ControlNet提示CUDA out of memory时可以勾选试试。
Pixel Perfect(完美匹配像素):勾选后由ControlNet计算出预处理的最佳分辨率,直接勾选就好。
Allow Preview(允许预览):勾选后图像右边会显示Preprocessor Preview界面,直接勾选就好。
Control Type(控制类型):选择控制类型,例如Canny为生成精确边缘等,本系列会提及这方面内容,不用着急。
Preprocessor(预处理):对图像的处理方式,选择了Control Type后自动带入可选项。点击右边的“爆炸”按钮将预处理的结果显示在Preprocessor Preview界面。
Model(模型):选择了Control Type后自动带入可选项。如果导入了新模型则点击右边的“刷新”按钮加载,平时不需要点击。
Control Weight(控制权重):代表了ControlNet“影响”的权重。这类似于提示注意力/强调。从技术上讲,它是在将ControlNet输出与原始SD Unet合并之前乘以控制网络输出的因素,默认为1。
(Starting/Ending) Control Step(启动/结束的步数):引导启动/结束是控制网应用的总步数的百分比(引导强度 = 引导结束)。例如0.8就是它从开始一直适用到总步数的 80%,默认为0和1,代表一直生效。作用原理比较复杂,保持默认就好,当然也可以多次调整看看效果。
Control Mode(控制模式):
Balance(平衡)ControlNet会在CFG scale中取得平衡。一般保持这个选项。
My prompt is more important(我的提示更重要)通过这种方式,您可以确保您的提示完美地显示在生成的图像中。建议提示词非常多的时候使用。
ControlNet is more important(ControlNet 更重要)这种“更强”的效果通常具有较少的伪影,并为 ControlNet 提供了更多的空间来猜测提示中缺少的内容。建议提示词非常少时使用。
Resize Mode(缩放模式):
Just resize(拉伸) 将图像调整为目标分辨率。除非高度和宽度完全匹配,否则图片会被挤压。
Crop and resize(缩放)调整图像大小,使整个目标分辨率都被图像填充,裁剪多余部分。默认选项,当原图的宽度和高度与生成图不一致时,且不需要额外内容时选择它。
Resize and fill(填充)调整图像大小,使整个图像在目标分辨率内。用图像的颜色填充空白区域。当生成图的分辨率大于原图,选择该选项会对原图分辨率外的部分额外扩充。
看到上述那么多的参数,相信第一次接触的读者可能已经不知道该怎么办了。尽可能的避开技术原理讲实现是本文的目的,但是有没有更直观的方式能够尽可能快速的了解各参数、各预处理器的作用呢?下面分享一下个人学习过程中常看的链接,尽量少走弯路。
几位ControlNet的创造者在Github里讲插件的重要功能和预处理器、模型的介绍写的比较清楚了。可以查阅(https://github.com/Mikubill/sd-webui-controlnet)了解源代码、插件安装方法、插件使用方法等。
可以查阅(https://github.com/lllyasviel/ControlNet-v1-1-nightly#model-specification)了解所有预处理、模型的使用方法等。后续的文章也会结合自己的理解给出一些方法,但是能看原文还是尽量看原文。
可以查阅(https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main)下载所有官方模型,放在(XX/stable-diffusion-webui/extensions/sd-webui-controlnet/models)文件夹里,重启Webui即可使用。
ControlNet还支持自定义模型。
腾讯实验室制作的模型(https://huggingface.co/TencentARC/T2I-Adapter/tree/main/models)(包括.pth文件和.yaml文件),放在(XX/stable-diffusion-webui/extensions/sd-webui-controlnet/models)文件夹里,重启Webui即可使用。本系列不会涉及这部分的模型,有兴趣的请自行尝试。这部分的介绍请见(https://github.com/TencentARC/T2I-Adapter)
二维码模型(https://civitai.com/models/90940)
谢谢看官老爷,下一期将对线条相关模型进行讲解,敬请期待!