目录
1.标题解读
2.前言
3.摘要部分
4.引言部分
5.生成模型概述
6.扩散模型的发展
7.方法部分
Hierarchical Text-Conditional Image Generation with CLIP Latents
是一种层级式的基于CLIP特征的根据文本生成图像模型。
层级式的意思是说在图像生成时,先生成64*64再生成256*256,最终生成令人叹为观止的1024*1024的高清大图。
DALLE·2模型根据CLIP的文本特征和图像特征最终生成图像,可以看做CLIP的反向过程,因此DALLE·2被作者称为unCLIP
022Open AI提出DALLE2, 根据文本描述生成原创性的、现实的图像。可结合概念,属性和风格。
除了根据文本直接生成图片,还可以根据文本对图片进行修改。光线,纹理等。
图一中,在位置3加入火烈鸟,我们甚至可以看到在水中出现了火烈鸟的倒影,这是符合自然规律的。图二中,在水池中添加火烈鸟,出现的是一个火烈鸟的游泳圈,这说明游泳圈与水池的匹配程度较高,这也是符合常识的。以上两个例子真的让人叹为观止,说明了AI的的确确学到了一种很好的数据分布。
我们一直认为AI是能先处理重复性的工作,也就是体力工作。而这种创造性的工作往往是AI无法取代的,但现在似乎已经触手可及了。
上图是DALLE2与DALLE的对比,DALLE2达到了DALLE 4倍分辨率。
上图是自2021年来该领域的发展,主要由清华的团队和OpenAI主导。
模型主要架构为:
先训练好一个CLIP模型,找到图像和文本对之间的相连关系。给定一个文本,CLIP的文本编码器就可以将这个文本变成一个文本特征。DALL·E2训练一个prior模型,将文本特征作为该模型的输入,输出为图像特征,将这个图像特征给解码器,从而生成一个完成的图像。CLIP结合GLIDE(基于扩散模型)
CLIP已经能够学习到很稳健的特征,比如语义semantics和风格style,如果只是拿来做分类就很可惜,如果能拿来做图像生成任务。两个阶段prior和decode。
prior:根文本描述生成类似CLIP的图像特征;decoder:根据图像特征生成图像。
两个亮点,一是显式的生成图像特征能够提高图像的多样性且非常逼真(图像写实程度以及文本匹配程度很高),而GAN是的本质是“以假乱真”,去生成一个相似的分布,虽然生成的图像很逼真,但是多样性不好。二是可以实时的利用文本信息引导模型生成编辑各种图片,不需要训练(zero-shot)。
相对于自回归模型,解码器使用扩散模型效果更好。
视觉领域的进展:大模型或者大数据集(图像文本对)例如CLIP,特别好的zero-shot能力。扩散模型(概率分布模型),在图像和视频生成任务上称为最前沿SOFT的模型。再一个就是,引导guidance的技巧,牺牲一部分多样性,提升更高的逼真度。
模型主要架构如上图,上部是一个CLIP,输入为文本图像对,文本信息和图像信息分别经过文本编码器和图像编码器提取文本特征C和图像特征C,文本特征C和图像特征C也是成对存在。下方作为DALLE2主体部分,主要由prior和decoder两阶段。首先,文本信息经过文本编码器提取文本特征D,然后prior根据文本信息D生成图像特征D。训练过程中,图像特征C作为图像特征D的ground truth进行训练,也就是说训练时DALLE2生成的图像特征D时不时的看一下CLIP生成的对应文本的图像特征C。最后通过一个解码器decoder根据图像特征D生成图像。
GAN的核心是“以假乱真”。致命缺点:训练不稳定,须同时训练两个网络,存在平衡的问题(生成器和判别器有一方特别好。另一个特别差),容易坍塌,图片多样性差一些。
编码器提取特征(维度比较小),解码器重构输入x。
AE、DAE又或者是MAE都是为了编码器提取特征,然后用这个特征去做一些分类、检测和分割等任务。训练过程的损失是将生成的样本与原始样本的差异作为损失,训练过程要时不时的看原始样本。然而,它们学到不是一种分布,无法进行采样。因此VAE(Variational auto-encoder)就用来做生成任务。
VAE 与AE、DAE不同的是,特征是从编码器学习到的分布中采样得到的。多样性相对于GAN就要好很多。
那么如果我们出门之前我们听到新闻说今天路上出了个交通事故,那么我们想算一下堵车的概率,这个就叫做条件概率 。也就是P(堵车|交通事故)。这是有因求果,先验概率。
如果我们已经出了门,然后遇到了堵车,那么我们想算一下堵车时由交通事故引起的概率有多大,那这个就叫做后验概率 (也是条件概率,但是通常习惯这么说) 。也就是P(交通事故|堵车)。这是有果求因。
VQ-VAE提出离散化的思想,在处理图像和语音时,图像变成像素,语音也是抽样的。与VAE不同的是, VQ-VAE不再去做分布的预测,使用一个codebook取而代之。codebook可以理解为聚类的中心,codebook的大小一般为k×d,k8192,d=512或者768。8192个长为d的向量,即为8192个聚类中心。由于量化的特征(quantised feature)都是codebook中的,就非常可控。然而,要学习固定的codebook,又无法像VAE一样随机采样,多样性就差一些。
前向扩散过程(forward diffusion):不断地加噪声,最终原始样本就变成了噪声。
反向扩散(reverse diffusion):不断地降噪,最终噪声就变成了目标样本。
本质:将随机噪声一点一点降噪,次数足够多,就可以生成想要的图片。
扩散的概念时引用自热力学。
初步2015年左右。2020年6月,Denoising Diffusion Probabilistic Model(DDPM),利用残差的思想,不再去预测xt-1,而是去预测噪声ε。
1.利用残差的思想,xt=xt-1+ε。不去预测xt-1,转而预测噪声ε。
2.加入了time embedding。告诉模型预测到哪一步。开始生成轮廓,粗糙的大致的轮廓,随着进一步预测,逐渐生成细致的特征。
训练过程损失loss,预测的噪声(反向扩散过程)与设定的噪声(前向扩散过程)之间的差值,设定的噪声是正向扩散过程人为设定的,是已知的。
扩散模型与VAE区别和联系:
1.DDPM也可以看做编码器-解码器的结构。DDPM添加噪声的编码器是固定的过程,而VAE的编码器是学习获得的。
2.扩散模型的每一步,特征图大小都是一样的,而AE等编码器提取的bottleneck feature则是维度较小(压缩)的特征。
3.扩散模型与步数的概念,正向和反向过程。time embedding
DDPM—improved DDPM(学了方差、添加噪声的schedule改善)—diffusion beats GAN(大模型,新的归一化)—GLIDE(classifer guided diffusion)—DALLE2
用分类器计算一个交叉熵损失,得到一个梯度引导采样、图像生成。梯度隐含着信息,这些信息包括当前图片是否含有一个物体,生成的物体是否真实。牺牲了一部分多样性,改善了逼真性。
classifer free guidance
训练时生成两个输出。一个有条件,一个无条件。对比两个输出,就可以学习到两个输出之间的差异(在高维特征空间)。在测试时,使用无条件的模型得到无条件的输出,并利用学到的差异,修正无条件的输出,也可以得到和有条件的输出类似的结果。
回顾一下模型架构,上部是一个CLIP,输入为文本图像对,文本信息和图像信息分别经过文本编码器和图像编码器提取文本特征C和图像特征C,文本特征C和图像特征C也是成对存在。下方作为DALLE2主体部分,主要由prior和decoder两阶段。首先,文本信息经过文本编码器提取文本特征D,然后prior根据文本信息D生成图像特征D。训练过程中,图像特征C作为图像特征D的ground truth进行训练,也就是说训练时DALLE2生成的图像特征D时不时的看一下CLIP生成的对应文本的图像特征C。最后通过一个解码器decoder根据图像特征D生成图像。
两阶段的形式,公式如下:
The decoder allows us to invert images given their CLIP image embeddings, while the prior allows us to learn a generative model of the image embeddings themselves. Stacking these two components yields a generative model P (x|y) of images x given captions y:
P (x|y) = P (x, zi|y) = P (x|zi, y)P (zi|y).
P (x|y)根据文本生成图像; P (x, zi|y)根据文本生成图像特征和图像
P (x|zi, y)根据文本和图像特征生成图像;P (zi|y) 根据文本生成图像特征
GLIDE模型的变体,使用了CLIP的guidance。
也使用了classifier-free guidance。
级联式的生成,分辨率64*64-256*256-1024*1024。为了训练的稳定性,作者在训练时加了很多噪声。另外,扩散模型大部分是U-Net,是一个CNN的结构而非transformer。推理时可以用在任何尺寸上,并不需要序列长度保持一致。
prior模型:基于文本去生成图像特征。
不论是自回归模型还是扩散模型,都使用了classifier free guidance,因为效果确实好。
作者训练了一个transformer 的decoder,因为这里的输入输出是embedding,直接用transformer处理序列。输入有文本、CLIP文本的embedding,扩散模型的timestep embedding,加入噪声后的CLIP图像embedding以及transformer自身的embedding(CLStoken)。输出为没有加入噪声的CLIP图像embedding。
DDPM曾提出利用残差思想预测噪声,但是这里作者发现直接预测没有噪声的图像要比预测噪声更好。因此这里的损失是预测值与未加噪声的图像(特征)直接对比。
8.结果
MS-COCO256*256上FID分数,DALLE2(unCLIP)达到了最低的分数,使用扩散模型比自回归AR模型分数也有略微的降低。
通过对比不同模型根据特定的文本信息生成的图像,DALLE2确实生成比较真实的,复合语境的图像。
9.局限性
无法将物体和属性结合起来。CLIP太关注物体间的相似性,不能识别上下左右等方位信息。
生成图片,图片中文字的顺序不对。文本编码器BPE的存根词缀编码存在问题。
不能生成特别复杂场景的图像,细节缺失特别严重。第一张图修狗在湖边绿色的草地上,前景特别突出,导致湖边和草地的背景不够明显。第二张时代广场上广告牌都是像素块。
文章链接:
http://arxiv.org/abs/2204.06125
python的学习还是要多以练习为主,想要练习python的同学,推荐可以去看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费。
牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网求职之前,先上牛客,就业找工作一站解决。互联网IT技术/产品/运营/硬件/汽车机械制造/金融/财务管理/审计/银行/市场营销/地产/快消/管培生等等专业技能学习/备考/求职神器,在线进行企业校招实习笔试面试真题模拟考试练习,全面提升求职竞争力,找到好工作,拿到好offer。https://www.nowcoder.com/link/pc_csdncpt_ssdxjg_python
他们这个python的练习题,知识点编排详细,题目安排合理,题目表述以指导的形式进行。整个题单覆盖了Python入门的全部知识点以及全部语法,通过知识点分类逐层递进,从Hello World开始到最后的实践任务,都会非常详细地指导你应该使用什么函数,应该怎么输入输出。
牛客网(牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网)还提供题解专区和讨论区会有大神提供题解思路,对新手玩家及其友好,有不清楚的语法,不理解的地方,看看别人的思路,别人的代码,也许就能豁然开朗。
快点击下方链接学起来吧!
牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网
参考:
参考:
DALL·E 2【论文精读】_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV17r4y1u77B?spm_id_from=333.999.0.0&vd_source=8203bbd7379886d2ef6007067465d65c