OutLook Attention:具有局部信息感知能力的ViT

该原创内容首发于GaintPandaCV,转载请获得授权并标明出处
分类任务中,SOTA模型准确率和Model size的对应图

【写在前面】

近段时间,Transformer-based模型在Visual Recognition领域取得了非常大的进展。但是如果不借助额外的训练数据,Transformer-based模型离CNN-based模型还是具有一定的差距(NFNet-F5(CNN-based):86.8%,CaiT(Transformer-based):86.5%)。作者认为,这是因为token embedding并没有进行细粒度特征表示,因此本文提出了一种新的Attention方式,通过局部信息的感知,能够获得更加细粒度的特征表示。

1. 论文和代码地址

VOLO: Vision Outlooker for Visual Recognition

论文地址:https://arxiv.org/abs/2106.13112

官方代码:https://github.com/sail-sg/volo

一看就懂的核心代码: https://github.com/xmu-xiaoma666/External-Attention-pytorch/blob/master/attention/OutlookAttention.py

2. Motivation

前面说到了,token embedding进行特征表示是粗粒度的。为什么是token embedding就是粗粒度的呢?因为一张图片的size往往是比较大的(e.g., 224x224),CNN因为只对局部的信息进行感知(在正常图片上进行滑动窗口操作),所以计算复杂度和图片大小呈线性关系。如果将图片进行token embedding,直接进行Transformer的操作,那就会导致计算复杂度“爆炸”,因为Transformer中的Self-Attention(SA)的复杂度与输入特征的大小是呈平方关系的。

所以Vision Transformer需要将图片先进行token embedding到比较小的size(e.g., 14x14),才能保证计算量在一个合理的范围内。但这就导致了一个信息损失的问题,因为token embedding到较小的size会丢失一些细粒度的信息。

“Embedding的图片太大,会导致计算量过大;embedding的图片过小,会导致信息损失太大”,如何在保证合理计算量的情况下,获得更加细粒度的特征表示,这就是本文要解决的问题。

3. 方法

本文的模型可以分为两步:

第一步,通过一系列Outlooker获得更加细粒度的特征表示。

第二步,通过一系列的Transformer结构聚合global的信息

3.1. Outlooker

本文提出的Outlooker其实和Transformer的Multi-head Attention非常相似。不同之处在将Multi-head Attention中的Self-Attention换成了OutlookAttention,从而能够获取更加细粒度的特征表示。

Outlooker的计算步骤如下:

3.2. Outlook Attention

Outlook Attention的核心思想如下:

1)每个空间位置的特征足够丰富,用于产生局部聚合其相邻特征的注意力权重;

2)深层的和局部的空间聚合可以有效地编码细粒度的信息。

下面来看Outlook Attention的框架图:

整个框架分为两个分支,上面的分支用于生成attention map,下面的分支用于生成投影后的value。

3.2.1. 生成Attention Map

首先看上面的分支,特征x首先被embedding到了 K 2 ∗ K 2 K^2*K^2 K2K2,其中K是局部感知的大小

然后,我们将 K 2 ∗ K 2 K^2*K^2 K2K

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值