扩散模型课程文档
单元 1:扩散模型简介
并获得增强的文档体验
开始使用
单元 1:扩散模型简介
欢迎来到 Hugging Face 扩散模型课程的单元 1!在本单元中,你将学习扩散模型工作的基本原理,以及如何使用 🤗 Diffusers 库创建你自己的扩散模型。
开始本单元 :rocket:
以下是本单元的步骤:
- 请确保你已注册本课程,以便在新材料发布时收到通知。
- 请阅读下方的介绍性材料,以及任何你感兴趣的附加资源。
- 查看下方的 Diffusers 简介 笔记本,将理论与 🤗 Diffusers 库的实践相结合。
- 使用笔记本或链接的训练脚本,训练并分享你自己的扩散模型。
- (可选)如果你对从零开始的最小化实现感兴趣,并想探索其中涉及的不同设计决策,可以深入学习 从零开始实现扩散模型 笔记本。
- (可选)观看此视频,以非正式的方式了解本单元的材料。
:loudspeaker: 别忘了加入 Discord,你可以在 #diffusion-models-class
频道中讨论材料并分享你的作品。
什么是扩散模型?
扩散模型是“生成模型”这一算法家族中一个相对较新的成员。生成模型的目标是学习在给定一些训练样本的情况下,**生成**数据,例如图像或音频。一个好的生成模型会创造出**多样化**的输出,这些输出与训练数据相似但并非完全复制。扩散模型是如何实现这一点的呢?为了便于说明,我们以图像生成为例。
图片来自 DDPM 论文 (https://arxiv.org/abs/2006.11239)。
扩散模型成功的秘诀在于扩散过程的迭代性。生成过程从随机噪声开始,但在多个步骤中逐渐优化,直到最终生成一张输出图像。在每一步,模型都会估计如何从当前输入得到一个完全去噪的版本。然而,由于我们每一步只做微小的改变,因此早期阶段(预测最终输出极其困难)的任何估计错误都可以在后续的更新中得到纠正。
与其他类型的生成模型相比,训练扩散模型相对简单。我们重复以下步骤:1) 从训练数据中加载一些图像 2) 添加不同程度的噪声。请记住,我们希望模型能够很好地估计如何“修复”(去噪)无论是极其嘈杂的图像还是接近完美的图像。3) 将输入的噪声版本送入模型 4) 评估模型在去噪这些输入方面的表现 5) 利用这些信息更新模型权重
要用训练好的模型生成新图像,我们从一个完全随机的输入开始,反复将其送入模型,每次根据模型的预测进行少量更新。正如我们将看到的,有许多采样方法试图简化这个过程,以便我们能用尽可能少的步骤生成高质量的图像。
我们将在单元 1 的动手实践笔记本中详细展示这些步骤。在单元 2 中,我们将探讨如何修改这个过程,通过额外的条件(如类别标签)或引导等技术来增加对模型输出的控制。单元 3 和单元 4 将探索一个极其强大的扩散模型,名为 Stable Diffusion,它可以根据文本描述生成图像。
动手实践笔记本
到这里,你已经掌握了足够的基础知识,可以开始使用附带的笔记本了!这里的两个笔记本从不同角度阐述了相同的概念。
章节 | Colab | Kaggle | Gradient | Studio Lab |
---|---|---|---|---|
Diffusers 简介 | ||||
从零开始实现扩散模型 |
在 Diffusers 简介 中,我们使用 diffusers 库的构建模块展示了上述的不同步骤。你将很快学会如何在你选择的任何数据上创建、训练和采样你自己的扩散模型。在完成该笔记本后,你将能够阅读和修改示例训练脚本,以训练扩散模型并与世界分享!该笔记本还介绍了与本单元相关的主要练习,我们将共同尝试找出不同规模扩散模型的良好“训练方案”——更多信息请参见下一节。
在 从零开始实现扩散模型 中,我们展示了相同的步骤(向数据添加噪声、创建模型、训练和采样),但尽可能简单地用 PyTorch 从头开始实现。然后,我们将这个“玩具示例”与 diffusers 版本进行比较,指出两者的不同之处以及改进的地方。这里的目标是让你熟悉不同的组件以及它们背后的设计决策,这样当你看一个新的实现时,你就能快速识别出关键思想。
项目时间
既然你已经掌握了基础知识,就来试试训练一个或多个扩散模型吧!Diffusers 简介 笔记本的末尾提供了一些建议。请务必与社区分享你的结果、训练方案和发现,以便我们共同找出训练这些模型的最佳方法。
一些附加资源
带注释的扩散模型非常深入地讲解了 DDPM 背后的代码和理论,用数学和代码展示了所有不同的组件。它还链接了一些论文以供进一步阅读。
Hugging Face 关于无条件图像生成的文档,提供了一些如何使用官方训练示例脚本训练扩散模型的示例,包括展示如何创建你自己的数据集的代码。
AI Coffee Break 关于扩散模型的视频:https://www.youtube.com/watch?v=344w5h24-h8
Yannic Kilcher 关于 DDPMs 的视频:https://www.youtube.com/watch?v=W-O7AZNzbzQ
发现了更多优质资源?告诉我们,我们会将它们添加到此列表中。
< > 在 GitHub 上更新