type
Page
status
Invisible
date
Jan 26, 2025
slug
summary
tags
国美
艺术
教程
category
知识分享
icon
password
URL

1. ControlNet 原理

来源: https://www.comflowy.com/advanced/controlnet
在使用 Stable Diffusion 时,你可能希望控制图像的构造,但通过提示词调整可能无法获得很好的效果。本章将教你几种使用 ControlNet 控制图像构造的常用方法。

原理介绍

本质上,我在高级教程中教授的所有方法都是图像到图像的方法。它们都通过图像向模型提供不同的信息,从而使模型生成我们想要的图像。ControlNet 根据图像的结构信息来控制模型生成的图像。这种结构信息可以是草图、图像的掩码,甚至是图像的边缘信息。所有这些信息都可以通过 ControlNet 来控制模型生成图像。你可以根据需要选择不同的 ControlNet 来控制模型生成的图像。
通常情况下,为了帮助你更好地理解如何使用 ControlNet,我们将首先直观地介绍 ControlNet 的原理:
notion image
从上图可以看出,当我们使用 ControlNet 时,首先将文本提示和图像输入到 ControlNet 模型中。然后,ControlNet 模型生成一个潜在图像。该潜在图像将作为条件(Conditioning)和初始提示输入到 Stable Diffusion 模型中,从而影响模型生成的图像。
 

涂鸦线稿控制:Scribble ControlNet

通过原理的介绍,你应该能够推断出如何在 ComfyUI 中使用 ControlNet。我们可以尝试构建一个简单的 ControlNet 工作流程——通过简单的草图进行控制。效果大致如下:
notion image
借助 ControlNet,模型的图像输出将根据你绘制的草图构建图像。如你所见,左边的草图是一个非常粗糙的卡通角色,而右边生成的图像与左边草图的基本构图和角色特征(两个大耳朵)相匹配。
好的,现在你对 Scribble ControlNet 有了印象,让我们看看如何共同构建这个工作流程。你可以先尝试自己构建。这样可以加深你的印象。
 

姿态骨骼控制:Pose ControlNet

一旦你能构建一个 ControlNet 工作流程,就可以根据需求自由切换不同的模型。
前面的例子使用了草图作为输入,这次我们尝试输入人物的姿态。这样做的好处是可以控制模型生成的人物姿态。例如:
notion image
但是,请注意,我们不能像前面的例子那样直接将图像输入到 ControlNet 模型中,而是需要先将图像转换为姿态,然后再输入到 ControlNet 模型中。当然,你也可以使用其他工具制作骨架图,然后直接输入到 ControlNet 模型中。
notion image
因此,整个工作流程的构建与前面的工作流程相同,只是在 Load ControlNet Model 节点中,我们需要加载 ControlNet Openpose 模型,并加载骨架图:
notion image
 

深度图控制:Depth ControlNet

ControlNet 的第三种用法是通过深度图控制生成的图像。这种方法的优势在于可以通过深度图控制生成图像的景深。例如:
这个工作流程也与前面的类似。你可以直接导入深度图,或者使用插件生成深度图,然后输入到 ControlNet 模型中。例如:
notion image
这比姿态有更多的景深信息。例如,我导入的图像是两个人打架,一个站在另一个前面。如果仅使用姿态绘制,相对难以绘制这种前后关系的图像。
如果你想在姿态工作流程中使用插件生成深度图,方法也很简单。只需将上述工作流程中的 DWPose Estimation 节点替换为 Zoe-Depth Map 节点即可。
此外,还有一种方法。你也可以使用一些3D 工具生成角色姿态或深度图。例如,Posemy.art(opens in a new tab) 就是这样的产品。你可以在左上角选择想要的角色姿态(标记为1),然后通过拖动鼠标调整角色的姿态,最后点击导出按钮(标记为2)导出深度图(标记为3),然后将其导入 ComfyUI:
notion image
 

边缘线稿控制:Canny ControlNet 工作流程

ControlNet 的第四种用法是通过 Canny 边缘图控制模型生成的图像。这种方法的优势在于可以通过 Canny 边缘图控制模型生成图像的边缘。例如:
notion image
工作流程的设置与前面的类似,只需将 ControlNet 模型替换为 Canny 模型即可。
notion image
 

2.实践 Controlnet(以边缘控制为例)

来源: https://comfyui-wiki.com/en/tutorial/advanced/how-to-use-canny-controlnet-with-sd1.5

SD1.5 Canny ControlNet 简介

