使用clip训练好的特征做层级式的依托于文本的图像生成,层级式是指生成小分辨率图片后不断用模型上采样得到高清大图
clip将输入的文本变成一个文本特征,然后dalle2训练一个prior模型,输入是文本特征输出是图像特征,最后把图像特征喂给解码器得到图片
dalle2 = clip + glide
abstract
翻译:
对比学习模型,如clip,已被证明能够学习到同时捕获图像的语义和风格的鲁棒表示。为了利用这些表示进行图像生成,我们提出了一个两阶段模型:一个先验网络,它根据文本描述生成clip图像嵌入,以及一个解码器,它根据图像嵌入生成图像。我们展示,明确地生成图像表示可以改善图像多样性,同时在照片真实性和描述相似性上的损失最小。我们的解码器,在图像表示的条件下,还可以生成图像的变化,同时保留其语义和风格,变化那些在图像表示中不存在的非关键细节。此外,clip的联合嵌入空间使语言引导的图像操作能够在零样本的情况下进行。我们使用扩散模型作为解码器,并尝试使用自回归模型和扩散模型作为先验,发现后者在计算上更有效率,并产生更高质量的样本。
总结:
prior:clip得到的文本特征通过自回归或扩散模型(效果更好)生成图像特征
decoder:图像特征通过扩散模型生成图片
gan的质量好,但是不够多样,所以还是diffusion好
introduction
翻译:
计算机视觉领域的最新进展是由扩大模型规模推动的,这些模型在互联网上收集的大规模带注释图像数据集上进行训练 [10, 44, 60, 39, 31, 16]。在这个框架内,clip [39] 已经成为一个成功的图像表示学习器。clip嵌入具有许多理想的特性:它们对图像分布偏移具有鲁棒性,具有令人印象深刻的零样本能力,并且已经经过微调,在广泛的视觉和语言任务上取得了最先进的结果 [45]。与此同时,扩散模型 [46, 48, 25] 已经成为了一个有前途的生成建模框架,推动了图像和视频生成任务的最先进水平 [11, 26, 24]。为了达到最佳结果,扩散模型利用了一种指导技术 [11, 24],这种技术在牺牲样本多样性的情况下提高了样本保真度(对于图像,即照片真实感)。
总结:
clip学到的特征很好
diffusion的多样性来自于从数据分布上采样,但是真实性不如gan,因为gan的训练目标就是朝着以假乱真去的。但随着ddpm以及后续一系列工作出来,其中最有用的技巧就是guidance technique,通过牺牲一些多样性换取保真度,diffusion模型质量变好。
classifier guided diffusion:
f是u-net,这是diffusion去噪的过程,classifier是在imagenet上的图片加噪训练出的(因为去噪的图片本身就包含噪声),利用得到的梯度帮助模型进行采样和图像的生成,因为这里的梯度其实暗含了图片中有没有物体,物体真不真实等信息,是在告诉u-net现在生成的图片要更像某一类物体
classifier-free guidance:
无需classifier,能否找到一种指导信号使模型生成得更好?
有条件时的输出减去无条件时的输出,举个例子:通过文本生成图片,此时y是条件也就是文本,然后随机的把y去掉,不用文本而是用空的序列,得到另一个图片。此时我们能知道一个方向,能使得无条件生成的图片变成有条件生成的图片
翻译:
在这项工作中,我们将这两种方法结合起来用于文本条件图像生成的问题。我们首先训练一个扩散解码器来反转clip图像编码器。我们的反转器是非确定性的,并且可以为给定的图像嵌入生成多个图像。编码器及其近似逆(即解码器)的存在使得功能超越了文本到图像的翻译。与gan反转 [62, 55] 类似,对输入图像进行编码和解码会产生在语义上相似的输出图像(图3)。我们还可以通过反转输入图像嵌入之间的插值来在输入图像之间进行插值(图4)。然而,使用clip潜在空间的一个显著优势是能够通过移动到任何编码文本向量的方向来语义修改图像,而在gan潜在空间中找到这些方向则涉及运气和勤奋的手动检查。此外,编码和解码图像还为我们提供了一种工具,用于观察clip识别或忽略图像的哪些特征。
翻译:
为了获得图像的完整生成模型,我们将clip图像嵌入解码器与一个先验模型结合起来,后者从给定的文本描述生成可能的clip图像嵌入。我们将我们的文本到图像系统与其他系统如dall-e [40] 和 glide [35] 进行比较,发现我们的样本质量与glide相当,但在生成多样性方面更具优势。我们还开发了在潜在空间中训练扩散先验的方法,并显示它们实现了与自回归先验相当的性能,同时计算效率更高。我们将我们的完整文本条件图像生成堆栈称为unclip,因为它通过反转clip图像编码器来生成图像。
上面是clip,下面是dalle2
如果要直接从text encoder提取特征,通过中间一个大的模型学一些融合特征,然后生成图片也可以,但是效果不如显式的图像生成,也就是文本特征转化成图像特征再生成
clip本身是学到了文本图像对的,所以拿输入图像的clip img encoder的结果当作groundtruth来监督dalle2的图像特征,也就是让文本特征去预测groundtruth的图像特征,通过这种方式学到prior
unclip就是dalle2,从特征得到图像,与clip相反,所以是un
method
翻译:
我们的训练数据集包含图像 x 和它们对应的描述 y 的成对数据 (x; y)。给定一个图像 x,设 zi 和 zt 分别为其 clip 图像嵌入和文本嵌入。我们设计我们的生成堆栈以使用两个组件从描述生成图像:
• 一个先验 p(zi|y),它根据描述 y 产生 clip 图像嵌入 zi。
• 一个解码器 p(x|zi,y),它根据 clip 图像嵌入 zi(和可选的文本描述 y)产生图像 x。
翻译:
解码器允许我们根据图像的clip图像嵌入来反转图像,而先验允许我们学习图像嵌入本身的生成模型。将这两个组件堆叠起来就得到了一个给定描述y的图像x的生成模型p(x|y):
第一个等式成立是因为 zi 是 x 的一个确定性函数。第二个等式成立是因为链式法则。因此,我们可以通过首先使用先验采样 zi,然后使用解码器采样 x,从而从真实的条件分布 p(x|y) 中进行采样。在接下来的部分,我们将描述我们的解码器和先验堆栈。有关训练细节和超参数,请参阅附录 c。
总结:
clip的encoder是锁住的,所以zi是确定的;最后右边是prior,左边是decoder
decoder
翻译:
我们使用扩散模型 [25, 48] 来根据 clip 图像嵌入(和可选的文本描述)生成图像。具体来说,我们修改了 nichol 等人 (2021) 描述的架构,通过投射并将 clip 嵌入添加到现有的时间步嵌入中,并将 clip 嵌入投射到四个额外的上下文标记中,这些标记被连接到 glide 文本编码器输出序列的末尾。我们保留了原始 glide 模型中存在的文本条件路径,假设它可能允许扩散模型学习 clip 无法捕捉的自然语言的方面(例如变量绑定),但我们发现在这方面它提供的帮助很小(第7节)。虽然我们可以直接从解码器的条件分布中进行采样,但使用扩散模型进行条件信息引导的先前工作 [11, 24, 35] 显示显著提高了样本质量。我们通过在训练过程中随机地将 clip 嵌入设置为零(或一个学习的嵌入)10% 的时间,以及随机丢弃文本描述 50% 的时间,来启用无分类器引导 [24]。
为了生成高分辨率图像,我们训练了两个扩散上采样模型 [34, 43]:一个将图像从 64×64 分辨率上采样到 256×256 分辨率,另一个进一步将那些图像上采样到 1024×1024 分辨率。
为了提高我们上采样器的鲁棒性,我们在训练过程中轻微损坏了条件图像。对于第一个上采样阶段,我们使用高斯模糊 [43],对于第二个阶段,我们使用更多样化的 bsr 退化 [42, 59]。为了减少训练计算量并提高数值稳定性,我们遵循 rombach 等人 [42] 的方法,在目标大小四分之一的图像随机裁剪上进行训练。我们在模型中只使用空间卷积(即没有注意力层),并在推理时直接在目标分辨率上应用模型,观察到它很容易泛化到更高的分辨率。我们发现对上采样器进行文本描述的条件作用没有好处,并且使用无条件的 admnets [11] 而不进行引导。
总结:
glide变体,加了clip的guidance
不仅用了clip的guidance,还用了classifier-free guidance,10%的时间丢掉clip的,50%的时间丢掉文本特征
层级式生成,从256x256一直上采样倒1024x1024;训练中加了很多噪声;由于只使用卷积而没用注意力层,所以不会有序列长度必须一致的限制
prior
翻译:
尽管解码器可以将 clip 图像嵌入 zi 反转为产生图像 x,但我们需要一个先验模型,该模型从描述 y 产生 zi,以实现从文本描述生成图像。我们探索了两种不同的模型类别作为先验模型:
• 自回归(ar)先验:clip 图像嵌入 zi 被转换为一串离散代码,并在描述 y 的条件下自回归地预测。
• 扩散先验:使用高斯扩散模型直接对连续向量 zi 进行建模,该模型在描述 y 的条件下进行条件设置。
除了描述之外,我们还可以将先验条件设置为 clip 文本嵌入 zt,因为它是对描述的确定性函数。为了提高样本质量,我们还通过在训练过程中随机丢弃这个文本条件信息 10% 的时间,为 ar 和扩散先验启用使用无分类器引导的采样。
为了更高效地训练和从 ar 先验中采样,我们首先通过应用主成分分析(pca)[37]来降低 clip 图像嵌入 zi 的维度。特别是,我们发现当使用 sam [15] 训练 clip 时,clip 表示空间的秩显著降低,同时略微提高了评估指标。通过只保留原始 1,024 个主成分中的 319 个,我们能够保留几乎所有信息。应用 pca 后,我们按照特征值大小的降序排列主成分,将每个 319 维度量化为 1,024 个离散桶,并使用带有因果注意力掩码的 transformer [53] 模型预测得到的序列。这导致在推理过程中预测的令牌数量减少了三倍,并提高了训练的稳定性。
我们通过将文本描述和 clip 文本嵌入编码为序列的前缀来对 ar 先验进行条件设置。此外,我们在序列前缀中添加一个标记,指示文本嵌入和图像嵌入(量化后的)点积,即 zi · zt。这允许我们在更高的点积上进行条件设置,因为更高的文本-图像点积对应于更好地描述图像的描述。在实际操作中,我们发现从分布的上半部分采样点积是有益的。
总结:
尝试了两种prior,一种是自回归,一种是diffusion
自回归:输入是文本特征,把clip给的图像特征遮住,自回归去预测;训练效率太低,为了解决这个问题还用了pca等方法
无论是自回归还是diffusion,都用了classifier-free guidance,效果很好
翻译:
对于扩散先验,我们在一个由以下内容按顺序组成的序列上训练一个仅解码器的 transformer,该 transformer 带有因果注意力掩码:编码的文本、clip 文本嵌入、扩散时间步的嵌入、噪声的 clip 图像嵌入,以及一个最终的嵌入,其 transformer 的输出用于预测无噪声的 clip 图像嵌入。我们选择不像 ar 先验那样在扩散先验中条件设置 zi · zt;相反,我们在采样时通过生成两个 zi 样本并选择与 zt 点积更高的那个来提高质量。我们发现在训练模型直接预测无噪声的 zi,并在这个预测上使用均方误差损失,比使用 ho 等人 [25] 的 ε-预测公式效果更好:
总结:
输入输出是embedding向量,不适合用u-net,所以训了一个transformer的decoder
输入很多:文本、clip文本特征、timing step、加噪的clip图像特征,transformer本身的embedding(cls token)
ddpm提出直接预测噪声而非图像本身,但作者在这发现预测图像本身的特征比预测噪声效果要更好,所以损失函数中不是 -ε,而是 -zi
image manipulations
一张图生成类似风格图片
图片内插
文本内插
limitations and risks
不能很好地把物体和它的属性结合起来:glide的效果比dalle2好太多,作者认为是clip学习文本图像对时只考虑相似性,而不懂什么是on top of
生成的图像上的文字顺序不对:可能是因为一开始文本编码时使用bpe编码,可以想象成是一种词根词缀的编码方式,而非整个单词
复杂场景的细节不足
发表评论