Vector Quantized Diffusion Model for Text-to-Image Synthesis
Vector Quantized Diffusion Model for Text-to-Image Synthesis
Shuyang Gu, University of Science and Technology of China, Microsoft, CVPR2022, Cited: 340, Code, Paper
1. 前言
我们提出了用于文本到图像生成的矢量量化扩散(Vector Quantized Diffusion Model;VQ-Diffusion)模型。该方法基于矢量量化变分自编码器(VQ-VAE),其潜在空间由最近开发的去噪扩散概率模型(DDPM)的条件变体建模。我们发现这种潜在空间方法非常适合文本到图像生成任务,因为它不仅消除了现有方法的单向偏差,还允许我们合并掩码和替换扩散策略以避免错误的积累,这是现有方法的严重问题。我们的实验表明,与传统的具有相似参数数量的自回归 (AR) 模型相比,VQ-Diffusion 产生了明显更好的文本到图像生成结果。与以往的基于gan的文本到图像方法相比,我们的VQ-Diffusion可以处理更复杂的场景,大大提高了合成的图像质量。最后,我们表明我们的方法中的图像生成计算可以通过重新参数化来高效。使用传统的AR方法,文本到图像的生成时间与输出图像分辨率呈线性增加,因此即使对于正常大小的图像也非常耗时。VQDiffusion 允许我们在质量和速度之间实现更好的权衡。我们的实验表明,重新参数化的VQDiffusion模型比传统的AR方法快15倍,同时获得了更好的图像质量。
2. 整体思想
把VQVAE的token用作扩散模型训练生成,很早的一篇文章,不太好评价。
3. 方法
给定文本图像对,我们使用预训练的 VQ-VAE 获得离散图像标记 x ∈ Z N x ∈ Z^N x∈ZN,其中 N = h w N = hw N=hw 表示标记的序列长度。假设VQ-VAE码本的大小为 K K K,位置 i i i处的图像标记 x i x_i xi取指定码本中条目的索引,即 x i ∈ { 1 , 2 , . . . , K } x_i∈\{1, 2, ..., K\} xi∈{1,2,...,K}。扩撒模型逐步破坏 x 0 x_0 x0,离散的情况下不是加入高斯噪声而是随机替换一些 x t x_t xt的tokens,最后变成纯噪声。采样阶段预测后验分布 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)。然而 x 0 x_0 x0在离散情况下是无法估计的,这里训练了一个Transformer来估计转移分布 p θ ( x t − 1 ∣ x t , y ) p_\theta(x_{t-1}|x_t,y) pθ(xt−1∣xt,y),这里可以以 y y y为条件。
具体来说,考虑位置 i i i处 x 0 x_0 x0的单个图像标记 x 0 i x^i_0 x0i,它采用指定码本中条目的索引,即 x 0 i ∈ 1 , 2 , . . . , K x^i_0 ∈ {1, 2,..., K} x0i∈1,2,...,K。在不引入混淆的情况下,我们在下面的描述中省略了上标 i i i。我们使用矩阵 [ Q t ] m n = q ( x t = m ∣ x t − 1 = n ) ∈ R K × K [Q_t]_{mn} = q(x_t = m|x_{t−1} = n) ∈R^{K×K} [Qt]mn=q(xt=m∣xt−1=n)∈RK×K 定义 x t − 1 x_{t−1} xt−1过渡到 x t x_t xt的概率。那么整个token序列的前向马尔可夫扩散过程可以写成:
q ( x t ∣ x t − 1 ) = v T ( x t ) Q t v ( x t − 1 ) q(x_t|x_{t−1}) = v^T(x_t)Q_tv(x_{t-1}) q(xt∣xt−1)=vT(xt)Qtv(xt−1)
这里 v ( x ) v(x) v(x)是一个长度为 K K K的one-hot列向量,只有条目 x x x是 1。重要的是,由于马尔可夫链的性质,可以边缘化中间步骤,直接从 x 0 x_0 x0推导出任意时间步 x t x_t xt的概率为:
q ( x t ∣ x 0 ) = v T ( x t ) Q ˉ t v ( x 0 ) , w i t h Q ˉ t = Q t ⋅ ⋅ ⋅ Q 1 q(x_t|x_0) = v^T(x_t)\bar Q_tv(x_{0}),~ with~ \bar Q_t = Q_t ···Q_1 q(xt∣x0)=vT(xt)Qˉtv(x0), with Qˉt=Qt⋅⋅⋅Q1
值得注意的是,在基于 x 0 x_0 x0时,后验扩散过程是tractable:
这里可以看到,转移矩阵 Q Q Q对于建模是十分重要的,作者提出,具体过程可以看原文:
因此,这里可以表示:
Q ˉ t v ( x 0 ) = α ˉ t v ( x 0 ) + ( γ ˉ t − β ˉ t ) v ( K + 1 ) + β ˉ t \bar Q_tv(x_{0}) = \bar \alpha_tv(x_0)+(\bar \gamma_t - \bar \beta_t)v(K+1)+\bar \beta_t Qˉtv(x0)=αˉtv(x0)+(γˉt−βˉt)v(K+1)+βˉt
算法流程图如下:
作者在这里是预测 x 0 x_0 x0,然后重参数得到 x t − 1 x_{t-1} xt−1。网络结构如下,包含了文本编码器和扩散解码器,扩散图像解码器采用图像令牌 x t x_t xt和时间步长 t t t,并输出无噪声令牌分布 p θ ( x 0 ∣ x t , y ) p_θ(x_0|x_t, y) pθ(x0∣xt,y)。解码器包含几个transformer块和一个softmax层。每个transformer块包含一个full注意力,一个cross注意,以结合文本信息和前馈网络块。使用自适应层归一化(AdaLN)算子将当前时间步 t t t注入到网络中,即 A d a L N ( h , t ) = a t L a y e r N o r m ( h ) + b t AdaLN(h, t) = a_tLayerNorm(h) + b_t AdaLN(h,t)=atLayerNorm(h)+bt,其中 h h h为中间激活, a t a_t at和 b t b_t bt由时间步嵌入的线性投影得到:
4. 实验
我们的VQ-VAE编码器和解码器遵循VQGAN的设置,它利用GAN的损失来获得更真实的图像。我们直接采用OpenImages数据集上训练的公开可用的VQGAN模型进行所有文本到图像的合成实验。它将256×256图像转换为32×32令牌。去掉无用代码后的码本大小K = 2886。我们采用CLIP模型的一个公开可用的标记器作为文本编码器,产生长度为77的条件序列。
相关文章:

Vector Quantized Diffusion Model for Text-to-Image Synthesis
Vector Quantized Diffusion Model for Text-to-Image Synthesis Shuyang Gu, University of Science and Technology of China, Microsoft, CVPR2022, Cited: 340, Code, Paper 1. 前言 我们提出了用于文本到图像生成的矢量量化扩散(Vector Quantized Diffusion Model&…...

solidity实现ERC1155多代币标准
文章目录 1、NFT - 维基百科2、IERC1155MetadataURI3、IERC1155Receiver4、IERC11555、ERC11556、NFT11557、开源地址 1、NFT - 维基百科 ERC-1155 标准于2018年6月由Witek Radomski、Andrew Cooke、Philippe Castonguay、James Therien、Eric Binet及Ronan Sandford提出。此标…...

10、外观模式(Facade Pattern,不常用)
外观模式(Facade Pattern)也叫作门面模式,通过一个门面(Facade)向客户端提供一个访问系统的统一接口,客户端无须关心和知晓系统内部各子模块(系统)之间的复杂关系,其主要…...

<软考>软件设计师-3程序设计语言基础(总结)
(一) 程序设计语言概述 1 程序设计语言的基本概念 1-1 程序设计语言的目的 程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行描述、组织和推导。 1-2 程序语言分类 低级语言 : 机器语言(计算机硬件只能识别0和1的指令序列)&…...
C/C++---------------LeetCode第278. 第一个错误的版本
第一个错误的版本 题目及要求二分查找 题目及要求 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你…...

C语言三种循环输出9*9乘法表
解题思路: 1、外层循环控制1~9循环 2、内层控制循环的次数 比如: 1 * 1 1 循环一次 1 * 1 1 1 * 2 循环两次 依此类推 int i, j;printf("for 打印9*9乘法表\r\n");for(i 1; i <10; i) {for(j 1; j < i;j) {printf("%d * %d %d…...

IntelliJ IDEA 之初体验
文章目录 第一步:下载与安装 IntelliJ IDEA1)官网下载2)选择那种安装包3)开始下载4)解压 第二步:启动 IntelliJ IDEA第三步:创建第一个 Java 项目第四步:运行第一个 Java 程序1&…...
java中synchronized和Lock的区别是什么?
synchronized 和 Lock 都是 Java 中用于实现线程同步的机制,但它们在使用方式和功能上存在一些区别。 使用方式 synchronized: 是 Java 语言关键字,可用于方法或代码块。通过 synchronized 关键字实现的同步是隐式的,无需手动释…...

