【生成模型之十四】Visual Autoregressive Modeling

embedded/2025/2/10 22:01:45/

论文:Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction

code:GitHub - FoundationVision/VAR: [NeurIPS 2024 Best Paper][GPT beats diffusion🔥] [scaling laws in visual generation📈] Official impl. of "Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction". An *ultra-simple, user-friendly yet state-of-the-art* codebase for autoregressive image generation!

一、背景

我们提出了视觉自回归建模(VAR),这是一种新一代范式,将图像的自回归学习重新定义为从粗到细的“next-scale prediction”或“next-resolution prediction”,与标准的“next-token prediction”不同。这种简单直观的方法允许自回归(AR)Transformer快速学习视觉分布,并且可以很好地泛化。large AR模型强调scalability and generalizabilty

VQGAN and DALL-E这些模型利用视觉标记器将连续图像离散化为2D token的网格,然后将其展平为1D序列以进行AR学习(图2b),反映了顺序语言建模的过程(图2a)。

二、方法

image VAR:multi-scale token maps 是从粗到细(从低到高分辨率)自回归生成的,每个尺度内都有并行token生成。VAR需要多尺度VQVAE才能工作。

自回归建模需要定义数据的顺序。我们的工作重新考虑了如何“排序”图像:人类通常以层次化的方式感知或创建图像,首先限制全局结构,然后限制局部细节。这种多尺度、从粗到细的性质表明了图像的“顺序”。

VAR实现方式:我们的方法首先将图像编码为multi-scale token maps。然后,渐进过程从1×1的token映射开始,并在分辨率上逐渐扩展:在每一步,transformer都会根据所有先前的token映射预测下一个更高分辨率的token映射。我们将这种方法称为视觉自回归(VAR)建模。

关于原有的自回归模型弱点的讨论。tokenizer和flatten方法允许对图像进行下一个token自回归学习,但引入了几个问题:

1.Mathematical premise violation(违反数学前提);在量化自编码器(VQVAE)中,编码器通常会生成一个图像特征图f,其中包含所有i,j的相互依赖的特征向量f(i,j)。因此,在量化和flatten之后,令牌序列(x1,x2,…,xh×w)保持双向相关性。这与自回归模型的单向依赖假设相矛盾,该假设规定每个标记xt只应依赖于其前缀(x1,x2,…,xt-1)。

2.Inability to perform some zero-shot generalization;与问题1)类似,图像自回归建模的单向性限制了它们在需要双向推理的任务中的泛化能力。例如,给定图像的底部,它无法预测图像的顶部。

3.Structural degradation. 

三、Implementation details

VAR tokenizer。如前所述,我们使用vanilla VQVAE架构[30]和具有K个额外卷积(0.03M额外参数)的多尺度量化方案。对于V=4096的所有标度,我们使用共享码本。根据基线[30],我们的tokenizer也在OpenImages[49]上进行了训练,复合损失(5)和空间下采样率为16×。

im为输入图像,E(·) a encoder, and Q(·) a quantizer. a learnable codebook Z ∈ RV ×C containing V vectors. where lookup(Z, v) means taking the v-th vector in codebook Z. 

VAR transformer。我们主要关注VAR算法,因此我们保持了简单的模型架构设计。我们采用了类似于GPT-2和VQ-GAN[66,30]的具有自适应归一化(AdaLN)的标准decoder-only transformers 的架构,该架构在许多视觉生成模型中得到了广泛采用并被证明是有效的。对于类条件合成,我们使用类嵌入作为开始标记[s],以及AdaLN的条件。


http://www.ppmy.cn/embedded/160812.html

相关文章

C# 比较两个List集合内容是否相同

在 C# 中&#xff0c;要比较两个 List<T> 集合的内容是否相同&#xff0c;可以通过以下几种方法&#xff1a; 一、非自定义类的元素比较 1. 使用 SequenceEqual 方法&#xff08;顺序和内容都相等&#xff09; 顺序和内容都相等&#xff1a;使用 SequenceEqual。 usin…

go结构体和json相互转换、序列化和反序列化

json简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。RESTfull Api 接口中返回的数据都是 json 数据。 Json 的基本格式如下&#xff1a; { "a": "Hello", "b": "Worl…

工业 4G 路由器助力消防领域,守卫生命安全防线

在消防领域也在不断引入新技术以提升消防安全保障能力发展过程中。工业 4G 路由器为其数据传输、预警监控发挥着重要的通信作用。 工业 4G 路由器通过内置的 4G 模块&#xff0c;接入 4G 网络&#xff0c;将网络信号进行转换和分发。它能够适应复杂的工业环境&#xff0c;具备…

A new release of pip is available: 24.2 -> 25.0

您可以使用官方提供的 get-pip.py 脚本来安装或升级pip。 1&#xff0c;下载 get-pip.py 脚本&#xff1a; curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 2&#xff0c;运行脚本以安装或升级pip&#xff1a; python get-pip.py 3&#xff0c;实际运行效果

Kotlin 2.1.0 入门教程(十)

if 表达式 if 是一个表达式&#xff0c;它会返回一个值。 不存在三元运算符&#xff08;condition ? then : else&#xff09;&#xff0c;因为 if 在这种场景下完全可以胜任。 var max aif (a < b) max bif (a > b) {max a } else {max b }max if (a > b) a…

C# 修改项目类型 应用程序程序改类库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

C语言练习题

文章目录 1. 递归实现将字符串str中的元素逆序2. 对数组arr进行冒泡排序&#xff08;升序&#xff09;3. 对数组从下标low到下标hihg区间内的元素进行快速排序&#xff08;升序&#xff09;4. 在数组中利用二分查找(折半查找)目标关键字5. 求n的阶乘6. 判断year是否为闰年7. 求…

【再谈设计模式】状态模式~对象行为的状态驱动者

一、引言 在软件开发,软将工程,软件设计过程中,我们常常会遇到对象的行为依赖于其状态的情况。例如,一个任务对象可能有“未开始”、“进行中”、“已完成”等状态,并且在不同状态下执行相同操作会有不同的结果。传统的方法可能会使用大量的条件判断语句来处理不同状态下的…