论文标题:
Conditional Positional Encodings for Vision Transformers
Vision Transformer 的条件位置编码
论文链接:https://arxiv.org/abs/2102.10882v2
论文代码:https://github.com/Meituan-AutoML/CPVT
发表时间:2021年3月
创新点
1、提出条件位置编码(CPE)方案
2、基于 CPE,提出基于条件位置编码的 Vision Transformer 架构(CPVT)
Abstract
我们为 ViT 提出了条件位置编码 (CPE) 方案。与以前的固定或可学习的位置编码不同,它们是预先定义的并且独立于输入标记,CPE 是动态生成的,并且以输入标记的本地邻域为条件。因此,CPE 可以很容易地泛化到比模型在训练期间看到的更长的输入序列。此外,CPE 可以在图像分类任务中保持所需的平移不变性,从而提高分类精度
CPE 可以通过简单的位置编码生成器 (PEG) 轻松实现,并且可以无缝地整合到当前的 Transformer 框架中。基于 PEG,我们提出了条件位置编码视觉转换器 (CPVT)。我们证明 CPVT 与具有学习位置编码的注意力图相比具有视觉上相似的注意力图。受益于条件位置编码方案,我们在 ImageNet 分类任务上获得了迄今为止与视觉 Transformer 相比最先进的结果
详解:CPE 本质解决的问题就是提高了分割后的小图片的空间信息,由于将图片分割成小图片后,排成一排输入进 Transformer 中时,会失去原本的图片的空间信息,最开始的位置编码,并不能完美的解决这个问题,而修改后的条件编码,一定程度上解决了这个问题
Method
图(a):传统的 Vision Transformer
图(b):增加了条件位置编码的 Vision Transformer 即本文提出的 CPVT
图(c):基于 CPVT 的基础上,增加一个全局平均池化 GAP 优化了 CPVT 的性能
注释:
1)PE 位置编码
2)PEG 条件位置编码
3)GAP 全局平均池化
PEG架构
分割原图像,产生的小块图像进行 feature tokens,再 reshape 成二维数据(蓝色),再基于一个 F 函数进行转换(绿色)尺寸不变,再分割成小块,输入进 Transformer 中,其中 F 函数,即为条件
注释:
本质上可以简单理解为,F 函数是一个二维卷积,这里强调是二维卷积,而不是三维卷积,因为首先进行分割,再将分割后的特征进行了扁平化,所以是二维的(如果直接对图片使用卷积,那卷积核应该是三维的)
为什么使用二维卷积就变成了条件位置编码呢?
这是因为,卷积操作大家都能理解,卷积核尺寸越大(例如 3*3),则包含的周边信息越多,则可以理解为,将原图像的顺序排列的特征具有了空间信息,因此信息包含更多,则能很好的提高准确率,是本文的关键理解
GAP架构
本质上是一个全局平均池化,相当于一个奖励,试验结果表明,其提高了性能
Experiments
CPVT 架构变体:
较大的模型 CPVT-B 具有与 ViT-B 和 DeiTB 相同的架构
CPVT-S 和 CPVT-Ti 分别具有与 DeiT-small 和 DeiT-tiny 相同的架构
实验目标:CPVT 中提出的 PEG 可以直接推广到更大的图像尺寸,而无需任何微调
实验结果:在 224*224 图像上训练的 CPVT,应用到 384*384 上,效果相近,无需微调
实验目标:验证 GAP 是否可以提高性能
实验结果:提高性能
实验目标:与最先进方法的比较
实验结果:CPVT 模型具有更好的 top-1 精度
实验目标:在 ImageNet 上使用 DeiT-tiny 架构的不同 PEG 的位置的性能对比
实验结果:当 PEG 放置在 [0, 3] 时,我们的方法显示出强大的性能
实验目标:不同卷积内核的性能
实验结果:27*27 的效果更好
写在最后
CNN + Transformer 的架构是否可以成为 SOTA 呢?
值得期待!