【论文精读】DALLE: Zero-Shot Text-to-Image Generation零样本文本到图像生成

news2024/11/16 17:33:26

文章目录

  • 一、前言
  • 二、摘要
  • 三、方法
    • (一)主要目标
    • (二)stage 1:训练离散变分自动编码器(dVAE)
    • (三)stage 2:训练自回归转换器
    • (四)公式表达
  • 四、模型细节
    • (一)Stage One: Learning the Visual Codebook
      • 1、最大化证据下界ELB
      • 2、模型优化
      • 3、模型结构
      • 4、输入归一化和输出还原
    • (二)Stage Two: Learning the Prior
      • 1、模型输入
      • 2、模型结构(稀疏Transformer)
    • (三)图像生成
    • (四)混合精度训练
    • (五)分布式运算
  • 五、实验结果
    • (一)对比效果
    • (二)消融研究


一、前言

https://openai.com/research/dall-e

在这里插入图片描述

DALL·E 是GPT-3的 120 亿参数版本, 经过训练,可以使用文本-图像对的数据集从文本描述生成图像。我们发现它具有多种功能,包括创建动物和物体的拟人化版本、以合理的方式组合不相关的概念、渲染文本以​​及对现有图像应用转换。

DALL·E 2可以生成更逼真、更准确的图像,分辨率提高 4 倍。

二、摘要

研究现状的缺点: 文本到图像生成传统上专注于寻找更好的建模假设以在固定数据集上进行训练,而这些假设会涉及到复杂的架构、辅助损失或辅助信息。

作者的研究:

  1. 基于transformer
  2. 将文本和图像标记自回归建模为单个数据流
  3. 凭借足够的数据和规模,当以零样本方式评估时,我们的方法与以前的特定领域模型具有竞争力。

在这里插入图片描述

三、方法

(一)主要目标

  1. 训练一个 Transformer 将文本和图像标记作为单个数据流 进行自回归建模

(图像是连续的,可以采用VQVAE离散化)

  1. 图片的分辨率很大,如果把单个pixel当成一个token处理,会导致计算量过于庞大,于是DALL·E引入了一个dVAE模型来降低图片的分辨率。
  2. 似然目标倾向于优先考虑对像素之间的短程依赖性进行建模,因此大部分建模能力将用于捕获高频细节,而不是使我们在视觉上可识别对象的低频结构。

在这里插入图片描述

(二)stage 1:训练离散变分自动编码器(dVAE)

  • 将每个 256×256 RGB 图像压缩为 32×32 图像令牌网格
  • 每个图像令牌可以取到8192个可能的离散值之一
  • 这将transformer的上下文大小减少了 192 倍,而视觉质量没有大幅下降
    192 = ( 256 ÷ 32 ) × ( 256 ÷ 32 ) × 3 192=(256\div 32) \times (256\div 32) \times 3 192=(256÷32)×(256÷32)×3在这里插入图片描述

(三)stage 2:训练自回归转换器

  • 文本token:256个(BPE编码)
  • 图像token:32 × 32 = 1024 个
  • 连接文本token和图像token
  • 训练自回归转换器来对文本和图像标记上的联合分布进行建模

BPE(Byte Pair Encoding)编码是一种常用的无损数据压缩算法,也常被用于自然语言处理中的词汇表示和分词任务。它基于统计的方法,通过不断合并数据中出现频率最高的字节对来构建编码表。

在这里插入图片描述

(四)公式表达

整个过程可以被视为最大化 x、y 和z 上模型分布的联合似然的证据下界 (ELB)

  • x:图像images
  • y:图像的文字描述captions
  • z:编码的RGB 图像

p θ , ψ ( x , y , z ) = p θ ( x ∣ y , z ) p ψ ( y , z ) p_{θ,ψ}(x, y, z) = p_θ(x | y, z)p_ψ(y, z) pθ,ψ(x,y,z)=pθ(xy,z)pψ(y,z)

  • q φ q_φ qφ:在给定 RGB 图像的情况下,dVAE 编码器 生成的 32 × 32 图像令牌上的分布;
  • p θ p_θ pθ:给定图像标记的 dVAE 解码器 生成的 RGB 图像上的分布;
  • p ψ p_ψ pψ:由transformer 建模的文本和图像标记上的联合分布。

