前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Diffusion Model 扩散模型 速览

Diffusion Model 扩散模型 速览

作者头像
AiCharm
发布2023-05-15 17:14:44
6060
发布2023-05-15 17:14:44
举报
文章被收录于专栏:AiCharmAiCharm

近年来,AI生成艺术领域取得了长足的进步,其中Diffusion Model的兴起可以说是一个重要的里程碑。Diffusion Model是一种生成模型,它使用了一个深度神经网络来建模图像的像素级别分布。相较于传统的生成模型,Diffusion Model不需要计算任何显式的概率分布,而是采用一个简单的随机游走过程来生成图像。这种方法能够处理高维度、复杂的数据,并且可以产生高质量的图像。因此,Diffusion Model已经成为生成艺术领域最受欢迎的技术之一。通过使用Diffusion Model,人们能够生成逼真的图像、视频、音频等内容,进一步推动了AI在艺术创作中的应用。在本文中,我将解释它如何使用说明。

1.Diffusion Model 扩散模型

概述

扩散模型概述

Diffusion Model的训练可以分为两部分:

  • 正向扩散过程 → 为图像添加噪声
  • 反向扩散过程 → 去除图像中的噪

Forward Diffusion Process 正向扩散过程

Forward diffusion process 正向扩散过程

前向扩散过程逐步对输入图像 x₀ 逐渐加入高斯噪声,一共有 T 步。该过程将产生一系列噪声图像样本 x₁, …, x_T。当 T → ∞ 时,最终的结果将变成一张完全有噪声的图像,就好像它是从各向同性高斯分布中采样的一样。但是我们可以使用一个封闭形式的公式在特定的时间步长 t 直接对有噪声的图像进行采样,而不是设计一种算法来迭代地向图像添加噪声。

Closed-Form Formula 闭式公式

可以使用重新参数化技巧导出封闭形式的采样公式。

我们可以将采样图像 xₜ 表示如下:

然后我们可以递归展开它得到闭式公式:

闭式公式的推导

所有 ε 都是独立同分布的。(独立同分布)标准正态随机变量。使用不同的符号和下标区分它们很重要,因为它们是独立的并且它们的值在采样后可能不同。

但是我们如何从第 4 行跳到第 5 行呢?

有些人觉得这一步很难理解。在这里我将向您展示它是如何工作的:

第4行到第5行的详细推导

让我们用 X 和 Y 来表示这两项。它们可以被视为来自两个不同正态分布的样本。即 X ~ N(0, αₜ(1-αₜ₋₁)I) 和 Y ~ N(0, (1-αₜ)I)。回想一下,两个正态分布(独立)随机变量的总和也是正态分布的。即如果 Z = X + Y,则 Z ~ N(0, σ²ₓ+σ²ᵧ)。

因此我们可以将它们合并在一起并以重新参数化的形式表示合并后的正态分布。这就是我们将这两个术语结合起来的方式。

重复这些步骤将为我们提供以下仅取决于输入图像 x₀ 的公式:

The closed-form formula 闭式公式

现在我们可以使用这个公式在任何时间步直接对 xₜ 进行采样,这使得前向过程更快。

Reverse Diffusion Process 逆扩散过程

Reverse diffusion process 反向扩散过程

与正向过程不同,我们不能使用 q(xₜ₋₁|xₜ) 来反转噪声,因为它很难处理(无法计算)。

因此,我们需要训练神经网络 pθ(xₜ₋₁|xₜ) 来近似 q(xₜ₋₁|xₜ)。近似值 pθ(xₜ₋₁|xₜ) 服从正态分布,其均值和方差设置如下:

pθ 的均值和方差

损失函数

我们可以将损失定义为负对数似然:

负对数似然

此设置与 VAE 中的设置非常相似。我们可以优化变分下界,而不是优化棘手的损失函数本身

变分下界

通过优化可计算的下界,我们可以间接优化棘手的损失函数。

变分下界的推导和展开

通过展开变分下界,我们发现可以用以下三项来表示:

1. L_T:常数项

由于 q 没有可学习的参数,p 只是一个高斯噪声概率,因此这一项在训练期间将是一个常数,因此可以忽略。

2. Lₜ₋₁:逐步去噪项

这一项比较目标去噪步骤 q 和近似去噪步骤 pθ。

请注意,通过以 x₀ 为条件,q(xₜ₋₁|xₜ, x₀) 变得易于处理。

