CogView2: Faster and Better Text-to-Image Generation via Hierarchical Transformers
公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料)
目录
4.3 加强文本注意力(Upweighting Textual Attention)
0. 摘要
对于高分辨率图像来说,基于 Transformer 的文本到图像模型的开发因其生成速度慢且复杂而受到阻碍。 在这项工作中,我们提出了一种基于分层 Transformer 和局部并行自回归生成的解决方案。 我们使用简单灵活的自监督任务,一个跨模态通用语言模型 (cross-modal general language model,CogLM),来预训练 6B 参数的 Transformer ,并对其微调以实现快速超分辨率。 新的文本到图像系统 CogView2 与同时期最先进的 DALL-E-2 相比,显示出具有竞争力的生成性能,并且自然是支持图像上的交互式文本引导编辑。
1. 简介
最近,大规模预训练 Transformer 极大地推进了文本到图像的生成,例如 DALL-E [26] 和 CogView [3]。 这些模型学习以自回归方式生成图像标记。 然而,它们也存在以下缺点:
缓慢的生成。
- 在具有相同的算力(FLOP)时,自回归模型的生成通常比非自回归模型(例如 GAN [10])的生成慢得多。
- 这一缺点不是因为大量的参数 [25],而是归因于自回归模型中使用的逐标记生成的性质,即使在缓存隐状态后,也无法利用 GPU 的并行计算能力。 这是一个很大的限制。
昂贵的高分辨率训练。 目前的大规模预训练模型通常基于 Transformers [30],其中注意力操作对于长度为 n 的训练序列具有 O(n^2) 的时间和空间复杂度。 在有限的预算内,面临着参数数量(代表建模能力)和生成图像的分辨率之间的权衡。 因此,当前大多数文本到图像模型选择 32*32 tokens(通常为 256*256 像素)[3,26,11] 的分辨率,其密度远低于真实照片的分辨率。
单向性。
- 对于图像,自回归模型,例如 GPT,通常按光栅扫描(raster-scan)顺序生成标记。 这个顺序显示了评估过程中最好的困惑度(perplexity) [7]。 然而,这种顺序使得模型在生成过程中不知道下面或右侧的标记,因此不支持文本引导的填充。
- 此外,单向性导致预训练的文本到图像模型和基于双向掩蔽预测的视觉转换器(vision transformers,ViT)[5] (例如 MAE [12] 和 SimMIM [34])之间存在差距, - 限制了它们在传统视觉任务上的应用,例如图像分类和目标检测。
当前工作。
- 为了克服这些缺陷,我们首先提出了一种简单且通用的预训练方法,即跨模态通用语言模型(Cross-Modal general Language Model,CogLM)。
- 我们的 CogLM 掩蔽了文本和图像标记序列中的各种类型的标记,并学习自回归地预测它们。 具体来说:
- (1) 如果掩蔽所有图像标记,则任务在执行文本到图像生成时变得与原始 CogView [3] 相同;
- (2) 如果随机掩蔽图像标记的补丁,它的工作原理类似于 MAE 的填充任务;
- (3) 如果掩蔽文本标记,任务就变成图像标题。
CogLM 的多功能性使我们能够针对不同的下游任务对预训练的 CogLM 进行微调,并构建分层模型 CogView2。分层生成分为三个步骤:
- 1)首先,使用预训练的 CogLM 生成一批低分辨率图像(CogView2 中的 20*20 标记),然后(可选)根据 CogLM 图像标题的困惑度过滤掉坏样本,这就是 CogView [3] 中引入的后选择方法。
- 2)生成的图像通过从预训练的 CogLM 微调的直接超分辨率模块映射为 60*60-token 图像。 我们使用定制的 CUDA 内核实现的局部注意力来减少训练代价。 此步骤生成的高分辨率图像通常纹理不一致且缺乏细节。
- 3)这些高分辨率图像通过另一个迭代超分辨率模块进行精练,该模块是根据预训练的 CogLM 进行微调的。 大多数标记以局部并行自回归(local parallel autoregressive,LoPAR)方式重新掩蔽和重新生成,这比原始自回归生成要快得多。
CogView2 如何克服三个缺点?
- 首先,在预训练期间,掩蔽补丁预测任务训练 CogLM 处理双向上下文,使其易于适应双向任务,例如,直接和迭代超分辨率。
- 其次,分层设计使我们能够只关心高分辨率级别的局部一致性。 这样,就可以利用局部注意力来减少训练代价。
- 第三,局部并行自回归生成可以将模型运行时间从 3,600 次减少到 6 次(仅 1/600),显着加速高分辨率图像的生成。 CogView2 比 CogView(具有滑动窗口超分辨率)快约 10 倍,可以生成类似分辨率和更好质量的图像。
2. 相关工作
文本到图像生成。
- 任意输入的文本到图像生成是许多跨模式机器学习研究人员长期以来的梦想。
- 大多数解决这一挑战的早期尝试都是基于生成对抗网络(GAN) [10]; 这些包括 AttnGAN [35]、DM-GAN [40]、DF-GAN [28] 等。 尽管它们可以对特定领域的数据集(例如 Caltech-UCSD Birds 200)进行生动的合成,但通用领域的数据集(例如 MS COCO [17])对这些方法提出了巨大的挑战。
- DALLE [26]、CogView [3] 和类似的作品 [33, 8] 利用 VQ-VAE [29] 将图像压缩为一系列离散标记,并预训练大型 transformer 以进行自回归生成,从而极大地改善了通用领域的结果。
- LAFITE [39] 学习反转文本和图像共享空间中预训练的 CLIP [23] 嵌入,以进行无文本训练。
- 最近,许多研究人员转向扩散模型,很大程度上是由于自回归模型的缓慢生成缺陷。 Glide [19] 就是一个例子。
非自回归生成(NAR)。
- 非自回归生成(NAR)最近是自然语言生成中的一个热门话题——参见 Mask-Predict [9] 和 GLAT [21],它们探索了类自回归模型的并行解码方法。
- 在 GAN 主导图像生成的时代,生成速度不是问题,但对当前的自回归文本到图像模型构成了相当大的挑战。
- M6-UFC [38] 首先将 NAR 方法引入 VQ-VAE 框架中,VQ-diffusion [11]和 MaskGIT [1]也采用了类似的想法。
- 纯 NAR 方法的一个可能的缺点是,同时采样的标记可能会导致复杂场景生成过程中后续步骤中的全局不一致。
- 我们的方法引入了分层设计,将自回归模型的一致性优点和 NAR 方法的速度优势结合起来。
3. 方法
3.1 跨模态通用语言模型
虽然以前的自监督前置任务(pretext tasks)通常针对计算机视觉中的掩蔽预测 [34, 12],但我们的方法追求自回归生成和双向上下文感知掩蔽预测的统一。
在 NLP 中,通用语言模型(General Language Model,GLM)[6] 建议将直接掩蔽预测更改为按块的自回归生成。 然而,直接将其应用于图像会导致冗余。 例如,掩蔽图像块的大小是固定的,因此我们不需要像 NLP 中那样填充不定长度的块的能力。 此外,GLM 为每个掩蔽区域插入一个哨兵(sentinel)标记来预测其第一个标记,这大大增加了序列长度,从而限制了 2D 局部注意力的使用。
基于上述分析,我们提出了一种针对文本和图像数据的更简单、更通用的语言模型——跨模态通用语言模型(CogLM)。 如图 2 所示,CogLM 将由 icetk(http://github.com/THUDM/icetk)标记化的文本和图像串联作为输入(参见第 3.2 节),其字典包含 20,000 个图像标记和 130,000 个文本(中文和英文)标记。 形式上,令 t = [t_1,...,t_M] 是文本标记,im = [im_1,...,im_N^2 ] 是图像标记,其中 M 和 N^2 分别是文本和图像标记的长度。
CogLM 中的关键步骤是根据不同的策略对 k 个掩蔽区域 R = { [L_0, r_0],...,[L_k,r_k] } 进行采样。 在实践中,使用以下两种策略:
- (文本到图像 GPT)输入序列为 x = [ t [BOI] im ]。 我们掩蔽所有图像标记,这与 CogView [3] 的预训练任务类似。
- (掩蔽预测和图像标题的组合)输入序列为 x = [im_0 ... im_i ... im_j ... im_N^2 [BOE/C] t ],其中 [BOE]、[BOC] 分别表示用于相应语言(英语和中文)的开始的分隔符。 我们随机掩蔽 图像补丁和文本标记。 理想情况下,这两项任务应该分开; 但我们将它们结合在一起以提高训练效率。
我们没有将掩蔽区域中的标记替换为 [MASK],而是不对输入进行任何更改,但会根据掩蔽区域构建注意力掩蔽 A。 掩蔽区域之外的所有标记都被视为上下文,并且可以由所有其他标记关注。 掩蔽区域中的标记只能由掩蔽区域中及其后面的标记处理。 具体来说,
图 2 显示了两个掩蔽区域的注意力掩蔽矩阵的示例。
在掩蔽区域中,模型学习预测下一个标记。 损失函数可以写成如下:
其中 x_context 表示掩蔽区域之外的标记。
填充。
- 请注意,在训练期间不会预测每个掩蔽区域中的第一个标记。 该功能似乎禁用了 CogLM 的自然语言图像填充或完型填空功能,但这个问题实际上有一个简单的解决方案。
- 在推理过程中,我们可以将每个掩蔽区域之前的最后一个上下文标记移动到其中,如图 3 所示。虽然这些移动的标记会成为它们之前的掩蔽区域的盲点,但在实践中它们几乎没有负面影响。
- 为了进一步避免这种微小的影响并充分保持上下文信息,我们单独处理每个掩蔽区域。 对于每个区域,我们仅移动该区域之前的最后一个上下文标记,并将所有已知标记保留在掩蔽区域之外。 因此,我们无法使用前一个区域缓存的隐状态,从而稍微减慢了多区域填充的速度。
相比于 GPT [22]、GLM [6] 和 MAE [12] 的优先。
- (GPT) 相对于 GPT 的主要优点是 CogLM 中考虑了双向上下文的建模,这将有利于许多依赖全局信息的任务,例如,下一节中的超分辨率和图像分类。 双向上下文的重要性在 GLUE 上的 BERT [2] 和 GPT [31] 的比较中得到了验证。
- (GLM) 相对于 GLM 的主要优点是简单性。 为了统一生成和双向理解,GLM需要定义许多新的特殊标记和新型位置嵌入,为每个掩蔽区域插入哨兵(sentinel)并更改输入标记的顺序。 它破坏了图像数据中的空间相关性,并排除了使用 2D 局部注意力或卷积的可能性。
- (MAE) MAE 是为纯图像数据的自监督学习而设计的,尚未准备好生成。 即使没有文本,CogLM 的参数效率也更高,因为 MAE 是一种编码器-解码器结构。 编码器和解码器中的相当一部分参数是为了相同的功能而学习的,例如,从输入中提取基本特征。
3.2 预训练
由于我们已经介绍了 CogLM 作为通用预训练框架,因此在本节中,我们将描述预训练 CogLM 的细节和超参数。
标记化。
- 我们开发了图像、中文、英文(Image, Chinese, English)的统一标记器 icetk。
- 如 DebertaV2 [13] 所示,大词汇表(128,000 个标记)提供了许多好处。 对于文本,我们在 icetk 中提取了 130,000 个标记的双语词汇表,并将它们明确分类为中文、英文、常见或稀有符号,以便我们可以通过采样掩蔽来指定生成的语言。
- 图像标记器是一个 20,000 个标记的第一阶段 VQ-VAE [29],很大程度上遵循 CogView [3] 中的标记器。
- 受到 Esser 等人 [7] 的启发,将感知损失项 [37] 添加到重建损失中,显着提高了重建性能。 (详情请参阅附录。)
Transformer。
- 我们预训练的 CogLM 的骨干是具有三明治层归一化(Sandwich Layer-Norm)的 Transformer [3]。
- 该模型有 60 亿个参数(48 层、hidden 大小 3072、48 个注意力头),在 FP16 中训练了 300,000 次迭代,批量大小为 4,096。
- 序列长度为 512,由 400 个图像标记、1 个分隔符和最多 111 个文本标记组成。
掩蔽策略。
- 我们为每个训练样本随机选择一个采样策略。
- 对于掩蔽预测策略,SimMIM [34] 的分析显示了掩蔽百分比和 patch 分布的重要性。 我们按照他们的结果随机采样 4×4 的标记 patch,直到 75% 的标记位于掩蔽区域中。
- 对于双语样本,我们在训练过程中随机选择一种语言。
3.3 分层生成
虽然预训练的 CogLM 可以从文本生成图像,但分辨率仅为 20*20 标记(160*160 像素)。 短序列是有意为之,以实现快速生成。 CogLM 的多功能性使我们能够将其微调为超分辨率模型。 整个分层管道构成了我们的 CogView2 系统。
直接超分辨率。
- 在这一步中,我们需要一个模型来映射生成的低分辨率图像标记序列 im^0 ∈ [0, 20000)^(20*20) 到更高分辨率的序列 im^1 ∈ [0, 20000)^(60*60)。
- 我们将预训练的 CogLM 微调为编码器-解码器架构。 编码器的输入是生成的图像标记的 20*20 序列,解码器的输入只是 60*60 的 [MASK] 序列。
- 我们没有按照原始 transformer [30] 添加交叉注意层,而是使解码器中的标记同时关注解码器和编码器中的局部标记。 这种跨分辨率局部注意力是通过 4.2 节中介绍的定制 CUDA 内核实现的。
- 编码器和解码器均使用预训练的 CogLM 进行初始化。
- 在实践中,我们发现仅微调解码器中注意力层的权重就足够了,这样我们就可以在编码器和解码器之间固定和共享其他参数以减少内存消耗。
尽管直接映射是超分辨率(例如,SRCNN [4])的传统做法,但很难称得上是生成; 它更注重纹理变换。 直接映射的损失函数是基于标记或基于像素(MAE)的,这意味着它预测或最大化每个标记 i 的边缘分布
而不是
当我们在生成过程中使用交叉熵损失和多项式采样时,我们得到
因此,我们需要使用另一个模块来精练 im^1。
迭代超分辨率。 在这一步中,我们的目标是将初始高分辨率序列 im^1 精练为更好的序列 im^2。 精练的工作原理是打破生成标记的独立性,同时保持并行性。 因此,我们提出了一种局部并行自回归(local parallel autoregressive,LoPAR)方法。
LoPAR 的动机是分层过程使我们摆脱了全局依赖。 只要我们保持 25%(MAE [12] 中的比率)随机标记作为上下文,就足以恢复图像的全局场景。 如果重新生成的标记在局部与 25% 保留的标记保持一致,则全局一致性也得到保证。 我们掩蔽了 im^1 的 75% 的 token 并假设有一个大小为 σ 的局部窗,
这样局部注意力就足够了,并且可以并行生成来自不同局部窗口的标记。 为了进一步提高并行性,我们发现当同时生成直接相邻(垂直或水平)的标记时,通常会发生局部不一致。 我们将生成过程对角分解为不同的迭代,如图 4 及下式所示:
其中,
是局部窗口中行和列的索引。
为了实现迭代超分辨率模块,
- 我们将经过 20,000 次迭代的预训练 CogLM 微调为具有局部注意力的 60*60 标记序列的 BERT 式掩蔽预测模型。
- 对于每个样本,掩蔽率从 {0.2, 0.4, 0.6, 0.8, 0.9} 采样。
- 在推理过程中,我们将局部窗口大小设置为 σ = 6,并通过排列未掩蔽的标记并合并第一次和最后一次迭代,将迭代过程从 2σ - 1 次迭代压缩到 6 次迭代。
- (通过手动设计的 6*6 矩阵来实现。 详细信息包含在我们发布的代码中)。
4. Transformer 的插件改进技术
4.1 分簇采样
在自回归生成中,对标记的预测分布的采样策略至关重要。 Top-k 或 top-p(核心,nucleus)采样 [14] 是最常见的策略,但会遇到不完整截断问题。
图像标记的词汇是通过 VQVAE [29] 学习的,其中一些标记的嵌入非常相似。 为了以更细的粒度表示频繁图样(frequent pattern),我们使用了 20,000 个标记的大词汇量,比之前的作品 [26, 3] 大三倍,进一步加剧了这种情况。 例如,icetk 中有大约 42 个基本上是 “白色” 的 token,只有在与其他一些 token 连接时才会显示出细微的差异。 尽管这些 “白色” 标记的概率之和可能足够大,但其中大多数都可以通过 top-k 采样来过滤。 图 5 说明了该问题。
为了解决不完整抽样问题,我们提出分簇采样。 我们根据 VQVAE 中的向量,通过 K 均值 [18] 将 20,000 个标记分为 500 个簇。 在采样过程中,我们首先根据簇中标记的概率之和使用 top-k 采样对簇进行采样,然后在簇中进行采样。簇中的所有标记被视为一个整体,并将被过滤或保留在一起,从而缓解不完整截断问题。
4.2 局部注意力
局部性是图像数据最重要的属性之一。
- 局部操作,例如,卷积在 ViTs 之前主导了视觉计算 [5]。甚至 ViT 中的注意力也主要处理局部标记之间的交互 [24]。
- 我们发现可以使用局部注意力和文本注意力来微调预训练的 CogLM,这通常与预训练的全局注意力权重兼容。
- 然而,2D 局部注意力无法使用高层框架有效实现,例如,Pytorch [20]。我们开发了一个定制的 CUDA 内核来支持 2D 局部注意力、2D 自回归局部注意力和跨分辨率局部注意力。 在 CUDA 内核实现中,我们可以节省一半的矩阵乘法计算量,并且不需要用于自回归注意力的因果注意掩蔽。
- 在超分辨率模块中,我们使用感受野(receptive field,RF)为 9*9 的局部注意力。 图 6 显示了 A100 GPU 上隐藏大小为 64 的单头注意力的基准。相比于在 4,096 序列上的全局注意力,我们的方法的优势在自回归场景中会更加明显(快 40 倍,占用 1% 的内存)。
4.3 加强文本注意力(Upweighting Textual Attention)
大多数文本-图像对在 CogLM 的大量训练数据中都是弱相关的。 即使模型完美地拟合了数据,它也应该有相当大的概率生成无关的图像。 为了增强相关性,我们利用注意力操作的可解释性。 我们将一个常量 c 添加到从任何标记到文本标记的注意力分数中:(为了简单起见,省略了注意力掩蔽)
该技术消耗的时间可以忽略不计,但很大程度上提高了生成图像的文本相关性。 实际上,c < 3 不会影响图像的质量。
5. 实验
5.1 数据集
我们的预训练数据集包含大约 3000 万个文本-图像对,大部分与 CogView [3] 的数据集重叠。 我们使用一些关键词从 CogView 数据集中过滤了大约 500 万个文本图像对,例如 “抽象” 和 “纹理”,因为它们大多是用于设计的背景图像。 这些图像由重复的图样组成,对文本到图像的生成几乎没有贡献。 然后,我们用 500 万个标签-图像对补充数据集。 大约一半的文本是从英文翻译而来的,并且保留中文和英文文本来训练我们的双语 CogLM。 仅使用分辨率至少为 480*480 的图像来训练超分辨率模块。
5.2 机器评估
为了与之前和同期工作进行比较,
- 我们遵循源自 DALL-E [26] 的最流行基准:在 MS-COCO [17] 上评估的 FID 和 IS。
- 从验证集中采样 30,000 个标题以评估 FID。由于COCO中的每张图像最多有5个不同的标题,因此我们仔细选择采样的标题来描述不同的图像。 我们为每个标题(翻译成中文)生成 16 个样本,并选择标题困惑度([3] 中的标题得分)最低的最佳样本。
- 请注意,FID 并不是评估 CogView2 的完美指标,因为:
- (1) CogView2 的优点是生成高分辨率图像,但我们需要将图像大小调整回 256*256 以便进行有意义的比较。
- (2) 英文标题翻译成中文时出现错误。
- (3) 我们的训练数据包含许多单对象图像,这与COCO(上下文中的常见对象)分布中的图像有很大不同。
机器评估的结果如表 1 所示。
- 我们发现在 MS-COCO 数据集上微调 CogLM 将大大提高 FID。在我们的微调过程中,FID 逐渐减小,24.0(0 次迭代)→ 19.2(2,500 次迭代)→ 17.5(7,500 次迭代)。
- 然而,我们发现生成的质量(人类评价)恶化了。 虽然风格与 COCO 类似,但生成不如非微调版本准确,这也对应于图 7 中人类评估的分数。
5.3 人类评估
作为最具说服力的指标,我们按照 CogView [3] 中的设置进行了大规模的人工评估(详见附录)。
- 实验包括对一些公开的文本转图像作品之间的 COCO 标题进行了总共 4,600 组比较,包括 DFGAN [28]、LAFITE [39]、CogView [3]、CogView2(包括其在 COCO 上的微调版本)和在 VQVAE 后恢复的地面实况(ground truth)。
- 请注意,CogView2 中的 VQVAE 比 CogView 中的 VQVAE 好得多,这使得恢复的地面实况具有更强的上限。
- 结果如图 7 所示。
- 一个有趣的发现是,经过微调的 CogView2 尽管具有更好的 FID,但性能却比原始模型差。 我们猜测该模型可能拟合了 COCO 中复杂场景的风格,但注释者可能更喜欢生成的具有孤立主题的样本。
6. 讨论
自回归还是扩散?
- 尽管 GPT 在文本生成方面取得了巨大成功,但扩散模型在图像生成方面变得越来越流行。
- 这里我们从速度方面比较扩散模型和自回归模型,这是第 1 节中讨论的自回归模型的最大缺点。
- 在相同的架构下,扩散模型需要更多的算力(FLOP),但具有较高的并行度。 他们还可以通过手动安排采样步长在质量和时间消耗之间进行权衡。 例如,Glide [19] 采样 250 个扩散步骤进行评估,对 27 个步骤进行交互式采样,以将延迟减少到 15 秒。
- 自回归模型必须逐标记生成图像,但我们的 LoPAR 可以以高并行度对图像进行上采样,因此(可能)我们可以通过引入更多分层结构来比扩散模型更快地设计模型,从而降低时间成本。
DALL-E2 和 CogView2 之间的比较。
- DALL-E2 [27] 是最近发布的一项同期工作,用于 1024*1024 分辨率的文本到图像生成。 尽管其概率模型和架构与 CogView2 有很大不同,但它们具有相同的精神——分层生成。
- 尽管 CogView-2 的训练数据仅占 DALL-E-2 使用的总数据的 5% 左右,CogView2 能够根据 DALL-E2 的有限演示合成类似的场景,例如 “狮子老师”(图 1)vs. “熊猫科学家” (DALL-E2)。
- DALL-E2 与 CogView2 相比,其主要区别在于第三级超分辨率和 “零” 级(zeroth-level)图像先验生成。 由于训练第三级超分辨率非常消耗资源并且需要稍微工程化,因此我们将其留待将来的工作。
7. 结论
文本到图像领域的突破是由自回归模型实现的。 然而,生成速度慢和复杂性高阻碍了研究人员在这个方向上提高质量的尝试。 在本文中,我们提出了一种基于分层 transformer 的方法来帮助自回归模型弥补这些缺点,并弥合文本到图像预训练和最近的视觉表示学习方法之间的差距。
更广泛的影响。 文本到图像生成技术的进步,特别是文本引导的图像编辑,将减轻艺术家和设计师的创造性工作,同时也会带来错误信息的风险,从而对网络照片的可靠性造成永久性损害。 然而,可以训练分类器根据纹理特征区分真实图像和 CogView2 生成的图像。
参考
Ding M, Zheng W, Hong W, et al. Cogview2: Faster and better text-to-image generation via hierarchical transformers[J]. Advances in Neural Information Processing Systems, 2022, 35: 16890-16902.
附录
A. icetk 标记器的详细信息
在这里,我们介绍有关统一的标记器 icetk 的更多详细信息。
A.1 文本标记器
文本分词器基于 sentencepiece(http://github.com/google/sentencepiece)(一元算法 [16])在英文和中文混合语料库上进行训练。 该语料库由 25GB 纯文本组成——一半英文,一半中文。 我们根据 unicode 编码仔细选择,将提取的 token 分为四类:普通、英文、中文和特殊,并为其分配连续的 ID 号。
icetk 的字典大小为 150,000。
- 前 20,000 个标记是图像标记(下面讨论)。 常用 token 有 100 个,包括标点符号、数字和自定义 token,例如: <unk>。
- 第 20,100 至第 83,822 标记为英文标记,第 83,823 至第 145,653 标记为中文标记。
- 其余的是特殊标记,例如 α。
- 我们可以通过采样掩蔽禁用部分标记的生成,例如,仅生成用于图像标题的英文标记。
A.2 图像标记器
图像标记器是多压缩率(multi-compression-rate) VQVAE。(VQVAE 一词最初 [29] 指的是离散潜变量压缩(第一阶段)和先验自回归建模(第二阶段)的整个过程。 在本文中,为简单起见,我们仅将术语 VQVAE 称为第一阶段)。
- CogView2 的图像标记器与 CogView 的图像标记器之间的主要区别主要在于感知损失和多压缩率设计。
- 感知损失 [37] 被提出来衡量人类感知与给定图像的纹理的匹配程度。 VQGAN [7] 将其用作 GAN 训练的损失项之一。 我们惊讶地发现,感知损失可能是 VQGAN 相对于 VQVAE 纹理改进的大部分原因。
- 然而,VQGAN 虽然被证明可以实现更好的 FID,但有时会在图像的重要元素上产生不良情况,例如,人脸。 图 8 显示了方法之间比较的示例。
- 因此,我们最终决定使用 L1、MS-SSIM [32] 和感知损失来训练 VQVAE 作为图像标记器,如下所示,
其中 ^x 是 VQVAE 之后恢复的输出。
多压缩率设计意味着我们的图像标记器可以使用不同的压缩率来压缩图像,例如, 4^2 倍,8^2 倍或 16^2 倍。但我们在 CogView2 中的所有实验都只使用 8^2 倍压缩率,即 160^2 → 20^2 和480^2 → 60^2。我们通过使用共享字典和低层参数训练三个图像标记器来实现它,如图 9 所示。该架构基本上遵循已发布的带有自注意力层的 VQGAN [7]。 我们在 ImageNet 上训练模型以达到收敛。
B. 高分辨率文本引导填充
尽管 CogLM 本质上支持文本引导填充,如图 3 所示,但我们发现对于小块,模型往往只考虑上下文的连贯性而忽略文本,因为 CogLM 的粒度仅为 20*20。 我们的解决方案是将区域放大到合适的大小,然后运行填充和超分辨率。 具体来说,该过程可以分为以下步骤:
- 计算给定掩蔽区域的方形边界框。
- 将边界框的大小扩大 1.4 倍(作为默认超参数)。
- 如果边界框已经覆盖了整个图像,则通过 CogLM 和超分辨率运行正常补全; 否则将边界框区域中的补丁放大到 480*480,仅针对该区域通过 CogLM 和超分辨率运行正常补全,并将结果缩回原始大小。
- 将掩蔽区域替换为生成的结果。
- 对结果图像进行标记并立即对其进行去标记,以保持掩蔽区域边缘的一致性。
我们在图 10 中展示了一些文本引导填充的示例。这些示例显示了 CogView2 在肖像编辑等应用中的潜力。
S. 总结
S.1 主要贡献
本文提出文本到图像系统 CogView2,基于分层 Transformer 和局部并行自回归(LoPAR)生成来解决 Transformer 文本到图像生成慢且复杂的问题。(总结了自回归模型的缺点并提出相应的解决方法)
使用自监督任务,跨模态通用语言模型 (cross-modal general language model,CogLM),来预训练具有三明治层归一化的 6B 参数的 Transformer ,并对其微调以实现快速超分辨率。
开发了图像、中文、英文(Image, Chinese, English)的统一标记器 icetk。
Transformer 的插件改进技术。
- 使用分簇采样解决不完整截断问题。
- 2D 局部注意力无法使用高层框架(例如,Pytorch)有效实现,本文开发了一个定制的 CUDA 内核来支持 2D 局部注意力、2D 自回归局部注意力和跨分辨率局部注意力。
- 使用加强文本注意力来避免生成与文本无关的图像。该技术消耗的时间可以忽略不计,但很大程度上提高了生成图像的文本相关性。
S.2 方法
跨模态通用语言模型(CogLM)。CogLM 中的关键步骤是根据不同的策略对掩蔽区域进行采样。 在实践中,使用以下两种策略:
- 文本到图像 GPT:掩蔽所有图像标记。
- 掩蔽预测和图像标题的组合:随机掩蔽图像补丁和文本标记。
CogLM 的架构以及两个掩蔽区域的注意力掩蔽矩阵如图 2 所示。
- 掩蔽区域之外的所有标记都被视为上下文,并且可以由所有其他标记关注。
- 掩蔽区域中的标记只能由掩蔽区域中及其后面的标记处理
分层生成。分层生成分为三个步骤:
- 使用预训练的 CogLM 生成一批低分辨率图像,并根据 CogLM 图像标题的困惑度过滤掉坏样本。
- 生成的图像通过从预训练的 CogLM 微调的直接超分辨率模块映射为 60*60-token 图像。使用定制的 CUDA 内核实现的局部注意力来减少训练代价。 此步骤生成的高分辨率图像通常纹理不一致且缺乏细节。
- 这些高分辨率图像通过另一个迭代超分辨率模块进行精练,该模块是根据预训练的 CogLM 进行微调的。 大多数标记以局部并行自回归(local parallel autoregressive,LoPAR)方式重新掩蔽和重新生成,这比原始自回归生成要快得多。精练流程如图 4 所示。
LoPAR 的动机是通过分层摆脱全局依赖。 只要保持 25% 随机标记作为上下文,就足以恢复图像的全局场景。 如果重新生成的标记在局部与 25% 保留的标记保持一致,则全局一致性也得到保证。
S.3 自回归模型的缺点及解决措施
对于由逐标记生成导致的生成速度慢,可以通过局部并行自回归解决。
对于由注意力机制的高时空复杂度导致的昂贵的高分辨率训练,可以通过分层设计和局部注意力来减少训练代价。
对于由按光栅扫描顺序生成标记导致的单向性,掩蔽补丁预测任务训练 CogLM 处理双向上下文,使其易于适应双向任务,例如,直接和迭代超分辨率。