去噪扩散概率模型DDPM

正态分布和高斯噪声

如,对于标准正态分布X~N(0,1),对于x∉(-1,1),我们称这些随机变量为高斯噪声

扩散模型概要

扩散现象:物质粒子从高浓度区域向低浓度区域移动的过程。

如果向一张图片逐渐添加高斯噪声,图片会变得越来越模糊;也可以通过逆向过程从噪声中生成图片。

前向过程

对于一张RGB图片,每个像素由R、G、B三个通道表示,每个通道的取值范围为[0,255]。

归一化:对于每个通道的取值,将其取值范围映射到[-1,1]。那么后续添加的高斯噪声的取值就在该区间之外。

随机采样:通过随机采样生成一张同样大小的噪声图片,通过随机采样后,每个通道的取值遵从标准正态分布。

   

加噪:目前,我们有两张图片,分别是原图片和噪声图片。我们将两张图片相同像素的通道取值混合,就可以得到一张加噪的图片。

使用上面的公式就可以计算出混合之后的图片像素通道值。

其中:ε为噪声图片的某个像素的某通道值,x为原图片相同位置的通道值,β∈[0,1]。

我们注意到,ε和x前的系数,sqrt(β)和sqrt(1-β),它们的平方和恒等于1。

当β的值增加时,x前的系数1-β的值就会减少,也就是说,β的值越大,原图的像素通道值所占的比例就越小,混合后生成的图片就越模糊。

对于原图G0,逐渐加噪后,可以得到以下公式:

为了方便后续的推导,我们做以下定义:

先考虑两个状态,x(t)和x(t-2),若由状态x(t-2)直接得到x(t)的值,由以下公式:

其中ε(t-1)和ε(t)为两个独立的随机变量,且都服从正态分布N(0,1)。而这两个随机变量的系数都为常数,所以:

服从

服从

又根据

可知

服从

原式变换为:

所以我们可以直接得到由图G0加噪成为Gt的结果:

反向过程

贝叶斯公式:

对于两个事件A和B,若A事件先于B事件发生,则对于B事件发生的情况下A事件发生的概率的计算公式如上。其中P(A)称为先验概率,P(A|B)是在B事件发生后对P(A)的修正,称为后验概率。P(B)称为证据,P(B|A)称为似然。

在反向过程中,x(t)到x(t-1)是一个随机过程,我们需要求出由x(t)到x(t-1)的概率。

所以,P\left ( x_{t-1} \right|x_{t} )=\frac{P\left ( x_{t} \right|x_{t-1} )P\left ( x_{t-1} \right )}{P\left ( x_{t} \right )},若要求出该概率,只需求出等式右边的三个概率。

首先,对于P\left ( x_{t-1} \right )P\left ( x_{t} \right ),我们并不清楚其概率,但通过前向加噪的过程,我们知道P\left ( x_{t-1} |x_{0}\right )P\left ( x_{t} |x_{0}\right )的概率,所以上式等价于:

P\left ( x_{t-1}|x_{t} ,x_{0}\right )=\frac{P\left ( x_{t}|x_{t-1} ,x_{0}\right )P\left ( x_{t-1}|x_{0} \right )}{P\left ( x_{t}|x_{0} \right )},即P\left ( x_{t-1}|x_{t} \right )=\frac{P\left ( x_{t}|x_{t-1} \right )P\left ( x_{t-1}|x_{0} \right )}{P\left ( x_{t}|x_{0} \right )}

对于P\left ( x_{t} |x_{t-1}\right )P\left ( x_{t-1} |x_{0}\right )P\left ( x_{t} |x_{0}\right ),通过前向加噪过程,我们知道:

那么P\left ( x_{t} |x_{t-1}\right )服从N\left ( \sqrt{\alpha _{t}}x_{t-1},1-\alpha _{t} \right );同理可得:

P\left ( x_{t-1} |x_{0}\right )服从N\left ( \sqrt{ \overline{\alpha}_{t}}x_{0} ,1-\overline{\alpha }_{t}\right )

P\left ( x_{t} |x_{0}\right )服从N\left ( \sqrt{ \overline{\alpha}_{t-1}}x_{0} ,1-\overline{\alpha }_{t-1}\right )

此时,我们就知道了这三个概率的概率密度函数

通过贝叶斯公式,我们就可以求出P\left ( x_{t-1}|x_{t} \right )

对于上式,我们只需求得ε,它代表从x0到xt加入的噪声。

为了得出ε的值,我们可以构建一个神经网络模型:

输入xt时刻的图像,通过预测该图像与某个x0原图加入的噪声,输出ε

扩散模型原理

Denoise原理

给定一张图片和一个状态,在Denoise过程中,首先会由Noise Predicter根据输入的图片和状态生成一张噪声图片,将输入图片与噪声图片相减,就可以得到输出图片。

算法

DDPM使用了两个算法,分别是Training和Sampling。

对于Training算法:

给定一张图片x0和一张噪声图片ε,将这两张图片按照某种比例(t)混合,得到一张新的含有噪声的图片,训练的目的是:对于这张新的图片,预测出之前加入的噪声图片ε

对于Sampling算法:

生成一张噪声图片,该噪声图片完全符合标准正态分布。接下来,逐步对该图片进行Denoise操作。

在进行每一次Denoise操作前,先生成一张噪声图片z,该图片也完全符合标准正态分布。

接着进行Denoise操作,将本次Denoise的输入图片(需要Denoise的图片)减去由Noise Predicter产生的噪声图片。在此之外,还需要加上之前生成的z噪声图片。?

经过多次Denoise操作后,就可以得到一张清晰的图片。

参考

大白话AI | 图像生成模型DDPM | 扩散模型 | 生成模型 | 概率扩散去噪生成模型_哔哩哔哩_bilibili

ML 2023 Spring

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值