点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

转载自:集智书童

Pale Transformer:A General Vision Transformer Backbone with Pale-Shaped Attention

论文:https://arxiv.org/abs/2112.14000

代码:https://github.com/BR-IDL/PaddleViT

最近,Transformer在各种视觉任务中表现出了良好的性能。为了降低全局自注意力引起的二次计算复杂度,各种方法都限制局部区域内的注意力范围,以提高全局自注意力的计算效率。因此,它们在单个注意力层中的感受野不够大,导致上下文建模不足。

为了解决这个问题,本文提出了一种Pale-Shaped self-Attention(PS-Attention),它在一个Pale-Shaped的区域内进行自注意力的计算。与全局自注意力相比,PS-Attention能显著减少计算量和内存开销。同时,利用已有的局部自注意力机制,可以在相似的计算复杂度下获取更丰富的上下文信息。

在PS-Attention的基础上,作者开发了一个具有层次结构的通用Vision Transformer Backbone,名为Pale Transformer,在224×224 ImageNet-1K分类中,模型尺寸分别为22M、48M和85M, Top-1准确率达到83.4%、84.3%和84.9%,优于之前的Vision Transformer Backbone。对于下游的任务,Pale Transformer Backbone在ADE20K语义分割和COCO目标检测和实例分割上比最近的最先进的CSWin Transformer表现得更好。

1简介

受Transformer在自然语言处理(NLP)的广泛任务上取得成功的启发,Vision Transformer(ViT)首次采用纯Transformer架构进行图像分类,这显示了Transformer架构在视觉任务方面的良好性能。

图1(a)

然而,全局自注意力的二次复杂度导致了昂贵的计算成本和内存占用,特别是在高分辨率场景下,使其无法用于下游各种视觉任务。

一种典型的提高效率的方法是用局部自注意力取代全局自注意力。如何增强局部环境下的建模能力是一个关键而又具有挑战性的问题。

图1(b)

例如,Swin Transformer和Shuffle Transformer分别提出了Shift Window和Shuffle Window(图1(b)),并交替使用两种不同的Window分区(即Regular Window和Proposed Window)在连续块中构建Cross Window连接。

图1(c)

MSG Transformer操纵Messenger Token以实现Cross Window交换信息。Axial Self-Attention将局部注意力区域视为特征图的单行或单列(图1(c))。

图1(d)

CSWin提出了Cross-Shaped Window Attention(图1(d)),可以看作是Axial Self-Attention的多行、多列展开。虽然这些方法的性能很好,甚至优于CNN的同类方法,但每个自注意力层的依赖关系不够丰富,不足以捕捉足够的上下文信息。

图1(e)

在这项工作中提出了一种Pale-Shaped self-Attention(PS-Attention)来有效地捕获更丰富的上下文依赖。具体来说:

  • 首先将输入特征图在空间上分割成多个Pale-Shaped的区域。每个Pale-Shaped区域(缩写为Pale)由特征图中相同数量的交错行和列组成。相邻行或列之间的间隔对于所有的Pale是相等的。例如,图1(e)中的粉色阴影表示其中一种淡色。

  • 然后,在每个Pale区域内进行Self-Attention计算。对于任何Token,它都可以直接与同一Pale中的其他Token交互,这使得本文的方法能够在单个PS-Attention层中捕获更丰富的上下文信息。

为了进一步提高效率,作者开发了一个更高效的PS-Attention并行实现。得益于更大的感受野和更强的上下文建模能力,PS-Attention显示出了图1中所示的现有局部自注意力机制的优越性。

本文基于提出的PS-Attention设计了一个具有层次结构的通用Vision T燃烧former Backbone,命名为Pale Transformer。作者将本文的方法扩展到一系列模型,包括Pale-T(22M)、Pale-S(48M)和Pale-B(85M),达到了比以前方法更好的性能。

Pale-T在ImageNet-1k上的Top-1分类准确率为83.4%,在ADE20K上的单尺度mIoU(语义分割)准确率为50.4%,在COCO上的box mAP(目标检测)准确率为47.4,mask mAP(实例分割)准确率为42.7,分别比目前最先进的Backbone算法提高了+0.7%、+1.1%、+0.7和+0.5。

