点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

作者丨陀飞轮@知乎(已授权)

来源丨https://zhuanlan.zhihu.com/p/360513527

编辑丨极市平台

导读

本文介绍了一种称为Swin Transformer的新型transformer,通过引入CNN中常用的层次化构建方式构建层次化Transformer以及引入locality思想解决transformer迁移至CV上的scale和分辨率的问题。该方法屠榜各大CV任务,代码已公布。

最近Transformer的文章眼花缭乱,但是精度和速度相较于CNN而言还是差点意思,直到Swin Transformer的出现,让人感觉到了一丝丝激动,Swin Transformer可能是CNN的完美替代方案。

作者分析表明,Transformer从NLP迁移到CV上没有大放异彩主要有两点原因:1. 两个领域涉及的scale不同,NLP的scale是标准固定的,而CV的scale变化范围非常大。2. CV比起NLP需要更大的分辨率,而且CV中使用Transformer的计算复杂度是图像尺度的平方,这会导致计算量过于庞大。为了解决这两个问题,Swin Transformer相比之前的ViT做了两个改进:1.引入CNN中常用的层次化构建方式构建层次化Transformer 2.引入locality思想,对无重合的window区域内进行self-attention计算。

相比于ViT,Swin Transfomer计算复杂度大幅度降低,具有输入图像大小线性计算复杂度。Swin Transformer随着深度加深,逐渐合并图像块来构建层次化Transformer,可以作为通用的视觉骨干网络,应用于图像分类、目标检测和语义分割等任务。

Swin Transformer

整个Swin Transformer架构,和CNN架构非常相似,构建了4个stage,每个stage中都是类似的重复单元。和ViT类似,通过patch partition将输入图片HxWx3划分为不重合的patch集合,其中每个patch尺寸为4x4,那么每个patch的特征维度为4x4x3=48,patch块的数量为H/4 x W/4;stage1部分,先通过一个linear embedding将输划分后的patch特征维度变成C,然后送入Swin Transformer Block;stage2-stage4操作相同,先通过一个patch merging,将输入按照2x2的相邻patches合并,这样子patch块的数量就变成了H/8 x W/8,特征维度就变成了4C,这个地方文章写的不清楚,猜测是跟stage1一样使用linear embedding将4C压缩成2C,然后送入Swin Transformer Block。

另外有一个细节,Swin Transformer和ViT划分patch的方式略有不同,ViT是先确定patch的数量,然后计算确定每个patch的尺寸,而Swin Transformer是先确定每个patch的大小,然后计算确定patch数量。这个设计猜测是为了方便Swin Transformer的层级构建。

上图是两个连续的Swin Transformer Block。一个Swin Transformer Block由一个带两层MLP的shifted window based MSA组成。在每个MSA模块和每个MLP之前使用LayerNorm(LN)层,并在每个MSA和MLP之后使用残差连接。

Shifted Window based MSA

上图中红色区域是window,灰色区域是patch。W-MSA将输入图片划分成不重合的windows,然后在不同的window内进行self-attention计算。假设一个图片有hxw的patches,每个window包含MxM个patches,那么MSA和W-MSA的计算复杂度分别为:

由于window的patch数量远小于图片patch数量,W-MSA的计算复杂度和图像尺寸呈线性关系。

另外W-MSA虽然降低了计算复杂度,但是不重合的window之间缺乏信息交流,于是作者进一步引入shifted window partition来解决不同window的信息交流问题,在两个连续的Swin Transformer Block中交替使用W-MSA和SW-MSA。以上图为例,将前一层Swin Transformer Block的8x8尺寸feature map划分成2x2个patch,每个patch尺寸为4x4,然后将下一层Swin Transformer Block的window位置进行移动,得到3x3个不重合的patch。移动window的划分方式使上一层相邻的不重合window之间引入连接,大大的增加了感受野。

但是shifted window划分方式还引入了另外一个问题,就是会产生更多的windows,并且其中一部分window小于普通的window,比如2x2个patch -> 3x3个patch,windows数量增加了一倍多。于是作者提出了通过沿着左上方向cyclic shift的方式来解决这个问题,移动后,一个batched window由几个特征不相邻的sub-windows组成,因此使用masking mechanism来限制self-attention在sub-window内进行计算。cyclic shift之后,batched window和regular window数量保持一致,极大提高了Swin Transformer的计算效率。这一部分比较抽象复杂,不好理解,等代码开源了再补上。

实验结果

放一些实验结果,感受一下Swin Transformer对之前SOTA的降维打击。

图像分类碾压

目标检测碾压

语义分割碾压

目标检测在COCO上刷到58.7 AP(目前第一)

实例分割在COCO上刷到51.1 Mask AP(目前第一)

语义分割在ADE20K上刷到53.5 mIoU(目前第一)

paper: Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

https://arxiv.org/abs/2103.14030

code: https://github.com/microsoft/Swin-Transformer

一作解读: 如何看待Transformer在CV上的应用前景,未来有可能替代CNN吗?

https://www.zhihu.com/question/437495132/answer/1800881612

