扩散课程文档

第四单元:扩散模型进阶

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始入门

第四单元:扩散模型进阶

欢迎来到 Hugging Face 扩散模型课程的第四单元!在本单元中,我们将探讨最新的研究中出现的许多扩散模型的改进和扩展。本单元的代码量将比之前的单元少,旨在为您进一步研究提供一个起点。

开始本单元 :rocket:

以下是本单元的步骤

  • 请确保您已注册本课程,以便在课程添加其他单元时收到通知。
  • 通读以下材料,大致了解本单元涵盖的不同主题。
  • 通过链接的视频和资源,深入研究任何特定主题。
  • 浏览演示 notebook,然后阅读“下一步”部分,了解一些项目建议。

:loudspeaker: 别忘了加入 Discord,您可以在 #diffusion-models-class 频道中讨论材料并分享您的作品。

目录

通过蒸馏加速采样

渐进式蒸馏是一种技术,它利用现有的扩散模型来训练新版本的模型,新模型在推理时所需的步骤更少。“学生”模型从“教师”模型的权重初始化。在训练期间,教师模型执行两个采样步骤,而学生模型尝试在一个步骤中匹配生成的预测。这个过程可以重复多次,前一次迭代的学生模型成为下一阶段的教师模型。最终得到的模型可以用比原始教师模型少得多的步骤(通常为 4 或 8 步)生成像样的样本。核心机制在引入该想法的论文中的这张图中进行了说明

image

渐进式蒸馏图示(来自 论文

使用现有模型来“教导”新模型的想法可以扩展到创建引导模型,其中教师模型使用无分类器引导技术,而学生模型必须学习根据指定目标引导规模的附加输入,在一个步骤中生成等效输出。此视频概述了该方法。

注意:Stable Diffusion 的蒸馏版本可以在此处使用。

主要参考文献

训练改进

人们还开发了几种额外的技巧来改进扩散模型训练。在本节中,我们尝试总结近期论文中的核心思想。不断有研究提出额外的改进,如果您看到任何您认为应该添加到这里的论文,请告诉我们!

image ERNIE-ViLG 2.0 论文中的图 2

主要训练改进

  • 调整噪声调度、损失权重和采样轨迹,以提高训练效率。Karras 等人的《阐明基于扩散的生成模型的设计空间》是一篇出色的论文,探讨了其中一些设计选择。
  • 训练各种宽高比,如课程发布活动的这段视频中所述。
  • 级联扩散模型,训练一个低分辨率模型,然后训练一个或多个超分辨率模型。在 DALLE-2、Imagen 和更多模型中用于高分辨率图像生成。
  • 更好的条件控制,结合丰富的文本嵌入(Imagen 使用名为 T5 的大型语言模型)或多种类型的条件控制(eDiffi)。
  • “知识增强” - 将预训练的图像字幕和对象检测模型整合到训练过程中,以创建更丰富的信息性字幕并产生更好的性能(ERNIE-ViLG 2.0)。
  • “去噪专家混合”(MoDE)- 训练模型的不同变体(“专家”),用于不同的噪声水平,如ERNIE-ViLG 2.0 论文的上述图像所示。

主要参考文献

更强的生成和编辑控制

除了训练改进之外,在采样和推理阶段还涌现了一些创新,包括许多可以为现有扩散模型添加新功能的方法。

image “paint-with-words” 生成的样本(eDiffi)

“使用扩散模型编辑图像”视频概述了使用扩散模型编辑现有图像的不同方法。可用的技术可以分为四个主要类别

1) 添加噪声,然后使用新提示去噪。这是 img2img pipeline 背后的思想,它已在各种论文中进行了修改和扩展

论文 InstructPix2Pix:学习遵循图像编辑指令 值得注意的是,它使用上述一些图像编辑技术构建了图像对的合成数据集以及图像编辑指令(使用 GPT3.5 生成),以训练能够根据自然语言指令编辑图像的新模型。

视频

image 来自 使用 Imagen Video 生成的示例视频 的静帧

视频可以表示为图像序列,扩散模型的核心思想可以应用于这些序列。最近的工作集中在寻找合适的架构(例如在整个序列上运行的“3D UNet”)以及有效地处理视频数据。由于高帧率视频涉及的数据量比静止图像多得多,因此当前的方法倾向于首先生成低分辨率和低帧率视频,然后应用空间和时间超分辨率来生成最终的高质量视频输出。

主要参考文献

音频

image

使用 Riffusion 生成的频谱图(图像来源

虽然已经有一些关于直接使用扩散模型生成音频的工作(例如 DiffWave),但迄今为止最成功的方法是将音频信号转换为称为频谱图的东西,频谱图有效地将音频“编码”为 2D“图像”,然后可以用于训练我们习惯用于图像生成的扩散模型。然后,可以使用现有方法将生成的频谱图转换为音频。这种方法是最近发布的 Riffusion 背后的原理,它微调了 Stable Diffusion 以生成以文本为条件的频谱图 - 在此处试用

音频生成领域发展极其迅速。在过去一周(在撰写本文时),至少宣布了 5 项新进展,在下面的列表中用星号标记

主要参考文献

新的架构和方法 - 迈向“迭代优化”

image

来自 Cold Diffusion 论文的图 1

我们正慢慢超越“扩散”模型的原始狭义定义,走向更通用的迭代优化模型类别,其中某种形式的损坏(如前向扩散过程中添加高斯噪声)逐渐反转以生成样本。“冷扩散” 论文证明,许多其他类型的损坏可以迭代地“撤消”以生成图像(如上所示的示例),而最近基于 Transformer 的方法已经证明了令牌替换或掩码作为噪声策略的有效性。

image

来自 MaskGIT 的 Pipeline

许多当前扩散模型核心的 UNet 架构也正在被不同的替代方案所取代,最值得注意的是各种基于 Transformer 的架构。在 具有 Transformer 的可扩展扩散模型 (DiT) 中,Transformer 被用来代替 UNet 用于相当标准的扩散模型方法,效果极佳。循环接口网络 在追求更高效率的同时,应用了一种新颖的基于 Transformer 的架构和训练策略。MaskGITMUSE 使用 Transformer 模型来处理图像的令牌化表示,尽管 Paella 模型证明 UNet 也可以成功应用于这些基于令牌的机制。

随着每一篇新论文的出现,更有效的方法正在被开发出来,我们可能需要一段时间才能看到这些迭代优化任务的峰值性能是什么样的。还有很多东西需要探索!

主要参考文献

实践 Notebook

章节 Colab Kaggle Gradient Studio Lab
DDIM 反演 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab
音频扩散 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab

在本单元中,我们涵盖了很多不同的想法,其中许多想法值得在未来进行更详细的后续课程。现在,您可以通过我们准备的实践 notebook 选择许多主题中的两个。

  • DDIM 反演 展示了如何使用称为反演的技术,使用现有的扩散模型来编辑图像。
  • 音频扩散 介绍了频谱图的概念,并展示了在特定音乐类型上微调音频扩散模型的最小示例。

下一步是什么?

这是本课程目前的最后一个单元,这意味着接下来做什么取决于您!请记住,您可以随时在 Hugging Face Discord 上提问并聊聊您的项目。我们期待看到您创造的作品 🤗。

< > 在 GitHub 上更新