此外,最大的版本Pale-B在ImageNet-1K上的Top-1准确率为84.9%,在ADE20K上的单尺度mIoU准确率为52.2%,在COCO上的box mAP为49.3,mask mAP为44.2。

2相关工作

ViT将输入图像作为一系列的Patches,为多年来由CNN主导的视觉任务开辟了一条新的道路,并显示出了良好的性能。为了更好地适应视觉任务,之前的Vision Transformer Backbone工作主要集中在以下两个方面:

  1. 增强Vision Transformer的局部性;

  2. 在性能和效率之间寻求更好的平衡。

2.1 局部增强ViTs

与CNN不同的是,原始Transformer没有涉及到局部连接的感应偏置,这可能会导致对线、边缘、颜色结合点等局部结构的提取不足。

许多工作致力于增强ViT的局部特征提取。最早的方法是用分层结构取代单一尺度结构,以获得多尺度特征。这样的设计在以后的作品中也有很多。

另一种方法是把CNN和Transformer结合起来。Mobile-Former、Conformer和DSNet通过精心设计的双分支结构集成了CNN和Transformer功能。而Local ViT、CvT和Shuffle Transformer只在Transformer的某些组件中插入了几个卷积。此外,一些作品通过融合不同尺度的多分支或配合局部自注意力以获得更丰富的特征。

2.2 高效ViTs

目前主流的研究方向为提高效率Vision Transformer的主干有两层:

  • 通过剪枝策略减少冗余计算

  • 设计更高效的自注意力机制

1、ViT的剪枝

对于剪枝,现有的方法可以分为三类:

  1. Token剪枝:DVT提出了一种级联Transformer结构,可以根据输入图像自适应调整Token数量。考虑到Token含有不相关甚至混淆的信息可能不利于图像分类,一些研究提出了通过可学习采样和强化学习策略来定位有区别的区域,逐步减少信息Token的丢弃。然而,这种非结构化的稀疏性导致了与密集预测任务的不兼容性。通过Token Pooling和Slow-Fast更新实现了一些结构保持的Token选择策略。

  2. Channel剪枝:VTP为去除Reductant Channel提供了一个简单而有效的框架。

  3. Attention Sharing:基于连续块间注意力映射高度相关的观测结果,提出了PSViT算法来重用相邻层间的注意力计算过程。

2、高效Self-Attention机制

考虑到二次计算的复杂度是由Self-Attention引起的,许多方法致力于在避免性能衰减的同时提高二次计算的效率。

一种方法是减少key和value的序列长度:

  • PVT提出了一种Spatial Reduction Attention,在计算注意力之前对key和value的尺度进行下样。

  • Deformable Attention使用一个线性层从全集合中选择几个关键字,可以看作是全局自注意力的稀疏版本。但是,过多的下采样会导致信息混淆,Deformable Attention严重依赖于CNN学习的High-Level特征图,可能不能直接用于原始输入图像。

另一种方法是将全局自注意力替换为局部自注意力,将每个自注意层的范围限制在一个局部区域内。如图1(b)所示,首先将特征映射划分为几个不重叠的方形规则窗口(用不同的颜色表示),在每个窗口内分别进行自注意力计算。

设计局部自注意力机制的关键挑战是如何弥合局部和全局感受野之间的差距?

一种典型的方式是在规则的方形窗口之间构建连接。例如,在连续块中交替使用常规窗口和另一种新设计的窗口分区方式(图1(b)中Shift Window或Shuffle Window),并操作Messenger Tokens来跨窗口交换信息。

此外,Axial Attention通过对特征图的每一行或每一列进行自注意力计算,分别在水平和垂直方向上获得较长的距离依赖。

CSWin提出了一个包含多行多列的Cross-Shaped Self-Attention区域。现有的这些局部注意力机制虽然在一定程度上提供了突破局部感受野的机会,但它们的依赖关系不够丰富,不足以在单个自注意力层中捕获足够的上下文信息,从而限制了整个网络的建模能力。