notion image
Canny ControlNet 是最常用的 ControlNet 模型之一。它使用 Canny 边缘检测算法从图像中提取边缘信息,然后利用这些边缘信息引导 AI 图像生成。
本教程重点介绍如何将 Canny ControlNet 模型与 SD1.5结合使用。

Canny ControlNet 的关键特性

  • 结构保留:有效保留原始图像的基本结构和轮廓
  • 高灵活性:通过边缘检测参数调整控制引导强度
  • 广泛应用:适用于素描、线稿、建筑设计等各种场景
  • 稳定结果:相比其他 ControlNet 模型提供更稳定和可预测的引导

本教程的准备工作

1. 安装所需模型

首先,你需要安装以下模型:
模型类型
模型文件
下载链接
SD1.5基础模型
dreamshaper_8. Safetensors (可以使用其他已有的SD 1.5模型替代)
Canny ControlNet 模型
control_v11p_sd15_canny. Pth
VAE 模型(可选)
vae-ft-mse-840000-ema-pruned. Safetensors(可以直接使用基础模型的 vae)

2. 模型文件放置

请按照以下结构放置模型文件:

3. 下载 SD1.5 Canny ControlNet 工作流程文件**

SD1.5 Canny ControlNet 工作流程
👇右键点击下方链接并选择“另存为”下载工作流程文件并导入到你的 ComfyUI 中。
通过网盘分享的文件:L2-controlnet基础示例.json 链接: https://pan.baidu.com/s/1_e5tQDf4bvwmwk7C_e8Fmg?pwd=akv3 提取码: akv3
你可以使用这张蘑菇图片作为例子。
notion image
可以参考PDF 内的示例(参数和输出)。
  • 正面提示:Architectural visualization of exterior view futuristic half translucent biological pavilion on sunset, 8K, HD
  • 负面提示:low quality, blur

工作流程概述

关键节点说明
  1. LoadImage:用于加载输入图像
  1. Canny:执行边缘检测,有两个重要参数:
      • Low_threshold:较低阈值,控制边缘检测灵敏度
      • High_threshold:较高阈值,控制边缘连续性
  1. ControlNetLoader:加载 ControlNet 模型
  1. ControlNetApplyAdvanced:控制如何应用 ControlNet,参数包括:
      • Strength:控制强度
      • Start_percent:影响开始时间
      • End_percent:影响结束时间

使用步骤

  1. 导入工作流程
      • 从本教程下载工作流程文件
      • 在 ComfyUI 中点击“加载”,或将下载的 JSON 文件拖放到 ComfyUI 中
  1. 准备输入图像
      • 准备一张你想处理的图像
      • 使用 Load Image 节点加载图像
  1. 调整 Canny 参数
      • 推荐 low_threshold 范围:0.2-0.5
      • 推荐 high_threshold 范围:0.5-0.8
      • 使用 PreviewImage 节点预览边缘检测结果
  1. 设置生成参数
      • 在 KSampler 节点中:
        • Steps:推荐20-30
        • Cfg:推荐7-8
        • Sampler_name:推荐“dpmpp_2m”
        • Scheduler:推荐“karras”
  1. 调整 ControlNet 强度
      • Strength:1.0表示完全遵循边缘信息
      • 根据需要降低 strength 值以减弱控制
 
 

提示与建议

  1. 边缘检测参数调整
      • 如果边缘过多:增加阈值
      • 如果边缘过少:减少阈值
      • 先通过 Preview Image 节点预览效果
  1. 提示词编写
      • 正面提示应详细描述所需的风格和细节
      • 负面提示应包含要避免的元素
      • 提示应与原始图像内容相关
  1. 常见问题解决方案
      • 如果生成的图像过于模糊:增加 cfg 值
      • 如果边缘跟随不足:增加 strength 值
      • 如果缺乏细节:增加 steps 值

实际案例

以下是一些常见用例及其参数设置:
  1. 线稿上色
      • Low_threshold:0.2
      • High_threshold:0.5
      • Strength:1.0
      • Steps:25
  1. 结构重绘
      • Low_threshold:0.4
      • High_threshold:0.7
      • Strength:0.8
      • Steps:30

相关资源

 

3.同时使用多个 Controlnet

你可以同时使用多个 Controlnet 以实现更好的控制。你可能需要先安装此扩展。
notion image
然后你可以尝试以下工作流程,只需堆叠不同的 Controlnet 模型即可。
通过网盘分享的文件:L2-多重controlnet-2.json 链接: https://pan.baidu.com/s/1z5Nd1UuSbd-G9h_kaISwQQ?pwd=fjrn 提取码: fjrn
notion image
 
Loading...