Skip to content

扰动注意力引导

扰动注意力引导 (PAG) 是一种新的扩散采样引导方法,可以在无条件和有条件设置下提高样本质量,而无需进一步训练或集成外部模块。

PAG 由 Donghoon Ahn, Hyoungwon Cho, Jaewon Min, Wooseok Jang, Jungwoo Kim, SeonHwa Kim, Hyun Hee Park, Kyong Hwan Jin 和 Seungryong Kim 在 Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance 中提出。

论文摘要如下:

最近的研究表明,扩散模型能够生成高质量的样本,但其质量在很大程度上取决于采样引导技术,如分类器引导 (CG) 和无分类器引导 (CFG)。这些技术通常不适用于无条件生成或各种下游任务,如图像修复。在本文中,我们提出了一种新的采样引导方法,称为扰动注意力引导 (PAG),它可以在无条件和有条件设置下提高扩散样本的质量,而无需额外的训练或集成外部模块。PAG 旨在在整个去噪过程中逐步增强样本的结构。它通过用单位矩阵替换扩散 U-Net 中选定的自注意力图来生成结构退化的中间样本,利用自注意力机制捕捉结构信息的能力,引导去噪过程远离这些退化的样本。在 ADM 和 Stable Diffusion 中,PAG 惊人地提高了有条件和甚至无条件场景下的样本质量。此外,PAG 在各种下游任务中显著提高了基线性能,这些任务中现有的引导方法(如 CG 或 CFG)无法充分利用,包括带有空提示的 ControlNet 和图像修复(如修复和去模糊)。

PAG 可以通过在实例化 PAG 管道时指定 pag_applied_layers 参数来使用。它可以是一个字符串或字符串列表。每个字符串可以是一个唯一的层标识符或正则表达式,用于识别一个或多个层。

  • 完整标识符作为普通字符串:down_blocks.2.attentions.0.transformer_blocks.0.attn1.processor
  • 完整标识符作为正则表达式:down_blocks.2.(attentions|motion_modules).0.transformer_blocks.0.attn1.processor
  • 部分标识符作为正则表达式:down_blocks.2,或 attn1
  • 标识符列表(可以是字符串和正则表达式的组合):["blocks.1", "blocks.(14|20)", r"down_blocks\.(2,3)"]

AnimateDiffPAGPipeline

[[autodoc]] AnimateDiffPAGPipeline

  • all
  • call

HunyuanDiTPAGPipeline

[[autodoc]] HunyuanDiTPAGPipeline

  • all
  • call

KolorsPAGPipeline

[[autodoc]] KolorsPAGPipeline

  • all
  • call

StableDiffusionPAGPipeline

[[autodoc]] StableDiffusionPAGPipeline - all - call

StableDiffusionPAGImg2ImgPipeline

[[autodoc]] StableDiffusionPAGImg2ImgPipeline - all - call

StableDiffusionControlNetPAGPipeline

[[autodoc]] StableDiffusionControlNetPAGPipeline

StableDiffusionControlNetPAGInpaintPipeline

[[autodoc]] StableDiffusionControlNetPAGInpaintPipeline - all - call

StableDiffusionXLPAGPipeline

[[autodoc]] StableDiffusionXLPAGPipeline - all - call

StableDiffusionXLPAGImg2ImgPipeline

[[autodoc]] StableDiffusionXLPAGImg2ImgPipeline - all - call

StableDiffusionXLPAGInpaintPipeline

[[autodoc]] StableDiffusionXLPAGInpaintPipeline - all - call

StableDiffusionXLControlNetPAGPipeline

[[autodoc]] StableDiffusionXLControlNetPAGPipeline - all - call

StableDiffusionXLControlNetPAGImg2ImgPipeline

[[autodoc]] StableDiffusionXLControlNetPAGImg2ImgPipeline - all - call

StableDiffusion3PAGPipeline

[[autodoc]] StableDiffusion3PAGPipeline - all - call

PixArtSigmaPAGPipeline

[[autodoc]] PixArtSigmaPAGPipeline - all - call