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 xZN,其中 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(xt1xt,x0)。然而 x 0 x_0 x0在离散情况下是无法估计的,这里训练了一个Transformer来估计转移分布 p θ ( x t − 1 ∣ x t , y ) p_\theta(x_{t-1}|x_t,y) pθ(xt1xt,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} x0i1,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=mxt1=n)RK×K 定义 x t − 1 x_{t−1} xt1过渡到 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(xtxt1)=vT(xt)Qtv(xt1)
这里 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(xtx0)=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} xt1。网络结构如下,包含了文本编码器和扩散解码器,扩散图像解码器采用图像令牌 x t x_t xt和时间步长 t t t,并输出无噪声令牌分布 p θ ( x 0 ∣ x t , y ) p_θ(x_0|x_t, y) pθ(x0xt,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的条件序列。


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G入门到精通 - 5G的十大关键技术

文章目录 一、网络切片二、自组织网络三、D2D技术四、低时延技术五、MIMO技术六、毫米波七、内容分发网络八、M2M技术九、频谱共享十、信息中心网络 一、网络切片 5G中的网络切片是一项关键技术,它允许将整个5G网络分割成多个独立的虚拟网络,每个虚拟网络…

vue2+typescript使用高德地图2.0版本

高德地图 webjs api 2.0官网教程 AMap.Driving使用说明 <div class"mmp"><div id"map" ref"mapcontainer"></div></div><script lang"ts"> //安全密钥 window._AMapSecurityConfig{securityJsCode: &qu…

添加新公司代码的配置步骤-Part1

原文地址&#xff1a;配置公司代码 概述 我们生活在一个充满活力的时代&#xff0c;公司经常买卖子公司。对于已经使用 SAP 的公司来说&#xff0c;增加收购就成为一个项目。我开发了一个电子表格&#xff0c;其中包含向您的结构添加新公司代码所需的所有配置更改。当然&…

Linux安全配置

进入ssh配置文件 vim /etc/ssh/sshd_config将port 22中的端口号改为5001 重启ssh服务 systemctl restart sshd拓展 sh与bash iptable与firewall ssh与sshd vps与ssh 参考&#xff1a; 【安全-SSH】SSH安全设置 - CSDN AppLinux VPS服务器SSH端口一键修改脚本​Linux脚本…

「Swift」取消UITableView起始位置在状态栏下方开始

前言&#xff1a;在写页面UI时发现&#xff0c;当隐藏了NavigationBar时&#xff0c;即使UITableView是从(0,0)进行布局&#xff0c;也会一直在手机状态栏下方进行展示布局&#xff0c;而我的想法是希望UITableView可以从状态栏处就进行展示布局 当前页面展示&#xff1a; 问题…

java设计模式学习之【装饰器模式】

文章目录 引言装饰器模式简介定义与用途实现方式 使用场景优势与劣势装饰器模式在Spring中的应用画图示例代码地址 引言 在日常生活中&#xff0c;我们常常对基本事物添加额外的装饰以增强其功能或美观。例如&#xff0c;给手机加一个保护壳来提升其防护能力&#xff0c;或者在…

JAVA网络编程——BIO、NIO、AIO深度解析

I/O 一直是很多Java同学难以理解的一个知识点&#xff0c;这篇帖子将会从底层原理上带你理解I/O&#xff0c;让你看清I/O相关问题的本质。 1、I/O的概念 I/O 的全称是Input/Output。虽常谈及I/O&#xff0c;但想必你也一时不能给出一个完整的定义。搜索了谷哥欠&#xff0c;发…

【UE5】使用场系统炸毁一堵墙

效果 步骤 1. 新建一个空白项目 2. 新建一个Basic关卡&#xff0c;然后添加一个第三人称游戏和初学者内容包到内容浏览器 3. 在场景中添加一堵墙 4. 选项模式选择“破裂” 点击新建 新建一个文件夹用于存储几何体集 点击“统一” 最小和最大Voronoi点数都设置为100 点击“破…

c++11计时器chrono库

去实现一下开始说的高精度计时器&#xff1a; #ifndef _TimerClock_hpp_ #define _TimerClock_hpp_#include <iostream> #include <chrono>using namespace std; using namespace std::chrono;class TimerClock { public:TimerClock(){update();}~TimerClock(){}v…

C语言指针详解上

1 野指针 int main01(){//野指针就是没有初始化的指针,指针的指向是随机的,不可以 操作野指针//int a 0;//指针p保存的地址一定是定义过的(向系统申请过的)int *p;//野指针*p 200;printf("%d\n",*p);system("pause");return 0;}2 空指针 空指针的作用…

力扣78. 子集(java 回溯解法)

Problem: 78. 子集 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 我们易知&#xff0c;本题目涉及到对元素的穷举&#xff0c;即我们可以使用回溯来实现。对于本题目我们应该较为注重回溯中的决策阶段&#xff1a; 由于涉及到对数组中元素的穷举&#xff0c;即在每…

Java网络编程 *TCP与UDP协议*

网络编程 什么是计算机网络? 把分布在不同地理区域的具有独立功能的计算机,通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统 简单来说就是把不同地区的计算机通过设备连接起来,实现不同地区之前的数据传输 网络编程是干什么的? 网络…

Docker快速理解及简介

docker快速理解及简介 1.Docker为什么出现&#xff1f; 迁移一个项目时&#xff0c;运行文档、配置环境、运行环境、运行依赖包、操作系统发行版、内核等都需要重新安装配置&#xff0c;比较麻烦。 2.Docker是什么&#xff1f; Docker是基于Go语言实现的云开源项目。解决了运行…

JVM 字节码

JVM概述 问题引出 你是否也遇到过这些问题&#xff1f; 运行着的线上系统突然卡死&#xff0c;系统无法访问&#xff0c;甚至直接OOM&#xff01;想解决线上JVM GC问题&#xff0c;但却无从下手。新项目上线&#xff0c;对各种JVM参数设置一脸茫然&#xff0c;直接默认吧&…

Python:核心知识点整理大全2-笔记

目录 2.1 运行 hello_world.py 时发生的情况 第 2 章 变量和简单数据类型 2.2 变量 2.2.1 变量的命名和使用 2.2.2 使用变量时避免命名错误 2.3 字符串 2.3.1 使用方法修改字符串的大小写 在本章中&#xff0c;你将学习可在Python程序中使用的各种数据&#xff0c;还将学…

html/css中用float实现的盒子案例

运行效果&#xff1a; 代码部分&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> <style type"text/css">.father{width:300px; height:400px; background:gray;…

2个月拿下信息系统项目管理师攻略(攻略超级全)

信息系统项目管理师&#xff08;高项&#xff09;一次性过啦&#xff01;结合这次备考经验&#xff0c;给大家总结一下复习方法。 先上图&#xff0c;开心一下&#xff01; 一、我为什么选择了高项 为什么我会选信息系统项目管理师&#xff0c;也就是我们常说的高项。 原因1…

C#基础与进阶扩展合集-进阶篇(持续更新)

目录 本文分两篇&#xff0c;基础篇点击&#xff1a;C#基础与进阶扩展合集-基础篇 一、进阶 1、Predicate 2、设置C#语言版本 3、ListCollectionView过滤集合 4、值类型与引用类型 5、程序设置当前项目工作目录 6、获取App.config配置文件中的值 7、Linq常用语句 8、…

spring日志输出到elasticsearch

1.maven <!--日志elasticsearch--><dependency><groupId>com.agido</groupId><artifactId>logback-elasticsearch-appender</artifactId><version>3.0.8</version></dependency><dependency><groupId>net.l…

图解系列--HTTPS,认证

确保 Web 安全的HTTPS 1.HTTP 的缺点 1.1.通信使用明文可能会被窃听 加密处理防止被窃听 加密的对象可以有这么几个。 (1).通信的加密 HTTP 协议中没有加密机制&#xff0c;但可以通过和 SSL&#xff08;Secure Socket Layer&#xff0c;安全套接层&#xff09;或TLS&#xff…