前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重磅开源!屠榜各大CV任务!最强骨干网络:Swin Transformer来了

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

作者头像
AI算法与图像处理
发布2021-04-21 13:05:47
1.1K0
发布2021-04-21 13:05:47
举报
代码语言:javascript
复制

Swin Transformer 代码于2021年4月13日凌晨刚刚开源!

Swin Transformer Official Code已经release啦:

Image Classification:

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

Object Detection:

https://github.com/SwinTransformer/Swin-Transformer-Object-Detection

Semantic Segmentation:

https://github.com/SwinTransformer/Swin-Transformer-Semantic-Segmentation

来源:https://www.zhihu.com/question/451860144/answer/1832191113

Transformer 在CV上的应用前景

在Attention is all you need那篇文章出来之后,就一直在思考一个问题:从建模的基本单元来看,self-attention module到底在vision领域能做什么?从现在回头看,主要尝试的就是两个方向:

1. 作为convolution的补充。绝大多数工作基本上都是从这个角度出发的,比如relation networks、non-local networks、DETR,以及后来的一大批改进和应用。其中一部分是从long-range dependency引入,某种程度上是在弥补convolution is too local;另一部分是从关系建模引入,例如建模物体之间或物体与像素之间的关系,也是在做一些conv做不了的事。

2. 替代convolution。在这个方向上尝试不多,早期有LocalRelationNet、Stand-alone Self-attention Net。如果仅看结果,这些工作基本上已经可以做到替换掉3x3 conv不掉点,但有一个通病就是速度慢,即使是写kernel依然抵不过对conv的强大优化,导致这一类方法在当时并没有成为主流。

到这个时候(2020年左右),我自己其实有一种到了瓶颈期的感觉,作为conv的补充好像做的差不多了,后续的工作也都大同小异,替代conv因为速度的问题难以解决而遥遥无期。

没想到的是,Vision Transformer(ViT)在2020年10月横空出世。

ViT的出现改变了很多固有认知,我的理解主要有两点:1. locality(局部性);2. translation invariance(平移不变性)。从模型本身的设计角度,ViT并不直接具有这两个性质,但是它依然可以work的很好,虽然是需要大数据集的。但DeiT通过尝试各种tricks使得ViT可以只需要ImageNet-1k就可以取得非常不错的性能,使得直接上手尝试变得没那么昂贵。

其实对ViT的accuracy我个人不是特别惊讶,一方面是因为之前在local relation那一系列已经证明了self-attention有替代conv的能力,另一方面是因为19年iclr有一篇paper叫BagNet,证明了直接切patch过网络,在网络中间patch之间没有交互,最后接一个pooling再做classification,结果也已经不错了,在这个的基础上加上self-attention效果更好是可以理解的。

我个人其实惊讶于ViT/DeiT的latency/acc curve,在local relation net里速度是最大的瓶颈,为什么ViT可以速度这么快?仔细对比ViT与local relation可以发现,这里一个很大的区别是,ViT中不同的query是share key set的,这会使得内存访问非常友好而大幅度提速。一旦解决了速度问题,self-attention module在替代conv的过程中就没有阻力了。

基于这些理解,我们组提出了一个通用的视觉骨干网络,Swin Transformer [paper] [code],在这里简单介绍一下。

https://arxiv.org/abs/2103.14030 https://github.com/microsoft/Swin-Transformer

1. 之前的ViT中,由于self-attention是全局计算的,所以在图像分辨率较大时不太经济。由于locality一直是视觉建模里非常有效的一种inductive bias,所以我们将图片切分为无重合的window,然后在local window内部进行self-attention计算。为了让window之间有信息交换,我们在相邻两层使用不同的window划分(shifted window)。

2. 图片中的物体大小不一,而ViT中使用固定的scale进行建模或许对下游任务例如目标检测而言不是最优的。在这里我们还是follow传统CNN构建了一个层次化的transformer模型,从4x逐渐降分辨率到32x,这样也可以在任意框架中无缝替代之前的CNN模型。

Swin Transformer的这些特性使其可直接用于多种视觉任务,包括图像分类(ImageNet-1K中取得86.4 top-1 acc)、目标检测(COCO test-dev 58.7 box AP和51.1 mask AP)和语义分割(ADE20K 53.5 val mIoU,并在其公开benchmark中排名第一),其中在COCO目标检测与ADE20K语义分割中均为state-of-the-art。

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

对比Swin Transformer的实验结果,或许能明白为啥如此受关注!

图像分类方面:

目标检测方面:

语义分割方面:

观察CVPR最新的论文有很多论文开始研究和尝试基于transformer去挖掘并提升现有工作的性能,因此,我们后续也会更加关注这方面的工作分享。如果对你有所帮助,欢迎分享给你身边的小伙伴。

CVPR2021 论文整理(附论文下载):

https://github.com/DWCTOD/CVPR2021-Papers-with-Code-Demo

代码语言:javascript
复制
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI算法与图像处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Transformer 在CV上的应用前景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档