“雕像其实本来就已经在大理石里面,我只是把不要的部分拿掉”:米开朗琪罗
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.
标签:Diffusion,训练,李宏毅,生成,课程,Decoder,Model,图片 From: https://www.cnblogs.com/patterndream/p/18057476