生成式AI扩散模型-Diffusion Model【李宏毅2023】概念讲解、原理剖析笔记

JennnyZhang 2024-09-13 09:31:01 阅读 72

目录

一、Diffusion的基本概念和运作方法

1.Diffusion Model是如何运作的?

2.Denoise模块内部正在做的事情

如何训练Noise predictor?

1)Forward Process (Diffusion Process)

2)noise predictor

3.Text-to-Image

4.两个Algorithm

二、Diffusion Framework

1.Framework

①Text Encoder:将文字输入encoder为向量

FID:Frechet Inception Distance ↓

CLIP:Contrastive Language-Image Pre-Training

②Generation Model:输入一个噪声,得到图片的压缩版本

③Decoder:压缩的版本还原为原来的图片

Small pic

Auto-Encoder

2. Stable Diffusion

3.DALL-E series

4.Imagen (Google)

三、Diffusion Model数学原理剖析(1)

 Algorithm1 Training

Algorithm2 Sampling

四、Diffusion Model数学原理剖析(2)

1.影像生成模型本质上的共同目标

2.Maximum Likelihood Estimation


视频链接:【生成式AI】Diffusion Model 概念讲解 (2/2)_哔哩哔哩_bilibili

原视频:【生成式AI】Diffusion Model 原理剖析 (1/4) (optional) (youtube.com)

课件链接:ML 2023 Spring (ntu.edu.tw)

一、Diffusion的基本概念和运作方法

1.Diffusion Model是如何运作的?

Denoise Model 是同一个Model,但是由于每次输入的噪声严重程度不同,因此除了输入图片外,还引入一个数字,用来表示当前输入图片噪声的严重程度,比如 ”1“ 代表Denoise步骤快结束了

2.Denoise模块内部正在做的事情

为什么不直接生成一个带噪音的猫?因为 noise predictor 的输出分布是简单的,而直接生成各种图片的分布是复杂的,所以 noise predictor 更容易训练,也就是说生成一张图片的噪音相对来说更容易

如何训练Noise predictor?

我们需要一个ground truth 来生成noise:

1)Forward Process (Diffusion Process)

通过一步步的加噪声,得到最终的噪音图,而每一步的step x 就代表在训练过程的第二个输入,每一步得到的加了噪音的图,就是训练过程的第一个输入(相当于反向过来看)

2)noise predictor

根据输入的step x和输入的噪音图,得到该张图片的噪声预测,减掉噪声得到最终results

3.Text-to-Image

文字输入作为noise predictor的额外的输入,描述当前图片

4.两个Algorithm

 


二、Diffusion Framework

1.Framework

:三个Model分开训练,然后再组合起来,且市面上大多数diffusion都是采用的这三个Model

①Text Encoder:将文字输入encoder为向量

图(a)表示测试不同Encoder对于实验结果的影响,FID越小越好,CLIP Score越大越好,即越往右下角越好,随着T5的size逐渐增大,实验结果越来越好

图(b)表示测试不同Diffusion Model对于实验结果的影响,可以看到增大Diffusion Model对于实验结果的帮助是有限的

FID和CLIP为衡量模型生成图片质量的指标,上述结论得出Encoder的重要性

FID:Frechet Inception Distance ↓

FID 是生成图像和真实图像在特征空间中的分布距离,FID 假设生成图像和真实图像在特征空间的分布都是高斯分布,然后计算这两个高斯分布的距离

首先有一个预训练好的CNN Model 影像分类模型,然后把所有图片(无论是真实还是生成数据)全部丢到CNN Model里面,然后得到真实影像和生成影像产生的representation,两组representation越接近就说明生成的数据越接近真实数据,反之亦然。

那么如何计算距离呢?: 直接计算Gaussians之间的idstance

CLIP:Contrastive Language-Image Pre-Training

可以用来测试输入的图片和文字的对应关系是否紧密

如果text 和 image 是成对的,那么他们encoder出来的向量 要越近越好;否则就要越远越好

②Generation Model:输入一个噪声,得到图片的压缩版本

Noise要加在中间产物或者latent representation上,而不是直接加在图片上

训练Decoder的时候不需要 图片和文字对应的训练数据,而训练Difussion Model的时候是需要的

③Decoder:压缩的版本还原为原来的图片

Small pic

Decoder的输入是小图,输出是原始图片所以我们可以对原始图片进行下采样,变成小图,然后小图和原始图片组成成对的数据集去训练Decoder即可。Imagen采用的Decoder就是小图还原为大图,做一个downsampling

Auto-Encoder

Diffusion和DALL采用的Decoder是Latent Representation,之前在讲Diffussion Model的时候,nosie是加到图片上面的,而现在我们的Framework里面扩散模型产生的是中间产物,他可能不是图片了,所以我们在diffusion process这一部分,把nosie加到中间产物(eg.latent representation)上面.

如果中间产物不是小图,而是Latent Reoresentation,那就要训练一个Auto-encoder这个Auto-encoder要做的事情,就是将图片输入到encoder中,得到图片的潜在表示,然后将潜在表示输入到Decoder中,得到图片,让得到的图片与输入的图片越相近越好。训练完,把这个Auto-encoder 中的Decoder拿出来用就好了

也可以通过downsampling进行小图+latent representation的训练

2. Stable Diffusion

3.DALL-E series

4.Imagen (Google)


三、Diffusion Model数学原理剖析(1)

 Algorithm1 Training

如果T越大  则α_T 就越小,对应着原始图片占的比例越小,噪声占的比例越大

想象中,nosie 是一点一点加进去的

然后denoise 的时候也是一点一点去掉的

但是实际上,noise是一次直接加进去,denoise也是一次出去

Algorithm2 Sampling

一开始先sample 一个全都是noise的图片

步骤2 那里就是在跑 resverse process 

本来以为得到了去除noise的结果就是最终结果,但实际操作过程中还要再加一张noise?


四、Diffusion Model数学原理剖析(2)

1.影像生成模型本质上的共同目标

加上文字的Condition并没有造成太大的差别,对算法影响不会太多

2.Maximum Likelihood Estimation



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。