论文提出了一种新的ViT位置编码CPE,基于每个token的局部邻域信息动态地生成对应位置编码。CPE由卷积实现,使得模型融合CNN和Transfomer的优点,不仅可以处理较长的输入序列,也可以在视觉任务中保持理想的平移不变性。从实验结果来看,基于CPE的CPVT比以前的位置编码方法效果更好

来源:晓飞的算法工程笔记 公众号

论文: Conditional Positional Encodings for Vision Transformers

Introduction


  Transformer的自注意机制可以捕捉长距离的图像信息,根据图像内容动态地调整感受域大小。但自注意操作是顺序不变的,不能利用输入序列中的token顺序信息。为了让Transformer顺序可知,将位置编码加到输入的token序列中成为了常规操作,但这也为Tranformer带来两个比较大的问题:

  • 虽然位置编码很有效,但会降低Transformer的灵活性。位置编码可以是可学习的,也可以是由不同频率的正弦函数直接生成的。如果需要输入更长的token序列,模型当前的位置编码以及权值都会失效,需要调整结构后再fine-tuning以保持性能。
  • 加入位置编码后,绝对位置编码使得Transformer缺乏图像处理所需的平移不变性。如果采用相对位置编码,不仅带来额外的计算成本,还要修改Transformer的标准实现。而且在图像处理中,相对位置编码的效果没有绝对位置编码好。

  为了解决上述问题,论文提出了一个用于Vision Transformer的条件位置编码(CPE,conditional positional encoding)。与以往预先定义且输入无关的固定或可学习的位置编码不同,CPE是动态生成的,生成的位置编码中的每个值都与对应输入token的局部邻域相关。因此,CPE可以泛化到更长的输入序列,并且在图像分类任务中保持所需的平移不变性,从而提高分类精度。

  CPE通过一个简单的位置编码生成器(PEG,position encoding generator)实现,可以无缝地融入当前的Transformer框架中。在PEG的基础上,论文提出了Conditional Position encoding Vision Transformer(CPVT),CPVT在ImageNet分类任务中达到了SOTA结果。

  论文的贡献总结如下:

  • 提出了一种新型的位置编码方案,条件位置编码(CPE)。CPE由位置编码生成器(PEG)动态生成,可以简单地嵌入到深度学习框架中,不涉及对Transformer的修改。
  • CPE以输入token的局部邻域为条件生成对应的位置编码,可适应任意的输入序列长度,从而可以处理更大分辨率的图像。
  • 相对于常见的绝对位置编码,CPE可以保持平移不变性,这有助于提高图像分类的性能。
  • 在CPE的基础上,论文提出了条件位置编码ViT(CPVT),在ImageNet上到达了SOTA结果。
  • 此外,论文还提供了class token的替代方案,使用平移不变的全局平均池(GAP)进行类别预测。通过GAP,CPVT可以实现完全的平移不变性,性能也因此进一步提高约1%。相比之下,基于绝对位置编码的模型只能从GAP中获得很小的性能提升,因为其编码方式本身已经打破了平移不变性。

Vision Transformer with Conditional Position Encodings


Motivations

  在Vision Transformer中,尺寸为\(H\times W\)的输入图像被分割成\(N=\frac{HW}{S^2}\)个\(S×S\)的图像块,随后加上相同大小的可学习绝对位置编码向量。

  论文认为常用的绝对位置编码有两个问题:

  • 模型无法处理比训练序列更长的输入序列。
  • 图像块平移后会对应新的位置编码,使得模型不具备平移不变性。

  实际上,直接去掉位置编码就能将模型应用于长序列,但这种解决方案会丢失输入序列的位置信息,严重降低了性能。其次,可以像DeiT那样对位置编码进行插值,使其具有与长序列相同的长度。但这种方法需要对模型多做几次fine-tuning,否则性能也是会明显下降。对于高分辨率的输入,最完美的解决方案是在不进行任何fine-tuning的情况下,模型依然有显著的性能改善。

  使用相对位置编码虽然可以解决上述两个问题,但不能提供任何绝对位置信息。有研究表明,绝对位置信息对分类任务也很重要。而在替换对比实验中,采用相对位置编码的模型性能也是较差的。

