Swin Transformer:用Transformer实现CNN多尺度操作

文本是关于Swin Transformer基础知识的了解

论文:https://arxiv.org/pdf/2103.14030

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

实现一个Swin Transformer:Swin Transformer模型具体代码实现-优快云博客

Swin Transformer mlp版本实现:Swin Transformer 变体1:使用MLP代替多头注意力机制-优快云博客

Swin Transformer v2版本实现:Swin Transformer变体2:Swin Transformerv2模型-优快云博客

原理总览:

1、总述:

Swin Transformer和Vision Transformer很像,他们都是将NLP领域的Transformer架构引入计算机视觉领域期待大力出奇迹的产物,不同的是,Vision Transformer由于它固定的尺度(16x16大小的patch),它并不适合密集预测,比较适合于图像分类任务,对于目标检测、语义分割这种任务就有点困难,而且最主要的问题是,ViT使用的是全局注意力机制,这种注意力的最大问题是计算成本和内存消耗太大。而Swin transformer的目标不是做一类任务,它想做视觉任务的骨干模型。

Swin Transformer 做出的第一大改进就是在窗口内计算注意力,这样的话就把复杂度从与图片大小的平方关系改进到了线性关系,因为窗口内计算注意力的计算量相比全局注意力的计算量差距很大,很多个窗口完全可以并行在batch中计算。

第二大改进就是引入了移动窗口,因为Swin Transformer 使用窗口注意力,那么就有一个问题,不同窗口之间的信息怎么交互呢,作者引入了窗口移动机制,使用两个block层,第一个block层中使用现有的窗口做自注意力计算,之后移动窗口,具体来说就是将patch矩阵沿着右下角移动window_size//2个单位,之后在第二个block中计算新的窗口中的注意力计算,在计算完成之后进行反向移动操作,将之前的移位操作复原。

第三大改进就是学习CNN的pooling机制,实现了层次化的多尺度建模,这样的话有助于学习不同尺度的特征,对密集预测十分有帮助,这点在论文的实验结果部分表现得很清楚。

Swin Transformer的这些特性使其与广泛的视觉任务兼容,包括图像分类(在ImageNet-1K上达到87.3%的top-1准确率)和密集预测任务,如目标检测(在COCO测试集上达到58.7的box AP和51.1的mask AP)和语义分割(在ADE20K验证集上达到53.5的mIoU)。其性能超越了之前的最先进水平,COCO上提高了+2.7 box AP和+2.6 mask AP,ADE20K上提高了+3.2 mIoU,展示了基于Transformer的模型作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值