ComfyUI 介绍
在 AI 绘画领域,Stable Diffusion 因其开源特性而受到广泛的关注和支持,背后聚拢了一大批的应用开发者和艺术创作者。目前使用 Stable Diffusion 进行创作的工具主要有两个:Stable Diffusion WebUI 和 ComfyUI。
Stable Diffusion WebUI 开箱即用,各项功能齐全,社区也有很多的插件支持,入门比较简单,适合新手,但是可定制性稍微差点,很多作品不容易传播复现,使用 API 进行操作也有一定的难度。
ComfyUI 出来的晚一点,但是它的可定制性很强,可以让创作者搞出各种新奇的玩意,通过工作流的方式,也可以实现更高的自动化水平,创作方法更容易传播复现,发展势头特别迅猛。但是 ComfyUI 的上手门槛有点高,对 Stable Diffusion 以及各种扩展能力的原理需要有一定的理解,动手能力要求也比较高。
ComfyUI 安装部署
本地安装部署
安装插件
首先说明,如果你是本地安装部署,那么请耐心按照下面的方式安装插件。
ComfyUI 自带了一些简单的 ControlNet 节点,不过这还远远不够,我们需要安装一些插件来增强 ControlNet 方面的处理能力。
推荐以下两个插件:
- ControlNet 预处理器插件:包含各种常用的 ControlNet 预处理器。
- 高级 ControlNet:支持 ControlNet 调度和遮罩等高级特性。
在 ComfyUI 管理器中点击'通过 Git URL 安装',输入对应的链接,即可开始安装。安装成功后,重启 ComfyUI 并刷新浏览器页面。
使用 ControlNet
不带预处理器的 ControlNet
ControlNet 主要由 3 个节点组成:ControlNet 加载器、ControlNet 应用和参考图片。
-
ControlNet 加载器:这是用来加载 ControlNet 模型的。ComfyUI 内置了两个 ControlNet 模型加载器,一个是'ControlNet 加载器',另一个是'DiffControlNet 加载器'。'DiffControlNet 加载器'不仅支持加载普通的 ControlNet 模型,还支持加载 diffusers 格式的 ControlNet 模型,更为通用一些。注意 ControlNet 模型区分 SD1.5 和 SDXL,选择 SD 基础模型时一定要搭配起来,不能混用。
-
参考图片:ControlNet 要实施推理控制,就需要一定的参考,比如姿势、深度、线稿、配色、人物形象等。在工作流中可以直接提供一张深度图,另外也可以提供正常图片,让 ControlNet 预处理器从中提取。
-
ControlNet 应用:封装 ControlNet,汇集模型、参考图片和一些参数,共同计算得出新的提示词条件。ControlNet 应用默认有 3 个可以手动控制的参数:
- 强度:ControlNet 模型对生成图片的影响力。太高可能会让参考特征过于明显,太低又丢失了 ControlNet 的控制力,需要根据实际情况调整。
- 开始时间:在生成图片的第几步引入 ControlNet,取值范围 0-1。一般前几步会确定图片中的主体内容,如果使用的是线稿类模型,这个时间不能设置的太晚。
- 结束时间:在生成图片的第几步退出 ControlNet,取值范围 0-1。如果想在细节上自由发挥的更多,可以将这个值改小一点试试。
我们可以认为'DiffControlNet 加载器'和'加载图像'都是为'ControlNet 应用'提供必需参数的。最后我们再看一下 ControlNet 节点的输入和输出,这里的输入主要有两块:
-
SD 基础模型:ControlNet 模型不能独立工作,所以'ControlNet 加载器'需要以模型作为输入,图中的'模型'接入点要连接到名为'Checkpoint 加载器'的节点,以获取 SD 基础模型。
-
提示词编码条件:这里分为'正面条件'和'负面条件',ControlNet 应用会对这些条件进行加工处理,在其中加入当前 ControlNet 提取到的控制信息。需要把它们连接到'CLIP 文本编码器'节点,'CLIP 文本编码器'就是编码提示词,生成初始条件的;如果使用多个 ControlNet,我们也可以把它们连接到串联 ControlNet 应用输出的'正面条件'和'负面条件'。在一些简单的'ControlNet 应用'节点上,你可能只能看到一个'条件',这时候的'条件'对应的是'正面条件'。
ControlNet 应用的输出就是'正面条件'和'负面条件',需要将它们连接到采样器,采样器会使用这些条件进行采样,最终生成出符合条件的图片。注意如果'ControlNet 应用'的输入只有一个'条件',那么我们就无需通过'ControlNet'处理负面条件。


