用序列模型(GPT Bert Transformer等)进行图像处理的调研记录

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

  • 北大和字节团队的一篇VLM,在生成任务上,用GPT范式,声称在FID上超过了DIT,SD3和SORA。开源。
  • 首先是multi-scale的VQVAE,然后是VAR transformer,如下图所示。每个尺度其实并不是GPT范式的,每个尺度都是Bert范式的,只是上一尺度的输出会拿来上采样,产生新一轮的输入。感觉这根本不能算是GPT范式,scale level的只是一种coarse to fine的bert而已。
    在这里插入图片描述

Autoregressive Image Generation without Vector Quantization

  • 这是一篇 MIT,DeepMind 和 清华的论文,何凯明是作者之一,开源
  • 文章提出去掉vq,把categorical cross-entropy loss训练的离散预测任务,改成由diffusion loss训练的连续任务。网络的输出接一个denoising diffusion(MLP),作为condition,然后算diffusion的损失:
    在这里插入图片描述
  • 这个diffusion就是标准的diffusion,有forward和backward,train这个diffusion model的时候顺便也把梯度传到了z,从而train到了GPT的网络。训练的时候对每一张图片采样4个不同的t来算损失,提高训练效率。noise schedule是cos shape,1000 steps。inference的时候用了100步来去噪。condition 的z通关AdaIN的方式加入到这个diffuison 网络。
    在这里插入图片描述
  • 本文不是GPT范式的,而是对MAE范式的一个拓展。文章认为GPT范式受限于casual attention,而对于图像来说bidirectional attention是更合理的。所以基于MAE范式做了一个AR的generation,用的还是自回归,一次根据自己上次预测的一些token,预测一些新的token,encoder用的是MAE的encoder,基于已知的tokens,做bidirectional 的attention,decoder则是加了一些mask和positional embedding,从这些空的token预测出新的东西来。并且,一次不仅预测一个token,而是多个。如下图所示:最终的MAR方案,其实是Figure2(b)的方案的decoder结构和Figure3 ©的方案表示的next sets-of-token prediction的结合。训练的时候和MAE差不多,mask ratio是0.7到1.0;inference的时候,用64步的自回归,mask ratio从1到0的曲线是cosine曲线。同时,被mask掉的token是完全random的,也就是说下一个预测的token是完全随机的。
    在这里插入图片描述
  • 从实验结果看,主要做的三点改进,都是有效的。第一点是把quantization+crossentropy loss改成w/o vq+diffusion loss;第二点改进是把raster order改成random order;第三点改进是把casual attention改成bidirectional attention:
    在这里插入图片描述
  • 可以看到,三点改进都使得FID下降了。
  • 此外,可以看到最后多了一个CFG的变量,是因为文章引进了diffusion loss,那就可以引进classifier-free guidance,就是最后一栏的效果。不过不知道crossent是怎么引进CFG的。。
  • 文章给了一些VLM范式的重要启发,包括casual/bidirectional direction的注意力,包括image patch放到1D squence的order,包括提出了新的MAR范式。

Taming Transformers for High-Resolution Image Synthesis

  • 这是一篇海德堡大学的两个下属研究机构的一篇论文,开源。
  • 文章的结构就很自然,就是GPT范式,把图像用VQGAN转成token,再用GPT做next token prediction,再用VQGAN的decoder解成img:
    在这里插入图片描述
  • 首先用下面的损失train一个VQ-GAN:
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • train好的VQ-GAN 有了encoder,codebook和decoder,就可以用GPT来生成img了。
  • 如果要实现conditioned synthesis,如果条件也是图片,可以再train一个针对条件的VQ-GAN,然后把条件的tokens放在前面,继续用GPT的方式来生成输出的token即可。
  • 另一点是,生成图像的时候,如果用上全局注意力,成本太高了。因此,用了局部注意力,结合上next token prediction,整体看起来就是这样的:
    在这里插入图片描述
  • 使用1024的code book,16x16的sequence length,GPT2-medium的结构(307M parameters),12G显存。

