ICLR2022 | ViT-VQGAN+:Vector-quantized Image Modeling with Improved VQGAN

news2024/11/15 9:04:03

论文链接:https://openreview.net/forum?id=pfNyExj7z2 | https://arxiv.53yu.com/abs/2110.04627

原文标题:Vector-quantized Image Modeling with Improved VQGAN

一、问题提出

Natural language processing (NLP) has recently experienced dramatic improvements from learning general-purpose representations by pretraining language models on unlabeled text corpora. This strategy has produced large performance gains for a wide range of natural language generation (NLG) and natural language understanding (NLU) tasks.

最近,自然语言处理(NLP)通过在未标记文本语料库上预训练语言模型来学习通用表示,取得了巨大的进步。这种策略已经为广泛的自然语言生成(NLG)和自然语言理解(NLU)任务带来了巨大的性能提升

在大规模图像识别中,iGPT(使用自回归目标学习直接预测像素值的huge-transformer)的最大分辨率为64 × 64,这严重限制了它的表示能力。

二、模型架构(Vit-VQVAE + VIM)

1、流程

stage1:Image Quantization.

给定分辨率为256×256的图像,基于Vit的VQGAN将其编码为32×32离散潜码(discretized latent codes),其中codebook大小为8192。

Stage 2: Vector-quantized Image Modeling.

训练一个Transformer模型来自回归预测栅格化32×32 = 1024图像标记,其中图像标记由学习的Stage 1 Vit-VQGAN编码。对于无条件图像合成或无监督学习,预先训练一个仅解码器的Transformer模型来预测下一个令牌。为评估无监督学习的质量,平均中间Transformer特征,并学习一个linear head来预测类的logit(也就是linear-probe)。

2、model

VQVAE和VQGAN用于encoder和decoder图像的核心网络架构是CNN,作者使用vit替换。一是因为数据量丰富、二是CNN的归纳偏置对模型的约束是有限的,三是计算效率和重建质量更显著。

将image打成8*8个patches,每个patch有1024维的token,(bs,64,1024)经过Tranformer blocks维度不变,然后映射为codebook中的code,找到最近邻,decoder是逆向操作,将其8*8的patches映射为256*256的图像。在block中,有两个全连接层,使用tanh激活,预测值采用sigmoid。

3、codebook learning

传统VQVAE由于codebook初始化不佳而导致码本使用率低。因此,在训练过程中,有相当一部分code很少被使用,或者dead。有效codebook大小的减少导致在stage 1中重建较差,在图像合成的stage 2中多样性较差。

β是0.25,e是codebook向量。

Factorized codes. 从编码器输出到低维潜变量空间的线性投影,用于code index检索(例如,每个code从768d向量减少到32d或8d向量),并发现立即提高了codebook的使用。在低维查找空间上查找从输入编码的最接近的code,然后将匹配的latent code投影到高维embedding空间。

L2-normalized codes. 对编码的潜在变量ze(x)和码本潜在变量e应用L2归一化。码本变量从正态分布初始化。通过将所有潜在变量映射到一个sphere,L2-归一化潜在变量的欧氏距离演化为ze(x)和e之间两个向量的余弦相似度,进一步提高了实验中训练的稳定性和重构质量。

4、training Loss

logit-laplace loss, L2 loss, perceptual loss。Total Loss:

5、image Modeling

使用decoder-only Transformer对图像建模:

训练object:

网络配置:

使用预训练的生成Transformer模型,通过简单地从输出softmax分布中逐个token采样来实现无条件图像生成。

默认的Stage 1 ViTVQGAN将分辨率为256 × 256的输入图像编码为32 × 32的潜在码,码本大小为8192,而Stage 2 Transformer则采用总长度为1024的扁平图像令牌。

将无条件生成扩展为有类条件的生成,方法是在图像令牌之前前置一个类id令牌。对于类id标记和图像标记,从头开始学习单独的嵌入层,嵌入维度与Transformer模型维度相同。在采样期间,在第一个位置提供一个类id标记,以自回归解码剩余的图像token。

三、实验

参数设置:

batchsize256,128 CloudTPUv4,总共50w step,Adam,warmup 5W step,lr 1e−4,Loshchilov 衰减 5e-5,256*256

模型比较:

条件生成:

ImageNet上的条件生成:

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

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

相关文章

程序结构你都懂了吗

上一篇:Python中基本输入和输出 昨天有粉丝问我,在看别人代码时总感觉脑子很混乱,不知道代码到哪步是停止,哪步又是开始,这是怎么回事呢? 其实很简单,因为还没有明白程序的基本执行流程&#x…

空间滤波基础

空间滤波是一种图像处理技术,它通过对每个像素周围的像素进行加权平均来平滑图像。这个过程的基本思想是,将每个像素的灰度值与它周围像素的灰度值进行加权平均,然后用平均值来替换原来的像素值。空间滤波器的大小和形状决定了每个像素的加权…

如何用 Redis 统计用户访问量?

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构等核心知识点,欢迎star~ Github地址:https://github.com/Tyson0314/Java-…

DCN v1 可变形卷积v1解析(修正篇)

在两年前的这篇文章Deformable Convolution(可变形卷积)代码解析(有错误,修改中)中,当时对可变形卷积进行了代码解读,后来被网友指出其中的解释是错的,里面引用的keras版本的代码实现…

002、捕鱼和分鱼问题

002、【题目】捕鱼和分鱼问题 捕鱼和分鱼:A、B、C、D、E 五个人在某天夜里合伙去捕鱼, 到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。 日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼 扔掉&…

