[Transformer]CSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped Windows

2023-11-02

Paper
Code

Abstract

本文提出的CSWin Transformer是一种高效的通用视觉Transformer框架。Transformer的挑战之一就是其SA计算复杂度,一定程度上限制了Transformer中每个token的交互。为了解决这一问题,本文提出Cross-Shaped Window自注意力机制,可以并行计算水平方向和垂直方向的SA,这里需要将输入切分成等宽的条纹。

本文对切分的宽度做了细致的分析,从而实现较好的精度-计算量的权衡。
此外本文还引入了局部增强的位置编码方法(LePE),比现有的位置编码方法可以更好的利用局部位置信息。LePE可以接受任意分辨率的输入,并且可以迁移到下游任务。

基于以上设计,CSWinTransformer在各种任务中达到了十分可观的性能,在没有额外训练的ImageNet-1K上达到了85.4%的最高精度,目标检测COCO数据集上达到了46.4AP,在ADE20K分割任务上达到了51.7mIoU;如果在InageNet-21K上预训练后精度会进一步提升。

Section I Introduction

Vision Transformer
基于Transformer的模型近期在诸多视觉任务中超过了CNN的性能,通过MHSA机制ViT可以有效的建模长程依赖关系,非常适合处理高分辨率输入迁移到下游任务中;但是SA的计算复杂度一定程度上限制了Transformer的应用。
为了提升Transformer的计算效率,一种经典的方法是限制每一个token的注意力范围,将全局的注意力限制在一定窗口范围内;为了建立窗口之间的联系,有学者提出使用移窗的方式来交换附近窗口之间的信息;但是感受野扩大的仍然比较满,需要堆叠较多的block才能实现全局的注意力。但是一个足够大的感受野范围对最终性能是至关重要的,尤其是对于下游任务,如目标检测、分割。
在这里插入图片描述

因此需要在保证较低计算成本的同时尽可能提升感受范围。
本文提出了CSWin自注意力机制,Fig 1展示了与SA的区别。CSWin中会在水平和垂直方向分别计算注意力,这需要将输入特征分成等宽的条纹,条纹宽度是窗口的重要参数,窗口的形状是十字形的,宽度决定了计算成本以及建模能力。
并且本文还会根据网络的深度来调整条纹的宽度:在浅层次宽度较小,深层次宽度较大;因为宽度越宽允许远程元素之间建立连接,这样可以在增加少部分计算成本的前提上提升网络容量。本文提供了细致的分析,讨论条纹的宽度是如何影响模型建模能力和计算成本的。
值得注意的是,基于CSWin SA,可以将多头注意力也切分成并行的组然后不同的组进行不同的SA运算,这种并行策略并没有增加计算成本,但是却扩大了每一个Transformer block的注意力区域。这与Fig 1右侧其他SA的计算方式有根本性的区别,并且消融实验的结果表示本文的注意力对一般视觉任务更有效。

在CSWin SA的基础上,本文采用层次化设计搭建了CSWin Transformer,为了进一步增强Transformer模型的建模能力,还使用了局部增强的位置编码(LePE),对下游任务更为 友好。与以往的位置编码相比,会在每个block内使用LePE,并且还会作用在注意力结果上,这样使得CSWin Transformer更有效。
CSWin Transformer作为一种视觉Transformer的基准网络,在图像分类、目标检测、语义分割任务中均取得了优异的性能。

Section II Related Work

Vision Transformer
近年来卷积神经网络已经是计算机视觉任务的主流框架,但是近期ViT等基于Transformer的网络框架也展现出惊人的效果;因此诸多工作致力于研究设计更好的Transformer框架用于视觉任务。这些工作都遵循Transformer的层次化设计,但采用了不同的SA机制。分层设计的优点是可以有效利用多尺度特征,然后逐步减少token数目可以降低计算复杂福。本文通过引入十字形窗口和LePE提出了一种新的层次化Transformer网络。

Efficient Self-Attention
在NLP领域已经设计了多种高效注意力机制来提升Transformer处理长序列的效率;由于视觉任务中图像的分辨率往往很高,因此设计高效的注意力机制也是至关重要的。但是目前许多工作依旧采用原始的全注意力机制,计算复杂度是输入分辨率的平方项;为了降低计算复杂度,Swin Transformer等提出使用移窗MSA将注意力局限在窗口之内同时允许窗口之间的交互;Vision Transformer中另一种 有效的是轴向注意力,会沿着水平轴或垂直轴依次应用局部窗口来实现全局注意力,但是这种按顺序和窗口的大小限制了网络的学习能力。

Positional Encoding

