diffusion model

马尔可夫链

stable Diffusion的前向过程和反向过程都是一个马尔可夫连,
马尔科夫链的思想:过去所有的信息都已经被保存到了现在的状态,基于现在就可以预测未来。 马尔科夫链认为过去所有的信息都被保存在了现在的状态下了 。比如这样一串数列 1 - 2 - 3 - 4 - 5 - 6,在马尔科夫链看来,6 的状态只与 5 有关,与前面的其它过程无关。
既然某一时刻状态转移的概率只依赖于它的前一个状态 ,那么我们只要能求出系统中任意两个状态之间的转换概率,这个马尔科夫链的模型就定了

马尔可夫矩阵的稳定性

状态转移矩阵有一个非常重要的特性,经过一定有限次数序列的转换,最终一定可以得到一个稳定的概率分布 ,且与初始状态概率分布无关

DIffusion Models

DDPM(Denoising Diffusion Probabilistic Model)于2020年被提出,被称为扩散模型,是如今一种先进的图像生成模型。

模型预测过程

DDPM模型从随机噪声开始,通过多步预测,\(X_i\)都会在\(X_{i-1}\)的基础上减少一些噪声,让图片更清晰。 模型在每一步学习的不是从\(X_{i-1}\)\(X_i\)的函数,而是从\(X_j{i-1}\)\(X_i\)的差值(噪声),类似于resnet中的残差,从\(X_{i-1}\)减去噪声得到\(X_i\)。同时在每一步时还会加上一个步数编码。

模型训练过程

从预测过程可知,模型要学习的ground truth是相对于上一张图的噪声,所以训练样本也应该是噪声。为了得到这个训练噪声,我们可以通过Forward Process(Diffusion Process)来获得噪声。forward process即对每一步的图像随机采样噪声,得到噪声加上噪声\(X_{i+1}\),所以grount truth就是在forward process中得到的噪声

文生图Framework

文生图的三个网络: 1. Text Encoder: 从输入的文字生成词向量 2. Generation Model ; 结合初始随机噪声和词向量representation feture或者小图 3. Decoder 从representation feture 生成最终图像 一般来说三个网络是分开训练的。在有的模型中23可以是一个模型。

text encoder 的作用

帮助图像更好的理解,提高模型的泛化能力。逻辑上,模型在训练集上见到的文字描述是有限的,如果遇到没见的描述可能会使模型理解能力变差,所以通过encoder可以将模型不能理解文字转化为可以理解的向量。

指标

FID

有一个训练好的分类模型。例如vgg图像识别模型。将真实图像和生成图像在vgg中产生的represetation算一个distance。类似GAN中的discriminator。

CLIP Contrastive Language-image Pre-training

这是一个模型,可以对text和image算distance。
如果这个text使在描述这个image则distance越低。

Decoder

  1. 如果generatation 产生的是一些小图,则直接通过图像处理产生大图小图训练集,扔给模型。decoder是一个图像超分模型。
  2. 如果generatation产生的是一些latent Representation。可以利用一个Autu-encoder自编码。 > Q:这个decoder如何跟latent Representation对齐呢?
    A: 1.先训练decoder,再锁住decoder再去训练generation。 2.最后来一个端到端训练。
    Q:对于1如何再训练generation使使它对齐呢。

VAE variational auto encoder 变分自编码器

算法 training

\(X_0\):clear image
Uniform : 均匀分布
\(\epsilon\) :noise
\(\epsilon_\theta\): Noise predictor
2: sample one clear image
3: sample a number between 1, T
4: sample a noise from Normal distribution
5: 圆括号内对\(x_0\)\(\epsilon\)做wighted sum,其中\(\bar{\alpha_t}\)是一组事先选择的权重,从大到小。t是2中随机选择的。sample到的t越大,\(\alpha\)越小,原图占的比例越小。加起来就是noise image.noise image 和 t一起作为predictor的输入

想象中reverse process 过程是利用predictor一步步减少噪音,即每一步把噪声很多的图减少到噪声不那么多的图,但是再实际算法中DDPN直接在clear image中混入噪音,只不过噪音的大小由t来决定,然后学习噪音。没有中间少量噪音的中间图。这是经过数学推导得到的。

算法 Sampling

1: sample a noise image from normal distribution\(X_T\)
2: loop T times
3: sample a noise \(z\)
4: 括号里的是\(X_t - predict_noise\),系数是公式推导出的,\(/alpha\)和training算法中类似。加z是提升泛化,不加似乎出不来。

公式推导

看了一遍没太看懂,过段时间再看吧
看懂了,但不想写了,扔个链接 深入浅出扩散模型(Diffusion Model)系列:基石DDPM(人人都能看懂的数学原理篇)

一个mnist的demo

https://github.com/guchengzhong/latent_diffusion_model_mnist.git

Unet 框架

guided-diffusion[3]

一种使用了classifier的diffusion ,openai的仓库地址[2]

参考

  1. https://zhuanlan.zhihu.com/p/655568910 ↩︎
  2. https://github.com/openai/guided-diffusion ↩︎
  3. https://arxiv.org/pdf/2105.05233#page=16&zoom=100,144,174 ↩︎

diffusion model
https://jfsas.github.io/2024/10/10/diffusion-model/
作者
JFSAS
发布于
2024年10月10日
许可协议