Swin Transformer论文解读
文章目录
- 创新点
- 算法
- Patch Merging
- W-MSA
- SW-MSA
- 位置偏置
- 结构变体
- 实验
- ImageNet分类
- COCO目标检测
- ADE20K语义分割
- 消融实验
- 结论
论文: 《Swin Transformer: Hierarchical Vision Transformer using Shifted Windows》
代码: https://github.com/microsoft/Swin-Transformer
创新点
Transformer从语言应用到视觉,主要有两大挑战:
1、图像中目标尺寸变化大;
2、与文本中单词量相比,图像中像素数量更大;
为了解决这些差异,我们提出了一种分层Transformer,其特征是用 Shifted windows 计算的。移位窗口方案通过将 self-attention 计算限制在不重叠的本地窗口上,同时还允许跨窗口连接,从而带来更高的效率;与图像大小相关的的线性复杂度;
性能:
在分类任务ImageNet-1k上,top1 accuracy达到87.3%;在COCO test数据集上检测性能达到58.7AP,分割性能51.1AP;
算法
Swin Transformer结构如图3a所示,
Swin Transformer流程如下:
1、输入 ( N , 3 , 224 , 224 ) (N, 3, 224, 224) (N,3,224,224)图像,经过Patch Partition以及Linear Embedding输出为 ( N , 96 , 56 ∗ 56 ) (N, 96, 56*56) (N,96,56∗56),此处C=96,(该过程通过kernal为patch size=4卷积实现);
2、进入stage1,Swin Transformer Block结构如图3b,主要包括输入W-MSA及SW-MSA。首先进行进行归一化,window partition,window size=7,输出为维度为 ( 64 N , 7 , 7 , 96 ) (64N,7,7,96) (64N,7,7,96);该结果经过attention模块(W-MSA)+FFN;(64个window)(MSA结构可以参考之前文章Transformer结构解读)
3、上述输出经过归一化,x进行偏移window size//2大小,而后进行window partition,window size=7,以及attention模块(SW-MSA)+FFN;
4、上述输出经过patch merging降低分辨率;进入stage2阶段,以此类推;
Patch Merging
为了生成多级分辨率,随着网络加深,通过Patch Merging层实现;
第一个Patch Merging,stage2阶段,对于 ( C , W / 4 , H / 4 ) (C,W/4,H/4) (C,W/4,H/4)的输入,将2*2个patch归为一组,channel 变为4C,分辨率变为之前1/4,输出为 ( 4 C , W / 8 , H / 8 ) (4C,W/8,H/8) (4C,W/8,H/8),其过程类似feat reshape操作;而后降维为2C输出 ( 2 C , W / 8 , H / 8 ) (2C,W/8,H/8) (2C,W/8,H/8);
stage3、stage4输出分辨率分别为 ( 4 C , W / 16 , H / 16 ) , ( 8 C , W / 32 , H / 32 ) (4C,W/16,H/16),(8C,W/32,H/32) (4C,W/16,H/16),(8C,W/32,H/32).
W-MSA
全局self-attention计算成本高,使用window based self-attendtion可降低计算量。如式1为全局attention,式2为使用窗口attention计算复杂度;
self-attention的计算瓶颈在于全图匹配QK,改为窗口内,可大大降低计算量,如式2。
式1,MSA计算复杂度分析如下,
1、MSA生成三个特征向量Q,K,V过成: Q = x ∗ W Q , K = x ∗ W K , V = x ∗ W V Q=x*W^Q,K=x*W^K,V=x*W^V Q=x∗WQ,K=x∗WK,V=x∗WV 。x的维度是 ( h w , C ) (hw,C) (hw,C),W的维度是 ( C , C ) (C,C) (C,C),那么这三项的计算复杂度是 3 h w C 2 3hwC^2 3hwC2;
2、Attention中计算 Q K T QK^T QKT:Q,K,V的维度是 ( h w , C ) (hw,C) (hw,C) ,因此该过程的复杂度是 ( h w ) 2 C (hw)^2C (hw)2C
3、Softmax之后乘V得到Z:因为 Q K T QK^T QKT的维度是 ( h w , h w ) (hw,hw) (hw,hw),所以该过程的复杂度是 ( h w ) 2 C (hw)^2C (hw)2C;
4、 Z Z Z乘矩阵 W Z W^Z WZ得到最终输出:它的复杂度是 h w C 2 hwC^2 hwC2
因此MSA计算复杂度为 4 h w C 2 + 2 ( h w ) 2 C 4hwC^2+2(hw)^2C 4hwC2+2(hw)2C。
式2,W-MSA计算复杂度分析如下,每个window有 M ∗ M M*M M∗M个Patch,
1、计算复杂度为, 3 ∗ ( h / M ) ∗ ( w / M ) ∗ M 2 ∗ C 2 = 3 h w C 2 3*(h/M)*(w/M)*M^2*C^2=3hwC^2 3∗(h/M)∗(w/M)∗M2∗C2=3hwC2;
2、计算复杂度为, ( h / M ) ∗ ( w / M ) ∗ ( M 2 ) ∗ ( M 2 ) ∗ C = h w M 2 C (h/M)*(w/M)*(M^2)*(M^2)*C=hwM^2C (h/M)∗(w/M)∗(M2)∗(M2)∗C=hwM2C
3、计算复杂度为, ( h / M ) ∗ ( w / M ) ∗ ( M 2 ) ∗ ( M 2 ) ∗ C = h w M 2 C (h/M)*(w/M)*(M^2)*(M^2)*C=hwM^2C (h/M)∗(w/M)∗(M2)∗(M2)∗C=hwM2C
4、计算复杂度为, ( h / M ) ∗ ( w / M ) ∗ M 2 C 2 = h w C 2 (h/M)*(w/M)*M^2C^2=hwC^2 (h/M)∗(w/M)∗M2C2=hwC2
因此W-MSA计算复杂度为 3 h w C 2 + 2 M 2 h w C 3hwC^2+2M^2hwC 3hwC2+2M2hwC
SW-MSA
固定窗口缺少窗口之间联系,限制模型表达能力。为此引入shifted window partition方法,如图2所示;
layer l使用均匀窗口分割(W-MSA),layer l+1使用shifted 窗口分割(SW-MSA),生成窗口穿过layer l窗口的边界。
使用shifted window partition将生成更多窗口,并且个别窗口比较小,如图2右侧红色窗口;
因此作者使用cyclic-shift,与常规窗口分割相比,窗口数量相等;如图4所示
但是如图4所示,经过shift后一些在特征图中本不相邻区域,出现在同一窗口,这些区域之间不应进行attention计算,因此作者引入mask机制;
如下图所示,源自issue38
左图为原图经过偏移后结果,以window1举例,QKV为区域1和区域2穿插,但区域1与区域2不想计算attention,区域2由左侧shift而来,因此对应attn_mask如右上角,0与-100如棋盘状穿插,attn_mask加入softmax计算,-100对应结果趋近于0,起到mask作用。
位置偏置
作者在计算Attention过程中增加位置相关偏置项,如式4,
结构变体
Swin结构变体包括以下几种:
Window大小默认M=7,MSA中每个head的序列维度d=32,C表示stage1中隐藏层channel数;layer numbers表示每个stage层数
实验
ImageNet分类
在ImageNet-1K数据上分类性能及计算量比较如表1所示,
COCO目标检测
图2a作者比较Swin-T与ResNet50在四个检测框架下性能;
图2b作者使用Cascade Mask R-CNN检测框架,比较不同模型容量的Swin Transformer与ResNe(X)t性能;在相似参数量、计算量、FPS下Swin Transformer均取得不错性能;
图2c最好结果与之前SOTA进行对比;
ADE20K语义分割
如表3
消融实验
如表4,在分类、检测、分割任务上,作者进行如下比较试验;
- 是否使用shift window,结果表明shift window性能优于固定窗口;
- 不同位置编码方式比较实验,不使用位置编码、ViT中绝对位置编码、式4中增加位置相关偏置项,结果表明增加位置相关偏置项性能提升;式4中去掉 √ d \surd d √d项,性能下降;
作者比较不同attention方法,耗时情况,如表5
Swin Transformer略快于Performer,同时性能优于Performer,如表6,
结论
作者提出一种视觉Transformer,Swin Trnsformer,通过W-MSA及SW-MSA降低计算复杂度,生成多层级特征,证明SW-MSA有效性;在COCO目标检测及ADE20K语义分割任务上均取得SOTA性能;
Swin Transformer论文解读相关推荐
- Transformer论文解读
简介 近年来,注意力(Attention)机制被广泛应用于计算机视觉和自然语言处理领域,仅 CVPR2020 接收的论文中,使用到 Attention 的文章达到 60 篇.随着 Attention ...
- Swin Transformer全方位解读【ICCV2021马尔奖】
前言 前言就是唠唠嗑,想看干货的可以直接看下一节. 今年ICCV的最佳论文还是给到了刷榜各大CV竞赛榜的模型Swin Transformer,研究团队来自MSRA(你大爷还是你大爷啊). 自从ViT. ...
- transformer论文解读_一文读懂transformer(CV专享)
导言: transformer在这两年大火,CV界广泛应用transformer模型,充分吸收其idea到自己的领域.考虑到transformer本是应用于NLP的论文,其中很多内容都形成了共识,因此 ...
- SwinIR: Image Restoration Using Swin Transformer论文笔记
前言 该算法将Swin Transformer应用于图像复原的领域,主要网络结构分为三个部分:①浅层特征提取 ②深层特征提取 ③高质量图像重建.主要应用于图像复原的三个方向,图像超分辨.图像降噪.由于 ...
- Swin Transformer 论文精读,并解析其模型结构
计算机视觉的建模从AlexNet在ImageNet分类挑战的良好表现开始,然后到目标检测的SSD.RCNN.YOLO等模型,一直由CNN主导.直到NLP领域中Transformer的崛起,并经ViT应 ...
- transformer论文解读_【论文解读】ICLR2020 | 深度自适应Transformer
作者 | kaiyuan 整理 | NewBeeNLP 一篇来自ICLR2020,facebook人工智能实验室的论文,关于改进Transformer推理速度的.论文地址:https://arxi ...
- Transformer论文解读一(Transformer)
最近Transformer在CV领域很火,Transformer是2017年Google发表的Attention Is All You Need,主要是针对自然语言处理领域提出的.本系列文章介绍Tra ...
- Vision Transformer 论文解读
原文链接:https://blog.csdn.net/qq_16236875/article/details/108964948 扩展阅读:吸取CNN优点!LeViT:用于快速推理的视觉Transfo ...
- 【Transformer论文解读】TRAR: Routing the Attention Spans in Transformer for Visual Question Answering
TRAR: Routing the Attention Spans in Transformer for Visual Question Answering 一.Background With its ...
最新文章
- 使用回调函数实现图像阈值分析。程序运行后在屏幕中输入阈值,通过改变滑动条实现不同类型的二值化图。
- Windows下Qt程序打包
- Oracle 11.2 安装Oracle 11.1的HR schoma
- java getclass 相等_Java判断2个List集合是否相等(不考虑元素的顺序)
- 边缘检测后去除噪点_修图前vs修图后,原来那些网红“照骗”都是这样修出来的!...
- mysql上一条语句成功_mysql : 获取上一条insert语句
- 小程序支付一定要后台服务器,2.字节跳动小程序支付配置
- python 英语翻译 excel_Excel自动翻译
- html中if判断鼠标,怎样在网页里面检测鼠标
- Vc++安装包_Visual C++ 6.0中文版安装包下载及win11安装教程
- php表格中的caption,HTML中的caption属性是什么意思?caption标签在HTML中的用法(附实例)...
- 京东商城SPU、SKU是如何设计的
- 自主移动机器人模型制作
- String的底层分析 (学习笔记)
- Api --String知识点
- 极客大挑战 2021
- 用计算机实现的动画效果,运用PPT编辑动画效果
- 让 AE 输出 MPEG
- ABP VNext学习日记2
- 亚马逊、ebay、沃尔玛测评自养号大额,退款的卖家需要解决的那些技术原理
热门文章
- viper4android fx6.0,ViPer4android. FX顶级音效!
- Just move in!
- roaming文件夹是什么文件夹,roaming文件夹能删除么?
- vue+element-ui el-pagination 分页后 导出全部数据
- 数据分析:Numpy模块(一)
- MongoDBC++开发(四)bsoncxx::builder::stream::document的增删改查操作
- 【ROC包】分析与可视化ROC——plotROC、pROC
- 关于洛必达法则的一些验证
- 终于不用记英文邮箱名了
- java 插入到完整的classbody_java语法错误,将“}”插入到完整 MethodBody 中