本页面介绍了ComfyUI中的条件指导系统,该系统是控制扩散模型输出的关键。条件指导是一种根据用户提供的输入(如文本提示、图像或其他控制信号)来引导扩散过程的技术。有关特定采样算法的信息,请参阅采样器和调度器。
ComfyUI中的主要指导机制是无分类器指导(CFG),它混合了条件和无条件去噪预测来指导扩散过程。
CFG公式为
guided_prediction = unconditional_prediction + (conditional_prediction - unconditional_prediction) * guidance_scale
guidance_scale(通常称为“CFG scale”)决定了输出在多大程度上遵循条件。值越高,模型越严格遵循条件。
ComfyUI通过一组关键类和函数来实现条件指导
cfg_function是结合条件和无条件预测以符合CFG公式的核心组件。它支持通过在model_options中指定的自定义处理函数进行扩展。
CFGGuider类作为包装器,用于管理条件过程并在采样过程中应用指导。
来源:comfy/samplers.py346-359 comfy/samplers.py921-952 comfy/samplers.py363-377
ComfyUI支持多种类型的条件输入
文本条件通过CLIP文本编码器处理
来源:comfy/sd1_clip.py27-80 comfy/sd1_clip.py81-292
ComfyUI通过区域和蒙版参数支持空间受限的条件
这允许将条件控制性地应用于图像的特定区域。
calc_cond_batch 函数负责处理给定采样步骤的所有条件输入
主要功能
sampling_function 将条件指导与采样过程集成
此函数
cfg_function 根据指导尺度组合结果ComfyUI通过扩展节点支持自定义采样和指导技术
节点系统允许采用不同的指导策略
这些组件可以连接到工作流程中,以创建复杂的指导行为。
来源:comfy_extras/nodes_custom_sampler.py505-594
ComfyUI通过多种机制来自定义指导行为
自定义指导实现示例
这些机制允许实现高级指导技术,如自注意力指导(SAG)或区域特定指导。
条件指导在很大程度上依赖于将自然语言提示转换为嵌入的文本编码器
不同的模型使用不同的文本编码器
SDClipModel)SDXLClipModel),结合CLIP-L和CLIP-G)SD3ClipModel)来源:comfy/sd1_clip.py81-292 comfy/sdxl_clip.py5-95 comfy/text_encoders/sd3_clip.py10-166
ComfyUI条件的一个独特之处是词元权重处理,它允许对文本提示进行精细控制
这允许在提示中使用括号和权重进行强调等技术:(red roses:1.2)。
ComfyUI通过其扩展系统支持高级指导技术
这些技术通过钩子系统和自定义指导函数来实现。
ComfyUI中的条件指导系统为控制扩散模型输出提供了灵活的框架。通过无分类器指导、空间条件和自定义指导函数,用户可以实现对生成过程的精确控制。模块化设计允许轻松扩展新的条件类型和指导技术。