与本文的工作最相关的是CSWin,CSWin开发了一个Cross-Shaped Self-Attention用于计算水平和垂直条纹中的自注意力,而本文提出的PS-Attention计算Pale形状区域的自注意力。此外,本文的方法中每个Token的感受野比CSWin宽得多,这也赋予了本文的方法更强的上下文建模能力。

3本文方法

在本节中,首先介绍Pale-Shaped Self-Attention(PS-Attention)及其高效的并行实现。然后,给出了Pale Transformer block的组成。最后,将描述Pale Transformer Backbone的总体架构和变体配置。

3.1 Pale-Shaped Attention

为了捕获从短期到长期的依赖关系,提出了Pale-Shaped Attention(PS-Attention),它在一个Pale-Shaped区域(简称pale)中计算自注意力。如图1(e)的粉色阴影所示,一个pale包含个交错的行和个交错的列,它覆盖了包含个Token的区域。

图1(e)

定义为pale size。给定一个输入特征图,首先将其分割成多个相同大小的pale ,其中。Pale的个数等于,可以通过填充或插补操作来保证。对于所有pale,相邻行或列之间的间隔是相同的。然后在每个pale中分别进行自注意力计算。如图1所示,PS-Attention的感受野比之前所有的局部自注意力机制都要广泛和丰富得多,能够实现更强大的上下文建模能力。

3.2 高效的并行实现

为了进一步提高效率,将上面提到的普通PS-Attention分解为行注意和列注意,它们分别在行Token组和列Token组内执行自注意力。

图2(c)

具体而言,如图2(c),首先将输入特征划分为两个独立的部分和,然后将其分为多个组,以便分别按行和列进行注意力计算。

其中,包含个的交错行,包含个的交错列。

然后,分别在每个行Token组和列Token组中执行自注意力。使用3个可分离的卷积层、、生成Query、Key和Value。

式中,、MSA表示多头自注意力。

最后,行方向和列方向的注意力输出沿着通道尺寸连接,得到最终的输出:

与PS-Attention在整个系统内的普通实现相比,这种并行机制具有较低的计算复杂度。此外,填充操作只需要确保能被整除,能被整除,而不是。因此,也有利于避免填充过多。

3.3 复杂度分析

给定尺寸为h×w×c的输入特征,Pale-size为,标准全局自注意力的计算复杂度为:

然而,本文提出的PS-Attention并行实现下的计算复杂度为:

由于始终保持不变,因此与全局算法相比,可以明显减轻计算量和内存负担。

3.4 Pale Transformer Block

图2(b)

如图2(b)所示,Pale Transformer Block由3个顺序部分组成,用于动态生成位置嵌入的条件位置编码(CPE),用于捕获上下文信息的PS-Attention模块,以及用于特征投影的MLP模块。第l块的传播可以表示为:

其中,LN(·)为层归一化。CPE被实现为一个简单的深度卷积,它在以前的工作中广泛使用,因为它兼容任意大小的输入。Eq.(7)中定义的PS-Attention模块是通过将Eq.(1)对Eq.(3)依次执行来构造的。Eq.(8)中定义的MLP模块由2个线性投影层组成,依次展开和收缩嵌入维数。

3.5 整体框架

图2(a)

如图2(a)所示,Pale Transformer通过遵循CNN和Transformer的设计,由四个层次级阶段组成,用于捕获多尺度特征。每个阶段包含一个Patch合并层和多个Pale Transformer Block。patch merge层的目标是对输入特征进行一定比例的空间下采样,并将通道维数扩展2倍以获得更好的表示能力。

为了便于比较,使用重叠卷积来进行Patch合并。其中,第一阶段空间下采样比为4,后三个阶段空间下采样比为2,分别采用7×7与stride=4的卷积和3×3与stride=2的卷积实现。Patch合并层的输出被输入到后续的Pale Transformer Block中,Token的数量保持不变。只需在最后一个块的顶部应用平均池化操作,以获得最终分类头的代表Token,该分类头由单个线性投影层组成。

具体变体如下

4实验

4.1 消融实验

1、Pale-size的影响