由于SA是排列不变的忽略了标记的位置信息,因此Transformer广泛使用positional emcoding来重新添加位置信息,包括绝对位置编码、相对位置编码和条件位置编码。
APE和RPE通常表示为一系列正弦函数或可学习参数,一般针对特定的分辨率,对不同的分辨率很不友好;
CPE则将特征作为输入可以得到任意分辨率的位置编码,然后再将生成的位置编码添加到输入上,一同输入SA模块。


本文的LePE与CPE比较相似,但是会把位置编码作为一个并行的模块添加到SA操作中,会对每个模块投影后的值进行操作。这样将位置编码与自注意力计算解耦,可以获得更强的局部归纳偏置。

Section III Method

在这里插入图片描述

Part 1 Overall Architecture

Fig 2展示了CSWin的网络架构。对于HxWx3的输入,首先采用步长卷积切patch进行patch embedding,window_size = 4;
整个网络包括4个阶段,这样可以获得多尺度的特征表述;相邻两个stage之间使用3x3的步长卷积来减少token数目,通道为数也会加倍。


因此第i个阶段的token数目为:
在这里插入图片描述

每一个阶段的CSWin Transformer Block的结构如右图所示,与原始MHSA有2点区别:
(1)将SA替换为本文的Cross-Shaped Window SA;

(2)使用LePE来增强局部归纳偏置信息,作为与SA并行的一个模块。

Part 2 Cross-Shaped Window Self-Attention

虽然SA可以有效建模远程上下文,但是其计算复杂度与特征大小的平方成正比,因此输入较高分辨率的特征图的计算成本十分高昂。Swin Transformer将SA的计算局限在窗口内来提升计算效率,但是需要堆叠更多的块来获得全局感受野。本文则提出十字交叉的窗口注意力。

Horizontal and Vertical Stripes
根据MHSA的定义,输入的特征首先会映射到K个头,然后每个头在自己子空间内进行SA计算。
对于水平方向的SA,X被均匀划分为等宽的互补重叠的水平条纹[X1,…,Xm],每条包含sw*W个token,sw表示条纹的宽度,通过调节SW来权衡学习能力和计算复杂度。

水平的SA计算为:
在这里插入图片描述

每条的输出会级联在一起。


我们可以将K个注意力头等分,K/2用于水平SA,K/2用于垂直SA的计算,最终的注意力输出表示为二者的级联:

在这里插入图片描述

即将多头注意力分成并行的group,不同的group采用不同的SA计算方式、换言之通过分组来扩大每个token的注意力范围。而原始的SA是对不同的头进行相同的注意力计算,实验结果表明本文的这种分组计算方法性能更好。
计算复杂度分析
对于高分辨率的输入,H,W一般会远远大于通道数C
对于低分辨率(later atage)HW则会小于C
因此可以在早期stage使用较小sw在后期stage使用较大sw,这样通过调整sw可以灵活调整每个token的注意力区域。
在这里插入图片描述

同时还要注意sw应该能被输入尺寸整除,因此本文默认设置为1,2,7,7
Locally-Enhanced Positional Encoding
在这里插入图片描述

LePE是在每个Transformer block内部增加的位置信息,但与RPE不同的地方在于RPE是在attention计算时加入的位置信息,LePE则是更加直接,将位置信息加在线性映射后的value上。参见下式:
在这里插入图片描述

但是也要考虑到如果计算E的所有连接需要的计算成本也很大,因此本文假设:对于特定的输入,最重要的信息来自于该特定位置的附近。

因此本文提出局部增强的位置编码(LePE),结合深度可分离卷积来作用V于alue。这样LePE可以接受任意分辨率的输入。

在这里插入图片描述

## Part 3 CSWin Transformer Block


因此CSWin Transformer Block的计算可以表达为:

在这里插入图片描述

## Part 4 结构变体



Table 1展示了不同规模的CSWin网络,不同的通道数目、不同的注意力头数以及每个stage中的bokck数目组成了Tiny,Small,Base,Large四种规模的网络。


在这里插入图片描述

Section IV Experiments

本文在ImageNet-1K图像分类,COCO目标检测,ADE20K语义分割任务上测试了CSWin Transformer的性能。

Part 1 ImageNet-1K Classification

输入224x224 

AdamW优化器

training epoch = 300 


Table 2是与目前SOTA模型的精度对比,计算量分别是:
tINY模型(约4.3GFLOPs);SMALL模型(约6.8GFLOPs)和Base模型(约15GFLOPs).
可以看到远远超过了Vision Transformer,证明了CSWin强大的学习能力。

与CNN模型相比,也比EfficientNet效果接近甚至超过了;如果在ImageNet-21K上预训练后性能会进一步提升,参见Table 3。
在这里插入图片描述
在这里插入图片描述

Part 2 COCO Detection

CSWin Transformer与Mask R-CNN,级联Mask R-CNN对比做目标检测的结果,对比结果参见Table 4,可以看到CSWin超过Transformer同类。
在这里插入图片描述

