扩散课程文档

单元 4:深入了解扩散模型

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

单元 4:深入了解扩散模型

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

开始本单元 :rocket:

以下是本单元的步骤

  • 确保您已注册本课程,以便在课程中添加更多单元时收到通知。
  • 阅读下面的材料,了解本单元涵盖的不同主题的概述。
  • 通过链接的视频和资源更深入地了解任何特定主题。
  • 探索演示笔记本,然后阅读“下一步”部分以获取一些项目建议。

:loudspeaker: 不要忘记加入Discord,您可以在 #diffusion-models-class 频道中讨论材料并分享您制作的内容。

目录

通过蒸馏加速采样

渐进式蒸馏是一种利用现有扩散模型来训练新模型版本的技巧,该新模型版本需要更少的推理步骤。 “学生”模型从“教师”模型的权重进行初始化。在训练期间,教师模型执行两个采样步骤,而学生模型尝试在一个步骤中匹配生成的预测结果。这个过程可以重复多次,前一次迭代的学生模型成为下一阶段的教师。结果是一个可以在比原始教师模型少得多的步骤(通常为 4 或 8)中生成合理样本的模型。“教师”模型的权重进行初始化。在训练期间,教师模型执行两个采样步骤,而学生模型尝试在一个步骤中匹配生成的预测结果。这个过程可以重复多次,前一次迭代的学生模型成为下一阶段的教师。结果是一个可以在比原始教师模型少得多的步骤(通常为 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 “用文字作画”(eDiffi)生成的样本

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

1) 添加噪声,然后使用新提示进行降噪。这是img2img管道背后的理念,该管道已在各种论文中进行了修改和扩展

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

视频

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

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

关键参考文献

音频

image

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

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

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

关键参考文献

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

image

来自Cold Diffusion论文的图 1

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

image

来自MaskGIT的管道

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

随着每篇新论文的发表,都出现了更高效的方法,可能需要一段时间才能看到这些迭代细化任务的峰值性能。还有很多值得探索的地方!

关键参考文献

动手实践笔记本

章节 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

在本单元中,我们涵盖了大量不同的概念,其中许多概念在未来值得进行更详细的后续课程。目前,您可以通过我们准备的动手实践笔记本选择两个主题。

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

下一步去哪里?

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