总结

陀飞轮:网络架构设计:CNN based和Transformer based

https://zhuanlan.zhihu.com/p/348403926

上一篇文章讨论了一下网络架构设计是以CNN为主好还是Transformer为主好的问题,Swin Transformer给出了答案。Swin Transformer 吸收了CNN的locality、translation invariance和hierarchical等优点,形成了对CNN的降维打击。

Swin Transformer改进思路还是源于CNN,Transformer站在巨人的肩膀上又迎来了一次巨大的飞跃,未来Transformer会接过CNN手中的接力棒,把locality、translation invariance和hierarchical等思想继续发扬光大。

本文仅做学术分享,如有侵权,请联系删文。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~

ICCV 2021 best paper-Swin Transformer:对各类SOTA的降维打击!相关推荐

  1. ICCV 2021 Best Paper | Swin Transformer何以屠榜各大CV任务!

    作者:陀飞轮@知乎(已授权) 来源:https://zhuanlan.zhihu.com/p/360513527 编辑:智源社区 近日,Swin Transformer拿到2021 ICCV Best ...

  2. 站在CNN肩膀上的巨大腾飞,Swin Transformer:实现对各类SOTA的降维打击

    作者丨陀飞轮@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/360513527 导读 本文介绍了一种称为Swin Transformer的新型transformer, ...

  3. Transformer在图像复原领域的降维打击,ETH提出SwinIR:各项任务全面领先

    作者丨happy 编辑丨极市平台 本文原创首发于极市平台,转载请获得授权并标明出处. 原文链接:https://arxiv.org/abs/2108.10257 code:https://github ...

  4. ICCV 2021 Oral | 金字塔视觉Transformer(PVT):用于密集预测的多功能backbone

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 本文作者:whai362 |  来源:知乎(已授权) https://zhuanlan.zhihu.com/ ...

  5. ICCV 2021 | LeViT: a Vision Transformer in ConvNet‘s Clothing for Faster Inference论文阅读笔记

    论文:https://arxiv.org/abs/2104.01136 代码(刚刚开源): https://github.com/facebookresearch/LeViT ABSTRACT 我们设 ...

  6. 重磅开源!屠榜各大CV任务!最强骨干网络:Swin Transformer来了

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 本文转载自:Smarter Swin Transformer 代码于2021年4月13日凌晨刚刚开源! ht ...

  7. 【读点论文】A ConvNet for the 2020s,结合swin transformer的结构设计和训练技巧调整resnet网络,在类似的FLOPs和参数量取得更好一点的效果

    A ConvNet for the 2020s Abstract 视觉识别的"咆哮的20年代"始于视觉transformer(ViTs)的问世,它迅速取代ConvNets成为最先进 ...

  8. Swin Transformer理论讲解

    Swin Transformer: Hierarchical Vision Transformer using Shifted Windows Ze Liu, Yutong Lin, Yue Cao, ...

  9. 【读点论文】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows通过窗口化进行局部MSA,sw-MSA融合信息

    Swin Transformer: Hierarchical Vision Transformer using Shifted Windows abstract 本文提出了一种新的视觉transfor ...

  10. Transformer变种—Swin Transformer

    论文名称:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 原论文地址: https://arxiv.or ...

最新文章

  1. 视频和音频播放的演示最简单的例子9:SDL2广播PCM
  2. hiveSql常见错误记录
  3. 计算机动漫设计VR主要学什么,动漫设计专业学什么 要学什么软件
  4. python http协议获取对方的ip地址_http协议(一)基础知识
  5. ubantu下安装Nginx
  6. python和c语言混合编程-python和C语言混编的几种方式
  7. JPush极光推送Java服务器端API
  8. android授权新浪微博 服务端,android应用关于新浪微博授权登陆解决方案
  9. 如何去掉now函数时间中的汉字
  10. 廉租房租赁合同范本(通用模板)
  11. AGV项目底层总结二
  12. 设计一个自然数类,该类的对象能表示一个自然数
  13. apollo学习之---(19)commen-filter学习
  14. 下肢静脉曲张的病因具体有哪些?
  15. oracle 查看指标 tps(Transactions Per Second)
  16. RHCE投资失败!需要及时止损
  17. Farmer John's math(c++)
  18. 地理国情监测类毕业论文文献都有哪些?
  19. 标准linux4.4--驱动开发(二)GPIO驱动编写
  20. 云手机虚拟服务器地址和端口,手机服务器地址端口号

热门文章

  1. JavaScript == 和 ===
  2. C语言中extern关键字详解
  3. Eclipse(PHP、JAVA)的快捷键大全
  4. 深度探索C++对象模型读书笔记(1)
  5. Mail: JMail, System.Net.Mail, System.Web.Mail
  6. SpringBoot多数据源切换详解,以及开启事务后数据源切换失败处理
  7. JNDI 是什么,怎么理解
  8. MySQL 使用utf8mb4代替utf8
  9. C++ 虚函数表详解
  10. 面试中爱问的大数量的问题总结