本文转载自知乎,已获作者授权转载。

链接:https://zhuanlan.zhihu.com/p/353222035

TL;DR
这个工作把金字塔结构引入到Transformer[1]中,使得它可以像ResNet[2]那样无缝接入到各种下游任务中(如:物体检测,语义分割),同时也取得了非常不错的效果。

希望这些尝试能够促进更多下游任务的进一步发展,将NLP领域中Transformer的火把传递到CV的各个任务上。欢迎各位看官试用~


我们主要做了以下几个微小的工作:

1. 分析ViT[3]遗留的问题

大家都知道,在ViT中,作者为图像分类提出了一个纯Transformer的模型,迈出了非常重要的一步。相信大家看到ViT后的第一个想法就是:要是能替代掉恺明大佬的ResNet用在下游任务中岂不是美滋滋。

但是,ViT的结构是下面这样的,它和原版Transformer一样是柱状结构的 。

这就意味着:

1)它全程只能输出16-stride或者32-stride的feature map;

2)一旦输入图像的分辨率稍微大点,占用显存就会很高甚至显存溢出。

图来自ViT的论文[3]。

图来自网络,侵删

2. 引入金字塔结构

计算机视觉中CNN backbone经过多年的发展,沉淀了一些通用的设计模式。
最为典型的就是金字塔结构。

简单的概括就是:

1)feature map的分辨率随着网络加深,逐渐减小;

2)feature map的channel数随着网络加深,逐渐增大。

几乎所有的密集预测(dense prediction)算法都是围绕着特征金字塔设计的,比如SSD[4],Faster R-CNN[5], RetinaNet[6]。

这个结构怎么才能引入到Transformer里面呢?

图来自网络,侵删

试过一堆胡里花哨的做法之后,我们最终还是发现:简单地堆叠多个独立的Transformer encoder效果是最好的(奥卡姆剃刀定律,yes)。

然后我们就得到了PVT,如下图所示。在每个Stage中通过Patch Embedding来逐渐降低输入的分辨率。

其中,除了金字塔结构以外。为了可以以更小的代价处理高分辨率(4-stride或8-stride)的feature map,我们对Multi-Head Attention也做了一些调整。

为了在保证feature map分辨率和全局感受野的同时降低计算量,我们把key(K)和value(V)的长和宽分别缩小到以前的1/R_i。

通过这种方法,我们就可以以一个较小的代价处理4-stride,和8-stride的feature map了。

3. 应用到检测分割上

接下来,我们可以把PVT接入到检测和分割模型上试试水了。PVT替换ResNet非常容易,以大家常用的mmdetection[7]为例,放置好模型的代码文件之后,只需要修改模型的config文件就可以了。

从上面的图中可以看到,PVT在RetinaNet上的效果还是非常不错的。在和ResNet50相同的参数量下,PVT-S+RetinaNet在COCO val2017上的AP可以到40+。

另外我们还基于PVT+DETR[8]和Trans2Seg[9]构建了纯transformer的检测和分割网络,效果也不错。具体参考论文Section 5.4。

最后分享一下我个人的一些不成熟的看法吧。

1. 为什么PVT在同样参数量下比CNN效果好?

我认为有两点 :1)全局感受野和 2)动态权重。

其实本质上,Multi-Head Attention(MHA)和Conv有一些相通的地方。MHA可以大致看作是一个具备全局感受野的,且结果是按照attention weight加权平均的卷积。因此Transformer的特征表达能力会更强。

关于MHA和Conv之间的联系,更多有意思的见解可以拜读下代季峰大佬的An Empirical Study of Spatial Attention Mechanisms in Deep Networks[10]。

2. 后续可扩展的思路

1)效率更高的Attention:随着输入图片的增大,PVT消耗资源的增长率要比ResNet要高,所以PVT更适合处理中等输入分辨率的图片(具体见PVT的Ablation Study)。所以找到一种效率更高的Attention方案是很重要的。

2)Position Embedding:PVT的position embedding是和ViT一样,都是随机的参数,然后硬学的。而且在改变输入图像的分辨率的时候,position embedding还需要通过插值来调整大小。所以我觉得这也是可以改进的地方,找到一种更适合2D图像的方法。

3)金字塔结构:PVT只是一种较简单的金字塔式Tranformer。中间是通过Patch Embedding连接的,或许有更优美的方案。

最后的最后,PVT在分类/检测/分割或其他一些领域上的应用(code/config/model)都会在github.com/whai362/PVT上发布,大家可以star一下,方便后面查看。

论文:https://arxiv.org/abs/2102.12122

源码:https://github.com/whai362/PVT

参考资料

[1]^Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Proceedings of the 31st International Conference on Neural Information Processing Systems. 2017: 6000-6010.

[2]^He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

[3]^Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020.

[4]^Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.

[5]^Ren S, He K, Girshick R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[C]//Proceedings of the 28th International Conference on Neural Information Processing Systems-Volume 1. 2015: 91-99.

[6]^Lin T Y, Goyal P, Girshick R, et al. Focal loss for dense object detection[C]//Proceedings of the IEEE international conference on computer vision. 2017: 2980-2988.

[7]^Chen K, Wang J, Pang J, et al. MMDetection: Open mmlab detection toolbox and benchmark[J]. arXiv preprint arXiv:1906.07155, 2019.

