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.mzph.cn/news/205006.shtml

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

相关文章

银河麒麟服务器部署Prometheus+Grafana

#年薪百万# 一、环境准备 操作系统:Operating System: Kylin Linux Advanced Server V10 (Sword) (X86-64) prometheus:prometheus-2.48.0.linux-amd64 grafana:grafana-enterprise-10.2.2.linux-amd64 node_exporter:node_expor…

uni-app 微信小程序之自定义中间圆形tabbar

文章目录 1. 自定义tabbar效果2. pages新建tabbar页面3. tabbar 页面结构4. tabbar 页面完整代码 1. 自定义tabbar效果 2. pages新建tabbar页面 首先在 pages.json 文件中,新建一个 tabbar 页面 "pages": [ //pages数组中第一项表示应用启动页&#xff…

hive sql子单元查找组合单元信息

1. 背景 店铺卖东西,会将一部分子商品(单个商品,sku 粒度)打包到一起,变成一个组合商品去售卖。 用户买东西,可能会买多个组合商品。 数仓这边拿到的数据,全是已经拆分到子商品的订单商品数据…

Ubuntu宝塔面板本地部署Emlog个人博客网站并远程访问【内网穿透】

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总结 前言 博客作为使…

DDoS高防IP到底是什么?

DDoS高防IP是提供一个带防御的IP,主要是针对网络中的DDoS攻击进行保护,是针对互联网服务器遭受大流量的DDoS攻击后,导致服务不可用的情况下,用户可以通过配置高防IP,将攻击流量引流到高防IP上,从而确保源站…

面试华为测试岗,收到offer后我却毫不犹豫拒绝了....

我大学学的是计算机专业,毕业的时候,对于找工作比较迷茫,也不知道当时怎么想的,一头就扎进了一家外包公司,一干就是2年。我想说的是,但凡有点机会,千万别去外包! 在深思熟虑过后&am…

圣诞将至—C语言圣诞树代码来啦

文章目录 圣诞将至—C实现语言圣诞树源码 圣诞将至—C实现语言圣诞树 圣诞树 源码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <math.h> #include <stdlib.h> #include <windows.h> #include <time.h> #define PI 3.14159265…

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

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

GPT 中文提示词技巧:参照 OpenAI 官方教程

前言 搜了半天什么 prompt engineering 的课&#xff0c;最后会发现 gpt 官方其实是有 prompt 教程的。因此本文主要是学习这篇教程。 概述 - OpenAI API 部分案例是参考&#xff1a;根据吴恩达老师教程总结出中文版prompt教程_哔哩哔哩_bilibili up主的内容。 一、尽可能清…

JavaScript实现手写签名,可触屏手写,支持移动端与PC端双端保存

目录 1.HTML模板 2.获取DOM元素和定义变量 3.创建两个canvas元素&#xff0c;并设置它们的宽度和高度 4.绑定触摸事件&#xff1a;touchstart, touchmove, touchend和click 5.实现触摸事件回调函数&#xff1a;startDrawing, draw和stopDrawing 6.实现绘制线段的函数&…

刷题学习记录(文件上传)

[GXYCTF 2019]BabyUpload 知识点&#xff1a;文件上传.htaccessMIME绕过 题目直接给题目标签提示文件上传的类型 思路&#xff1a;先上传.htaccess文件&#xff0c;在上传木马文件&#xff0c;最后蚁剑连接 上传.htaccess文件 再上传一个没有<?的shell 但是要把image/pn…

基于Java SSM框架实现文物管理系统项目【项目源码+论文说明】

基于java的SSM框架实现文物管理系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#…

java设计模式学习之【组合模式】

文章目录 引言组合模式简介定义与用途&#xff1a;实现方式UML 使用场景优势与劣势组合模式在Spring中的应用员工结构示例代码地址 引言 设想您正在组织一个大型派对&#xff0c;需要将各种食品和饮料按类型整理。您可能有单独的物品&#xff0c;如一瓶苏打水&#xff0c;也可…

Qt 如何使用VTK显示点云

开发环境 ubuntu 20.04 VTK 8.2 编译VTK 下载源码 git clone --recursive https://gitlab.kitware.com/vtk/vtk.git 使用版本管理工具&#xff0c;切换版本到8.2 更改编译选项&#xff0c;这里使用cmake-gui进行配置 1、编译类型修改为Release 2、安装路径可以设置&#xf…

JavaScript如何实现按键音效、视频播放,标签分类切换横向滚动

1.使用HTML5的audio标签 &#xff08;音频播放&#xff09; <audio id"click-sound"><source src"audio/show.mp3" type"audio/mpeg"> </audio> <button id"button">按钮</button> var clickSound d…

Vue练习 v-model 指令在状态和表单输入之间创建双向绑定

效果&#xff1a; <template><h2>Text Input</h2><input v-model"text"> {{ text }}<h2>Checkbox</h2><input type"checkbox" id"checkbox" v-model"checked"><label for"checkbox…

使用Notepad++编辑器,安装compare比较差异插件

概述 是一款非常有特色的编辑器&#xff0c;Notepad是开源软件&#xff0c;Notepad中文版可以免费使用。 操作步骤&#xff1a; 1、在工具栏 ->“插件”选项。 2、勾选Compare选项&#xff0c;点击右上角“安装”即可。 3、 确认安装插件 4、下载插件 5、插件已安装 6、打…

服务器配置免密SSH

在当今互联网时代&#xff0c;远程工作和网络安全已成为信息技术领域的热点话题。无论是管理远程服务器、维护网络设备还是简单地从家中连接到办公室&#xff0c;安全始终是首要考虑的因素。这就是为什么 SSH&#xff08;Secure Shell&#xff09;成为了网络专业人士的首选工具…

集合进阶指南:从基础知识到高级应用

集合高级 Collection集合 数组和集合的区别 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的数组可以存储基本数据类型和引用数据类型 集合只能存储引用数据类型,如果要存基本数据类型,需要存对应的包装类 集合类体系结构 Collectio…

家政预约小程序带商城,图文详解

家政预约小程序开发&#xff0c;在线选择服务分类&#xff0c;选择上门时间&#xff0c;提交订单&#xff0c;在线支付。 商城模块&#xff1a;商品分类&#xff0c;在线下单支付。 个人中心&#xff1a;订单管理&#xff08;家政订单&#xff0c;搬家订单&#xff0c;商品订…