Diffusers 文档

受控生成

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

受控生成

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

大多数保留语义的例子都归结为能够准确地将输入的改变映射到输出的改变。例如,在提示中给一个主体添加一个形容词,可以保留整个图像,只修改改变后的主体。或者,特定主体的图像变体可以保留主体的姿势。

此外,我们还希望影响生成图像的质量,而不仅仅是语义保留。也就是说,总的来说,我们希望我们的输出质量良好、符合特定风格或具有真实感。

我们将记录 diffusers 支持的一些控制扩散模型生成的技术。其中许多是前沿研究,可能非常细致入微。如果有什么需要澄清的,或者您有任何建议,请随时在论坛GitHub issue上发起讨论。

我们提供关于如何控制生成的高层次解释,以及一些技术细节的片段。要获得关于技术细节的更深入解释,原始论文(从 pipelines 链接)始终是最好的资源。

根据用例,应相应地选择一种技术。在许多情况下,这些技术可以结合使用。例如,可以将 Textual Inversion 与 SEGA 结合使用,以便为使用 Textual Inversion 生成的输出提供更语义化的指导。

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

  1. InstructPix2Pix
  2. Pix2Pix Zero
  3. Attend and Excite
  4. Semantic Guidance
  5. Self-attention Guidance
  6. Depth2Image
  7. MultiDiffusion Panorama
  8. DreamBooth
  9. Textual Inversion
  10. ControlNet
  11. Prompt Weighting
  12. Custom Diffusion
  13. Model Editing
  14. DiffEdit
  15. T2I-Adapter
  16. FABRIC

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

方法 仅推理 需要训练 /
微调
备注
InstructPix2Pix 还可以针对特定的
编辑指令进行微调,以获得
更好的性能。
编辑指令。
Pix2Pix Zero
Attend and Excite
Semantic Guidance
Self-attention Guidance
Depth2Image
MultiDiffusion Panorama
DreamBooth
Textual Inversion
ControlNet ControlNet 可以在
自定义条件下进行
训练/微调。
Prompt Weighting
Custom Diffusion
Model Editing
DiffEdit
T2I-Adapter
Fabric

InstructPix2Pix

论文

InstructPix2Pix 从 Stable Diffusion 微调而来,以支持编辑输入图像。它以图像和描述编辑的提示作为输入,并输出编辑后的图像。InstructPix2Pix 经过专门训练,可以很好地处理类似 InstructGPT 的提示。

Pix2Pix Zero

论文

Pix2Pix Zero 允许修改图像,以便将一个概念或主题转换为另一个概念或主题,同时保留一般的图像语义。

去噪过程从一个概念嵌入引导到另一个概念嵌入。在去噪过程中,优化中间的 latents,以将注意力图推向参考注意力图。参考注意力图来自输入图像的去噪过程,用于鼓励语义保留。

Pix2Pix Zero 既可以用于编辑合成图像,也可以用于编辑真实图像。

  • 为了编辑合成图像,首先需要根据标题生成图像。接下来,我们为要编辑的概念和新的目标概念生成图像标题。我们可以为此目的使用像 Flan-T5 这样的模型。然后,通过文本编码器为源概念和目标概念创建“平均”提示嵌入。最后,使用 pix2pix-zero 算法来编辑合成图像。
  • 为了编辑真实图像,首先需要使用像 BLIP 这样的模型生成图像标题。然后,对提示和图像应用 DDIM 反演,以生成“反向” latents。与之前类似,创建源概念和目标概念的“平均”提示嵌入,最后将 pix2pix-zero 算法与“反向” latents 结合使用来编辑图像。

Pix2Pix Zero 是第一个允许“零样本”图像编辑的模型。这意味着该模型可以在不到一分钟的时间内在消费级 GPU 上编辑图像,如此处所示

如上所述,Pix2Pix Zero 包括优化 latents(而不是 UNet、VAE 或文本编码器中的任何一个),以引导生成朝着特定概念方向发展。这意味着整个 pipeline 可能比标准的 StableDiffusionPipeline 需要更多的内存。

