赞
踩
GAN,VAE,diffusion model
AE,DAE的主要目的都是为了学中间bottleneck特征,然后把这个特征拿去做分类、检测、分割等任务,并不是用来做生成的,原因是bottleneck特征学到的不是一个概率分布,我们没法对它进行采样,这里的z并不像GAN中那样是一个随机噪声,它是一个专门用来重建的一个特征,但是这种encoder-decoder的形式确实是一个很好的结构,那么如何使用这种结构去做图像生成呢?所以就有了VAE。
相比于AE,不再是学习一个固定的bottleneck特征,而是去学习了一个分布;
作者假设这个分布是一个高斯分布,可以用均值和方差进行描述;
pipeline:当我们得到从编码器出来的特征,在后面加一些fc层,去预测这个均值和方差,然后得到均值和方差后就去采样一个z出来,这样的话VAE就可以用来做生成了,因为在你训练好这个模型之后,就可以把编码器直接扔掉,z就是一个可以从高斯随机噪声中抽样出来的样本,然后把z给解码器,就可以生成一张照片了。
最大似然:VAE这里预测的是一个分布,从贝叶斯概率的角度来看,前面给定x得到z的过程其实就是一个后验概率q(z|x),然后学出来的这个distribution其实就是一个先验分布,后面给定z去预测一张图片x的时候,其实就是likelihood p(x | z),所以这里做的其实就是maximize likelihood,从数学上看就优美很多;
多样性更好:而且VAE有很多不错的性质,例如因为它学的是一个概率分布,是从这个分布里去抽样,所以它生成的图像多样性就比GAN要好很多,所以后续也做了很多VAE的工作,包括VQ-VAE和VQ-VAE-2,以及DALLE第一版模型;
VQ的含义是vector quantised,就是把VAE做量化;这么做的原因是,如果做之前的VAE的方式,就不好把模型做大,图像的尺寸做大,而且中间的分布也不是很好学,所以说取而代之的是,不去做分布的推测,而是用一个codebook去代替了;
codebook可以理解成聚类的中心,codebook的大小一般是K * D,K一般是8192,D一般是512 或者 768,意思是有8192个长度为D的向量在这个codebook里,也就是说我们有8192个聚类中心,如果有一个图片经过编码器得到一个hw长宽大小的特征图,然后把特征图里的向量去跟codebook了的向量做对比,看看它跟哪个聚类中心最接近,然后就把最接近的聚类中心的编码存到z这个矩阵里,这里面就是一些编号,比如1或者100之类的,一旦做完聚类的分配,就不用之前的特征f了,而是把index对应的特征拿出来,生成新的特征图fq,就是quantised feature;
这个量化后的特征非常可控,因为它永远都是从codebook里来的,它不是一个随机的东西,所以优化起来就相对容易,有了特征图fq之后就通过解码器重构一张图片;
VQVAE后来不仅用到了DALLE中,还用到了视觉自监督学习中,例如BEIT,就是把DALLE训练好的codebook拿过去,把图片全都quantise成特征图fq,拿这个去做gt自监督训练一个视觉网络;
VQVAE学习的是一个固定的codebook,没法像VAE一样去做随机采样,然后去生成对应的图片了,准确的说它不像VAE,更像是AE,它学的codebook和特征fq是拿去做high-level的任务的(分类,检测等),那么如果想要它做生成怎么办?对于VQVAE来说,还需要单独再训练一个prior网络,论文中作者又训练了一个pixel CNN当做prior网络,从而能够利用已经训练好的codebook去做图像的生成;
其中这个模型的输入输出的尺寸是不变的,采用的是U-net:
DDPM做了一些改进让优化过程更简单了,最重要的2个贡献:
improved DDPM做了几个改动:
DDPM说方差可以不用学,作者认为学了效果可能会更好
把怎么添加噪声的schedule改了,从线性schedule变成余弦schedule
用更大的模型会有更好的图像生成结果
首先上来把模型加大加宽,增加自注意头的数量等,把模型变得又大又复杂
提出了新的归一化的方式,adaptive group normalization,根据步数做自适应的归一化
使用classifier guidance的方法去引导模型做采样和生成,不仅让生成的图像更逼真,也加速了反向采样的速度(25次采样就可以生成图像)
把xt扔给分类器,可以算交叉熵目标函数,对应得到一些梯度,用梯度帮助模型接下来进行采样和图像的生成,梯度就暗含了图片里到底有没有一个物体,或者说当前这个物体真不真实,通过梯度的引导来告诉unet,现在生成的图片要看起来更像某一类的物体,所以经过classifier guidance,生成的图像逼真了很多,在FID等score上比bigGAN高了,牺牲了一些多样性来换取图片的写实性。
除了用梯度做引导信号,后续很多工作也尝试了其他的引导方式:
classifier guidance的问题是,要么拿一个pretrain好的模型,要么得去训练一个模型,不仅成本比较高,而且训练的过程也不可控;
所以就有了classifier free guidance,不想要classifier,能不能找到一种指导信号去让这个模型的生成变得更好;在训练模型的时候生成了2个输出,一个是有条件的时候的输出,一个是没有条件的时候的输出,然后训练时得到无条件输出到有条件输出之间的变换;不过这种方式比较贵,要infer两次。
文本y–> 文本特征 -prior-> 图像特征zi -decoder-> 图像x
prior模型:用文本特征预测图像特征,gt是用clip image encoder提取的图文对中的图像特征;尝试了用autoregressive和diffusion的两种方式,都用了classifer-free guidance
decoder模型:扩散模型将图像特征生成图像,是GLIDE模型的变体;用的是CLIP guidance,用了classifier-free guidance,用了级联式生成,先从6464->256256->1024*1024
总的来说,dalle2是将CLIP和GLIDE两个模型结合在一起
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。