菜单

高级引导技术

相关源文件

介绍

本文档介绍了ComfyUI中实现的先进引导技术,这些技术扩展或修改了标准的扩散过程。这些技术提供了对生成过程的增强控制,通常能产生更高质量的输出或特殊效果。

有关基本条件引导的信息,请参阅 条件引导

先进的引导技术主要作为模型修改器存在,它们会改变UNet处理输入的方式,或改变无分类器引导的应用方式。本页面记录了这些技术在ComfyUI中的实现和用法。

来源: comfy_extras/nodes_sag.py comfy_extras/nodes_perpneg.py comfy_extras/nodes_pag.py comfy_extras/nodes_freelunch.py comfy_extras/nodes_hypertile.py

引导技术概览

ComfyUI中的高级引导技术在扩散过程的不同点运行,它们通过修改UNet的行为、改变注意力计算方式或对标准的无分类器引导结果进行后处理来实现。

高级引导架构

来源: comfy_extras/nodes_sag.py comfy_extras/nodes_perpneg.py comfy_extras/nodes_pag.py comfy_extras/nodes_freelunch.py comfy_extras/nodes_hypertile.py

自注意力引导 (SAG)

自注意力引导利用扩散模型的内部注意力机制,通过基于注意力模式的引导校正来增强生成的图像。

SAG实现细节

SAG的工作原理是:

  1. 在无条件去噪过程中捕获中间块自注意力层的注意力分数
  2. 在注意力高的区域创建无条件预测的模糊版本
  3. 用模型处理这个模糊图像
  4. 使用模糊和非模糊预测之间的差异来引导最终结果

SelfAttentionGuidance节点暴露了两个关键参数:

  • scale:控制SAG效果的强度(默认值:0.5)
  • blur_sigma:控制高斯模糊的强度(默认值:2.0)

来源: comfy_extras/nodes_sag.py107-173

垂直负面引导 (Perp-Neg)

垂直负面引导通过计算负面提示方向相对于正面提示方向的垂直分量来修改标准的无分类器引导过程。

Perp-Neg算法

Perp-Neg的关键在于将负面提示的影响分解为平行于正面提示方向和垂直于正面提示方向的分量。通过仅缩放垂直分量,它允许负面提示“避开”不想要的內容,而不会与正面提示方向发生冲突。

该实现提供了两个节点:

  • PerpNeg:原始实现(已弃用)
  • PerpNegGuider:使用引导系统的新实现

PerpNegGuider节点的参数:

  • cfg:标准无分类器引导比例
  • neg_scale:控制垂直负面分量的影响

来源: comfy_extras/nodes_perpneg.py8-120

扰动注意力引导 (PAG)

扰动注意力引导通过替换特定块中的自注意力来修改UNet的注意力机制,以改善图像细节。

PAG实现

PAG的工作原理是:

  1. 计算标准的无分类器引导结果
  2. 使用替换了中间块自注意力为恒等函数的模型再次运行
  3. 使用正常结果与此扰动结果之间的差异来引导生成

PerturbedAttentionGuidance节点有一个参数:

  • scale:控制PAG效果的强度(默认值:3.0)

来源: comfy_extras/nodes_pag.py1-56

FreeU增强

FreeU是一种频率域增强技术,通过修改频率域中的特征图来提高生成图像的质量。

FreeU实现

FreeU通过以下方式增强图像质量:

  1. 用因子 b1 和 b2 缩放特定输出块中的骨干特征
  2. 将傅里叶域滤波器应用于跳跃连接,尺度为 s1 和 s2

该实现提供了两个节点:

  • FreeU:原始实现
  • FreeU_V2:基于特征统计的增强型自适应缩放版本

FreeU节点的参数:

  • b1:model_channels*4 特征的骨干缩放因子(v1 默认值为 1.1,v2 默认值为 1.3)
  • b2:model_channels*2 特征的骨干缩放因子(v1 默认值为 1.2,v2 默认值为 1.4)
  • s1:model_channels*4 特征的跳跃连接缩放因子(两者默认值均为 0.9)
  • s2:model_channels*2 特征的跳跃连接缩放因子(两者默认值均为 0.2)

来源: comfy_extras/nodes_freelunch.py6-113

HyperTile处理

HyperTile是一种通过将注意力计算分解为图块来更有效地处理大图像的技术。

HyperTile实现

HyperTile通过以下方式提高了内存效率并支持处理更大的图像:

  1. 拦截自注意力计算
  2. 将空间维度划分为图块
  3. 独立处理每个图块
  4. 重新组合结果

HyperTile节点的参数:

  • tile_size:控制图块的最小尺寸(默认值:256)
  • swap_size:控制要考虑的除数数量(默认值:2)
  • max_depth:控制将图块应用于哪个UNet分辨率(默认值:0)
  • scale_depth:是否根据深度缩放图块大小(默认值:False)

来源: comfy_extras/nodes_hypertile.py8-81

集成到 ComfyUI

所有这些高级引导技术都实现为修改模型行为的节点。它们可以通过将模型连接到技术节点并随后在采样操作中使用修改后的模型来添加到工作流中。

高级引导节点类型

来源: comfy_extras/nodes_sag.py107-173 comfy_extras/nodes_perpneg.py98-120 comfy_extras/nodes_pag.py9-52 comfy_extras/nodes_freelunch.py25-108 comfy_extras/nodes_hypertile.py23-77

使用注意事项与组合

这些高级引导技术可以单独使用,也可以组合使用,每种技术都会影响生成过程的不同方面。

技术主要影响最适合计算影响
SAG基于注意力增强细节改善面部细节、结构一致性中等(需要额外的模型评估)
Perp-Neg提高负面提示的有效性更好地控制不想要的元素低(仅计算开销)
PAG提高细节一致性在不改变整体结构的情况下增强细节中等(需要额外的模型评估)
FreeU提高图像清晰度和细节一般质量提升低(FFT运算开销)
HyperTile支持处理更大的图像高分辨率生成内存减少,速度略有下降

组合使用技术时

  • FreeU 和 SAG/PAG 通常配合良好,FreeU 增强频率特性,而 SAG/PAG 改善结构细节。
  • HyperTile 可以与任何其他技术结合使用,以支持更高分辨率的处理。
  • Perp-Neg 通常与其他所有技术都能很好地配合,因为它处理的是生成过程的不同方面。

来源: comfy_extras/nodes_sag.py comfy_extras/nodes_perpneg.py comfy_extras/nodes_pag.py comfy_extras/nodes_freelunch.py comfy_extras/nodes_hypertile.py