扰动注意力引导
扰动注意力引导 (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