CPVT(ICLR 2023)论文解读

devtools/2024/12/21 21:21:34/

paper:Conditional Positional Encodings for Vision Transformers

official implementation:GitHub - Meituan-AutoML/CPVT

存在的问题

  1. 位置编码的局限性:传统Transformer中的绝对位置编码(无论是可学习的还是固定的)在训练时会固定编码的长度和数值,导致模型在测试时难以处理比训练序列更长的输入数据。这种限制在视觉任务中尤其明显,如目标检测任务中需要处理不同大小的图像。
  2. 平移等变性问题:绝对位置编码会破坏平移等变性,即在输入图像中的目标对象移动时,模型的输出特征图不相应移动。

第一个问题或许可以通过删除位置编码来解决,因为除了位置编码之外,vision Transformer 的所有其他组件(如MHSA和FFN)都可以直接应用于更长的序列。然而,这种解决方案对模型的性能造成了严重影响。因为输入序列的顺序是一个重要的线索,而过没有位置编码,模型就无法提取顺序。去除位置编码后,DeiT-tiny在ImageNet上的精度从72.2%降低到了68.2%,如表1所示。

其次,DeiT通过对位置编码进行插值使其可以用于较长的输入序列,但这种方法需要对模型进一步微调,否则性能就会显著下降,如表1所示。

最后,相对位置编码可以同时应对上述两种问题,但是相对位置编码无法提供绝对位置信息,这对分类性能非常重要,如表1所示,相对位置编码的模型性能较差(70.5% vs. 72.2%)。

本文的创新点

  1. 条件位置编码(Conditional Position Encoding,CPE):本文提出了一种新的位置编码方法CPE,通过卷积操作保留位置关系,使得模型在处理不同大小的输入图像时无需重新训练或进行复杂的插值,从而保持了平移等变性。
  2. 位置编码生成器(Position Encoding Generator,PEG):通过一个简单的PEG实现CPE,它可以无缝地集成到当前的Transformer框架中。PEG通过局部邻域的动态编码,使得模型能够处理比训练期间见过的序列更长的输入序列。
  3. 全局平均池化(GAP):在分类任务中,提出用全局平均池化替代传统的可学习分类标记(class token),进一步增强了模型的平移等变性和性能。
  4. Conditional Position encoding Vision Transformer(CPVT):基于PEG构建的CPVT,在保持与学习到的位置编码相似的注意力图的同时,提供了更好的性能和泛化能力。

方法介绍

作者认为,一个成功的视觉任务的位置编码应该满足以下的要求:

  1. 使得输入序列对顺序敏感(permutation-variant)同时又具备平移不变性(translation-equivariance)。
  2. 能够处理比训练时更长的输入序列,有助于泛化到检测、分割等下游任务。
  3. 在一定程度上能够提供绝对位置,这对分类性能很重要。

作者发现,用位置编码描述局部关系就足以满足上述所有条件。首先,它满足permutation-variant,因为输入序列的排列顺序也会影响局部邻域的顺序。但对输入图像中的对象进行平移并不会改变其局部邻域的顺序,即translation-equivariance。其次,模型可以很容易地泛化到较长的输入序列,因为只涉及到一个token的局部邻域。此外,如果任何一个输入token的绝对位置都已知,则可以通过输入token之间的相互关系来推断出其它token的绝对位置。作者表明,由于zero-padding,边界上的token也可以知道它们的绝对位置。

因此作者提出了位置编码生成器(PEG)来动态地生成基于输入token的局部邻域的位置编码。PEG如图2所示,我们首先将DeiT中展平后的输入序列 \(X\in \mathbb{R}^{B\times N\times C}\) reshape回二维图片空间中得到 \(X'\in \mathbb{R}^{B\times H\times W\times C}\),然后将一个函数(如图2中的 \(F\))重复地作用于 \(X'\) 中的local patch来得到conditional位置编码 \(E\in \mathbb{R}^{B\times H\times W\times C}\)。PEG可以通过一个核大小为 \(k(k\ge3)\) 以及 \(\frac{k-1}{2}\) 的zero padding的二维卷积来实现,而 \(F\) 可以是各种形式比如各种类型的卷积。

基于条件位置编码,作者提出了条件位置编码Vision Transformer(CPVT),除了位置编码,作者完全遵循ViT和DeiT来设计CPVT,并有三种不同尺寸的模型CPVT-Ti、CPVT-S和CPVT-B。和DeiT中原始的位置编码类似,条件位置编码也被添加到输入序列之中,如图1(b)所示。在CPVT中,PEG的位置对模型的性能也很重要,具体将在实验部分进行研究。 

