菜单

条件指导

相关源文件

本页面介绍了ComfyUI中的条件指导系统,该系统是控制扩散模型输出的关键。条件指导是一种根据用户提供的输入(如文本提示、图像或其他控制信号)来引导扩散过程的技术。有关特定采样算法的信息,请参阅采样器和调度器

核心概念:无分类器指导(Classifier-Free Guidance)

ComfyUI中的主要指导机制是无分类器指导(CFG),它混合了条件和无条件去噪预测来指导扩散过程。

CFG公式为

guided_prediction = unconditional_prediction + (conditional_prediction - unconditional_prediction) * guidance_scale

guidance_scale(通常称为“CFG scale”)决定了输出在多大程度上遵循条件。值越高,模型越严格遵循条件。

来源:comfy/samplers.py346-359

条件指导实现

ComfyUI通过一组关键类和函数来实现条件指导

cfg_function是结合条件和无条件预测以符合CFG公式的核心组件。它支持通过在model_options中指定的自定义处理函数进行扩展。

CFGGuider类作为包装器,用于管理条件过程并在采样过程中应用指导。

来源:comfy/samplers.py346-359 comfy/samplers.py921-952 comfy/samplers.py363-377

条件类型和处理

ComfyUI支持多种类型的条件输入

文本条件

文本条件通过CLIP文本编码器处理

  1. 文本被分词为词元-权重对
  2. 词元被编码为嵌入
  3. 这些嵌入成为扩散模型的条件输入

来源:comfy/sd1_clip.py27-80 comfy/sd1_clip.py81-292

空间条件

ComfyUI通过区域和蒙版参数支持空间受限的条件

这允许将条件控制性地应用于图像的特定区域。

来源:comfy/samplers.py28-111

条件批量处理

calc_cond_batch 函数负责处理给定采样步骤的所有条件输入

主要功能

  • 通过批量处理兼容的条件,高效地处理多个条件
  • 通过区域和蒙版参数处理空间条件
  • 支持组合来自不同区域的结果
  • 与模型钩子集成以进行自定义处理

来源:comfy/samplers.py201-340

采样函数

sampling_function 将条件指导与采样过程集成

此函数

  1. 处理条件和无条件输入
  2. 应用任何自定义的预CFG函数
  3. 使用 cfg_function 根据指导尺度组合结果

来源:comfy/samplers.py363-377

自定义采样器和指导器

ComfyUI通过扩展节点支持自定义采样和指导技术

节点系统允许采用不同的指导策略

  1. BasicGuider:仅使用正向条件
  2. CFGGuider:标准正向/负向条件,具有CFG尺度
  3. DualCFGGuider:对不同区域或效果使用两个不同的CFG尺度

这些组件可以连接到工作流程中,以创建复杂的指导行为。

来源:comfy_extras/nodes_custom_sampler.py505-594

自定义指导函数

ComfyUI通过多种机制来自定义指导行为

  1. sampler_cfg_function:替换默认的CFG公式
  2. sampler_post_cfg_function:在CFG之后应用后处理
  3. sampler_pre_cfg_function:在应用CFG之前修改条件

自定义指导实现示例

这些机制允许实现高级指导技术,如自注意力指导(SAG)或区域特定指导。

来源:comfy/samplers.py346-359

与文本编码器集成

条件指导在很大程度上依赖于将自然语言提示转换为嵌入的文本编码器

不同的模型使用不同的文本编码器

  • SD1.x:使用标准CLIP(SDClipModel
  • SDXL:使用双CLIP编码器(SDXLClipModel),结合CLIP-L和CLIP-G)
  • SD3:使用CLIP编码器和T5-XXL(SD3ClipModel

来源:comfy/sd1_clip.py81-292 comfy/sdxl_clip.py5-95 comfy/text_encoders/sd3_clip.py10-166

词元权重处理

ComfyUI条件的一个独特之处是词元权重处理,它允许对文本提示进行精细控制

这允许在提示中使用括号和权重进行强调等技术:(red roses:1.2)

来源:comfy/sd1_clip.py27-80

高级引导技术

ComfyUI通过其扩展系统支持高级指导技术

  1. 自注意力指导(SAG):通过指导自注意力机制来增强细节
  2. 区域特定CFG:不同图像区域具有不同的指导尺度
  3. 多条件指导:组合多个条件信号

这些技术通过钩子系统和自定义指导函数来实现。

结论

ComfyUI中的条件指导系统为控制扩散模型输出提供了灵活的框架。通过无分类器指导、空间条件和自定义指导函数,用户可以实现对生成过程的精确控制。模块化设计允许轻松扩展新的条件类型和指导技术。