逐步去噪项的细节

经过一系列的推导,q(xₜ₋₁|xₜ, x₀)的均值μ̃ₜ如上所示。为了逼近目标去噪步骤 q,我们只需要使用神经网络来逼近其均值。因此,我们将近似均值 μθ 设置为与目标均值 μ̃ₜ 相同的形式(使用可学习的神经网络 εθ):

近似平均值

目标均值和近似均值之间的比较可以使用均方误差 (MSE) 来完成:

简化的逐步去噪损失的推导

在实验上,通过忽略加权项并简单地将目标噪声和预测噪声与 MSE 进行比较,可以获得更好的结果。因此,事实证明,为了逼近所需的去噪步骤 q,我们只需要使用神经网络 εθ 来逼近噪声 εₜ。

3. L₀:重构项

这是最后一步去噪的重建损失,在训练过程中可以忽略,原因如下:

  • 可以使用 Lₜ₋₁ 中的相同神经网络对其进行近似。
  • 忽略它会使样本质量更好,并使其更易于实施。

简化损失

所以最终简化后的训练目标如下:

简化的培训目标

我们发现,正如预期的那样,在真正的变分边界上训练我们的模型比在简化目标上训练产生更好的代码长度,但后者产生最好的样本质量。

U-Net 模型

Dataset

在每个epoch:

  1. 将为每个训练样本(图像)选择一个随机时间步长 t。
  2. 将高斯噪声(对应于 t)应用于每个图像。
  3. 将时间步长转换为嵌入(向量)。

训练数据集

训练算法

训练算法

官方的训练算法如上,下图说明了一个训练步骤是如何工作的:

训练步骤图解

Sampling 采样

采样算法

采样意味着从高斯噪声绘制图像。下图显示了我们如何使用经过训练的 U-Net 生成图像:

抽样说明

扩散速度问题

扩散(采样)过程迭代地将全尺寸图像提供给 U-Net 以获得最终结果。当总扩散步数 T 和图像大小时,这使得纯扩散模型非常慢。因此,Stable Diffusion 旨在解决这个问题。

2.Stable Diffusion 稳定扩散

稳定扩散的原始名称是“潜在扩散模型”(LDM)。顾名思义,扩散过程发生在潜在空间中。这就是它比纯扩散模型更快的原因。

前往潜在空间

Autoencoder 自编码器

我们将首先训练一个自动编码器来学习将图像数据压缩成低维表示。通过使用经过训练的编码器 E,我们可以将全尺寸图像编码为低维潜在数据(压缩数据)。通过使用经过训练的解码器 D,我们可以将潜在数据解码回图像。

潜扩散

将图像编码为潜在数据后,将在潜在空间中进行正向和反向扩散过程。

稳定扩散模型概述

  1. 前向扩散过程 → 向潜在数据添加噪声。
  2. 反向扩散过程 → 从潜在数据中去除噪声。

调节

调节机制概述

Stable Diffusion 模型的真正强大之处在于它可以根据文本提示生成图像。这是通过修改内部扩散模型以接受调节输入来完成的。

调节机制细节

通过使用交叉注意机制增强其去噪 U-Net,将内部扩散模型转变为条件图像生成器。

上图中的开关用于在不同类型的调节输入之间进行控制:

  • 对于文本输入,首先使用语言模型 𝜏θ(例如 BERT、CLIP)将它们转换为嵌入(向量),然后通过(多头)Attention(Q, K, V) 映射到 U-Net层。
  • 对于其他空间对齐的输入(例如语义映射、图像、修复),可以使用连接来完成调节。

训练

稳定扩散模型的训练目标

训练目标(损失函数)与纯扩散模型中的目标非常相似。唯一的变化是:

  • 输入潜在数据 zₜ 而不是图像 xₜ。
  • 向 U-Net 添加了条件输入 𝜏θ(y)。

Sampling 采样

稳定的扩散采样过程(去噪)

由于潜在数据的大小比原始图像小得多,因此去噪过程会快得多。

架构比较

最后,让我们比较一下纯扩散模型和稳定扩散模型(潜在扩散模型)的整体架构。

纯扩散模型

纯扩散模型架构

Stable Diffusion 稳定扩散

稳定的扩散架构

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AiCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在每个epoch:
  • 将图像编码为潜在数据后,将在潜在空间中进行正向和反向扩散过程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档