Part 3 ADE20K Semantic Segmentation

语义分割backbone选用的是FPN和Upernet网络,Table 6是语义分割的比较结果。可以看到不同规模的CSWin均超过目前的SOTA,具体来说,CSWin-T、CSWin-S、CSWin-B实现了+6.7、+4.0、+3.9与Swin 框架相比,以及比Upernet分别高+4.8、+2.4、+2.7 mIoU。
在这里插入图片描述

Part 4 Ablation Study

为了评估每部分的作用还进行了消融实验。
主要评估sw对网络深度、网络性能的影响以及MHSA的分组设计对性能的影响。
在这里插入图片描述

Table 7展示了消融实验的结果,可以看到sw对扩大注意力范围十分重要,sw =1时精度会显著下降;如果不对head分组也会导致性能有一定下降。


从Table 7最后两行可以看到“先深再浅”网络会比“先浅再深”的网络性能更好,为了验证这一点本文还这几了一个比较浅、宽的网络变体,性能确实变差了。
最后一行则显示使用重叠token embedding的必要性。
在这里插入图片描述

Attention Mechanism

CSWin是本文的核心模块,可以在节省计算的同时实现较强的建模能力。为了验证这一点本文将CSWin与现有的一些SA进行了对比,分别是滑窗SA,移窗SA,空间分离SA和轴向SA。基于的网络是前一节的浅宽设计网络。

Table 8a展示了对比结果,可以看到CSWin的性能比目前其他SA机制都要好;尤其是轴向注意力,虽然可以通过两个模块就捕获全局注意力,但是迁移到下游任务上效果却不是很好,因为它每个block中注意力范围都很小,相当于sw=1的情况。


Positional Encoding Comparison



Table 8(b)则展示了不同位置编码方案的对比结果。
可以看到位置编码通过引入局部归纳偏执带来心梗提升,虽然RPE在不同分辨率的分类任务上取得了较好的性能,但是本文的LePE性能更好。

Section V Conclusion

本文提出的CSWin Transformer核心是十字形的SA,通过将多头注意力分成水平组和垂直组分别进行SA计算,可以有效扩大每个token的注意力范围;另一方面本文还分析了条纹宽度(sw)对网络容量和计算复杂度的影响。
本文还将LePE这种位置编码方案引入设计中,可以迁移到下游任务。
大量实验结果证明了本文CSWin的高效和有效性。在分类、分割、目标检测任务上均达到了SOTA。
期待未来CSWin可以应用到更多任务中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Transformer]CSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped Windows 的相关文章

  • Spring Boot + Vue的网上商城之商品信息展示

    Spring Boot Vue的网上商城之商品信息展示 当实现一个Spring Boot Vue的网上商城的商品信息展示时 可以按照以下步骤进行 后端实现 创建一个Spring Boot项目 并添加所需的依赖 包括Spring Web和Sp
  • gitlab中组的分类及权限介绍

    gitlab基本功能 gitlab是支持人员权限管理的 且在其内部支持分组规划 一般情况下的分组都会对应到研发部的各个部门 比如前端组 后端组 大数据组 数据分析组 测试组 运维组 当然以上的分组配置为一般中小互联网企业的人员架构 若是在大
  • WuThreat身份安全云-TVD每日漏洞情报-2023-05-10

    漏洞名称 Ppick CMS 远程代码执行 RCE 漏洞 漏洞级别 高危 漏洞编号 CVE 2023 25828 CNNVD 202303 2203 相关涉及 Pluck CMS 漏洞状态 POC 参考链接 https tvd wuthre