ESP32-Web-Server编程-通过 Base64 编码在网页中插入图片
ESP32-Web-Server编程-通过 Base64 编码在网页中插入图片 概述 不同于上节 ESP32-Web-Server编程-在网页中通过 src 直接插入图片,本节引入 Base64 编码来显示图片。 Base64 是一种用64个字符来编码表示任意二进制数据的方法。任何符号都可以转换成 Base64 字符集…...

聊一聊大模型 | 京东云技术团队
事情还得从ChatGPT说起。 2022年12月OpenAI发布了自然语言生成模型ChatGPT,一个可以基于用户输入文本自动生成回答的人工智能体。它有着赶超人类的自然对话程度以及逆天的学识。一时间引爆了整个人工智能界,各大巨头也纷纷跟进发布了自家的大模型&#…...

pandas空格及网页空格符NBSP替换处理
df3[动作一课程内容]df3[动作一课程内容].str.replace( ,) df3[动作一课程内容]df3[动作一课程内容].str.replace( ,) 截图中代码为python展示代码,由于网页空格符和常规空格符看起来大致相同,但却不能用常规空格替换解决...

智能优化算法应用:基于战争策略算法无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于战争策略算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于战争策略算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.战争策略算法4.实验参数设定5.算法结果6.参考…...

数据结构和算法-栈
数据结构和算法-栈 1. 栈的介绍 栈的介绍: 栈的英文为(stack)栈是一个先入后出的有序列表栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固…...

C#基础与进阶扩展合集-进阶篇(持续更新)
目录 本文分两篇,基础篇点击:C#基础与进阶扩展合集-基础篇 一、进阶 1、Predicate 2、设置C#语言版本 3、ListCollectionView过滤集合 4、值类型与引用类型 5、程序设置当前项目工作目录 6、获取App.config配置文件中的值 7、Linq常用语句 8、…...
快速入门GitHub 之超简单的注册方法和超好用的使用技巧
最近几天发现有些人对Github网站很好奇,但是无奈自己不会用,因为是外国人的网站,首先自己的英文就不过关。对于这个,其实可以用谷歌浏览器去浏览Github,它有一键翻译的功能。但还是有必要介绍一下关于Github的一些功能和具体操作,初学编程语言的小伙伴们一定对 GitHub 有…...

ESP32-Web-Server编程- 在 Web 上开发动态纪念册
ESP32-Web-Server编程- 在 Web 上开发动态纪念册 概述 Web 有很多有趣的玩法,在打开网页的同时送她一个惊喜。 需求及功能解析 本节演示在 ESP32 上部署一个 Web,当打开对应的网页时,将运行动态的网页内容,显示炫酷的纪念贺词…...

双向ESD保护 汽车级TVS二极管 ESD9B3.3ST5G工作原理、特性参数、封装形式
什么是汽车级TVS二极管? TVS二极管是一种用于保护电子电路的电子元件。它主要用于电路中的过电压保护,防止电压过高而损坏其他部件。TVS二极管通常被称为“汽车级”是因为它们能够满足汽车电子系统的特殊要求。 在汽车电子系统中,由于车辆启…...

Ribbon-IRule 修改负载均衡的规则
1、负载均衡规则描述 (1)整体关系 (2)规则描述 内置负载均衡规则类规则描述RoundRobinRule简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。AvailabilityFilteringRule对以下两种服务器进行忽略: (1)在默认情况下&…...

双十二电视盒子哪个牌子最好?自费3000+测评整理电视盒子推荐
双十二不知道电视盒子哪个牌子最好的新手很多,想要我分享电视盒子推荐,为结果更客观我花费三千多购入了十几款热销电视盒子,通过一个月时间的全面对比测评后整理了电视盒子推荐,给双十二不知道怎么选电视盒子的朋友们提供参考。 一…...

排序:直接选择排序
直接选择排序: 本质: 直接选择排序的本质就是在数组中进行遍历挑选出最大的元素,讲最大的元素放到对应的位置后,再次选出次大的位置,而后又放到对应的位置..........................直到数组成为一个有序序列。 优…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...