Conditional Positional Encodings

  论文认为,一个完美的视觉任务的位置编码应该满足以下要求:

  • 对输入序列顺序可知,但平移不变。
  • 具有归纳能力,能够处理比训练时更长的序列。
  • 能提供一定程度的绝对位置信息,这对性能非常重要。

  经过研究,论文发现将位置编码表示为输入的局部领域关系表示,就能够满足上述的所有要求:

  • 首先,它是顺序可知的,输入序列顺序也会影响到局部邻域的顺序。而输入图像中目标的平移可能不会改变其局部邻域的顺序,即平移不变性。
  • 其次,模型可以应用更长的输入序列,因为每个位置编码都由对应token的局部邻域生成。
  • 此外,它也可以表达一定程度的绝对位置信息。只要任意一个输入token的绝对位置是已知的(比如边界的零填充),所有其他token的绝对位置可以通过输入token之间的相互关系推断出来。

  因此,论文提出了位置编码生成器(PEG),以输入token的局部邻域为条件,动态地产生位置编码。

  • Positional Encoding Generator

  PEG的处理过程如图2所示。为了将局部领域作为条件,先将DeiT的输入序列\(X\in \mathbb{R}^{B\times N\times C}\)重塑为二维图像形状\(X^{'} \in\mathbb{R}^{B\times H\times W\times C}\),然后通过函数\(\mathcal{F}\)从\(X^{'}\)的局部图像中生成产生条件性位置编码\(E^{B\times H\times W\times C}\)。

  PEG可以由一个核大小为\(k(k\ge 3)\)、零填充为\(\frac{k-1}{2}\)的二维卷积来实现。需要注意的是,零填充是为了位置编码包含绝对位置信息,从而提升模型性能。函数\(\mathcal{F}\)也可以是其它形式,如可分离卷积等。

Conditional Positional Encoding Vision Transformers

  基于条件性位置编码,论文提出了条件位置编码Vision Transformer(CPVT),除了条件位置编码之外,其它完全遵循ViT和DeiT来设计。CPVT一共有三种尺寸:CPVT-Ti、CPVT-S和CPVT-B。

  有趣的是,论文发现PEG的插入位置对性能也会有大影响。在第一个encoder之后插入的性能最佳,而不是直接在开头插入。

  此外,DeiT和ViT都使用一个额外的可学习class token进行分类。但根据其结构设计,该token不是平移不变的,只能靠训练来尽可能学习平移不变性。一个简单的替代方法是直接换为全局平均池(GAP),因为GAP本身就是平移不变的。因此,论文也提出了CVPT-GAP,去掉class token,改为采用GAP输出进行预测。在与平移不变的位置编码配套使用时,CVPT-GAP是完全平移不变的,可以实现更好的性能。

Experiment


  训练配置。

  直接将224x224模型改为384x384输入进行测试。

  class token与GAP的性能对比。

  对第二个encoder的自注意力图进行可视化,CPVT的自注意力图明显更加多样化。

  与SOTA网络进行对比,⚗为使用DeiT的蒸馏策略的结果。

  PEG插入位置对比,第一个encoder之后插入效果最好。

  PEG的-1插入场景可能是由于原始图片需要更大的感受域,通过实验验证增大卷积核能显著提高性能。

  插入PEG个数的对比实验。

  不同位置编码方式的对比实验。

  PEG生成位置编码时零填充的对比实验。

  对PEG性能提升来源进行对比实验,PEG的确跟输入的领域关系有关,但跟卷积参数是否对应当前网络关系不大。

  不同配置下的性能对比。

  应用到PVT上的性能提升。

  作为目标监测网络主干的性能对比。

Conclusion


  论文提出了一种新的ViT位置编码CPE,基于每个token的局部邻域信息动态地生成对应位置编码。CPE由卷积实现,使得模型融合CNN和Transfomer的优点,不仅可以处理较长的输入序列,也可以在视觉任务中保持理想的平移不变性。从实验结果来看,基于CPE的CPVT比以前的位置编码方法效果更好。





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

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