在这里插入图片描述

在这里插入图片描述

四、模型细节

(一)Stage One: Learning the Visual Codebook

1、最大化证据下界ELB

证据下界是用于评估概率模型的变分推断方法中的一个重要概念。

  • 在变分推断中,我们通常试图近似一个复杂的后验分布,以使其更容易计算和处理。而证据下界是一个下界,用于评估我们近似的后验分布和真实后验分布之间的接近程度。如果我们的近似分布可以很好地拟合真实后验分布,那么证据下界将会比较高。
  • 在机器学习中,通常使用 “Evidence Lower Bound” 作为损失函数,用于训练概率生成模型,如变分自编码器(VAE)和概率图模型。通过最大化证据下界,我们可以使生成模型更好地拟合数据,并学习到数据背后的潜在结构。

普通的变分自编码器VAE的证据下界(Evidence Lower Bound,ELB)的推导过程:(利用率琴生不等式)
在这里插入图片描述

DALL-E的Stage1中的证据下界可以写为:
在这里插入图片描述

2、模型优化

问题1: q ψ q_ψ qψ是离散分布(one-hot编码),我们无法使用重新参数化梯度来最大化它。

重新参数化梯度是一种常用于训练变分自编码器(VAE)等生成模型的技术。

  • 在训练VAE时,我们希望从一个分布中采样出一些隐变量,以生成模型的输出。然而,由于采样操作是不可导的,因此通常不能直接对采样操作求梯度。为了解决这个问题,我们可以使用重新参数化技术。
  • 重新参数化技术的基本思想是,将采样过程拆分为两步:首先从一个固定的分布中采样一些固定的随机变量,然后通过一个确定的函数将这些随机变量转换为我们所需的随机变量。这样,我们就可以对这个确定的函数求导,从而能够计算出采样操作对于损失函数的梯度。

解决方案: 使用gumbel-softmax 松弛

Gumbel-Softmax 松弛的思想是,从 Gumbel 分布中采样一些随机噪声,并与离散分布的 logits 相结合,然后通过 softmax 操作将结果归一化为一个概率分布。这样,我们就可以用一个连续、可导的操作来近似离散分布的采样过程,并且可以通过反向传播来训练模型。

