从文字生成图像是一个涉及跨领域理解的复杂生成问题,不仅需要建立高性能的视觉语言模型,同时需要构建通用、统一和鲁棒的视觉语言表达。近日来自清华、达摩院和智源研究院的研究人员们提出了一款超大规模的视觉语言生成模型CogView,通过对于文字和图像token进行大规模的生成联合预训练后,可以基于文字描述实现高精度、细粒度的逼真图像,还能通过模型调优的策略在风格迁移、图像超分辨、文字图像排序和时尚设计等多种下游任务上实现良好的文字图像操作与生成结果,大幅超过了先前DALL-E等前沿方法。
先来看看这个模型生成的一些好玩的结果吧:
一只在写公众号的小编(最后一个像极了自己):
不想考期末考的狗在看划水(好像不想期末考的你):
一、Text2Image
——语言描述世界 图像绘制世界
视觉语言模型及其预训练将高层级的语义信息与图像结合起来,逐渐成为了视觉理解研究领域的下一个前沿。在众多研究中,从文字生成图像的任务具有独特的魅力,其模型主要实现以下几个方面的功能:从像素中解耦出目标的形状、颜色、形态等多种语义特征;将目标与其对应文字或者近义词进行匹配;理解输入文字的含义;学习复杂分布来生成具有复杂重叠和组合关系的不同特征和目标,像绘画一样实现一种超越基本视觉功能的高级认知能力。
从文字生成图像的任务可以追溯到早期基于生成模型的研究,从早期的文字信息添加到被 GANs 支配的时代,涌现了像 StackGAN,AttnGAN,ObjectGAN 等一系列优秀的模型,在简单的特定任务上实现了良好的效果,但面临复杂的通用生成任务时生成的结果却还不尽如人意。近年来随着自回归生成模型的发展,生成预训练模型 (Generative Pre-training,GPT)将 Transformer 引入了自然语言处理中取得了巨大的进展,同时也为视觉领域闯出了新的研究方向。但由于视觉图像像素数目巨大,无法建立细粒度的序列模型。目前最大的模型 ImageGPT 也只是在96x96的图像分辨率下进行训练的。而 VQ-VAE (Vector Quantized Variational AutoEncoders) 通过将图像压缩到一个低维度离散隐空间中来解决分辨率问题,解码器可基于这些隐变量恢复图像,随后一个自回归模型则学习拟合出先前隐变量的先验信息,这一过程保证了图像的真实性保持了像素的空间相关性,使得自回归模型在CV领域再次焕发生机。随后 Transformer 模型的引入进一步提升了特定领域的生成结果。
在此基础上研究人员们想到了 CogView 的关键思想:通过对文本和图像同时进行大规模的协同预训练来实现通用的高性能文字图像生成模型。在此基础上,研究人员收集了大规模的文字图像(中文)配对数据,并预训练了一个包含40亿参数的 Transformer。但大规模的文字图像生成预训练模型由于异质数据会变得非常不稳定,因此研究人员系统地分析了不稳定的原因,并提出了精密瓶颈松弛(PB-relaxation)和三明治层归一化 (Sandwich-LN.) 的方法来缓解这一问题,最终使得CogView 实现了先进的文字-图像生成结果。与去年发布的DALL-E相比,CogView在以下几个方面进行了较大的提升:
1.CogView在 FID 指标上超过了先前的 DALL-E 和其他基于GAN的方法,也是第一个开源的大规模文字到图像生成的 Transformer;
2.除了 zero-short 生成外,CogView 还探索了基于预训练的模型调优,可适应大量的下游任务,包括风格迁移(特定域内的文本到图像)、图像超分辨(图像到图像任务),图像标注(图像到文本)甚至是文字图像重拍等任务。
3.调优后的 CogView 可实现用于后选择的自我重排,并摆脱了 DALL-E 中对额外的CLIP模型的依赖。同时还提供了一个新的度量指标 Caption Score 来在更细粒度上度量文字到图像生成的精度;
4.在 PB-relaxation 和 Sandwich-LN 的帮助下,Cogview 是第一个用FP16训练的大型文字到图像模型。这些技术可以有效去除前传中的溢出,稳定训练,并可被广泛用于其他transformer的训练中。
二、CogView的理论方法
CogView 的理论基础主要基于 VAE 进行了深入的优化和改进,其目标是优化图像和文字联合似然的ELBO (evidence lower bound)。在 CogView 中数据集由图像x和对应的描述文字t构成,假设图像x可以由通过包含隐变量z的随机过程描述,可以将图像生成文字的过程转换为下面三步,首先文字ti可以通过先验p(t,θ)生成;而后隐变量zi可以通过条件分布p(z|t=ti,θ)生成;最后图像xi由p(x|z=zi,ψ)。
在传统的VAE中使用编码器φ来对先验 p(z|ti,θ) 进行学习,但这很容易造成后验坍缩到先验上。因此 VQ-VAE 模型转而修复φ并利用另一个模型来拟合先验 p(z|ti,θ),从而消除了后验坍缩的问题。对于后验的近似与先验非常不同,因此需要一个非常强大的模型来拟合先验最小化KL散度,上式中的KL散度可以利用强大的模型分解为两项NLL(negative log-likelihood)。
目前最强大的模型 Transformer(GPT) 与基于离散字典的 token 序列可以解决这一问题。在使用 Transformer 后整个学习过程可以被分为两步,第一步是学习最小化编码器φ和解码器ψ的重建损失;第二步是通过单个 GPT 来优化当文本ti和隐变量zi作为输入时的两项 NLL。在 CogView 中,第一步可以通过纯粹的离散自编码器来实现图像的 token 序列化,将图像转为一个 token 序列;第二部分的 GPT 则主要负责文本和图像的联合建模工作,主要的流程如下图所示:
CogView的主要建模过程,文本和图像都被分别序列化作为GPT的输入。
针对图像的序列化部分主要使用了离散自编码器将图像从 HxWx3 映射到 hxwxd 上,每一个d维度向量被量化到可学习字典的邻近嵌入上得到隐变量编码 z∈{0,…,|V|−1}。在CogView中,|V|=8196,d=256,H=W=256,h=w=32. 这一过程与VQ-VAE的相似,有兴趣的小伙伴可以在那里找到更为详细的数学推导。
为了得到有效的图像 token,研究人员引入了最邻近映射与直通估计、Gumbel 采样与直通估计、Gumbel 采样和 Softmax 近似。实验表明三种方法没有明显的差异,简单起见研究人员选择了第一种方式来获取图像 token,附录A中有更为详细的关于获取 token 推导过程。
三、自回归Transformer
从上面的示意图中我们可以看到 Transformer 负责了大部分的建模工作。CogView 中的使用了单向的 GPT 来进行图像和文本的联合建模,其中包含了48层自注意力架构、每一层中含有2560个隐含单元40个注意力头,整个模型一共包含了40亿参数。其输入中除了包含了对应文本和图像 token 同时还添加了下面四个分隔token[ROI1] (reference text of image), [BASE], [BOI1] (beginning ofimage), [EOI1] (end of image),并调整为1088的输入长度。
在小规模实验中发现,文本建模是文本图像生成的关键所在,如果文本token的权重被设为0,那么模型就无法得到图像和文本间的相关性生成毫无关系的图像。因此研究人员认为文本建模可以利用隐含层进行有效的知识抽取,并能够被后续的图像模型有效的应用。此外在训练过程中还发现,损失主要依赖于训练中总共 tokens 的数量(batchx步数)。这意味着在总数不变的情况下扩大 batch 中样本的数量也能得到相同的损失结果。较大的 batchsize 使得并行化和低通讯开销成为可能。在附录B中研究人员还介绍了三个局域稀疏的注意力机制来加速训练并节省内存开销的方式。
四、稳定训练的方式
针对大型模型的训练非常不稳定,训练40亿参数的模型会很快进入 NaN 损失。为了稳定整个训练过程,研究人员分析了 DALL-E 的解决方案。由于每一层的梯度动态范围非常不同,在 DALL-E 中为每一个残差损失尺度提出了混合精度架构,并将所有的增益、偏置、嵌入和非嵌入向量用32位精度进行存储,而不是通常的16bit精度。但这种方法复杂耗时计算资源消耗大,目前的模型不足以支持这样的方式。
因此在 CogView 中研究人员使用了正则化的方式进行处理。在详细分析模型性能后,研究人员发现了两种不稳定表现:溢出(overflow,NaN,过大)和忽略(underflow,损失发散,过小)。
而训练中发现溢出总是出现在两个 Bottleneck 操作和最后的 Layernorm 处,因此提出了精度瓶颈松弛操作 (Precision Bottleneck Relaxation) 和三明治 Layernorm 操作来解决训练不稳定的问题。
于是一方面将 Layernorm 的操作改变为了 LayerNorm(x) = LayerNorm(x/ max(x)) ,解决值过大的问题;另一方面将注意力分数的计算减去了一个常数来减小其值:
具体细节可以从附录C中找到。通过数值控制使得网络的溢出现象得到了明显的缓解。
另一方面 LayerNorm(LN) 是 Transformer 中稳定训练的核心模块 Pre-LN 被证明比原始的 Post-LN 收敛更快更稳定,但对于文本到图像任务预训练来说却还不够。
LN 中存在着隐含层数量的根,对于2560个隐含层其根约为50.那么在LN操作中,输入在残差支路上就会被模型大幅放大,最终层层叠加造成数值爆炸。如何解决数值层层积累爆炸的问题是稳定网络训练的关键所在。因此研究人员提出了三明治结构的网络,在残差分支后加入了额外的 LN 层将数值抑制在合理的范围内,下面a图最右展示了三明治结构的示意图,b图中展示了验证实验的结果,提出的方法有效稳定了训练过程。此外为了抑制 token 嵌入梯度较大的问题,还提出了动态收缩其梯度的手段。
五、下游任务调优
在对文字图像联合模型进行有效的预训练后,研究人员在一系列多样性的下游任务进行调优来探索这一模型的能力,包括风格迁移、图像超分辨、图像标注和相关性重排、时尚设计等等。
首先来看看基于文字描述将草图在中国画、动画和油画上进行风格迁移的结果。利用“An image of {style} style”句式从搜索引擎中检索的图像进行调优,并利用“An {object} of {style} style”的句式对图像风格进行迁移。
东方明珠作为目标实现的风格迁移
对于图像超分辨任务,也展示了基于文本对于图像进行底层操作的能力:
通过片元叠加生成的最终结果,不仅可是实现纹理超分辨同时还可以生成出新的结构(中图中张开的嘴巴,右图中老虎的尾巴)。
在图像标注任务中这一模型展现出了较强的认知能力,研究人员提出了新的度量指标CaptionScore来描述模型的性能,并可以基于此来对结果进行重排。下图中可以看到CapS分数越高与文本 “A man in red shirt is playing video games”的相关性也越高(左侧)。
同时对于服装设计任务,也能做出十分精细的结果,下图显示了两个生成设计结果,已经被成功部署到了阿里犀牛的设计平台上了。
如此逼真的结果已经能够胜任一些基础的设计工作了!
基于文本的图像生成为我们展现了交叉模态认知领域未来发展前景,CogView有效解决了异质数据所带来的训练问题和精度问题,并为多模态学习和理解提供了新的方向。相信视觉语言模型会在不久的未来迅速发展为AI提供新的动力!
如果想要了解更多细节请参看论文和附录:
https://arxiv.org/pdf/2105.13290.pdf
想要跑代码的同学可以直接戳github:
https://github.com/THUDM/CogView
上手玩可以在这里找到:
https://lab.aminer.cn/cogview/index.html
Reference:
[1] https://zhuanlan.zhihu.com/p/57554498
[2] https://www.cnblogs.com/jesse123/p/7764672.html
[3] https://zhuanlan.zhihu.com/p/378567445
[4] https://www.bilibili.com/video/BV1Z64y167iJ/
编译: T.R From: 清华 达摩院 BAAI
Illustrastion from Icons8
- The End -
⚡火热报名中!
(Talk分享+在线交流,点击蓝字查看详情)
关于我“门”
将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门技术社群以及将门创投基金。
将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:
bp@thejiangmen.com
点击右上角,把文章分享到朋友圈
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.