此外,DeiT和ViT都使用了一个额外的可学习的类别token来执行分类,即图1(a)和(b)中的cls_token。类别token本身的设计不是平移不变的,尽管它可以学习这种特性。一个简单的替代方法是直接使用全局平均池化(GAP),它本质上是平移不变的,从而得到了CPVT-GAP。结合CPE和CPVT-GAP得到了更好的分类性能。

实验结果

不同大小的CPVT的结构如下表所示

和其它SOTA模型在ImageNet上的性能对比,如表4所示,可以看到在相似的参数量和计算量区间范围内,CPVT的性能要优于DeiT。

 

消融实验

Class Token vs. GAP

本文提出的PEG忽略padding时是平移等变的,因此如果我们进一步使用具有平移不变性的GAP而不是cls_token,CVPT也具有了平移不变性。这对分类任务是有帮助的。实验结果如表3所示,使用GAP可以将CPVT的精度提升超过1%。

位置信息还是额外的参数?

有人可能会怀疑PEG带来的改进是由于PEG中的卷积层带来的额外的可学习参数,而不是它的位置表示能力。作者将PEG中3x3卷积的权重随机初始化后在训练阶段固定住,即不更新权重,仍然取得了71.3%的精度,由于不用位置编码的DeiT的68.2%,表明是通过zero padding引入的位置信息提升了性能而不是额外的参数。此外作者又用12层的1x1卷积替换PEG,此时可学习的参数更多了但没有引入位置信息,精度只有68.6%。

PEG的位置

作者又比较了将PEG放到不同位置时模型的性能,其中-1表示第一个encoder block的输入位置,0表示第一个encoder block的输出位置,作者认为两者性能差异这么大的原因在于感受野不同,经过第一个block后具有了全局感受野,如果在-1位置处增大感受野性能也会得到提升。为此作者将-1位置处的3x3卷积改成27x27的卷积,结果确实得到了提升,从而验证了作者的观点。


http://www.ppmy.cn/devtools/45996.html

相关文章

数据挖掘案例-商品零售购物篮分析

文章目录 1. 背景与挖掘目标2. 分析方法与过程2.1 数据探索分析1. 数据特征2. 分析热销商品3. 分析商品结构 2. 2 数据预处理2. 3 模型构建1. 商品购物篮关联规则模型构建2. 模型分析3. 模型应用 3. 思考 1. 背景与挖掘目标 现代商品种类繁多,顾客往往会由于需要购…

「布道师系列文章」众安保险王凯解析 Kafka 网络通信

作者|众安保险基础平台 Java 开发专家王凯 引言 今天给大家带来的是 Kafka 网路通信主要流程的解析(基于 Apache Kafka 3.7[2])。同时引申分析了业界当前较火的AutoMQ基于Kafka在网络通信层面的优化和提升。 01 如何构建一个基本的请求…

一文了解Redis及场景应用

Redis是一个高性能的、开源的、基于键值对(Key-Value)的数据结构存储系统,它支持网络、内存存储以及可选的持久化特性。 以下是关于Redis的一些详细说明: 核心特性 数据结构丰富: Strings:最基本的数据类型…

【中年危机】程序猿自救指南

中年危机,一个听起来就充满挑战的词汇,它不仅仅是一个年龄的标记,更是一个个人成长和职业发展的转折点。 构架个人品牌: 学会打造IP个人品牌是职业生涯中的重要资产。在中年时期,你已经积累了丰富的经验和知识&#x…

2024年5月架构试题

2024年5月份架构师考试真题完整版 截至2024-5-28 19:24:14已全部收录完成 共75道选择题,5道案例题,4道论文题。题目顺序不分先后。 全网最全的2024年5月份架构师考试真题回忆版,包含答案和解析。 选择题 计算机基础 操作系统调度算法 选先来先…

Golang:Sirupsen/logrus是一个日志库

Sirupsen/logrus是一个日志库 文档 https://github.com/Sirupsen/logrus 安装 go get github.com/sirupsen/logrus代码示例 package mainimport ("github.com/sirupsen/logrus" )func main() {var log logrus.New()log.Trace("Something very low level.&…

简历–自我介绍–中文–个人–结婚祝语

文章目录 定稿--简化定稿--复杂初稿改写--祝二位改写--四老祝贺其他 定稿–简化 今日,我既是作为新郎的大学舍友,也是作为他的好兄弟, 衷心祝福二位新人: 良缘佳偶, 红叶白首, 爱阔情深, 京繁梦…

Jvm(二)新生代和老年代与GC回收

目录 新生代和老年代 新生代 MinorGC 老年代(Old Generation) MajorGC Minor GC、Major GC 和 Full GC 三个GC具体区别和使用场景 JVM GC及内存调优的参数 调优建议 前言-与正文无关 ​ 生活远不止眼前的苦劳与奔波,它还充满了无…