Focal Self-attention for Local-Global Interactions in Vision Transformers论文阅读
paper:https://arxiv.org/pdf/2107.00641v1.pdf
介绍
Transformer成功的关键是其self-attention可以捕获short-range和long-range的视觉依赖,如图1左边所示,但是会带来随着图像分辨率二次方增加的计算量,而许多视觉任务(目标检测,语义分割等)都需要对高分辨率的图像处理。许多工作通过添加粗粒度的全局attention或者是细粒度的局部注意力来减少self-attention的计算量和内存占用,然而这些方法都会损害self-attention的建模能力,导致结果是次优化的;
论文中提出了focal self-attention,同时融合细粒度局部交互和粗粒度全局交互;
考虑到邻近区域之间的视觉依赖性通常强于远处区域,作者只在局部区域进行细粒度的自关注,而在全局范围内进行粗粒度的关注;
每个token将离其最近的tokens来做细粒度,较远的做粗粒度交互,因此有效率的同时捕获了short-range和long-range的视觉依赖;如图1右边所示;
由focal self-attention组成的架构,就是focal transformer;
(标准的self-attention捕捉short-range和long-range的交互,都是通过细粒度的方式);
Focal Transformer较小的分类模型,在224x224的分辨率下,以51.1M、89.8M的参数实现了ImageNet上83.5%、83.8%的top-1准确率;
当作为backbone使用到下游任务中时,Focal Transformer在6个不同的目标检测架构上都实现了比Swin Transformer的结果,并在COCO数据集mini-val/test-dev上实现了58.7/58.9 的box mAP,50.9/51.3 mask AP;
在语义分割ADE20K数据及上,实现了55.4 mIoU,实现了新的SOTA;
方法
对于一个HxWx3的图像,首先经过一个kernerl size=4, stride=4的conv操作(Patch Embedding层),将分辨率变为H/4 x W/4 x d的特征图,其中d=4x4x3;
然后是4个stage,每个stage之前都有一个patch embedding层,之后的是将特征图空间大小减半,通道数增加一倍;
对于图像分类,将最后一个stage的输出送入一个分类头;
对于目标检测,将最后三个stage或者全部4个stage送入检测头;
模型的能力可以由通道数d和每个stage的堆叠数{N1 , N2 , N3 , N4 }控制;
Focal self-attention
对于一个query位置,只在局部做细粒度交互,全局做粗粒度交互,对于标准的self-attention,不仅可以减少计算量,而且能够提高感受野,如图3所示;
Window-wise attention
整个流程如图4所示
- Focal levels L:Focal self-attention 提取tokens的细粒度等级;
- Focal window size sl