销售人员报销网站开发费,一键提交收录,赤峰住房城乡建设部网站,免费的短视频素材库OpenAI第一代文本生成图片模型
paper#xff1a;https://arxiv.org/abs/2102.12092 DALLE有120亿参数#xff0c;基于自回归transformer#xff0c;在2.5亿 图片-文本对上训练的。实现了高质量可控的text to image#xff0c;同时也有zero-shot的能力。
DALL-E没有使用扩…OpenAI第一代文本生成图片模型
paperhttps://arxiv.org/abs/2102.12092 DALL·E有120亿参数基于自回归transformer在2.5亿 图片-文本对上训练的。实现了高质量可控的text to image同时也有zero-shot的能力。
DALL-E没有使用扩散模型而是dVAEdiscrete variational autoencoder离散变分自动编码器。文中主要和GAN相关模型进行比较如AttnGAN、DM-GAN、DF-GAM。
1. 介绍
自回归式的模型处理图片的时候如果直接把像素拉成序列当成image token来处理如果图片分辨率过高一方面会占用过多的内存另一方面Likelihood的目标函数会倾向于建模短程的像素间的关系因而会学到更多的高频细节而不是更能被人辨认的低频结构。
与 GPT-3 一样DALL·E是一个 Transformer 语言模型。它将文本和图像作为单个数据序列接收通过Transformer进行自回归。
Zero-Shot对于GPT-3来说我们可以指示它仅根据描述和提示执行多种任务来生成我们想要的答案而无需任何额外的培训。例如当提示“here is the sentence a person walk his dog in the park translated into French: ”时GPT-3 会回答“un homme qui promène son chien dans le parc”。这种能力称为零样本推理。研究者发现 DALL·E 将这种能力扩展到了视觉领域在以正确的方式提示时它能够执行多种图像到图像的转换工作。比如最直接的方法是输入一张照片然后用文本描述“粉红色的照片”或“倒影的照片”这也往往是最可靠的尽管照片通常没有被完美地复制或反映但也从一定程度上表明这个功能有望实现。实现图像版GPT-3。
功能一创造拟人的器具 功能二Dall-E能够很聪明地捕捉到每个事物的特性并且合理地组织在了一起。 功能三根据文本自动渲染真实场景图片其仿真程度与真实照片十分接近 功能四根据文本指令改变和转换现有图片风格。 不同于GAN生成式对抗网络的一点是虽然GAN能够替换视频里的人脸但其仅仅限制于人脸的范畴而Dalle是将概念和概念之间做了关联这在以往也是从未被实现过的。
2. 方法 整体流程如下
1.第一个阶段训练一个dVAEdiscrete variational autoencoder离散变分自动编码器其将256*256的RGB图片转换为32*32的图片token。目的降低图片的分辨率从而解决计算量的问题。图片token的词汇量大小是8192个即每个位置有8192种可能的取值(也就是说dVAE的encoder输出是维度为32x32x8192的logits然后通过logits索引codebook的特征进行组合codebook的embedding是可学习的)。第一阶段同时训练dVAE编码器和dVAE解码器。
2.第二阶段用BPE Encoder对文本进行编码得到最多256个文本tokentoken数不满256的话padding到256然后将256个文本token与1024个图像token32*321024进行拼接得到长度为1280的数据用拼接的数据去训练一个自回归transformer来建模文本和图片token的联合分布。 3.最后的推理阶段给定一张候选图片和一条文本通过transformer可以得到融合后的token然后用dVAE的decoder生成图片最后通过预训练好的CLIP计算出文本和生成图片的匹配分数得到不同采样图片的分数排序最终找到跟文本最匹配的图片。
从以上流程可知dVAE、Transformer和CLIP三个模型都是不同阶段独立训练的。下面讲一下dVAE、Transformer和CLIP三个部分。 3. 组成
3. 1 dVAE
由于图像特征的密集性和冗余性不能直接提供给Transformer进行训练。目前主流的方式例如ViTSwin-Transformer等都是将图像的Patch作为模型的输入然后通过一个步长等于Patch大小的大卷积核得到每个Patch的特征向量。
DALL-E提供的方案是使用离散的变分自编码器dVAE将大小为256x256的RGB图像压缩到大小为32x32的通道数为8192的one-hot token的分布变分自编码器的架构如图2所示。换句话说阶段1的作用是将图像映射到一个大小为8192的图表中。这里通道数为8192的one-hot向量可以看做是一个词表它的思想是通过离散VAE实现图像特征空间想文本特征空间的映射。 不同于AE的是VAE的预测不再是一个值而是一个分布通过在分布上的随机采样便可以解码成不同的生成内容。给定一个输入xVAE的编码器的输出应该是特征z的后验分布。 VQVAE
通过Encoder学习出中间编码然后通过最邻近搜索将中间编码映射为codebook中K个向量之一然后通过Decoder对latent code进行重建。
另外由于最邻近搜索使用argmax来找codebook中的索引位置导致不可导问题VQVAE通过stop gradient操作来避免最邻近搜索的不可导问题也就是latent code的梯度跳过最近邻搜索直接复制到中间编码上。
VQVAE相比于VAE最大的不同是直接找每个属性的离散值通过类似于查表的方式计算codebook和中间编码的最近邻作为latent code。由于维护了一个codebook编码范围更加可控VQVAE相对于VAE可以生成更大更高清的图片(这也为后续DALLE和VQGAN的出现做了铺垫)。 作用
dVAE主要用来为图像的每个patch生成token表示这次openAI开出的代码就是dVAE的推理代码。dVAE的encoder和decoder的机构较为简单都是由bottleneck-style的resblock组成相比于普通的VAEdVAE有两点区别
1.和VQVAE方法相似dVAE的encoder是将图像的patch映射到8192的词表中论文中将其分布设为在词表向量上的均匀分类分布这是一个离散分布由于不可导此时不能采用重参数技巧DALL·E使用Gumbel Softmax trick来解决这个问题。
2、在重建图像时真实的像素值是在一个有界区间内而VAE中使用的Gaussian分布和Laplace分布都是在整个实数集上这造成了不匹配的问题。为了解决这个问题论文中提出了logit-Laplace分布如下式所示 3.2 Transformer Dall-E中的Transformer结构由64层attention层组成每层的注意力头数为62每个注意力头的维度为64因此每个token的向量表示维度为3968。如图2所示attention层使用了行注意力mask、列注意力mask和卷积注意力mask三种稀疏注意力。 图2 Transformer使用的3种稀疏注意力 训练方法是用seq2seq的方法用前面的序列预测下一个token结合上mask的设计可以实现行预测或者列预测。 Transformer的输入如图3所示其中pad embd通过学习得到根据论文介绍为每个位置都训练了一个pad embd即256个pad embd在对文本token进行pad时使用对应位置的pad embd。 图3 Transformer输入示意图假设文本最大长度6 训练目标采用Evidence Lower BOund (ELBO推导详见文章最下面)。如下
x指图片y指文本z指对编码的图片用于生成图片。 3.3 CLIP CLIP的推理过程
1.先将预训练好的CLIP迁移到下游任务如图(2)所示先将下游任务的标签构建为一批带标签的文本(例如 A photo of a {plane})然后经过Text Encoder编码成一批相应的word embedding。
2.然后将没有见过的图片进行zero-shot预测如图(3)所示通过Image Encoder将一张小狗的图片编码成一个feature embedding然后跟(2)编码的一批word embedding先归一化然后进行点积最后得到的logits中数值最大的位置对应的标签即为最终预测结果。
在DALL·E中CLIP的用法跟上述过程相反提供输入文本和一系列候选图片先通过Stage One和Stage Two生成文本和候选图片的embedding然后通过文本和候选图片的匹配分数进行排序最后找到跟文本最匹配的图片。 总结总的来说目前公开的DALL-E的实现在模型结构上并没有太多创新而是合理利用了现有的模型结构进行组合并采用了一些trick解决了遇到的问题从而在大数据集上训练得到超大规模的模型取得了令人惊艳的效果这也符合openAI的一贯风格。但无论如何DALL-E在深度学习能力边界探索的道路上又前进了一步也再一次展示了大数据和超大规模模型的魅力。美中不足的是DALL-E包含了三个模块更像是一个pipeline而对于普通的研究者来说要运行这样一个复杂的大规模模型是一件很困难的事情。 参考DALL·E: Zero-Shot Text-to-Image Generation - 知乎
如何评价DALL-E模型的实现 - 知乎