C语言-数据的存储-整形的存储(8.1)

目录 思维导图: 1.数据类型的基本归类 1.1类型的意义 1.2整形家族 1.3浮点数家族 1.4构造类型 1.5指针类型 1.6空类型 2. 整形在内存中的存储 2.1 原码、反码、补码 2.2 大小端介绍 2.3 练习、巩固、提高 写在最后: 思维导图: 1…

视觉slam中的相机类型

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 顾名思义,视觉 SLAM(又称 vSLAM)使用从相机和其他图像传感器采集的图像。视觉 SLAM 可以使用普通相机(广角…

【UnLua】深入理解 UnLua

【UnLua】深入理解 UnLua 从 UnLua 框架层面讨论真正值得关注的关键点 UnLua 架构UnLua 内存管理UnLua 性能 大纲 UnLua 静态导出UnLua 架构UnLua 内存管理UnLua 性能 静态导出 静态导出,这是标准的 Lua 用法,已经非常完善了,就一种标准…

qemu virtio设备模拟与初始化流程

文章目录VirtIO设备模拟及初始化流程Virtio设备的创建参数解析virtio 设备初始化流程pci_bus_matchpci_match_devicepci_device_probevirtio_pci_proberegister_virtio_devicevirtio_dev_matchvirtio_dev_probe参考VirtIO设备模拟及初始化流程 qemu设备虚拟机化的路线可以概括…

C++之智能指针

文章目录一、为什么需要智能指针?二、智能指针的使用及原理1. RAII2.智能指针的原理3. auto_ptr4. unique_ptr5. shared_ptr6. weak_ptr7.删除器一、为什么需要智能指针? 如果在 div() 输入的 b 0,那么就会抛出一个异常,被 main…

Redis面试题总结

一、Redis概述 1.什么是Redis? Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、zset(sorted set --有序集合)和hash。这些数据结构都支持push/pop、add/remove及取交集并集和…

[程序设计]-基于人工智能博弈树,极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。

绪论-五子棋的特点与规则 五子棋是两方之间进行的竞技活动,专用棋盘为15*15,五连子的方向为横、竖、斜;任一方在棋盘上形成横向、竖向、斜向的连续的相同颜色的五个(含五个以上)时即为该方胜利;在棋盘上以…

Intel OneApi Developer Tools

“英特尔OneApi开发人员工具”是一组工具和库,用于为Internet发布的各种处理建筑开发高速应用程序。oneAPI是一个完全开放的编写程序模型,支持具有不同架构的各种制造商。使用此工具,其他开发人员需要为每个架构师使用特定的代码,…

【小程序】视图与逻辑

文章目录页面导航声明式导航编程式导航导航传参页面事件下拉刷新事件上拉触底事件生命周期WXS 脚本wxs 和 JavaScript 的关系基础语法页面导航 页面导航指的是页面之间的相互跳转。例如&#xff0c;浏览器中实现页面导航的方式有如下两种&#xff1a; ① <a> 链接② lo…

前端工程师leetcode算法面试必备-二叉树的构造和遍历

一、前言 上一篇中介绍了如何采用 DFS 和 BFS 的搜索思想去实现二叉树的前序遍历、中序遍历、后序遍历以及分层遍历。 这一节主要介绍 Medium 难度中比较常见的一种题型&#xff1a;根据各种遍历构造二叉树。 二、1008. 先序遍历构造二叉树 返回与给定先序遍历 preorder 相匹…

2022阅读数据分析报告

零、前言 晃晃悠悠,又至年尾。翻阅新的书籍五十有余,得到读书和樊登讲书,累计或许在千余小时,或跑步,或骑行,或徒步,偶或地铁,都做耳旁音。回首年初扶起的flag,细思存量不存质。暂且延续2021年的阅读记录方式1,简单可视化本年阅读数据,收尾第二年的阅读小结。 图1 年…

WeNet开源社区介绍

本文是由张彬彬在第二届SH语音技术研讨会和第七届Kaldi技术交流会上对WeNet开源社区的一些工作上的整理&#xff0c;内容涵盖了 WeNet 的最新进展、新项目WeKws&#xff0c;WeSpeeker和WeTextProcessing的介绍&#xff0c;以及去年发布的两个数据集Opencpop和WenetSpeech在今年…

11矩阵空间、秩1矩阵

矩阵空间 知识概要 ​ 从矩阵空 间谈起&#xff0c;介绍矩阵空间的维数&#xff0c;基等问题。渗透一些微分方程与线性代数之间的 联系&#xff0c;并介绍秩为 1 的矩阵特点。 矩阵空间 对角阵D不是很理解。 &#xff08;1&#xff09;基与维数 再看对角阵 D&#xff0c;明…

Hudi学习03 -- Spark操作hudi(Spark-shell 和 PySpark)

文章目录Spark环境准备Spark-shell 方式启动命令&#xff0c;需要显示指定一些参数插入数据查询数据时间旅行&#xff08;Time Travel Query&#xff09;更新数据增量查询&#xff08;Incremental query&#xff09;删除数据&#xff08;Delete Data&#xff09;覆盖分区数据&a…

阴道菌群——贯穿女性一生

阴道微生物组是一个复杂而动态的微生态系统&#xff0c;在女性月经周期和女性的一生中不断发生波动。 在过去几年中&#xff0c;对阴道微生物群关注随着测序技术的发展和应用逐渐广泛和突出&#xff0c;有关以往传统正常和异常阴道微生物组的知识也发生了变化。培养技术可能不再…