Autoregressive image generation using residual quantization

  • 这是两个韩国人发的一篇论文,虽然是22年的,但是残差量化的思想还挺有意思的。同时,这也是一个GPT范式的工作
  • 本文对VQ-VAE进行了改进,VQ只有一个codebook,存在各种问题。RQ-VAE把VQ量化后的结果和量化前的特征计算的残差,也进行量化,并且和第一步的量化共享码表。
  • 因此,每张图片,考虑有D层的残差,应该有TD个token,其中T是HW。直接对TD长度的sequence做transformer反而时间复杂度太高。为此,专门设计了RQ-Transformer。
  • 首先就是把TD给按设计的那样求和起来,也就是说D个token求和变成最接近量化前的那个vector,这样sequence length就是T了。这一步称为spatial transformer。spatial transformer的结果就是对T个token会产生T个输出的h。第二步,就是用这T个h,各自用AR的方式,去自回归生成D个token,这一步称为depth transformer。这TD个token最终就可以用最初定义的方式去decode回图像。
  • inference的时候,就很自然,给一个起始的u1,spatial transformer的输出就是v1,v1送进depth transformer,输出S11,S11再送进depth transformer,AR地继续产生S12,S13,。。。到S1D,然后求和,产生u2,u2再送进spatial transformer,产生v2,以此类推,就能够自回归地生成一张图片。如下图所示:
    在这里插入图片描述
  • 接着提出了两个配合的训练策略。就GPT训练的时候输入一般是直接把GT放进来,然后用casual mask来训练,测试才自回归嘛。如果要采样自回归,就没法一整个句子并训练,会慢很多。但这里,因为有VQ encoder,所以其实还是可以给输入加一下扰动的,就是quantize的时候,根据与code book的距离用采样的策略而不用min;然后label也同样用距离的函数来算一个soft label而非one-hot的label。从消融实验可以看到加上这两个trick,FID稍微低了一点。

Vector-quantized image modeling with improved vqgan

  • 这是google search发表在ICLR2022上的工作,使用的是GPT范式,把VQGAN改进了一下。
  • 首先是把VQ-GAN的encoder改成了ViT, patch size是88,一张256256的图片会切成32*32个patch,一共1024个token。不过文章声称,从CNN改成transformer,只要给更多的训练数据,不仅performance提升了,速度也加快了,很神奇,1024个token的transformer会比CNN快吗?
    在这里插入图片描述
  • 对于VQ的过程也做了几点改进,首先还是用sample而不是用最小距离选code;其次look up的时候不是直接对比encoder的输出和码表,而是用一个linear projection把256d的code映射到32d上再去look up,这提高了reconstruction的表现。第三是对encoder和codebook都做了L2归一化,使得code限制在一个球面上。
  • ViT-VQGAN的损失函数如下:
    在这里插入图片描述

Movq: Modulating quantized vectors for high-fidelity image generation

  • 这是澳大利亚蒙纳士大学的几个看名字像是中国人发在NIPS2022的一篇论文。非GPT范式。
    在这里插入图片描述
  • 这里说用了spatially conditional normalization为不同位置的相同zq提供了变化,但从公式上看并没有,不同位置的相同zq,其γ,β,μ,σ,应该都是一样的,感觉有点扯淡,NIPS的审稿人什么水平,这都看不出:
    在这里插入图片描述
  • 然后是把encoder的输出分了几组channels,各自用一个共享的codebook进行量化。
  • 然后是用的MaskGIT的范式,而非GPT范式,加上自己说了code可以切分,所以mask会有三个维度去random mask一些code。
  • 从第一个spatially conditional normalization看起来就觉得有点扯淡,估计是篇水货。

Maskgit: Masked generative image transformer

  • google research的一篇Bert范式的图像生成论文。流程如下所示,唯一的特点是,推理的时候每次迭代其实是全部预测一次,但是根据置信度进行排序,然后只保留前n部分,n随迭代次数线性增加。 在这里插入图片描述

Denoising autoregressive representation learning

  • google deepmind的一篇ICML2024的论文
  • 在这里插入图片描述
  • 方法确实是GPT范式,从图片中看起来怪怪的,其实是给了两个方案。一个是直接就GPT套上去,加一个MSE Loss,不需要quantize,也不是cross entropy;另一个方案就是GPT的输出加噪,然后用diffusion的方式训练,跟Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction有点类似,但是后者是用conditional的方式加进去的,而这里是直接加噪到GPT的输出上。
  • 这个看起来只是个预训练提取特征的任务,并不是为了生成。

Diffusion Models as Masked Autoencoders

  • 这是Meta AI的一篇论文,提出了DiffMAE模型,用 diffusion model 来实现MAE,其实就是把MAE的decoder,改成diffusion,结构如下图所示:
    在这里插入图片描述
  • 它做的任务更多还是为了pretrain一个encoder,生成任务并没有过多介绍。

Unified-io: A unified model for vision, language, and multi-modal tasks.

  • 华盛顿大学的一篇论文,开源,很牛逼,提出一个统一模型能够同时做 pose estimation,object detection,depth estimation, image generation 和一些vision-language 任务如region captioning,referring expression等。
    在这里插入图片描述
  • 其核心在于把这些任务的输入输出都建模为离散的token的序列,从而能够用一个Seq2Seq模型统一处理这些任务。其中数据格式分为四类:文本,图片,dense 如segmentation label,sparse 如object detection label。
  • 在输入中,会用文本prompt指定任务类型。然后文本用SentencePiece来分词做token,dense转成图片,其中segmentation任务会先随机给类别上色,再用文本指出每种颜色代表什么类别。然后所有的图片和dense转成的图片会用VQ-GAN来量化成token,codebook size为16384。sparse则用一个额外的vocabulary来对坐标的每个维度单独编码,如一个点就有两个token,一个x一个y,一个box则有4个token,分类则用text表示。
  • 模型的结构是T5,是transformer的encoder-decoder结构。此外,对图像做了2-d相对位置编码和1d绝对值位置编码,两种都有。

Conditional Image Generation with PixelCNN Decoders

  • 这是google deepmind 2016年的一篇文章,改进了PixelCNN。这里就和PixelCNN一起讲。PixelCNN也是一个自回归模型,它一次前向只预测一个像素,因此需要重复H*W次前向来生成一张图片:
    在这里插入图片描述
  • 文章的改进是在卷积层的激活函数中加了门控和条件向量:
    在这里插入图片描述

Generative Pretraining from Pixels

  • 这篇文章其实做的是MAE差不多的事情,是用GPT和Bert的预训练模式来预训练一个图像模型,并以提供一个好的image encoder。不过这里没有tokenizer,也没有分patch,而仅仅只是把图片降采样成32x32,然后直接reshape成1D,也就是说一个token就是一个像素。
    在这里插入图片描述
  • 最终做分类任务的时候用的是最后一层的avg pooling作为特征。从下面的实验结果可以看到,GPT的范式提取的特征,总体来说比Bert范式要好一些
    在这里插入图片描述

Generating Diverse High-Fidelity Images with VQ-VAE-2

  • 这是deepmind在2019年发表在NIPS上的一篇论文,用的是PixelCNN来生成图像,不过有多尺度的VQ,开源,可以参考:
    在这里插入图片描述
  • 这里可以看到,有两个encoder和两个decoder。有点复杂,算法如下:
    在这里插入图片描述
  • 两个encoder的输入都包含输入的图片,产生低分辨率特征的encoder仅以图片为输入,而产生高分辨率特征的encoder以量化后的低分辨率特征和图片同时作为输入。decoder则以量化后的两个特征图为输入,重建图像。
  • VQ-VAE2训练完成后,要额外train 一个PixelCNN和一个条件PixelCNN来生成图像,PixelCNN就负责采样生成低分辨率特征图,条件PixelCNN负责以低分辨率特征图为条件,生成高分辨率特征图,再过第一阶段train的decoder生成图片。

Unified-IO 2: Scaling Autoregressive Multimodal Models with Vision, Language, Audio, and Action

  • 这是华盛顿大学的第二版Unified-IO,发表在CVPR2024,开源
  • 网络结构如下图所示,仍然沿用第一版的T5 transformer模型。不过引进了一些其它的trick,包括RoPE, QK Norm,Scaled Cosine Attention,能够提高训练稳定性。 在这里插入图片描述
  • 这里的dynamic packing是一种加速训练的方式,把序列长度短的sample用mask放到同一个sequence里面去作为一个sample,从而对齐batch。

An Image is Worth 32 Tokens for Reconstruction and Generation

  • 字节的一篇2024年放arxiv的文章,不知道投哪,挺有意思的,提出了一个tokenize的新范式,开源。
  • 原先tokenize一般就是对图像转成2D的特征图,切patch得到每个patch一个token,总共是hw个token,展品送进一维序列模型。这篇论文提出开源用ViT来把图像编码成1D的token序列,而且仅需要32个。其实方法很简单,就是往ViT的encoder里面,额外送进32个latent token,这32个token对应的输出开源认为就提取了图像的信息,直接拿这32个token做reconstrucion即可。而reconstruction的方法也与之相对应,要用mask token对应的输出作为输出,如下图所示:
    在这里插入图片描述
  • 在图像生成任务上的做法也很简单,直接在它的TiTok空间上自回归就行,用的是MaskGIT的范式,自回归生成完整的32个token后,再用事先train好的decoder来还原成图像:
    在这里插入图片描述
  • 此外,TiTok还有一种训练方式,原本的训练方式是可以的,但是新训练方式更好。新训练方式分为两阶段训TiTok,第一阶段直接拿train好的VQ-GAN的decoder来作为decoder;第二阶段再fix encoder和codebook,finetune decoder。感觉这部分内容说得不是很详细,具体得看看代码。

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

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

相关文章

足球联赛|基于SprinBoot+vue的足球联赛管理系统(源码+数据库+文档)

足球联赛管理系统 目录 基于SprinBootvue的足球联赛管理系统 一、前言 二、系统设计 三、系统功能设计 5.1 系统前台功能实现 5.2 后台功能模块实现 5.2.1 管理员模块实现 5.2.2 用户后台模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

Linux离线安装fontconfig

Linux离线下载yum包,安装字体库 一、下载安装包 以CentOS Linux release 7.9.2009下载fontconfig的rpm包的为例 http://mirror.centos.org/centos/7/按提示跳转历史库 找到对应版本的centos https://vault.centos.org/7.9.2009/os/x86_64/Packages/在Packages目…

Level3 — PART 4 机器学习算法 — 决策树

目录 引言 信息量 信息熵 案例 ID3 属性选择—信息增益 决策树生成 Python实现ID3 C4.5 属性选择—信息增益率 连续型属性 缺失值 剪枝 CART 分类树属性选择—基尼系数 回归树属性选择—方差 剪枝 Python实现CART CHAID GBRT 决策树对比 模拟题 CDA L…

集团数字化转型方案(十六)

为了全面推进集团的数字化转型,我们将实施一系列战略举措,包括整合最新的人工智能、大数据分析和云计算技术,升级企业资源规划(ERP)系统,实现业务流程的自动化与优化;同时,建立全方位…

在银河麒麟服务器V10上源码编译安装mysql-5.7.42-linux-glibc2.12-x86_64

在银河麒麟服务器V10上源码编译安装mysql-5.7.42-linux-glibc2.12-x86_64 一、卸载MariaDB(如果已安装)二、下载MySQL源码包并解压三、安装编译所需的工具和库四、创建MySQL的安装目录及数据库存放目录五、编译安装MySQL六、配置MySQL七、设置环境变量八…

用EA和SysML一步步建模的操作指南(01)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 对于许多学习SysML和MBSE的同学来说,比较头痛的问题之一是:各种各样的教程里给出的案例,图都是画好了的!如何从零开始用建模工具把模型画…

centos7.9系统安装cloudpods并使用ceph存储(二)

1.ceph安装 1.1 环境准备 配置hosts: $ vim /etc/hosts 10.121.x.x node01设置ssh无密码登录: # ssh-keygen -t rsa # ssh-copy-id -i /root/.ssh/id_rsa node01关闭selinux、firewalld # setenforce 0 # sed -i "s#SELINUXenforcing#SELINUXd…

如何使用双重IP代理实现更安全的网络访问

在进行网络爬虫或其他需要隐匿真实IP的操作时,单一的代理IP有时并不能完全满足我们的需求。为了进一步提高安全性和隐私保护,我们可以使用双重IP代理。本文将详细介绍如何使用Java实现双重IP代理,帮助你在网络环境中更加游刃有余。 什么是双重…

