Token Labeling(NeurIPS 2021, ByteDance)论文解读

news2024/9/21 0:47:36

paper:All Tokens Matter: Token Labeling for Training Better Vision Transformers

official implementation:https://github.com/zihangJiang/TokenLabeling

出发点

  • ViTs的局限性:尽管ViTs在捕捉长距离依赖方面表现出色, 但它通常依赖于额外的可训练class token来计算分类损失,这可能会忽略其他patch token所包含的丰富局部信息。
  • 局部信息的重要性:最近的工作表明,对图像分类任务而言,良好地建模和利用局部信息可以避免模型偏向偏颇和不可泛化的模式,从而显著提高模型性能。

创新点

本文提出了一种新的训练目标——token labeling,旨在利用所有的图像patch token进行密集的训练损失计算,而不仅仅依赖于额外的class token。通过这种方式,每个patch token都能获得由machine annotator生成的单独的、位置特定的监督,从而提升模型的性能。 具体包括:

  • Token Labeling:提出了token labeling方法,通过对所有patch token进行位置特定的监督,提高了图像分类的准确性和对象识别能力。
  • MixToken:改进了传统的CutMix数据增强方法,使其在token层面上操作,避免了图像patch中混合内容的问题,从而提高了模型的训练效果。
  • Patch Embedding:对ViT的patch embedding模块进行了修改,采用了4层卷积层来更好地对输入图像进行token化和整合局部信息。

方法介绍

Token Labeling

在传统的ViT中,给定输入图片 \(I\),最后一个transformer block的输出可以表示为 \([X^{cls},X^1,...,X^N]\),其中 \(N\) 表示patch token的数量,\(X^{cls}\) 和 \(X^1,...,X^N\) 分别对应 class token和patch tokens。则图片 \(I\) 的分类损失可以按下式计算

其中 \(H(\cdot,\cdot)\) 是softmax cross-entropy loss,\(y^{cls}\) 是类别标签。

这种方式只采用了image-level的标签作为监督,而忽略了每个image patch中包含的丰富信息。因此本文提出了一种新的训练目标,token labeling,它利用了patch tokens和class token之间的互补信息。具体来说,作者认为每个输出token都应该和一个单独的、位置特定的label联系起来,因此token labeling的ground truth标签是一个 \(K\times N\) score map矩阵,表示为 \([y^1,...,y^N]\),其中 \(N\) 是patch token的数量,\(K\) 是类别数。

最终计算每个patch token和score map中对应的标签之间的交叉熵损失,如下

完整的损失包含原始的class token损失和token labeling损失,如下

图2是整个过程的一个直观展示

里dense score map是通过machine annotator离线得到的,可参考Re-labeling ImageNet(CVPR 2021, Naver)-CSDN博客。简单地说,machine annotator是一个在额外的大数据集(例如JFT-300M)上训练好的性能强大的分类模型,然后对ImageNet进行推理,去掉全连接层之前的全局平均池化,全连接层改为一个1x1卷积层,因此经过softmax后输出的是一个 \(H\times W\times C\) 的score map,这里的 \(H,W\) 是模型最后一层的分辨率大小,而不像传统的分类模型一样输出的是一个 \(1\times 1\times C\) 的向量。score map是提前计算得到并保存到本地的,在训练token labeling时,只需要加载score map并根据patch token的空间位置对应的在score map上crop和插值对齐空间坐标,然后再进行全局平均池化并经过softmax和argmax得到每个patch token对应的标签。和需要在线生成target的知识蒸馏不同,token labeling额外增加的计算量可以忽略不计。

MixToken

在训练分类模型时,数据增强方法例如MixUp和CutMix可以有效地提高模型性能。但vision transformer依赖patch-based tokenization来将输入图片映射为token序列,本文提出的token labeling也是基于每个patch的标签,如果我们直接在原始图像上应用CutMix,可能导致一个patch中包含来自两个图像的内容,如图3左所示。

这样token labeling很难为每个token分配一个干净正确的标签,因此本文提出了CutMix的变体MixToken,即在patch embedding层后得到的token上进行cutmix操作,如图3右所示,这样就保证了每个token只包含一张图片的内容。

实验结果

结合token labeling和mixtoken作者提出了LV-ViT,网络配置如下

两个components的消融实验如下表所示,可以看到单独将cutmix换成mixtoken精度提升了0.1%,而结合mixtoken和token labeling时,精度提升了0.9%。

和其它分类模型在ImageNet上的结果对比如下表所示 

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

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

相关文章

代码随想录算法训练营第五十八天|108.冗余连接、109.冗余连接II

108.冗余连接 题目链接:108.冗余连接 文档讲解:代码随想录 状态:还行 思路: 并查集可以解决什么问题:两个节点是否在一个集合,也可以将两个节点添加到一个集合中。 题解: public class Main {p…

套用BI方案做数据可视化是种什么体验?

在数字化转型的浪潮中,数据可视化作为连接数据与决策的桥梁,其重要性日益凸显。近期,我有幸体验了奥威BI方案进行数据可视化的全过程,这不仅是一次技术上的探索,更是一次对高效、智能数据分析的深刻感受。 初识奥威&a…

.net dataexcel 脚本公式 函数源码

示例如: ScriptExec(""sum(1, 2, 3, 4)"") 结果等于10 using Feng.Excel.Builder; using Feng.Excel.Collections; using Feng.Excel.Interfaces; using Feng.Script.CBEexpress; using Feng.Script.Method; using System; using System.Collections.Gen…

场景分析法挖掘需求的常见4大步骤

场景分析方法,有助于精确定位需求,优化产品设计,促进团队协同,减少项目风险,提升用户满意度与市场竞争力。若场景分析不足,产品可能偏离用户需求,导致功能冗余或缺失,用户体验差&…

java中传引用问题

在 Java 中,所有对象都是通过引用传递的,而基本数据类型是通过值传递的。 引用传递: 当一个对象作为参数传递给方法时,传递的是对象的引用。对这个对象引用进行的修改会影响到原始对象。例如: public class Test {p…

Designing Data-Intensive Applications数据密集型应用系统设计-读书笔记

目录 第一部分可靠性、可扩展性、可维护性硬件故障描述负载 吞吐与延迟可维护性 第二章 数据模型与查询语言第三章索引哈希索引B-tree事务 第三章 编码第二部分、分布式数据系统第五章 数据复制单主从复制节点失效日志实现复制滞后问题 多主节点复制 第六章、数据分区3 第一部分…

10个常见的电缆载流表,值得收藏!

众所周知,电线电缆的载流是所有电工、电气人员都必须具备的基本储备,但是如果要将那么多的“数字”都记得清清楚楚,还是有一点困难的!今天咱们就做了一个电力电缆载流量对照表,速度收藏!下次参考不迷路! 1、0.6/1KV聚氯乙烯绝缘电力电缆载流量 以上电缆载流量计算条件:…

世界启动Ⅳ--利用AI和费曼技巧学习一切

前言 有无数的学习技巧可以帮助你消化复杂的概念,并有信心记住它们。如果你像我一样是一个不断学习的学生,你就会明白有效学习方法的重要性。其中最简单的一种就是费曼技巧。 在本文中,我将解释如何有效地应用费曼学习方法,以及…

应用最优化方法及MATLAB实现——第5章代码实现

一、概述 继上一章代码后,这篇主要是针对于第5章代码的实现。部分代码有更改,会在下面说明,程序运行结果跟书中不完全一样,因为部分参数,书中并没有给出其在运行时设置的值,所以我根据我自己的调试进行了设…

迁移学习在乳腺浸润性导管癌病理图像分类中的应用

1. 引言 乳腺癌主要有两种类型:原位癌:原位癌是非常早期的癌症,开始在乳管中扩散,但没有扩散到乳房组织的其他部分。这也称为导管原位癌(DCIS)。浸润性乳腺癌:浸润性乳腺癌已经扩散(侵入)到周围的乳腺组织。侵袭性癌症比原位癌更难治愈。将乳汁输送到乳…

C++中的new和模版

前言 随着C的学习,讲了C的发展过程、流插入、流提取、函数缺省值、类与构造等等。接下来学习C很方便的 玩意,函数模版。函数模版就像是模具一样,C会自动用模版编译出合适的函数供程序员使用。以前不同类型相同操作的函数都能通过函数模版&…

【iOS】——内存对齐

内存对齐是什么 内存对齐指的是数据在内存中的布局方式,它确保每个数据类型的起始地址能够满足该类型对齐的要求。这是因为现代处理器在访问内存时,如果数据的起始地址能够对齐到一定的边界,那么访问速度会更快。这种对齐通常是基于数据类型…

客户中心应急管理的作用和特征

近些年作为事故、灾难等风险的预防主体和第一响应者,客户中心的应急管理取得了较大进展,但总体上仍存在很多薄弱环节,如安全事故频发,自然灾害、公共卫生、社会安全事件等给运营机构带来了多方面的不利影响。从信息角度看&#xf…

20240720 每日AI必读资讯

OpenAI 推出GPT-4o mini取代 GPT 3.5! - 性能超越 GPT 4,而且更快更便宜 - 该模型在MMLU上得分为82%,在LMSYS排行榜上的聊天偏好测试中表现优于GPT-4。 - GPT-4o mini的定价为每百万输入标记15美分和每百万输出标记60美分,比之…

【golang-ent】go-zero框架 整合 ent orm框架 | 解决left join未关联报错的问题

一、场景 1、子表:cp_member_point_history cp_member_point_history表中字段:cp_point_reward_id 是cp_point_reward的主键id 当本表中的cp_point_reward_id字段为0(即:没有可关联主表的) CREATE TABLE cp_member_poi…

项目开发之文件上传 (秒传、断点续传、分片上传)(看这一篇就懂了)

目录: 前言秒传什么是秒传核心逻辑代码实现 小文件上传什么是小文件上传核心逻辑代码实现 分片上传什么是分片上传核心逻辑代码实现 断点续传什么是断点续传核心代码实现 前言 文件上传在项目开发中再常见不过了,大多项目都会涉及到图片、音频、视频、文…

npm安装依赖包报错,npm ERR! code ENOTFOUND

一、报错现象: npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning ETIMEDOUT: request to https://registry.npmjs.org/vue failed, reason: connect ETIMEDOUT 104.16.23.35:443 npm WARN registry Using stale data…

Python | Leetcode Python题解之第235题二叉搜索树的最近公共祖先

题目&#xff1a; 题解&#xff1a; class Solution:def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:ancestor rootwhile True:if p.val < ancestor.val and q.val < ancestor.val:ancestor ancestor.leftelif p.val >…

【力扣】最小栈

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 设计一个支持 push…

object-C 解答算法:合并两个有序数组(leetCode-88)

合并两个有序数组(leetCode-88) 题目如下图:(也可以到leetCode上看完整题目,题号88) 首先搞懂,什么叫“非递减顺序” 非递减顺序,是指一个序列中的元素从前往后&#xff08;或从左到右&#xff09;保持不减少或相等。 这意味着序列中的元素可以保持相同的值&#xff0c;但不会…