随机推荐

  • FFTW使用小结

    简介 FFTW Fastest Fourier Transform in the West 是由 MIT 的 Matteo Frigo 博士和 Steven G Johnson 博士开发的一个完全免费的软件包 FFTW 最初的 releas
  • npm install 提示 path xxx/node_modules/node-sass npm ERR! command failed 解决方法

    起因 近期要维护公司的一个后台 该后台是前人基于 go vue admin 开发 但是我前后经历了多次无法进行 npm install 每次安装依赖都出现类似于 path xxx node modules node sass npm ERR
  • Linux伪文件系统proc

    简介 proc文件系统是一个伪文件系统 用作内核数据结构的接口 它通常安装在 proc 其中大部分文件是只读的 但是有些文件允许更改内核变量 目录 1 常用文件 1 1 监控内存 1 2 监控网络 1 3 查看文件锁 1 4 系统统计数据
  • 【H.264/AVC视频编解码技术详解】十六:帧内预测编码的基本原理

    H 264 AVC视频编解码技术详解 视频教程已经在 CSDN学院 上线 视频中详述了H 264的背景 标准协议和实现 并通过一个实战工程的形式对H 264的标准进行解析和实现 欢迎观看 纸上得来终觉浅 绝知此事要躬行 只有自己按照标准文档
  • Base64加解密__完整版有解释

    提示 本文章纯原创 转载请注明原出处 文章目录 前言 MainActivity代码 activity main代码 前言 关于base64加解密 相信各位也看过许多文章 那么今日我出一份完整版的Androidbase64加解密APP Mai
  • git将本地文件push到阿里云Code:出现Permission denied (publickey)错误

    1 问题出现 将本地的 Git 仓库推送到阿里云 出现错误 Permission denied publickey fatal Could not read from remote repository 2 原因 1 原因是SSH keys
  • selenium通过cookie跳过登录验证码实现登录

    一般做ui自动化面对验证码一直是一个问题 在网上页百度了一些关于验证码的问题 有通过把验证码提取下来通过pytesser tesseract OCR 等库处理 但是这些比较麻烦 还是因为本人比较渣看不懂 后来想到了webapi学过cooki
  • react方法返回html_react渲染markdown内容-使用react-markdown

    在react中渲染markdown内容有很多方法 后端将markdown渲染成html返回给前端进行渲染 react将markdown渲染成html进行渲染 react使用框架直接对markdown进行渲染 最方便的就是使用react使用框
  • 在 Windows 下关闭135/139/445端口的方法

    一 关闭 135端口 第一步 运行dcomcnfg 打开 组件服务 计算机 在 我的电脑 上右键点击 选 属性 然后点默认属性 把 在此计算机上启用分布式COM E 的勾去掉 接着返回到 默认协议 移除 面向连接的 TCP IP 协议 这操
  • VMware虚拟机实用经验总结大全

    1 VMware虚拟机实用经验之支持的Guest OS VMWare支持如下Guest OS MS DOS Win3 1 Win9x Me WinNT Win2000 WinXP Win Net Linux FreeBSD NetWare6
  • Vue学习之起步——浅谈文件系统

    学习前谈 大家都知道 Vue是一个比较火的前端框架 作为一个开发者 我们虽然没必要深究其底层原理 但是 它的 文件系统 执行脉络我们还是得梳理清楚的 首先 Vue启动时会进入 main js 即 main js 是入口文件 import V
  • c语言if语句习题,C语言练习

    C语言练习 D 算法只能被有限的用户使用 18 有如下嵌套的if语句 以下选项中与上述if语句等价的语句是 A k aB B b gt C b C B k aD k a 19 有以下程序 程序运行后的输出结果是 A 0 B 1 C 2 D
  • (一)K8S集群部署——master节点部署

    1 集群配置 本次部署使用三台服务器 master 192 168 0 2 node1 192 168 0 4 node2 192 168 0 14 服务器配置均为 CentOS 7 6 64位 8核 16G 100G 2 master部署
  • Unity 3D 读入本地 xml 文件

    Load and Display XML Data in Unity 3D 如果你能翻墙从 youtube 上就可以看到怎么用 using UnityEngine using System Collections
  • IDM怎么设置下载会更快

    虽然IDM的下载速度已经足够彪悍 其优秀的智能动态文件分段功能和安全的分段下载技术 让大多数下载器都望尘莫及 但贪心的我们总是希望下载速度能更快 实际上 IDM也隐藏了部分功力 并可通过配置设置将隐藏的 功力 发挥出来 一般来说 Inter
  • 基于MFC对话框的Windows服务程序

    最近需求要写个服务程序 部分功能用MFC类库实现将非常方便 因此就没打算使用win32的服务程序 虽然那样对于服务很简单 首先写好mfc的对话框程序 调试什么的 功能也都完成好 这一部分和平常的mfc对话框程序没有差别 之后的服务启动后打开
  • Elasticsearch--索引备份与迁移

    Elasticsearch集群备份 以及在不同集群之间迁移数据 类似mongodb的mongodump功能 Elasticsearch也提供了备份集群中索引数据的策略 snapshot API 它会备份整个集群的当前状态和数据 并保存到集群
  • java操作rabbitmq

    JMS JMS是JavaEE规范中的一种 类比JDBC JMS即Java消息服务 JavaMessage Service 应用程序接口 是一个Java平台中关于面向消息中间件的API很多MQ产 品都实现了JMS规范 但RabbitMQ官方并
  • Rsync的配置与使用

    一 介绍 不想看直接可以跳过 Rsync 是一个远程数据同步工具 可通过 LAN WAN 快速同步多台主机间的文件 Rsync 本来是用以取代rcp 的一个工具 它当前由 rsync samba org 维护 Rsync 使用所谓的 Rsy
  • [Transformer]CSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped Windows

    CSWin Transformer 基于交叉十字形窗口的视觉Transformer框架 Abstract Section I Introduction Section II Related Work Section III Method P