扩散模型与GLIDE

OpenAI最近发布了DALL-E 2.可看作是CLIP+GLIDE.
GLIDE是一个扩散模型,想弄清楚DALL-E 2,需要先了解扩散模型及GLIDE的原理。

1.DDPM

扩散模型(Diffusion Model)是一种图像生成模型,其余GAN,VAE等方法机制不同。
扩散模型包含两个阶段,从原图逐步到噪声的正向过程/扩散过程(forward/diffusion process)和从噪声逐步到原图的逆向过程(reverse process)。


image.png

逆向过程
逆向过程从一张随机高斯噪声图片xt开始,通过逐步去噪生成最终的结果x0 。这个过程是一个Markov Chain

image.png

image.png

正向/扩散过程
采用的是一个固定的Markov chain形式,即逐步地向图片添加高斯噪声:


image.png

可以直接获得任意程度的加噪图片,方便后续的训练。

模型训练
原图x0是本身有的,每一步添加的高斯噪声也是有的。所以训练过程是你想过程中,由xt去求得上一步xt-1,直到x0.

DDPM采用了一个U-Net 结构的Autoencoder来对t时刻的噪声进行预测,
image.png

高斯均值如下,方差采用的是一个常数。
image.png

2 Guided Diffusion - 基于类别引导的扩散模型

加入类别条件能够比无类别条件生成获得更好的效果,这是因为加入类别条件的时候,实际上是大大减小了生成时的多样性。OpenAI的Guided Diffusion [4]就提出了一种简单有效的类别引导的扩散模型生成方式。Guided Diffusion的核心思路是在逆向过程的每一步,用一个分类网络对生成的图片进行分类,再基于分类分数和目标类别之间的交叉熵损失计算梯度,用梯度引导下一步的生成采样。这个方法一个很大的优点是,不需要重新训练扩散模型,只需要在前馈时加入引导既能实现相应的生成效果。


image.png

即在每一步过程中,在计算高斯分布的均值时加上方差和分类梯度项的乘积。基于这样的改进,不需要重新训练扩散模型,只需要额外训练一个分类器,就能够有效地在添加类别引导。扩散模型由于每一次逆向过程都要过至少一遍网络,所以总体生成速度通常还是比较慢的。

3.Semantic Guidence Diffusion

除了分类引导,还可以有文本,图像等多种引导方式。


image.png

基于文本条件的图像生成,即希望生成的图像符合文本的描述。
在逆向过程中,每个迭代步要对有噪声的图像和文本计算embedding相似度,作为引导。


image.png

基于图像条件的图像生成,希望生成的图像与参考的图像尽可能相似。
image.png
image.png

image.png

4。Classifier-Free Diffusion Guidence

带分类器的引导扩散模型缺点是,引导函数和扩散模型分别进行训练,不利于进一步扩增模型规模,不能够通过联合训练获得更好的效果。
感觉4是针对2的,与3无关。
无分类器的做法是


image.png

根据有条件和无条件两次的结果得到噪声高斯估计。

5. GLIDE

no-classifer guidence 可以更好的将条件信息加入到扩散模型的训练中去以得到更好的训练效果,但同时也会增加训练成本,因为要过两次模型。
其中算法的核心即将前面的类别条件更新为了文本条件:


image.png

参考:https://zhuanlan.zhihu.com/p/449284962

你可能感兴趣的:(扩散模型与GLIDE)