在 AI 图像生成过程中,要精确控制图像生成并不是一键容易的事情,通常需要通过许多次的图像生成才可能生成满意的图像,但随着 ControlNet 的出现,这个问题得到了很好的解决。
ControlNet 是一种基于扩散模型(如 Stable Diffusion)的条件控制生成模型,ControlNet 提供了十几种生成图片的控制方式,有的可以控制画面的结构,有的可以控制人物的姿势,还有的可以控制图片的画风,这对于提高AI绘画的质量特别有用;基于 ControlNet 的能力,炼丹师们可以将AI绘画拓展到很多的应用场景,比如艺术二维码、光影文字、线稿上色、老照片修复、图片风格转绘、IP图片创作等等。
ControlNet 模型通过引入多模态输入条件(如边缘检测图、深度图、姿势关键点等),显著提升了图像生成的可控性和细节还原能力。 使得我们可以进一步开始控制图像的风格、细节、人物姿势、画面结构等等,这些限定条件让图像生成变得更加可控,在绘图过程中也可以同时使用多个 ControlNet 模型,以达到更好的效果。
在没有 ControlNet 之前,我们每次只能让模型生成图像,直到生成我们满意的图像,充满了随机性。
但随着 ControlNet 的出现,我们可以通过引入额外的条件,来控制图像的生成,比如我们可以使用一张简单的涂鸦,来控制图像的生成,就可以生成差不多类似的图片。
在本示例中,我们将引导你完成在 ComfyUI 中 ControlNet 模型的安装与使用, 并完成一个涂鸦控制图像生成的示例。
ControlNet V1.1 其它类型的 ControlNet 模型的工作流也与都与本篇示例相同,你只需要根据需要选择对应的模型和上传对应的参考图即可。
ControlNet 图片预处理相关说明
不同类型的 ControlNet 模型,通常需要使用不同类型的参考图:
由于目前 Comfy Core 节点中,不包含所有类型的 预处理器 类型,但在本文档的实际示例中,我们都将提供已经经过处理后的图片, 但在实际使用过程中,你可能需要借助一些自定义节点来对图片进行预处理,以满足不同 ControlNet 模型的需求,下面是一些相关的插件
- ComfyUI-Advanced-ControlNet(文末有整理合集)
- ComfyUI ControlNet aux(文末有整理合集)
ComfyUI ControlNet 工作流示例讲解
1. ControlNet 工作流素材
请下载下面的工作流图片,并拖入 ComfyUI 以加载工作流
Metadata 中包含工作流 json 的图片可直接拖入 ComfyUI 或使用菜单
Workflows
->Open(ctrl+o)
来加载对应的工作流。 该图片已包含对应模型的下载链接,直接拖入 ComfyUI 将会自动提示下载。
请下载下面的图片,我们将会将它作为输入
2. 手动模型安装
如果你网络无法顺利完成对应模型的自动下载,请尝试手动下载下面的模型,并放置到指定目录中
- dreamCreationVirtual3DECommerce_v10.safetensors (需魔法)
- vae-ft-mse-840000-ema-pruned.safetensors (文末有下载)
- control_v11p_sd15_scribble_fp16.safetensors(文末有下载)
ComfyUI/
├── models/
│ ├── checkpoints/
│ │ └── dreamCreationVirtual3DECommerce_v10.safetensors
│ ├── vae/
│ │ └── vae-ft-mse-840000-ema-pruned.safetensors
│ └── controlnet/
│ └── control_v11p_sd15_scribble_fp16.safetensors
本示例中 vae 模型也可以使用 dreamCreationVirtual3DECommerce_v10.safetensors 模型中的 vae 模型,这里我们遵循模型作者建议使用单独的 vae 模型。
3. 按步骤完成工作流的运行
- 确保
Load Checkpoint
可以加载 dreamCreationVirtual3DECommerce_v10.safetensors - 确保
Load VAE
可以加载 vae-ft-mse-840000-ema-pruned.safetensors - 在
Load Image
中点击Upload
上传之前提供的输入图片 - 确保
Load ControlNet
可以加载 control_v11p_sd15_scribble_fp16.safetensors - 点击
Queue
按钮,或者使用快捷键Ctrl(cmd) + Enter(回车)
来执行图片的生成