4个阶段的Pale-size控制了上下文信息丰富度与计算成本之间的权衡。如表7所示,增加Pale-size(从1到7)可以持续提高所有任务的性能,而进一步增加到9不会带来明显的、持续的改进,但会带来更多的FLOPs。因此,默认情况下,对所有任务使用。

2、不同注意力对比

这里比较了3种PS-Attention的实现。普通的PS-Attention直接在整个Pale区域内进行自注意力计算,它可以近似为两种更有效的实现,顺序和并行。

顺序算法在连续块中交替计算行方向和列方向上的自注意力,而并行算法在每个块内并行执行行方向和列方向的注意力。如表8所示,并行PS-Attention在所有任务上都取得了最好的结果。作者将此归因于在普通的PS-Attention中,对于非方形输入大小的过多填充将导致轻微的性能下降。

为了直接比较PS-Attention与最相关的Axial-based Attention,分别用轴向自注意力和cross-shaped window self-attention替代了Pale-T的PS-Attention。如表8所示,PS-Attention明显优于这两种机制。

3、不同的位置嵌入

位置编码可以引入空间位置感知来实现自注意力的特征聚合,在Transformer中起着重要作用。本文比较了几种常用的位置编码方法,如无位置编码(no pos.)、绝对位置编码(APE)和条件位置编码(CPE)。如表9所示,CPE的性能最好。不使用任何位置编码将导致严重的性能下降,这证明了位置编码在Vision Transformer模型中的有效性。

4.2 ImageNet-1K分类

表2比较了Pale Transformer与最先进的CNN和Vision Transformer Backbone在ImageNet-1K验证集上的性能。在相同的计算复杂度下,与先进的CNN相比,Pale模型分别比RegNet模型好+3.4%、+2.6%和+2.0%。

与此同时,Pale Transformer的性能优于最先进的基于Transformer的Backbone,在类似型号尺寸和FLOPs下的所有变种中,其性能比最相关的CSWin Transformer高0.7%。

请注意,LV-ViT和VOLO,使用额外的MixToken增强和token丢失进行训练,似乎与本文方法相同。为了进行比较,在Pale模型上使用了这两种技巧,与lv-vi-s相比,Pale-T获得了+0.9%的增益,且计算成本更低。Pale-S和Pale-B分别达到85.0%和85.8%,比VOLO高出0.8%和0.6%。

4.1 COCO目标检测

如表3所示,对于目标检测Pale-T、Pale-S和Pale-B的目标检测box mAP分别为47.4、48.4和49.2,超过了之前的最佳水平CSWin Transformer +0.7,+0.5,+0.6。

此外,Pale Transformer变体在实例分割上也有一致的改进,分别比之前的最佳Backbone提高了+0.5、+0.5、+0.3 mask mAP。

4.2 ADE20K语义分割

Pale Transformer论文和代码下载后台回复:Pale,即可下载上述论文和代码

ICCV和CVPR 2021论文和代码下载

后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集

后台回复:ICCV2021,即可下载ICCV 2021论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的3篇Transformer综述PDF

CVer-Transformer交流群成立

扫码添加CVer助手,可申请加入CVer-Transformer 微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。

