Diffusers documentation

受控生成

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

受控生成

控制扩散模型生成的输出一直是社区长期追求的目标,如今已成为一个活跃的研究课题。在许多流行的扩散模型中,输入(包括图像和文本提示)的细微变化都可能导致输出发生巨大改变。在理想情况下,我们希望能够控制语义如何被保留和改变。

大多数保留语义的示例都归结为能够准确地将输入的变化映射到输出的变化。例如,在提示词中为主语添加一个形容词,会保留整幅图像,仅修改所变更的主语。或者,对特定主体进行图像变体生成时,会保留该主体的姿态。

此外,除了语义保真之外,我们还希望影响生成图像的其他特性。也就是说,总体而言,我们希望输出图像具有高质量、符合特定风格或更加逼真。

我们将记录 diffusers 支持的用于控制扩散模型生成过程的一些技术。其中许多属于前沿研究,细节可能较为复杂。如果某些内容需要澄清,或者您有建议,请随时发起 GitHub Discussion 或 GitHub issue。

我们提供了关于如何控制生成过程的高层说明,并附上了一段技术细节的示例。如需更深入的技术解释,从流水线中链接的原始论文始终是最好的参考资料。

根据具体用例,应选择合适的技术。在许多情况下,这些技术可以组合使用。例如,可以将 Textual Inversion 与 SEGA 结合,为使用 Textual Inversion 生成的输出提供更强的语义引导。

除非另有说明,这些技术适用于现有模型,且不需要它们自身的权重。

  1. InstructPix2Pix
  2. Attend and Excite
  3. 语义引导
  4. 自注意力引导
  5. Depth2Image
  6. MultiDiffusion 全景
  7. DreamBooth
  8. 文本反转
  9. ControlNet
  10. 提示词加权
  11. 自定义扩散
  12. DiffEdit
  13. T2I-Adapter
  14. FABRIC

为了方便起见,我们提供了一张表格,用于说明哪些方法仅用于推理,哪些方法需要微调/训练。

方法仅推理需要训练 /
微调
评论
InstructPix2Pix✅❌此外,还可以进行
微调,以提升在特定
编辑指令上的
性能。
Attend and Excite✅❌
语义引导✅❌
自注意力引导✅❌
Depth2Image✅❌
MultiDiffusion 全景✅❌
DreamBooth❌✅
文本反转❌✅
ControlNet✅❌ControlNet 可以针对
自定义条件进行
训练/微调。
提示词加权✅❌
自定义扩散❌✅
DiffEdit✅❌
T2I-Adapter✅❌
Fabric✅❌

InstructPix2Pix

论文

InstructPix2Pix 基于 Stable Diffusion 进行微调,以支持对输入图像进行编辑。它以一张图像和一段描述编辑操作的提示词作为输入,并输出编辑后的图像。 InstructPix2Pix 经过专门训练,能够很好地配合类似 InstructGPT 的提示词使用。

Attend and Excite

论文

Attend and Excite 能够确保提示词中的主体在最终图像中得到忠实呈现。

输入是一组 token 索引,对应于提示词中需要出现在图像里的主体。在去噪过程中,每个 token 索引都保证对图像中至少一个 patch 具有最低注意力阈值。在去噪过程中,中间潜变量会被迭代优化,以增强最被忽视的主体 token 的注意力,直到所有主体 token 的注意力都达到阈值。

与 Pix2Pix Zero 类似,Attend and Excite 的流程中也包含一个小型优化循环(保持预训练权重不变),因此可能需要比常规的 StableDiffusionPipeline 更多的内存。

语义引导(SEGA)

论文

SEGA 允许从图像中添加或移除一个或多个概念,并且可以控制概念的强度。例如,可以使用“微笑”概念来逐步增加或减少肖像中的微笑程度。

与分类器自由引导通过空提示输入提供引导类似,SEGA 通过概念提示提供引导。可以同时应用多个此类概念提示。根据引导是正向还是负向应用,每个概念提示可以添加或移除其对应的概念。

与 Pix2Pix Zero 或 Attend and Excite 不同,SEGA 直接作用于扩散过程,而非执行任何显式的基于梯度的优化。

自注意力引导(SAG)

论文

Self-attention Guidance 提升了图像的整体质量。

SAG 提供了从未经高频细节条件化的预测到完全条件化图像的引导。高频细节是从 UNet 自注意力图中提取出来的。

Depth2Image

项目

Depth2Image 基于 Stable Diffusion 进行微调,以更好地保留文本引导图像变化中的语义信息。

它以原始图像的独眼深度估计作为条件。

MultiDiffusion 全景

论文

MultiDiffusion Panorama 在预训练扩散模型上定义了一种新的生成过程。该过程将多种扩散生成方法结合在一起,可直接用于生成高质量且多样化的图像。生成结果遵循用户提供的控制条件,例如期望的宽高比(如全景图)以及空间引导信号,范围从紧密的分割掩码到边界框。 MultiDiffusion Panorama 允许您以任意宽高比(例如全景图)生成高质量图像。

微调您自己的模型

除了预训练模型,Diffusers 还提供了训练脚本,用于在用户提供的数据上对模型进行微调。

DreamBooth

项目

DreamBooth 通过微调模型来使其学习新的主题。例如,可以使用几张某人的照片来生成该人物在不同风格下的图像。

文本反转

论文

Textual Inversion 通过微调模型来使其学习一个新概念。例如,可以使用几张特定艺术风格的图片来生成该风格下的图像。

ControlNet

论文

ControlNet 是一个辅助网络,用于添加额外的条件。 共有 8 个标准的预训练 ControlNet,分别基于不同的条件进行训练,例如边缘检测、涂鸦、深度图和语义分割。

提示词加权

提示词加权是一种简单技术,用于对文本输入中的某些部分赋予更高的注意力权重。

Custom Diffusion

论文

Custom Diffusion 仅对预训练文本到图像扩散模型的交叉注意力图进行微调。它还支持额外执行 Textual Inversion。其设计本身就支持多概念训练。与 DreamBooth 和 Textual Inversion 类似,Custom Diffusion 也用于让预训练的文本到图像扩散模型学习新概念,从而生成包含目标概念的输出。

DiffEdit

论文

DiffEdit 允许根据输入提示对输入图像进行语义编辑,同时尽可能保留原始输入图像。

T2I-Adapter

论文

T2I-Adapter 是一个辅助网络,用于添加额外的条件。 共有 8 个标准的预训练适配器,分别在不同的条件上进行训练,例如边缘检测、草图、深度图和语义分割。

Fabric

论文

Fabric 是一种无需训练的方法,适用于多种流行的扩散模型。它利用最常用架构中存在的自注意力层,使扩散过程能够以一组反馈图像作为条件。

Update on GitHub