美团提出基于隐式条件位置编码的Transformer,性能优于ViT和DeiT
视学算法发布
机器之心编辑部
Transformer 跨界计算机视觉的热潮之下,有一个问题需要解决:如何像 CNN 一样直接处理不同尺寸的输入?对此,美团提出了一种新型隐式条件位置编码方法,基于该方法的 CPVT 模型性能优于 ViT 和 DeiT。
随着 Facebook 的 DETR (ECCV 2020)[2] 和谷歌的 ViT (ICLR 2021)[3] 的提出,Transformer 在视觉领域的应用开始迅速升温,成为当下视觉研究的第一热点。但视觉 Transformer 受限于固定长度的位置编码,不能像 CNN 一样直接处理不同的输入尺寸,这在很大程度上限制了视觉 Transformer 的应用,因为很多视觉任务,如检测,需要在测试时动态改变输入大小。
一种解决方案是对 ViT 中位置编码进行插值,使其适应不同的图片大小,但这种方案需要重新 fine-tune 模型,否则结果会变差。
最近,美团提出了一种用于视觉 Transformer 的隐式条件位置编码 CPE [1],放宽了显式位置编码给输入尺寸带来的限制,使得 Transformer 便于处理不同尺寸的输入。实验表明,应用了 CPE 的 Transformer 性能优于 ViT 和 DeiT。
论文地址:https://arxiv.org/pdf/2102.10882.pdf
项目地址:https://github.com/Meituan-AutoML/CPVT(即将开源)
背景
谷歌的 ViT 方法通常将一幅 224×224 的图片打散成 196 个 16×16 的图片块(patch),依次对其做线性编码,从而得到一个输入序列(input sequence),使 Transformer 可以像处理字符序列一样处理图片。同时,为了保留各个图片块之间的位置信息,加入了和输入序列编码维度等长的位置编码。DeiT [4] 提高了 ViT 的训练效率,不再需要把大数据集(如 JFT-300M)作为预训练的限制,Transformer 可以直接在 ImageNet 上训练。
对于视觉 Transformer,位置编码不可或缺
在 ViT 和 CPVT 的实验中,我们可以发现没有位置编码的 Transformer 性能会出现明显下降。除此之外,在 Table 1 中,可学习(learnable)的位置编码和正余弦(sin-cos)编码效果接近,2D 的相对编码(2D RPE)性能较差,但仍然优于去掉位置编码的情形。
美团、阿德莱德大学提出新型位置编码方法
位置编码的设计要求
显式的位置编码限制了输入尺寸,因此美团这项研究考虑使用隐式的根据输入而变化的变长编码方法。此外,它还需要满足以下要求:
保持很好的性能;
避免排列不变性(permutation equivariance);
易于实现。
基于上述要求,该研究提出了条件编码生成器 PEG(Positional Encoding Generator),来生成隐式的位置编码。
生成隐式的条件位置编码
在 PEG 中,将上一层 Encoder 的 1D 输出变形成 2D,再使用变换模块学习其位置信息,最后重新变形到 1D 空间,与之前的 1D 输出相加之后作为下一个 Encoder 的输入,如 Figure 2 所示。这里的变换单元(Transoformation unit)可以是 Depthwise 卷积、Depthwise Separable 卷积或其他更为复杂的模块。
将 PEG 插入到模型中(如 Figure 1 中添加在第一个 Encoder 后),即可对各个 Encoder 添加位置编码信息。这种编码好处在于不需要显式指定,长度可以依输入变化而变化,因此被称为隐式的条件位置编码。
实验
ImageNet 数据集
该研究将添加了 PEG 的 Vision Transformer 模型命名为 CPVT(Conditional Position encodings Visual Transformer)。在 ImageNet 数据集上,相同量级的 CPVT 模型性能优于 ViT 和 DeiT。得益于隐式条件编码可以根据输入动态调整的特性,基于 224×224 输入训练好的模型可以直接处理 384×384 输入(Table 3 最后一列),无需 fine-tune 就能直接获得性能提升。相比之下,其他显式编码没有 fine-tune 则会出现性能损失。
与其他编码方式的对比
Table 5 给出了 CPVT-Ti 模型在不同编码策略下的表现。其中在从第 0 个到第 5 个 Encoder 各插入一个 PEG 的性能最优,Top-1 准确率达到 73.4%。CPVT 单独使用 PEG 或与可学习编码相结合也优于 DeiT-tiny 在各种编码策略下的表现。
PEG 在不同位置的作用
ViT 主干由 12 个 Encoder 组成,CPVT 对比了 PEG 位于 -1、0、3、6、10 等处的结果。实验表明,PEG 用于第一个 Encoder 之后表现最好 (idx 0)。该研究认为,放在第一个 encoder 之后不仅可以提供全局的接受域,也能够保证模型尽早地利用到位置信息。
结论
CPVT 提出的隐式位置编码是一个即插即用的通用方法。它放宽了对输入尺寸的限制,因而有望促进 Vision Transformer 在分割、检测、超分辨率等任务中的进一步应用,提升其性能。这项研究对后续 Vision Transformer 的发展将产生积极的影响。
参考文献
1.Do We Really Need Explicit Position Encodings for Vision Transformers? https://arxiv.org/pdf/2102.10882.pdf
2.End-to-end object detection with transformers https://arxiv.org/abs/2005.12872
3.An image is worth 16x16 words: Transformers for image recognition at scale https://openreview.net/pdf?id=YicbFdNTTy
4.Training data-efficient image transformers & distillation through attention https://arxiv.org/abs/2012.12877
© THE END
转载请联系原公众号获得授权
投稿或寻求报道:content@jiqizhixin.com
点个在看 paper不断!
美团提出基于隐式条件位置编码的Transformer,性能优于ViT和DeiT相关推荐
- 美团提出具有「位置编码」的Transformer,性能优于ViT和DeiT
本文转载自机器之心. Transformer 跨界计算机视觉的热潮之下,有一个问题需要解决:如何像 CNN 一样直接处理不同尺寸的输入?对此,美团提出了一种新型隐式条件位置编码方法,基于该方法的 CP ...
- CVPR 2021 Oral | GLEAN: 基于隐式生成库的高倍率图像超分辨率
摘要 · 看点 在 CVPR 2021 上, 南洋理工大学 S-Lab 和商汤科技等提出的隐式生成库(Generative Latent Bank), 针对高倍率图像超分辨中的质量和保真度问题提出了一 ...
- 基于隐式神经网络表达的数据压缩
数据压缩是一种在日常生活中广泛应用的技术,从算法角度来讲,压缩的过程是通过改变数据的表征范式以达到保留信息.去除冗余的过程.近来,深度学习在数据压缩领域的应用不仅表现出极好的性能,还为数据表征提出了具 ...
- PULSE:一种基于隐式空间的图像超分辨率算法
分享一篇 CVPR 2020 录用论文:PULSE: Self-Supervised Photo Upsampling via Latent Space Exploration of Generati ...
- ICML 2020 | 基于连续动态系统学习更加灵活的位置编码
论文标题: Learning to Encode Position for Transformer with Continuous Dynamical Model 论文作者: Xuanqing Liu ...
- FLOATER:更加灵活的Transformer位置编码!
NewBeeNLP公众号原创出品 公众号专栏作者 @Maple小七 北京邮电大学·模式识别与智能系统 来自 ICML2020 对Transformer位置编码的探索 论文:Learning to E ...
- SAGANPose | 隐式结构化对抗人体姿态估计网络
Adversarial PoseNet: A Structure-aware Convolutional Network for Human Pose Estimation Official Code ...
- Transformer架构:位置编码
2017年,Google的Vaswani 等人提出了一种新颖的纯注意力序列到序列架构,闻名学术界与工业界的 Transformer 架构横空出世.它的可并行化训练能力和优越的性能使其成为自然语言处理领 ...
- 相对位置编码与绝对位置编码
1 绝对位置编码 在输入的第k个向量xk中加入位置向量pk变为xk+pk,其中pk只依赖于位置编号k. 训练式 将位置编码当作可训练参数,比如最大长度为512,编码维度为768,那么就初始化一个512 ...
最新文章
- 小学生学python到底能干什么-小学生都学Python了,你还没用万矿?
- DDL语句为什么不能回滚
- 飞机票应该如何选择更安全
- hql取满足条件最新一条记录_数据仓库怎么做拉链表记录数据变化情况,看看这篇文章 就明白了...
- oracle设置缓冲区大小设置,描述Oracle优化库高速缓冲区
- 中国硬科技城市发展指数正式发布,西安跻身前十
- oracle时间去掉时分秒的时间_超详细的oracle修改AWR采样时间间隔和快照保留时间教程...
- 原型设计工具Balsamiq Mockups
- 一些osu的皮肤下载
- 实例教你怎么使用s扫描器
- Rect、RectF方法解析
- 深入理解Zend执行引擎
- disallow php,在robots.txt中Disallow: /abc和Disallow: /abc/的区别
- java基础--内存
- 算法笔记 之 埃拉托色尼筛选法(筛选质数)
- 项目经验教训总结(教育软件)
- 笔记本电脑外接显示器,仅显示器的时候卡顿问题的解决方案
- The C Programming Language 读书总结
- C语言丨运算符号的三种用法(有示例代码)
- T/CMSA 0027-2022 区域陆地碳汇评估技术指南
热门文章
- Flex精华摘要--使用AS脚本
- 一份来自上海院校的考研预调剂系统已开放名单!
- M2 芯片终于要来了?全线换新,性能远超M1 Max
- 又被 AI 抢饭碗?2457 亿参数规模,全球最大中文人工智能巨量模型 “源1.0”正式开源...
- 万字长文总结机器学习的模型评估与调参 | 附代码下载
- 支付宝账单出来后,除了总消费,你看到你的学习支出了吗?
- 阿里最新论文解读:考虑时空域影响的点击率预估模型DSTN
- PyTorch Hub发布获Yann LeCun强推!一行代码调用经典模型
- 访问量最高超7百万的Stack Overflow问题竟然是...
- 开源50万行代码,百亿广告分成,百度智能小程序能成吗?