一定要备注:研究方向+地点+学校/公司+昵称(如Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加小助手微信,进交流群

▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看

Pale Transformer:新视觉ViT主干相关推荐

  1. Vision Transformer(ViT)PyTorch代码全解析(附图解)

    Vision Transformer(ViT)PyTorch代码全解析 最近CV领域的Vision Transformer将在NLP领域的Transormer结果借鉴过来,屠杀了各大CV榜单.本文将根 ...

  2. 神经网络学习笔记3——Transformer、VIT与BoTNet网络

    系列文章目录 神经网络学习笔记1--ResNet残差网络.Batch Normalization理解与代码 神经网络学习笔记2--VGGNet神经网络结构与感受野理解与代码 文章目录 系列文章目录 A ...

  3. 【原理+源码详细解读】从Transformer到ViT

    文章目录 参考文献 简介 Transformer架构 Position Encoding Self-attention Multi-head Self-attention Masked Multi-H ...

  4. Transformer架构 VIT

    VIT 简单来说就说在视觉中怎么去做transfomer transfomer的输入得是一个序列,我们用transfomer做视觉的时候不能把一整张图片传进去,而是考虑把一张图片分成多个小块,比如下图 ...

  5. 神经网络学习小记录68——Tensorflow2版 Vision Transformer(VIT)模型的复现详解

    神经网络学习小记录68--Tensorflow2版 Vision Transformer(VIT)模型的复现详解 学习前言 什么是Vision Transformer(VIT) 代码下载 Vision ...

  6. 【transformer】ViT

    目录 概述 细节 结构 patch embedding encoder MLP head 实验 简单实现 概述 ViT直接将transformer用于分类任务,给出的最佳模型在ImageNet1K上能 ...

  7. Swin Transformer、ViT作者等共话:好的基础模型是CV 研究者的朴素追求

    2021-2022 年,随着 Transformer 被引入计算机视觉领域,视觉基础模型研发迎来了又一个新的高潮.一时间,基于视觉 Transformer 的骨干模型设计.自监督学习.模型扩展.下游应 ...

  8. 【Transformer】ViT:An image is worth 16x16: transformers for image recognition at scale

    文章目录 一.背景和动机 二.方法 三.效果 四.Vision Transformer 学习到图像的哪些特征了 五.代码 代码链接:https://github.com/lucidrains/vit- ...

  9. vision transformer(viT)教学视频【通俗易懂】

    11.1 Vision Transformer(vit)网络详解_哔哩哔哩_bilibili 文章地址:Vision Transformer详解_霹雳吧啦Wz-CSDN博客 其中两个关键的图

  10. Transformer:ViT、Swim、NesT

    1.Vision Transformer 整体框架 算法流程 使用大小为P的区块将H*W*C的二维图像分为N个P*P*C的区块(patch),N=H*W/(P*P) 将区块使用线性变换转为D维特征向量 ...

最新文章

  1. mac下安装libpng环境
  2. springBoot搭建activiti工作流
  3. Linux查看系统信息的一些命令及查看已安装软件包的命令
  4. 一次性说清楚秒验(本机号码一键登录)基本原理、优势、场景、交互过程和常见的问题
  5. javascript操作表格案例讲解
  6. 计算机学院刘彤,刘彤-北京航空航天大学材料科学与工程学院
  7. python目录和文件的基本操作_Python常用的文件及文件路径、目录操作方法汇总介绍...
  8. WhereHows 安装
  9. 企业集团合并财务报表
  10. matlab调用第三方api_matlab与外部程序接口调用心得(原创)
  11. 天创速盈:拼多多新店什么时候适合直通车?
  12. 201903-2 二十四点
  13. 迪文屏幕的学习和开发
  14. 笔记本电脑网络服务无法使用,打开网络共享中心,一直卡在打开界面或者插入网线后右下角为红叉
  15. getch方法_c语言中getch的用法
  16. 2022-2028全球踏步机测力计行业调研及趋势分析报告
  17. 开发一个APP有多难?APP开发流程、开发成本揭秘
  18. 【安全狗高危安全通告】OpenSSL存在远程代码执行漏洞和拒绝服务漏洞
  19. 压力使人头秃是真的!元凶已被哈佛西湖大学揪出,还给出生发秘诀 | Nature
  20. if结构与switch结构

热门文章

  1. c语言求开平方标准库函数,关于C语言中的开方计算,首先想到的当然是sqrt()函数,让我们先来回顾一下它的基本用法: 头文件:#include math.hsqrt(...
  2. html的excel表格自动换行,excel自动换行总结
  3. 微信再次成师父 Facebook开始卖电影票
  4. vue+drf没公网ip接入支付宝功能
  5. php 怎样清除浏览器痕迹,如何清除电脑使用痕迹?上网痕迹清理的方法介绍
  6. Android--高德地图,显示地图,并定位当前的位置
  7. git语法大全(值得收藏)
  8. parameter与argument,property与attribute,这些翻译意思相近的词的区别
  9. html在搜索栏中加入放大镜,CSS3 搜索条动画(放大镜图标展开为长方形输入框)...
  10. 洛谷P5960 【模板】差分约束算法