P1
-
从一个高斯分布中采样出一个vector,这个vector的维度跟你要生成的图片维度大小是一致的,比如256*256。随后进行多次降噪(Denoise),多次降噪的过程被称为Reverse Process。
-
图片已经在噪声中,尝试把噪声滤掉,就生成一张照片
-
同一个Denoise model反复使用
-
对于Denoise,除了输入照片,还会输入这张照片的严重程度,希望denoise根据我们输入第几个step的输入,做出回应
-
Denoise内部通过输入噪音图片和步骤step,产生一张噪音图,即预测这张照片中噪音应该的样子,再用输入图片减去噪音图片,生成输出图
- 那么如何训练Noise Predicter呢
- 输入图像由人为加入随机噪声,这个步骤叫前向过程
- 这样,我们手上就有训练资料了,当看到输入图片和step,就输出ground truth
- 在进行text-image时,我们在Denoise模块加上文字叙述
P2
- 通常整个框架包含三个部分:
- Text Encoder
- Generation Model:输入噪音和文字生成产物喂进,生成中间产物
- Decoder:将图片压缩版本还原成照片
- SOTA的模型都是由这几部分组成
Text Encoder
Imagen所用文字Encoder,其中FID值越小,生成的图片越好 ,CLIP值越大越好, 文字编码的大小较影响生成图片的质量。这里的U-Net是指噪音预测模块的大小。 在图b中,增大噪音预测模块的大小对模型性能提示有限。
- FID
- FID是从原始图像的计算机视觉特征的统计方面,来衡量两组图像的相似度,是计算真实图像和生成图像的特征向量之间距离的一种度量。
- 这种视觉特征是使用 Inception v3 图像分类模型提取特征并计算得到的。FID 在最佳情况下的得分为 0.0,表示两组图像相同。分数越低代表两组图像越相似,或者说二者的统计量越相似
- FID 分数常被用于评估由生成对抗网络(GAN)生成的图像的质量,较低的分数与较高质量的图像有很高的相关性。
- CLIP
- CLIP Score通过学习自然语言和图像对之间的语义关系来捕捉它们之间的意义关系。将自然语言和图像对分别转换为特征向量,然后计算它们之间的余弦相似度。当CLIP Score较高时,图像-文本对之间的相关性更高。CLIP Score评估自然语言和图像对之间的匹配度和相关性。值越大(接近1),评估越高。
Decoder
Generation Model
- 输入文字产生的model,产生一个中间产物,即图片压缩结果
P3数学原理
- VAE是先加个Encoder把图片变成latent representation再加Decoder变成图像
- Diffusion是先加噪音再Denoise噪音
DDPM所使用的算法
-
Training:
1:循环执行2-5
2:sample一张干净的图片(一般用x0表示一张干净的图,就是资料库里的图)
3:从1到T中取一个整数作为t
4:从平均值(mean)=0,方差(variance)=1的normal distribution中sample出ε,大小与image一致,是一张全是噪音的图片
5: 红框内为干净图片和噪音图片混合生成的噪音,结合t,进行逼近 ϵ \epsilon ϵ,作为损失,进行梯度下降使其最小,以求得 a t ⃗ \vec{a_t} at -
Sampling:
1:先从normal distribution中sample一张全是噪音的图像 x T x_T xT
2:循环T次,Denoise
3:从normal distribution中sample一张噪音图像z
4:带入计算得到下一次循环的图像 x t − 1 x_{t-1} xt−1; ε θ ε_θ εθ(…):预测生成的噪音图片; x t x_t xt:上一张图像
5: 最后还要加入一个z
P4
- 影像生成模型奋斗的目标是通过sample一个Gaussian distribution,通过Network转换,输出变成的图片,期待生成的图片和真正的图片越接近越好
- 加了文字相当于加了一个条件限制condition
- 如何衡量真实的与寻找的之间的相似度呢?
- 可以通过最大似然估计方法进行计算
- 假设我们能够计算出产生出一张图的概率
P
θ
(
x
i
)
P_\theta(x_i)
Pθ(xi),从真实分布中抽一些图片,然后计算用模型能生成出这些图的概率,再乘起来,要找一组模型参数让这个乘积最大