李宏毅Diffusion课程

 

“雕像其实本来就已经在大理石里面,我只是把不要的部分拿掉”:米开朗琪罗

 Denoise Model除了要输入 要被输入的那张图片,还要输入这是第几张图片。(即Noise严重的程度)

Denoise Model内部实际上是在干什么呢:

 

1、Denoise Preidcter除了吃要还原的图片,还要吃一个步骤的数字。 输出一张噪声的图片,即预测出在这张图片中噪声应该长成什么样子。

2、使用要还原的图片,减去预测出来的噪声,得到Denoise后的图片。Noise Predicter学习的是噪声。(学习这张图片中的噪声是比较简单的。直接端到端,学习加噪之后的猫,其实是非常困难的)

如何训练一个Noise Predictor

从database 中取一张图片,自己加噪音进去,从Random 噪声中选择采用一组噪音出来加进去。

 

 这样加噪之后,你就有Noise Predictor的训练资料了。

 

 文生图

 

文生图,在denoise的步骤中 每一步增加一个输入。

 训练过程

 DDPM的algorithm。

 

 

Stable diffusion

 

 三个比较重要的model 对于 文生图

1、Text Encoder  (一个比较好的文本嵌入)

2、Generation Model   (一个比较好的,中间生成模型, 生成压缩后的版本)

3、Decoder   (一个比较好的Decoder,从输出的图片的压缩版本,还原回图片)

通常来说 这三个Model是分开训练,然后组合起来的

 

先有一个Encode去处理输入的东西,右侧部分。

 

 

 DALL-E 系列 Generation Model 可以考虑使用AR模型或者Diffusion模型

 Imagen系列的模型,generation model 部分会产生一个人可以辨识的小图,在Decoder的模块,再过一层Diffusion Model去生成最后的图片。

 

 Stable diffusion

 文字Encoder

 FID越小 生成的效果越好。CLIP Score 越大越好。总之 越往右下角越好。随着使用的Encoder越来越大,他生成的效果越来越好。

文字的Encoder对于生成结果的影响 非常的大。

U-Net大小 指的是Noise Predicter模型的大小。按图说明,增加Diffusion model对于结果影响不大。

 

 

 

上面这个CNN是Pre-Train过的,

上面蓝色的点,代表生成的图片经过CNN  model之后所产生的representation.红色的点,代表真实图片经过CNN model之后所产生的representation,

这两个representation相隔的越接近,说明生成的影像和原始的影像越接近。

这两个representation 离得越远,说明生成的影像和原始影像隔得越远。

怎么看两组representation 之间的距离呢。

使用了比较粗暴的方法:

假设这两组distribution 都是高斯distribution, 就是算这两个Gaussian distribution 的distance.

做法看起来很粗糙 但是Imagen仍然使用的是FID这个评价指标。

他需要sample 很多张的图片 来计算FID,

CliP Score 用于计算你输入的文字和图片含义之间的距离

 

 

 Decoder的训练 不需要 影像和文字匹配的数据。

 如果中间产物是小图

那么Decoder的训练非常的简单,你只需要把你手上的影像都拿出来,然后变成小图, 你就有成对的资料,你就可以把小图变成大图。

如果中间产物是Latent Representation

我们如何训练一个Decoder把 Larent Representation 当成输入,把这些Latent Represention还原成一张图片。

训练一个Auto-encoder  使得输入X 经过AE尽可能的还原出X。

 

 

 训练完成之后,我们就可以把Decoder拉出来用,给予一个Latent Representation ,就可以还原出X。

 

 

 把噪音加入latent reprezatation.

 

 

 

posted @ 2024-03-07 20:07  backlighter  阅读(209)  评论(0)    收藏  举报