DALL-E中的gumbel-softmax:向sotfmax中引入超参数 Υ \Upsilon Υ使得argmax可导。(设置 Υ = 1 16 \Upsilon =\frac{1}{16} Υ=161

超参数 Υ \Upsilon Υ在深度学习中有一个专业术语叫温度,可以通过调整softmax曲线的平滑程度来实现不同的功能。

  • Υ \Upsilon Υ的值大于1时,我们可以得到的更加平滑的softmax曲线,这种方式可以得到更加平滑的置信度分布;
  • Υ \Upsilon Υ的值小于1时,得到的softmax曲线更加陡峭;
  • Υ \Upsilon Υ的值趋近0时,可以得到近似argmax的效果,但是这时softmax还是可导的。

问题2: 在构建生成图像时,图像的像素是有值域范围的,而VAE中通过拉普拉斯分布或者高斯分布得到的值域是整个实数集,这就造成了模型目标和实际生成内容的不匹配问题。

解决方案: DALL-E提出了拉普拉斯分布的变体:log-拉普拉斯分布。它的核心思想是将sigmoid作用到拉普拉斯分布的随机变量上,从而得到一个值域是(0,1)的随机变量。

3、模型结构

DALL-E的离散VAE的编码器和解码器都是基于残差网络构建的,DALL-E保持了残差网络的基础结构,但也有其针对性的调整,核心修改如下:

  • 编码器的输入层的卷积核的大小是7x7;
  • 编码器的最后一个卷积的卷积核的大小是1x1,用于产生大小是32x32x8192的Feature Map;
  • 使用最大池化而非原来的平均池化进行降采样;
  • 解码器的的第一个卷积核最后一个卷积的卷积核的大小均为1x1;
  • 解码器使用了最近邻的方式进行上采样;
  • 为了提升训练速度,MAE使用了混合精度训练。

4、输入归一化和输出还原

输入归一化:图像像素范围是0到255,DALL-E中将输入像素的范围映射到 ( ϵ , 1 − ϵ ) (\epsilon,1-\epsilon) (ϵ,1ϵ)的范围。
在这里插入图片描述

输出还原:在解码器中通过log-拉普拉斯分布预测得到的结果的范围是 ( 0 , 1 ) (0,1) (0,1),通过 φ \varphi φ 的逆运算即可得到解码器的生成内容。
在这里插入图片描述

(二)Stage Two: Learning the Prior

1、模型输入

阶段2的输入是拼接的文本特征和图像特征以及各自的位置编码等信息。

如图一个模型输入的例子,在这个示例中,文本嵌入的长度是6,图像嵌入的长度是2。文本的输入是文本的嵌入和文本的位置编码,图像的输入是图像的标志嵌入,行位置编码以及列位置编码。这些编码的长度均是3968。
在这里插入图片描述

2、模型结构(稀疏Transformer)

DALL-E使用的Transformer是稀疏Transformer,它的特点是只关注Top-k个贡献最大的特征的状态,因此比普通的Transformer更能关注重要的特征。DALL-E的Transformer有64个自注意力层,每个层的头数是62,每个注意力头的维度是64。

DALLE共使用了3个不同形式的稀疏自注意力编码:

  • (a)是行注意力,每个标志只关注top-5的相关标志;
  • (b)是列注意力,(c)是列注意力的转置,它能够更好的利用GPU;
  • (d)是卷积自注意力。
    在这里插入图片描述

(三)图像生成

图像生成过程:

  1. 将输入文本编码成特征向量,然将特征向量送入到自回归的Transformer中生成图像的token
  2. 将图像的token送入到dVAE的解码器中得到生成图像
  3. 通过CLIP对生成样本进行评估,得到最终的生成结果

在这里插入图片描述

(四)混合精度训练

问题: 为了提升GPU的计算效率,DALL-E的大量参数以及激活都使用了16位的低精度存储。这种低精度模型的最大挑战是梯度下溢(underflow)的问题,也就是计算的梯度值超出了16位浮点数能表示的最低值。

传统的低精度训练通过将梯度值限制在一个模型能表示的范围内来避免梯度下溢。但是这种粗暴的限制每一个梯度的范围的方法并不适合DALL-E这种文本到图像更复杂的任务,它需要更过的精度表示。

解决方案: DALL-E使用了大量的技术来解决这一问题,其中最重要的一个点:每个残差块的梯度缩放(per-resblock gradient scaling)。

  • 对每个残差块使用单独的梯度缩放比例,因此命名为混合精度训练
  • 对于每个残差块进行缩放替代传统的对损失函数进行缩放;
  • 只在有必要使用低精度浮点数来提速的地方才使用16位精度表示;
  • 除以梯度的时候避免下溢。

DALL-E的一个残差块的混合精度训练:(实线表示前向传播的计算顺序,虚线表示反向传播的计算流程)

  • 在前向计算时,对于单位映射,我们先将其缩放到16位,当进行完卷积运算时,我们再将其放到到32位。
  • 在进行反向运算时,我们先对梯度进行过滤和缩放,其中过滤操作会将所有NaN和Inf的值置0,经过卷积操作权值的更新后再将其放大到32位。
    在这里插入图片描述

(五)分布式运算

DALL-E的模型即使使用16位的精度来存储,也要占用大约24G的显存,这超过了他们训练环境的单卡(NVIDIA V100 16G)的硬件显存,这里他们使用了参数分片(Parameter Sharding)来解决显存不足的问题。在进行模型的参数分片训练时,一个问题是不同机器的通信问题,它们之间的带宽是远小于同一台机器的不同显卡之间的带宽的,这成为了多机多卡训练。

五、实验结果

(一)对比效果

  1. 在不同程度的可靠性下,我们的模型似乎能够以合理的方式组合不同的概念,创建动物的拟人化版本,呈现文本,并执行某些类型的图像到图像的翻译:

  2. 将模型中的样本与MS-COCO中先前方法的样本进行比较。每个模型样本都是由对比模型排名的512个样本中最好的:
    在这里插入图片描述

  3. 人类对模型(在没有温度降低的情况下评估零射击)与先前对MS-COCO标题的工作(DF-GAN)的评估。在五选一的投票中,模型的样本在90.0%的情况下被选为最真实的,在93.3%的情况下被选为最匹配共享标题的图像。

  4. MS-COCO和CUB的定量结果。实线表示针对原始验证集计算的FID,虚线表示针对删除重叠图像的验证集计算的FID。对于MS-COCO,我们在从验证集中采样的30,000个标题的子集上评估所有模型。对于CUB,我们在测试集中的所有唯一标题上评估所有模型。

(二)消融研究

  1. 我们展示了模型大小和梯度的最小压缩等级(最高128的倍数)之间的关系,这是避免在训练的前10%的训练损失中出现差距所必需的。这些结果表明,在我们的设置中,我们可以实现约85%的压缩率,与模型大小无关。
  2. 增加对比重排序过程中图像数量对MS-COCO标题的影响。

参考:
【一起读论文】OpenAI文本驱动的图像生成DALL-E (DALLE)
DALL-E:Zero-Shot Text-to-Image Generation
如何评价DALL-E模型的实现?
[PMLR 2021] Zero-Shot Text-to-Image Generation:零样本文本到图像生成
非官方实现:DALLE-pytorch

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1482893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RT-Thread使用PWM时出现的问题(4.x版本)

编译出现问题 1. 发现对应的结构体没有相关参数 问题原因 这个字段是在后面的os版本新增的,导致前面的版本没法使用,这个字段是为了做兼容高级定时器部分的处理 处理方案 第一种最简单,就是升级os版本。(推荐)第二…

思维题(蓝桥杯 填空题 C++)

目录 题目一: ​编辑 代码: 题目二: 代码: 题目三: 代码: 题目四: 代码: 题目五: 代码: 题目六: 代码七: 题目八&#x…

10.selenium的基本使用

selenium是一个关于爬虫功能python的库,它的整体逻辑与之前的请求爬虫思路不同。selenium是模拟出一个浏览器,你通过代码操作这个浏览器从而获取一些信息,比如执行click()就相当于点击了浏览器中的某个元素,相当于是针对浏览器的鼠…

CSP-201712-2-游戏

CSP-201712-2-游戏 解题思路 初始化变量:定义整数变量n和k,分别用来存储小朋友的总数和淘汰的特定数字。然后定义了num(用来记录当前报的数)和peopleIndex(用来记录当前报数的小朋友的索引)。 初始化小朋…

《CrackCollect》

CrackCollect 类型:益智学习 视角:2d 乐趣点:趣味化英语学习,闯关增加学习动力 时间:2019 个人职责: 1、所有功能的策划讨论 2、所有开发工作 3、所有上架工作 此游戏旨在针对英语水平处于初级阶段的人&…

揭示 Wasserstein 生成对抗网络的潜力:生成建模的新范式

导 读 Wasserstein 生成对抗网络 (WGAN) 作为一项关键创新而出现,解决了经常困扰传统生成对抗网络 (GAN) 的稳定性和收敛性的基本挑战。 由 Arjovsky 等人于2017 年提出,WGAN 通过利用 Wasserstein 距离彻底改变了生成模型的训练,提供了一个…

前端监控与埋点

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

SINAMICS V90 PN 指导手册 第6章 BOP面板 LED灯、基本操作、辅助功能

概述 使用BOP可进行以下操作: 独立调试诊断参数查看参数设置SD卡驱动重启 SINAMICS V90 PN 基本操作面板 LED灯 共有两个LED状态指示灯,(RDY和COM)可用来显示驱动状态,两个LED灯都为三色(绿色/红色/黄色) LED灯状态 状态指示灯的颜色、状…

什么是VR虚拟现实|虚拟科技博物馆|VR设备购买

虚拟现实(Virtual Reality,简称VR)是一种通过计算机技术模拟出的一种全新的人机交互方式。它可以通过专门的设备(如头戴式显示器)将用户带入一个计算机生成的虚拟环境之中,使用户能够与这个虚拟环境进行交互…

1小时网络安全事件报告要求,持安零信任如何帮助用户应急响应?

12月8日,国家网信办起草发布了《网络安全事件报告管理办法(征求意见稿)》(以下简称“办法”)。拟规定运营者在发生网络安全事件时应当及时启动应急预案进行处置。 1小时报告 按照《网络安全事件分级指南》&#xff0c…

centos7单节点部署ceph(mon/mgr/osd/mgr/rgw)

使用ceph建议采用多节点多磁盘方式部署,本文章仅作为单节点部署参考,请勿用于生产环境 使用ceph建议采用多节点多磁盘方式部署,本文章仅作为单节点部署参考,请勿用于生产环境 使用ceph建议采用多节点多磁盘方式部署,…

2024年2月文章一览

2024年2月编程人总共更新了5篇文章: 1.2024年1月文章一览 2.Programming Abstractions in C阅读笔记:p283-p292 3.Programming Abstractions in C阅读笔记:p293-p302 4.Programming Abstractions in C阅读笔记:p303-p305 5.P…

如何在jupyter notebook 中下载第三方库

在anconda 中找到: Anaconda Prompt 进入页面后的样式: 在黑色框中输入: 下载第三方库的命令 第三方库: 三种输入方式 标准保证正确 pip instsall 包名 -i 镜像源地址 pip install pip 是 Python 包管理工具,…

2024年腾讯云优惠券领取页面_代金券使用方法_新老用户均可

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

【IC前端虚拟项目】inst_buffer子模块DS与RTL编码

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 需要说明一下的是,在我所提供的文档体系里,并没有模块的DS文档哈,因为实际项目里我也不怎么写DS毕竟不是每个公司都和HISI一样对文档要求这么严格的。不过作为一个培训的虚拟项目,还是建议在时间充裕…

PaddleOCR的部署教程(实操环境安装、数据集制作、实际应用案例)

文章目录 前言 PaddleOCR简介 一、PaddleOCR环境搭建 因为我之前安装过cuda和cudnn,查看cuda的版本根据你版本安装合适的paddlepaddle版本(之前没有安装过cuda的可以看我这篇文章Ubuntu20.04配置深度学习环境yolov5最简流程) 1.创建一个…

ESP32 partitions分区表的配置

由于在使用ESP32会遇到编译出来的bin文件大于分区表的时候,因此需要我们修改分区表或者使用自定义分区表的方式来解决。(项目是使用VScode来搭建和调试的,VScode YYDS) 具体分区标的含义这里就不讲了,网上有很多文档介…

【MySQL】:高效利用MySQL函数实用指南

🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. MySQL函数概论二. 字符串函数三. 数值函数四. 日期函数五. 流程函数&#x1…

C. Bitwise Operation Wizard

解题思路 可以相同先通过,找出最大值再通过每个数与取或,记录得值最大时的每个数其中的最小值与的最大 import java.io.*; import java.math.BigInteger; import java.util.Arrays; import java.util.BitSet; import java.util.HashMap; import java.ut…

StarRocks实战——携程酒店实时数仓

目录 一、实时数仓 二、实时数仓架构介绍 2.1 Lambda架构 2.2 Kappa架构 三、携程酒店实时数仓架构 3.1 架构选型 3.2 实时计算引擎选型 3.3 OLAP选型 四、携程酒店实时订单 4.1 数据源 4.2 ETL数据处理 4.3 应用效果 4.4 总结 原文大佬的这篇实时数仓建设案例有借…