InstructPix2Pix 和 Pix2Pix Zero 等方法之间的一个重要区别是,前者涉及微调预训练权重,而后者则不涉及。这意味着您可以将 Pix2Pix Zero 应用于任何可用的 Stable Diffusion 模型。

Attend and Excite

论文

Attend and Excite 允许提示中的主体在最终图像中得到忠实地呈现。

一组 token 索引作为输入给出,对应于提示中需要在图像中呈现的主体。在去噪过程中,保证每个 token 索引对于图像的至少一个 patch 具有最小的注意力阈值。在去噪过程中,迭代优化中间的 latents,以加强最被忽略的主体 token 的注意力,直到所有主体 token 都通过注意力阈值。

与 Pix2Pix Zero 类似,Attend and Excite 也涉及一个微型优化循环(保持预训练权重不变),并且可能比通常的 StableDiffusionPipeline 需要更多的内存。

Semantic Guidance (SEGA)

论文

SEGA 允许从图像中应用或删除一个或多个概念。概念的强度也可以控制。例如,微笑概念可以用于逐步增加或减少肖像的微笑程度。

类似于无分类器指导如何通过空提示输入提供指导,SEGA 提供关于概念提示的指导。可以同时应用多个这些概念提示。每个概念提示都可以添加或删除其概念,具体取决于指导是正面应用还是负面应用。

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

Self-attention Guidance (SAG)

论文

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

SAG 提供从不以高频细节为条件的预测到完全以条件为条件的图像的指导。高频细节是从 UNet 自注意力图中提取出来的。

Depth2Image

项目

Depth2Image 从 Stable Diffusion 微调而来,以更好地保留文本引导的图像变体的语义。

它以原始图像的单目深度估计为条件。

MultiDiffusion Panorama

论文

MultiDiffusion Panorama 在预训练的扩散模型上定义了一个新的生成过程。此过程将多种扩散生成方法结合在一起,可以轻松地应用于生成高质量和多样化的图像。结果符合用户提供的控制,例如所需的宽高比(例如,全景图)和空间引导信号,范围从紧密的分割掩码到边界框。MultiDiffusion Panorama 允许生成任意宽高比(例如,全景图)的高质量图像。

微调您自己的模型

除了预训练模型之外,Diffusers 还具有用于在用户提供的数据上微调模型的训练脚本。

DreamBooth

项目

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

文本反演

论文

文本反演 微调模型以使其学习关于新概念。 例如,可以使用一些艺术风格的图片来生成该风格的图像。

ControlNet

论文

ControlNet 是一个辅助网络,它添加了一个额外的条件。 有 8 个在不同条件下(如边缘检测、涂鸦、深度图和语义分割)训练的规范预训练 ControlNet。

提示权重

提示权重 是一种简单的技术,可将更多注意力权重放在文本输入的某些部分。

自定义扩散

论文

自定义扩散 仅微调预训练的文本到图像扩散模型的交叉注意力映射。 它还允许额外执行文本反演。 它在设计上支持多概念训练。 与 DreamBooth 和文本反演类似,自定义扩散也用于教导预训练的文本到图像扩散模型关于新概念,以生成涉及感兴趣概念的输出。

模型编辑

论文

文本到图像模型编辑管道 帮助您减轻预训练的文本到图像扩散模型可能对输入提示中存在的主题做出的一些不正确的隐式假设。 例如,如果您提示 Stable Diffusion 生成“一束玫瑰”的图像,则生成的图像中的玫瑰更可能是红色的。 此管道可帮助您更改该假设。

DiffEdit

论文

DiffEdit 允许对输入图像进行语义编辑,同时保留原始输入图像。

T2I 适配器

论文

T2I 适配器 是一个辅助网络,它添加了一个额外的条件。 有 8 个在不同条件下(如边缘检测、草图、深度图和语义分割)训练的规范预训练适配器。

Fabric

论文

Fabric 是一种无需训练的方法,适用于各种流行的扩散模型,它利用最广泛使用的架构中存在的自注意力层,根据一组反馈图像来调节扩散过程。

< > 在 GitHub 上更新