来源:晓飞的算法工程笔记 公众号,转载请注明出处

论文: Agglomerative Token Clustering

创新点


  • 提出了层次token聚类(Agglomerative Token ClusteringATC),这是一种新型的无参数层次合并的token减少方法。
  • 基于ATC,在图像分类、图像合成,以及目标检测和分割任务上实现了最先进的性能,超越了所有其他token减少方法,包括基于合并的和基于修剪的token减少方法。
  • 在图像分类和目标检测与分割任务中,ATC可以在未经过任何微调的情况下(即开箱即用),达到与之前微调的最先进性能相当的效果。

内容概述


层次token聚类(Agglomerative Token Clustering,简称ATC)是一种新型的token合并方法,在图像分类、图像合成以及目标检测与分割任务中始终优于以往的token合并和修剪方法。ATC通过自下而上的层次聚类来合并簇,而无需引入额外的可学习参数。

在所有任务中,ATC都实现了最先进的性能。在不进行微调的情况下,甚至可以与之前的最先进技术相媲美。ATC在低保留率下尤其有效,此场景仅保留了少量的token,而保持任务性能尤其困难。

层次token聚类


与之前的token合并方法类似,ATC的目标是合并冗余token,同时保持或提升ViT模型的性能。在ViT块的自注意力和多层感知机(MLP)模块之间插入token合并操作,这与之前的基于合并的方法是一致的,比如ToMe

层次聚类是一种经典的自下而上的层次聚类方法,其中每个元素最初都是其自身的聚类。通过根据某种连结函数和距离度量 \(D(\cdot)\) 迭代比较聚类,将两个最接近的聚类在每次迭代中合并。这一过程会持续进行,直到满足某个停止标准,例如所需聚类的数量(形成静态缩减方法),或者聚类之间的最小距离(形成动态缩减方法)。

论文考虑静态缩减场景,使用余弦距离作为距离度量 \(D(\cdot)\) ,并使用自注意力模块的键作为token特征。连结函数的选择对元素的聚类方式会有很大影响,主要有三种最常见的连结函数:单个,完整和平均。

\[\begin{equation}
D(I,J)^{\text{single}} = \min_{i\in I,\ j\in J} D(i,j)
\end{equation}
\]
\[\begin{equation}
D(I,J)^{\text{complete}} = \max_{i\in I,\ j\in J} D(i,j)
\end{equation}
\]
\[\begin{equation}
D(I,J)^{\text{average}} = \frac{1}{|I||J|}\sum_{i\in I}\sum_{j\in J}D(i,j)
\end{equation}
\]

其中 \(I\) 和 \(J\) 是包含元素 \(i \in I\) 和 \(j \in J\) 的聚类。

在达到停止标准之后,对每个聚类中的token进行平均,以获得更新的聚类表示。然而,随着token的合并,它们代表的不止一个输入图像块。为了更好地利用能够捕捉更大空间范围的token,使用加权平均作为聚类表示,并在自注意力模块中使用成比例的注意力。

主要实验






如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

ATC:多快好省,无参数token reduction方法 | ECCV'24的更多相关文章

  1. servlet-有参数的init和无参的init方法

    package gz.itcast.d_init; import javax.servlet.ServletConfig; import javax.servlet.ServletException; ...

  2. “T”必须是具有公共的无参数构造函数的非抽象类型,才能用作泛型类型或方法

    最近在项目中,使用EF编程时,在使用泛型类型的过程中,写了一上午,结果生成时,编译不通过,报出如下错误: “T”必须是具有公共的无参数构造函数的非抽象类型,才能用作泛型类型或方法.如图: 找了好久,终 ...

  3. 委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。

    1.原始的委托 (.net 1.0) using System; using System.Collections.Generic; using System.ComponentModel; usin ...

  4. RhinoMock中无参数方法和无返回值方法的使用

    无返回值方法,RhinoMock的例子是这么做的: demo.VoidThreeArgs(, "", 0f); LastCall.On(demo).Callback<int, ...

  5. Java_无参数无返回类型方法及练习

    无参数无返回类型方法语法格式: public static void 方法名称(){ 方法体; } class Method03{ /*练习3:输出1-100中的每个数,要求使用无参无返回类型的方法完 ...

  6. OAuth2.0与前端无感知token刷新实现

    前言 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛的应用.Facebook.Twitter和Google等各种在线服务都提供了基于OAuth规范的认证机制. ...

  7. 为什么.Net要求序列化的类必须有一个无参数的构造函数

    刚才用xml序列化器,序列化一个类,结果报错说序列化的类必须带有一个无参的构造函数,好奇怪啊.为什么要有这么苛刻的条件,而且xml序列化还要求序列化的成员是public. 我以前一直觉得序列化器是一个 ...

  8. 一步一步实现基于Task的Promise库(四)无参数的WorkItem

    接着上一篇我直接给出代码,现在支持了new Task(), then(), all(), any() 这些不传参的调用方式. (function(){ var isFunction = functio ...

  9. [五]java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

    reduce-归约 看下词典翻译: 好的命名是自解释的 reduce的方法取得就是其中归纳的含义 java8 流相关的操作中,我们把它理解 "累加器",之所以加引号是因为他并不仅仅 ...

  10. .Net Framework 4.5.1 ASP.NET MVC 5 下新建视图报“错误 运行所选代码生成器时出错 无法检索元数据 没有为该对象定义无参数构造函数”

    当在控制器中新建视图的时候,选择的视图界面如下: 执行添加后报如下错误: 错误的内容为: 错误运行所选代码生成器时出错 无法检索"XXX"的元数据没有为该对象定义无参数构造函数 U ...

随机推荐

  1. Tim定时器初始化的方法

    #include "stm32f10x.h" // Device header void TimerInit(void) { RCC_APB1PeriphClockCmd(RCC_ ...

  2. 【全】CSS动画大全之404页面【a】

    效果预览 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  3. TF-IDF 算法原理以及源码实现

    TF-IDF(Term Frequency-Inverse Document Frequency),是用来衡量一个词在文档中的重要性,下面看一下TDF-IDF的公式: 首先是TF,也就是词频,用来衡量 ...

  4. ​Spring:IOC(2)

    接前文:Spring:IOC 目录 依赖注入之setter注入 依赖注入之构造器注入 特殊值处理 字面量赋值 null值 xml实体 CDATA节 为类类型属性赋值 为数组类型属性赋值 修改Stude ...

  5. Consul初探-从安装到运行 【转】

    目录 前言 下载二进制包 入门必学必记文档 启动 Consul 前言 伟人说过:实践是检验真理的唯一标准!经过上一篇的学习,我基本掌握了 Consul 的基本原理,接下来就是动手实践了:Consul ...

  6. QT原理与源码分析之QT5原理与源码分析视频课程 补天云QT技术培训专家

    QT原理与源码分析之QT5原理与源码分析视频课程 补天云QT技术培训专家 以下是<< QT5原理与源码分析视频课程>>的完整目录. 第1章 准备 第1节 您可以学到什么? 第2 ...

  7. Java——图片文件位于 bin 目录下,下载新图片会导致应用程序重启

    当应用程序在运行时需要加载图片文件时,如果图片文件位于 bin 目录下,下载新图片会导致应用程序重启,这是因为 Java 应用程序在加载资源时通常会遵循以下机制: 类加载器: Java 应用程序使用类 ...

  8. 暑假集训CSP提高模拟 ∫[0,6] (x^2)/6 dx

    \[\text{暑假集训CSP提高模拟}\int^{6}_{0}\frac{x^{2}}{6}dx \] 关于这个东西怎么求的良心教程 含义:求出 \(f(x)=\frac{x^{2}}{6}\) 在 ...

  9. 第42天:WEB攻防-PHP应用&MYSQL架构&SQL注入&跨库查询&文件读写&权限操作 - 快捷方式

    接受的参数值未进行过滤直接带入SQL查询 MYSQL注入:(目的获取当前web权限) 1.判断常见四个信息(系统,用户,数据库名,版本) 2.根据四个信息去选择方案 root用户:先测试读写,后测试获 ...

  10. ARM SMMU的原理与IOMMU

    首先放一个社区iommupatch的网址:https://lore.kernel.org/linux-iommu/ 1: arm smmu的原理 1.1: smmu 基本知识 如上图所示,smmu 的 ...