Latent Diffusion Models
1.隐空间的定义和VAE模型生成效果
1.1隐函数变量相关概念
隐变量是概率统计中的概念,它表示未被测量或者不方便直接测量的隐藏变量。
他是一个未观测到的随机变量,用于解释和建模数据的生成过程。
在机器学习和数据表示中,隐空间可以直接将原始数据进行压缩后的低维数据表示形式,可以用于表征数据的核心特征。
隐空间是数据的低纬表示空间,用于捕捉和简化数据特征。
VAE是Latent Space即为数据编码后空间,一般假设俯冲对角标准高斯分布
基于隐空间的计算由于维度降低很多,隐藏可以加载计算速度。
隐空间某种视角也可以看做是隐变量的延伸(标量和向量的关系)
就是我们的VAE模型就是为了把关键数据浓缩到更小的隐空间中。
假设我们的mnist是28x28维的,我们的隐空间就一定比28x28更小,类似20x20维。
我们隐空间中每个维度假设满足独立的标准正态分布,整体服从对角标准正态分布。
我们在使用变分自编码器(VAE)时,来实现从布局Layout到图像以及从语音分割图像到图像编码解码功能的可行。
1.2VAE模型训练损失函数
VAE模型隐变量空间分布:
隐变量空间假设服从对角标准高斯分布
VAE编码模块将数据编码到隐空间,预测出隐空间每个遍历的均值和方差。
每个变了的均值和方差要接近标准高斯分布(两个分布尽可能相似,可以用KL散度来衡量)
2.Latent DIffusion Model算法原理及生成效果
2.1Latent Diffusion Model的基本原理
Latent Diffusion Model 也是在元素数据的隐空间进行DDPM算法训练,然后通过VAE解码器还原到原始数据空间
将训练数据利用VAE进行隐空间压缩编码
在隐变量空间中尽显扩散和去噪的过程
训练算法流程
训练变分自编码器将高纬数据编码到低纬隐空间遍历(基于低纬遍历空间可以重建数据)
在隐变量空间进行DDPM算法去噪训练(数据的隐变量空间编码结果作为DDPM的x(0))
推理算法流程
在隐遍历空间按对角标准高斯分布进行随机采样
通过扩散模型逐步去噪,重建数据的隐变量空间编码结果
将隐变量空间作为解码器的输入,输出为数据空间,达到最终生成新数据的目标。
2.2Latent Diffusion Model的条件控制生成
Latent Diffusion Model不仅可以应用于无条件控制生成,同时也可以应用于条件控制生成。
这里我们拿条件生成的网络结构来进行举例。
这个是他的整体结构:从左到右三个模块分别为:感知图片压缩,潜在扩散模型,以及条件机制模块。
首先原始图片x在像素空间中被感知压缩模型压缩为潜在空间特征z,然后,U-net通过扩散过程(向z中添加噪声和去除噪声)重构了潜在空间特征
,其被解码为输出图片
。在这个过程中,条件机制将输入的条件(例如,文本,图片等)编码为嵌入特征。然后,利用cross-attention机制将条件输入注入到Unet结构中。
cross attention计算过程
首先基于Transformer Block等组件计算方式如图所示:
条件信息参与Cross Attention的计算
首先把条件信息映射为Cross embedding,然后让Cross embedding进行Cross Attention的计算,Cross Attention和参数运算形成K,和V,然后输入和参数矩阵计算形式Q
多Stage交叉注意力机制实现。
就是在输入时,我们首先输入一个时间步t,一个噪声图像,以及文本提示语,我们通过时间步进行时间嵌入到每一个rensetblock2d的时间嵌入模块,然后把文本提示语通过后文本嵌入,嵌入到每一个transformer2dmodel模型的交叉注意力模块以及每一个下采样和上的交叉注意力模块。最后使用一个基本的u形网络可以完成生成。
条件信息如何控制生成结果?
主要由三个方法,首先是条件信息作为模型输入的一部分,就是我们在输入数据时就已经输入的了条件信息,我们的结算过程都少不了条件信息的影响。
然后就是条件信息与Cross Attention计算,就是我们将条件信息映射context embeeding 进行cross attention的计算。我们的context embedding和Unet网络的多个中间层进行Cross attention计算。最后就是条件信息的多方面融合:我们的条件信息既映射context embedding作为输入信息的一部分,同时也映射context embedding进行多层的cross attention的计算。
这里举例一个例子: