【论文笔记】BEIT V2: Masked Image Modeling with Vector-Quantized Visual Tokenizers

2023-11-08

1.介绍

1.1  核心观点

当时的所有的重建目标都是关于低级图像元素的,低估了高级语义。

【Q】怎么去定义高级和低级语义

1.2 基本流程

VQ-KD编码器首先根据可学习码本将输入图像转换为离散令牌

然后,解码器学习重建由教师模型编码的语义特征,以离散令牌为条件

在训练VQ-KD之后,其编码器被用作BEIT预训练的语义视觉标记器,其中离散代码用作监督信号。

1.3 核心贡献

•我们提出了矢量量化的知识提取(vector-quantized knowledge distillation),将掩蔽图像建模从像素级提升到语义级,用于自监督表示学习。

•我们引入了一种补丁聚合策略,该策略在给定离散语义令牌的情况下强制执行全局结构,并提高了学习表示的性能。

2. 方法

该框架使用视觉标记器将每个图像转换为一组离散的视觉标记。训练目标是恢复掩蔽的视觉标记,每个视觉标记对应于一个图像补丁。

【Q】使用VQ-KD编码器有什么好处?

 2.1 训练视觉分词器(Visual Tokenizer)

2.1.1 视觉分词器

分词器由Vit编码器和量化器组成。

2.1.2 训练视觉分词器的基本流程

  1. 标记器首先将输入图像编码为矢量。
  2. 矢量量化器在码本中查找每个补丁表示hi的最近邻居。
  3. 量化视觉标记送入解码器
  4. 最大化解码器输出o_i和教师指导t_i之间的余弦相似性。

2.1.3 量化过程

设{v1,v2,··,vK}表示码本嵌入。

这个公式表示了查找每个补丁h_i在codebook中的最近邻居。

由于量化过程是不可微分的,所以梯度被直接从解码器输入复制到编码器输出(下图)

2.1.4 视觉分词器的训练目标

最大化解码器输出o_i和教师指导t_i之间的余弦相似性。

 2.1.5 提高码本利用率

为了缓解码本崩溃(codebook collapse,即只使用了一小部分code)。

  • 在被送入解码器之前被映射回高维空间,因为量化过程会将码本嵌入空间的维数减少到32-d
  • 使用指数移动平均用于更新码本嵌入

2.2 预训练BEIT v2

  • 输入准备了一个可学习的[CLS]token,最后的编码向量中的h0表示[CLS]令牌。
  • 使用全连接层作为MIM头和softmax分类器预测掩蔽位置的视觉标记p(z_i|h_i) = softmax_{z_i}(W_ch_i + b_c),其中Wc、bc分别表示MIM头的权重和偏置。
  • MIM的训练损失定义为

                 D表示预训练图像,M表示掩蔽位置

2.2.1 预训练全局表示

 

  • 预训练了用于全局图像表示的[CLS]令牌,为了减轻补丁级预训练和图像级表示聚合之间的差异
  • 为了预训练最后一层的[CLS]标记h^L_{CLS},将最后一层的[CLS]标记h^L_{CLS}与中间第l层的补丁向量连接,送入解码器中并再次进行掩蔽预测。
  • 该令牌在预训练后被丢弃

3.代码

3.1 训练Vector-Quantized Visual Tokenizers

 3.1.1 编码器

编码器部分 = base-vit + FFN降维 + NormEMAVectorQuantizer(量化器)

将作为encoder的vit得到的feature降维到32

 3.1.2 解码器

编码器部分 = 一层的vit + FFN 

 3.1.3 损失

损失由两部分构成:①量化器得到的损失 ②余弦相似损失

【todo】量化器!!!!

3.2 预训练 beit V2

基本上和beit相近

代码中有两种vit:一种就是普通的vit,这个老生常谈就不说了,另一种就是论文中增加了cls的VisionTransformerForMaskedImageModelingCLS。(如下图)

3.2.1 补丁聚合

 正如论文,

较浅的头部(即1/2层)比较深的头部(如3层)表现更好,这表明较浅的头比较深头部更关注输入[CLS]令牌。

取用了第6层(总共12层)的patch和最后一层的cls送入两层的一个vit结构中,作为全局聚合

 全局聚合部分只取cls

 损失函数最后就由两部分组成:①MIM损失②全局cls损失 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文笔记】BEIT V2: Masked Image Modeling with Vector-Quantized Visual Tokenizers 的相关文章

随机推荐

  • 铨顺宏RFID:应用超高频RFID技术智能档案管理系统

    根据超高频率RFID技术性智能化档案智能管理系统将改变这一现况 根据选用先 进的超高频率RFID自动检索技术应用和计算机系统技术性 以超高频率RFIDrfid标签做为信息储存媒体并黏贴在档案袋上 在超高频率RFID集成ic中储存该档案的基本
  • 看完这篇 教你玩转渗透测试靶机vulnhub——FunBox2(ROOKIE)

    Vulnhub靶机FunBox2 ROOKIE 渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 FTP匿名访问 暴力破解 SSH私钥登入获取Shell Sudo提权
  • YOLO V4论文解读

    YOLO V4论文解读 一 YOLOV3回顾 二 YOLOV4中 三 Bag of freebies 数据扩充 模拟对象遮挡 结合多幅图像进行数据扩充 解决类别不平衡 label smoothing bbox Yolov4 use 四 Ba
  • java 字符串示例

    概述 最近项目上 需求 需要Android端在一段字符串分包处理 在此做个笔录 1 code public class Main public static void main String args System out println
  • mysql 1786_mysql错误:Statement violates GTID consistency

    在MYSQL中 执行建表语句时CREATE TABLE aaaa AS SELECT FROM menu 报 错误代码 1786 Statement violates GTID consistency CREATE TABLE SELECT
  • 训练loss不下降的原因总结

    表现 训练过程中loss值一直震荡 没有下降趋势 原因一 梯度消失 多因为网络深度过深 接近输入层的参数 梯度过小 解决方法 调整网络 激活函数relu batch normal 残差网络等 原因二 训练数据分布不均匀 这种情况对训练数据s
  • 力扣:350.两个数组的交集 II

    力扣 350 两个数组的交集 II 题目 给你两个整数数组 nums1 和 nums2 请你以数组形式返回两数组的交集 返回结果中每个元素出现的次数 应与元素在两个数组中都出现的次数一致 如果出现次数不一致 则考虑取较小值 可以不考虑输出结
  • 大数据课程I3——Kafka的消息流与索引机制

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 掌握Kafka的消息流处理 掌握Kafka的索引机制 掌握Kafka的消息系统语义 一 Kafka消息流处理 1 Producer 写入消息 流程说明 1 p
  • yolov5转tensorrt c++

    目录 yolo tensorrt 下载weights模型 onnx tensorrt project 编译问题解决 依赖项 自己生成weights模型 以及加载报错解决 生成引擎报错解决 批量预测 自动创建引擎 解决检测框乱的问题 提速 b
  • 对接微信米大师虚拟支付2.0文档

    话不多说 上代码 支付密钥算法 public static String calcPaySig String uri String postBody String appKey String needSignMsg uri postBody
  • 前端框架之Vue学习(一)

    1 Vue简介 一 vue 是一套用于构建用户界面的渐进式框架 二 Vue的核心特点 1 相应的数据变化 当数据发生改变 gt 视图自动更新 2 组合的视图组件 UI页面映射为组件树 划分组件可维护 可复用 可测试 三 MVC和MVVM M
  • 计算机中丢失ucrtbased.dll

    如果在运行某软件或编译程序时提示缺少 找不到ucrtbased dll等类似提示 在 https cn dll files com ucrtbased dll html 下载 解压 如果您的系统是64位的请将dll文件复制到C Window
  • 火猴之抽奖大转盘(firemonkey)

    活动中往往有抽奖环节 如何使用firemonkey制作一个抽奖的程序呢 效果 思路 1 rectangle line text作为可以转动的转盘和指针以及按钮 2 pie 共 10个作为不同颜色的底 每个startangle和endangl
  • Linux系统离线安装包及其依赖的下载安装

    一 概述 我们在Linux系统下进行项目开发时 经常会出现缺少某些依赖库或者开发包的情况 这时候一般会通过使用apt命令去联网下载 但在某些特殊情况下 例如终端硬件不支持网络连接 周边缺少有线与无线网络 或者需要批量安装程序到很多终端上时
  • Window平台---IPSEC客户端的安装

    1 安装主机证书 参见证书的申请与安装一节 2 从http vpn ebootis de 站点下载 ipsec exe 3 下载windwos2000的ipsec资源工具 http download microsoft com downlo
  • 代码保护软件VMProtect用户手册控制面板“项目”部分都有哪些功能?

    VMProtect是一种很可靠的工具 可以保护应用程序代码免受分析和破解 但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下 才能实现最好的效果 下载VMProtect最新试用版 接下来为大家介绍关于VMProtec
  • 移动距离(跳出C++向下取整带来的误区)

    移动举例问题 文章目录 移动举例问题 问题详情 问题分析 跳出误区 代码 问题详情 X星球居民小区的楼房全是一样的 并且按矩阵样式排列 其楼房的编号为 1 2 3 当排满一行时 从下一行相邻的楼往反方向排号 比如 当小区排号宽度为 6时 开
  • perl进程管理

    原文链接 https www jc2182 com perl perl process manager html 进程管理 您可以按照各种要求使用 Perl 来创建新流程 本教程将列出创建和管理Perl流程的一些重要且最常用的方法 您可以使
  • 使用ChatGPT帮助快速读书:《Rise of the Robots: Technology and the Threat of a Jobless Future》

    有了ChatGPT的帮助 读书也快了 英文版的书也可以快速了解其主要内容 不知道这样囫囵吞枣的阅读有没有其它副作用 先读了几本再说 Rise of the Robots Technology and the Threat of a Jobl
  • 【论文笔记】BEIT V2: Masked Image Modeling with Vector-Quantized Visual Tokenizers

    1 介绍 1 1 核心观点 当时的所有的重建目标都是关于低级图像元素的 低估了高级语义 Q 怎么去定义高级和低级语义 1 2 基本流程 VQ KD编码器首先根据可学习码本将输入图像转换为离散令牌 然后 解码器学习重建由教师模型编码的语义特征