CPVT:美团提出动态位置编码,让ViT的输入更灵活 | ICLR 2023的更多相关文章

  1. [NLP] 相对位置编码(二) Relative Positional Encodings - Transformer-XL

    参考: 1. Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context https://arxiv.org/pdf ...

  2. [NLP] 相对位置编码(一) Relative Position Representatitons (RPR) - Transformer

    对于Transformer模型的positional encoding,最初在Attention is all you need的文章中提出的是进行绝对位置编码,之后Shaw在2018年的文章中提出了 ...

  3. 中文NER的那些事儿5. Transformer相对位置编码&TENER代码实现

    这一章我们主要关注transformer在序列标注任务上的应用,作为2017年后最热的模型结构之一,在序列标注任务上原生transformer的表现并不尽如人意,效果比bilstm还要差不少,这背后有 ...

  4. ICCV2021 | Vision Transformer中相对位置编码的反思与改进

    ​前言  在计算机视觉中,相对位置编码的有效性还没有得到很好的研究,甚至仍然存在争议,本文分析了相对位置编码中的几个关键因素,提出了一种新的针对2D图像的相对位置编码方法,称为图像RPE(IRPE). ...

  5. 第五课第四周实验一:Embedding_plus_Positional_encoding 嵌入向量加入位置编码

    目录 变压器预处理 包 1 - 位置编码 1.1 - 位置编码可视化 1.2 - 比较位置编码 1.2.1 - 相关性 1.2.2 - 欧几里得距离 2 - 语义嵌入 2.1 - 加载预训练嵌入 2. ...

  6. JDK动态代理和CGLIB动态代理编码

    JDK动态代理[接口]: import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import jav ...

  7. spass按位置编码,进行排序题处理与分析

    本范例即需建立Q4_1至Q4_4 等四个变项, 各变量的数值则是排序的内容,共有0.1.2.3.4 等五种可能,0代表该选项没有被受测者选取,1.2.3.4分别代表被受测者指为第一至第四顺位. htt ...

  8. 阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效

    今天我们要说的 AV1 可不是我们平时说的 .AVI 文件格式,它是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源.免版权费的视频编码格式,可以解决H.265昂 ...

  9. 转帖--计算机网络基础知识大总汇 https://www.jianshu.com/p/674fb7ec1e2c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    计算机网络基础知识大总汇 龙猫小爷 关注 2016.09.14 23:01* 字数 12761 阅读 30639评论 35喜欢 720 一.什么是TCP/IP 网络和协议 1.     TCP/IP是 ...

  10. RNN: Feed Forward, Back Propagation Through Time and Truncated Backpropagation Through Time

    原创作品,转载请注明出处哦~ 了解RNN的前向.后向传播算法的推导原理是非常重要的,这样, 1. 才会选择正确的激活函数: 2. 才会选择合适的前向传播的timesteps数和后向传播的timeste ...

随机推荐

  1. Codeforces Round 734 (Div. 3)B2. Wonderful Coloring - 2(贪心构造实现)

    思路: 分类讨论: 当一个数字出现的次数大于等于k,那么最多有k个能被染色, 当一个数字出现的次数小于k,南那么这些数字都可能被染色 还有一个条件就是需要满足每个颜色的数字个数一样多,这里记出现次数小 ...

  2. python AI应用开发编程实战 大模型实战基础(数据存储类型列表与字典)(二)

    大模型开发中,需要和自己的业务融合,我们要对自己的数据处理,熟悉外理excle  word  pdf 数据然后处理后可以放到向量数据库,或者直接Assistants API传到大模型引用,不管怎么样数 ...

  3. Tomcat 系列

    Tomcat 系列 目录 Tomcat 系列 一. 基本概念 1.1 java jdk 概念 1.2 jsp.servlet是什么 1.3 web服务器.web容器.应用程序服务器 1.4 tomca ...

  4. 利用Nginx正向代理实现局域网电脑访问外网

    引言 在网络环境中,有时候我们需要让局域网内的电脑访问外网,但是由于网络策略或其他原因,直接访问外网是不可行的.这时候,可以借助 Nginx 来搭建一个正向代理服务器,实现局域网内电脑通过 Nginx ...

  5. float、double的精度、范围,在内存中的存储方式

    float.double的精度,在内存中的存储方式 一.浮点型变量在内存中的存储方式 Java的浮点数遵循IEEE 754标准,采用二进制数据的科学计数法来表示浮点数,float遵从的是IEEE R3 ...

  6. buu第一页复盘

    这里就对之前第一遍没写出来的题目再写一次wp 写在之前 贴一下我的模块文件 from pwn import * from LibcSearcher import * from struct impor ...

  7. php处理序列化jQuery serializeArray数据

    介绍jquery的几个常用处理表单的函数: 1.序列化表单内容元素为字符串,常用于ajax提交. $("form").serialize() 2. serializeArray() ...

  8. 使用apache发布网站

    只要建立网站和修改apache的配置文件即可 记事本打开apache\conf下的httpd.conf 用搜索找到DocumentRoot DocumentRoot是设置对外发布的网站目录的命令 将目 ...

  9. 记录--手写一个 v-tooltip 指令

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 日常开发中,我们经常遇到过tooltip这种需求.文字溢出.产品文案.描述说明等等,每次都需要写一大串代码,那么有没有一种简单的方式 ...

  10. 记录--妙用computed拦截v-model,面试管都夸我细

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 如何避免写出屎山,优雅的封装组件,在面试官面前大大加分,从这篇文章开始! 保持单向数据流 大家都知道vue是单项数据流的,子组件不能直接修 ...