安装CUDA以及GPU版本的pytorch

使用pytorch进行深度学习的时候,往往想用GPU进行运算来提高速度。于是搜索便知道了CUDA。 下面给出一个自检的建议: 检查cuda的版本是否适配自己的GPU。 打开NVDIA控制面板,点击左下角“系统信息”,然后就可以看到NVDIA GPU的详…

深入了解搜索引擎蜘蛛:从定义到最新技术应用

撰写一篇关于搜索引擎蜘蛛的详细文章,需涵盖从基础概念到未来趋势的多个方面。以下是根据您提供的大纲撰写的长篇文章,适合用于了解搜索引擎蜘蛛的重要性及其在现代互联网中的作用。 1. 引言 在互联网的浩瀚世界中,搜索引擎就像是庞大的图书…

Python开发工具:VSCode+插件

本文是 Python 系列教程第 3 篇,完整系列请查看 Python 专栏。 Visual Studio Code的安装非常简单,就不放这里增加文章篇幅了。 相比PyCharm,VSCode更加轻量,启动速度快。并且搭配Python插件就能实现和Pycharm一样的代码提示、高…

基于x86 平台opencv的图像采集和seetaface6的人脸跟踪功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.3 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸跟踪功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的人脸跟踪模块从而实现…

livekit安装脚本详解

livekit安装脚本详解 在私有化部署时,官网是执行了一个脚本。接下来将对这个脚本进行解析。 livekit脚本解析 脚本最终地址是: https://raw.githubusercontent.com/livekit/livekit/master/install-livekit.sh脚本内容解析: # 脚本头部和…

利用机器学习推动 vSOC 检测

我们讨论了汽车 API 如何成为智能移动生态系统的主要攻击媒介之一。与此相关的风险是显而易见的。如果威胁行为者能够大规模远程利用 API,他们将有能力损害品牌或提出赎金请求。当然,Splunk 平台的强大之处在于能够从任何数据大规模创建任何用例。在本博客中,我们将深入研究…

信号与系统——定义与分类(1)

一、信号与系统 信号:信号是信息的表现形式或传送载体,例如电磁波。信号可以用一个函数 yx (t) 来表示。 系统:是指若干相互关联的事物组合而成,具有特定功能的整体。换句话说就是,系统就是对输入信号进行加工和处理&#xff0c…

通过React实现萤石摄像头rtsp地址格式的视频流的web展示

首先,我们需要拿到rtsp格式的流地址(rtsp://admin:[password][ip]),其中 password:设备底下的6位数验证码 ip:设备的ipv4地址 这里拿到ip的方式可以直连网线和绑定wifi两种方式 然后下载PC端的萤石工作室(下载中心…

Datawhale X 李宏毅苹果书 AI夏令营 Task1笔记

Datawhale X 李宏毅苹果书 向李宏毅学深度学习(进阶) 是 Datawhale 2024 年 AI 夏令营第五期的学习活动(“深度学习 进阶”方向) Datawhale官方的task1链接:深度学习进阶-Task1 《深度学习详解》主要内容源于《机器学…

重邮计算机网络803-(3)数据链路层

目录 一.数据链路两种类型 二.使用点对点信道的数据链路层 1. 数据链路和帧 2.数据链路层传送的是帧 三.三个基本问题 1.封装成帧 2.透明传输 ①字节填充法 ②其他方法:字符计数法,比特填充法,违规编码 3. 差错检测 (1…

第136天:内网安全-横向移动资源约束委派

利用条件 首先是dc域控主机必须是win2012以上的主机 其次是域内有一个账户,可以同时登录两台主机 利用 jie 可以登录 win2008 也可以登录 win7 资源委派不需要设置委派,默认即可 实验复现 复现环境 通过网盘分享的文件:136-xiaodi.local…

XSKY 亮相中国移动智算存储论坛,共话 AI 存储创新之路

8 月 15 日,由中国移动云能力中心主办的“智算存储论坛”在南京大学顺利举办,本期技术论坛的主题是《智存未来-构建 AI 时代新型存储基础设施》。作为中国移动云能力中心的合作伙伴,XSKY星辰天合受邀参加了此次技术大会。 XSKY 产品总监朱荣…