[8]^Carion N, Massa F, Synnaeve G, et al. End-to-end object detection with transformers[C]//European Conference on Computer Vision. Springer, Cham, 2020: 213-229.

[9]^Xie E, Wang W, Wang W, et al. Segmenting transparent object in the wild with transformer[J]. arXiv preprint arXiv:2101.08461, 2021.

[10]^Zhu X, Cheng D, Zhang Z, et al. An empirical study of spatial attention mechanisms in deep networks[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 6688-6697.

END

备注:TFM

Transformer交流群

2D、3D目标检测等最新资讯,若已为CV君其他账号好友请直接私信。

我爱计算机视觉

微信号:aicvml

QQ群:805388940

微博知乎:@我爱计算机视觉

投稿:amos@52cv.net

网站:www.52cv.net

在看,让更多人看到  

大白话Pyramid Vision Transformer相关推荐

  1. 论文:Pyramid Vision Transformer

    Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions 金字塔视觉Tran ...

  2. PVT(Pyramid Vision Transformer)学习记录

    引言与启发 自从ViT之后,关于vision transformer的研究呈井喷式爆发,从思路上分主要沿着两大个方向,一是提升ViT在图像分类的效果:二就是将ViT应用在其它图像任务中,比如分割和检测 ...

  3. Pyramid Vision Transformer(PVT): 纯Transformer设计,用于密集预测的通用backbone

    论文地址:https://arxiv.org/pdf/2102.12122.pdf 官方代码:https://github.com/whai362/PVT 目录 0.摘要 1.引言 2.相关工作 2. ...

  4. 基于Pyramid Vision Transformer(PVT-v2)实现奥特曼识别

    前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...

  5. 论文精读:PVT v2: Improved Baselines with Pyramid Vision Transformer

    论文地址:https://arxiv.org/abs/2106.13797 源码地址:https://github.com/whai362/PVT Abstract 在这项工作中,作者改进了PVT v ...

  6. 【深度学习】(ICCV-2021)PVT-金字塔 Vision Transformer及PVT_V2

    目录 0. 详情 1. 简述 2.主要工作 2.1 ViT遗留的问题 2.2 引入金字塔结构 3.PVT的设计方案 3.1 Patch embedding 代码 3.2position embeddi ...

  7. VIT Adapter【Vision Transformer Adapter for Dense Predictions】论文笔记

    Vision Transformer Adapter for Dense Predictions 论文地址:2205.08534.pdf (arxiv.org) 代码地址:https://github ...

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

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

  9. 【读点论文】A Survey on Vision Transformer,2022年华为诺亚最新综述研究,从发展到任务,整体到局部。ViT有研究价值在于有很多问题还没有解决,真理是阶段性的产物

    A Survey on Vision Transformer Abstract transformer最早应用于自然语言处理领域,是一种主要基于自注意机制的深度神经网络.由于其强大的表示能力,研究人员 ...

最新文章

  1. 2022-2028年中国科学仪器行业研究及前瞻分析报告
  2. 更多 Kinect for Windows 项目揭示
  3. java如何画百分比圆环_canvas绘制百分比圆环进度条
  4. crmeb pc端模板下载_PC端人人影视下载速度如何提高
  5. C/C++ 常见编程技巧!你学会了吗?
  6. 3d游戏编程大师技巧 源代码_C/C++编程入门基础系列:俄罗斯方块小游戏制作,直接源代码分享...
  7. SpringCloud工作笔记0104---SpringCloud和SpringCloudAlibaba的区别
  8. java的equals什么作用_java当中equals函数的作用小结
  9. Linux 开源词典工具及下载链接
  10. DoIP协议设计思路浅析
  11. windows上搭建NFS服务器--haneWIN
  12. Unity实现打飞碟小游戏
  13. 零基础快速入门(二)爬取豆瓣电影——python爬虫实例
  14. 星浩资本-以流程为中心
  15. 传说中 VUE 的“语法糖”到底是啥?
  16. 【Windows】关于Windows Powershell找不到打不开修复方法
  17. 第十一届“认证杯”数学中国数学建模国际赛 (2022 CERTIFICATE AUTHORITY CUP INTERNATIONAL
  18. 【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
  19. python导入股票_利用Python将股票代码表导入表格
  20. 2022 CCF中国软件大会(CCF ChinaSoft)“人工智能安全专刊”论坛成功召开

热门文章

  1. 基于模型协同过滤推荐离线召回:ALS
  2. Matlab 图像采集工具的使用 - Image Acquisition Toolbox【IAT】 + 大恒相机的应用【1】+多个摄像头支持
  3. [ARM]【编译】【实践】 - 浮点编译选项NEON引发的Skia的库Illegal instruction运行错误和解决办法
  4. 【环境搭建005】UBUNTU13.04 android4.08 源码编译实践中遇到的问题
  5. python技术文档_Python技术文档最佳实践
  6. python 找出图片中的差异点,python opencv对目录下图片进行去重的技巧
  7. java函数返回多个值_深入理解被调函数与主调函数之间的传值、传址、值返回、址返回...
  8. 360安全浏览器兼容模式怎么设置_360浏览器及安全卫士怎么减少广告弹出?
  9. html表格展开明细,展开/折叠HTML表格
  10. java中session源码_Spring Session原理及源码分析