​ 前言:

前面分享了一篇《继SE,CBAM后的一种新的注意力机制Coordinate Attention》,其出发点在于SE只引入了通道注意力,CBAM的空间注意力只考虑了局部区域的信息,从而提出考虑全局空间信息的注意力机制。

在本文,将介绍另一个基于同样出发点的注意力模块,即Pyramid Split Attention (PSA)。PSA具备即插即用、轻量、简单高效的特点。该模块与ResNet结合,通过PSA替代ResNet的bottleneck中的3x3卷积,组成了EPSANet。

EPSANet用于图像识别,比SENet top-1acc高了1.93%。PSA用在Mask RCNN上,目标检测高了2.7 box AP,实例分割高了1.7 mask AP。

论文:https://arxiv.org/pdf/2105.14447v1.pdf

代码:https://github.com/murufeng/EPSANet

本文出发点

1. SE仅仅考虑了通道注意力,忽略了空间注意力。

2. BAM和CBAM考虑了通道注意力和空间注意力,但仍存在两个最重要的缺点:(1)没有捕获不同尺度的空间信息来丰富特征空间。(2)空间注意力仅仅考虑了局部区域的信息,而无法建立远距离的依赖。

3. 后续出现的PyConv,Res2Net和HS-ResNet都用于解决CBAM的这两个缺点,但计算量太大。

基于以上三点分析,本文提出了Pyramid Split Attention。

PSA

主要操作:将input tensor从通道上分成S组。每一组进行不同卷积核大小的卷积,以获取不同尺度的感受野,提取不同尺度的信息。再通过SE模块,提取每组的通道的加权值,最后对S组的加权值进行softmax归一化并加权。

具体将input tensor分成S组,并对每组进行不同卷积的SPC模块如下图所示。

SPC先将input tensor分成S组,每组的卷积核大小依次增大,如k=3,5,7,9。考虑到当卷积核比较大时,计算量也大,因此,对每一组再进行分组卷积,具体分组数量G = exp(2,(k-1)/2),即2的(k-1)/2次幂。当K = 3,5,7,9时,G=1,2,3,4。

在经过不同大小的卷积后,在通道上拼接。

经过SPC模块后,PSA再将SPC模块的输出通过SE Weight Module获得通道注意力值,这样做的目的是获得不同尺度特征图的注意力权值。

通过这样的做法,PSA融合了不同尺度的上下文信息,并产生了更好的像素级注意力。

最后将每组通道注意力权值拼接,进行softmax归一化,对SPC模块的输出进行加权。

完整的PSA模块如下图所示。

这里补充一下pyramid split attention中的pyramid。在《特征金字塔技术总结》中介绍了特征金字塔的两种构建方式,其中一种就是通过不同大小卷积核的卷积来构建特征金字塔。因此,这里PSA中的Pyramid是由SPC模块中的每组不同大小卷积核的卷积所构建。

EPSANet

如上图所示,将PSA替代ResNet的bottleneck中的3x3卷积,再堆叠几个这样的模块就构成了EPSANet,这里的E,指的是efficient。

网络设计如下图所示。

Conclusion

EPSANet用于图像识别,比SENet top-1acc高了1.93%。PSA用在Mask RCNN上,目标检测高了2.7 box AP,实例分割高了1.7 mask AP。

以ResNet-50和ResNet-101为backbone,加入各种注意力模块的图像识别效果对比

在公众号中回复关键字 “技术总结” 可获取以下文章的汇总pdf。

其它文章

计算机视觉专业术语总结(一)构建计算机视觉的知识体系

欠拟合与过拟合技术总结

归一化方法总结

论文创新的常见思路总结

CV方向的高效阅读英文文献方法总结

计算机视觉中的小样本学习综述

知识蒸馏的简要概述

优化OpenCV视频的读取速度

NMS总结

损失函数技术总结

注意力机制技术总结

特征金字塔技术总结

池化技术总结

数据增强方法总结

CNN结构演变总结(一)经典模型

CNN结构演变总结(二)轻量化模型

CNN结构演变总结(三)设计原则

如何看待计算机视觉未来的走向

CNN可视化技术总结(一)-特征图可视化

CNN可视化技术总结(二)-卷积核可视化

CNN可视化技术总结(三)-类可视化

CNN可视化技术总结(四)-可视化工具与项目

CVPR2021|一个高效的金字塔切分注意力模块PSA的更多相关文章

  1. 想成为一个高效的Web开发者吗?来看看大牛分享的经验吧~ #精选JAVASCRIPT前端开发

    想成为一个高效的Web开发者吗?来看看大牛分享的经验吧~ 作为一个软(ku)件(bi)工(de)程(ma)师(nong),你有没有觉得做什么事都没时间?没时间学习新东西,没时间去回顾.整理原来写的烂代 ...

  2. 写一个适应所有环境的js模块

    说下背景: 在ES6以前,JS语言没有模块化,如何让JS不止运行在浏览器,且能更有效的管理代码, 于是应运而生CommonJS这种规范,定义了三个全局变量: require,exports,modul ...

  3. 成为一个高效的web开发人员,只需要三步

    想成为一名专业的web开发人员并不像你想象的那么容易,开发人员在开发自己的web项目时常常需要牢记很多东西,他们要不断寻找新理念,新创意,在特定时间内开发出高质量的产品,一名优秀的程序员必须明白时间的 ...

  4. 原已经安装好的nginx,现在需要添加一个未被编译安装的模块--echo-nginx-module-0.56

    为了测试一个NGINX变量,将NGINX加了一个编译模板echo-nginx-module-0.56. 参照如下文件 1,先看以前NGINX有哪些东东. sbin/nginx -Vnginx vers ...

  5. [转载]一个高效简洁的Aseprite to Unity导入工具

    原文链接 https://zhuanlan.zhihu.com/p/28644268  期待原作者上传至AssetStore. 今天,我的第一个 Unity 插件 MetaSprite 正式发布了它的 ...

  6. SeaJS:一个适用于 Web 浏览器端的模块加载器

    什么是SeaJS?SeaJS是一款适用于Web浏览器端的模块加载器,它同时又与Node兼容.在SeaJS的世界里,一个文件就是一个模块,所有模块都遵循CMD(Common Module Definit ...

  7. Android:一个高效的UI才是一个拉风的UI(二)

    趁今晚老大不在偷偷早下班,所以有时间继续跟大伙扯扯UI设计之痛,也算一个是对上篇<Android:一个高效的UI才是一个拉风的UI(一)>的完整补充吧.写得不好的话大家尽管拍砖~(来!砸死 ...

  8. 发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser

    发布一个高效的JavaScript分析.压缩工具 JavaScript Analyser 先发一段脚本压缩示例,展示一下JSA语法压缩和优化功能. try { //xxxx(); } catch (e ...

  9. BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块

    NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...

随机推荐

  1. HDU - 3347 Calculate the expression — 模拟 + map存变量

    传送门 题意:从输入开始,1.输入样例数:2.然后输入一组样例中的行数n:3.前n-1行为定义变量(之间使用空格隔开),只需要map存进去就可以了(这里有覆盖的情况,故使用mp["s&quo ...

  2. Redis 集群伸缩原理

    Redis 节点分别维护自己负责的槽和对应的数据.伸缩原理:Redis 槽和对应数据在不同节点之间移动 环境:CentOS7 搭建 Redis 集群 一.集群扩容 1. 手动扩容 (1) 准备节点 9 ...

  3. 为什么数字被int格式化后依旧可以用%s占位(勉强已答)

    为什么数字被int格式化后依旧可以用%s占位 答:可以看作str(obj)

  4. iUploader 2.0 七牛云上传工具

    iUploader 软件介绍: iUploader主要功能将文件上传至七牛云,返回 Markdown 格式的链接到剪贴板 功能介绍: 图片本地压缩 图片右键上传 图片截取上传 图片复制上传 图片拖拽上 ...

  5. [bug] HMaster启动后几秒消失

    参考 https://blog.csdn.net/weixin_44896798/article/details/97800045 https://blog.csdn.net/liudi1993/ar ...

  6. [c++] 模板、迭代器、泛型

    模板 函数模板:重载的进一步抽象,只需定义一个函数体即可用于所有类型 在C++中,数据的类型也可以通过参数来传递,在函数定义时可以不指明具体的数据类型,当发生函数调用时,编译器可以根据传入的实参自动推 ...

  7. [Java] Structs

    背景 基于MVC的WEB框架 在表示层过滤访问请求并处理 步骤 在eclipse中创建Web动态项目 导入相关jar包到WEB-INF/lib 在WEB-INF目录下新建web.xml,配置Filte ...

  8. win10系统U盘读取不了怎么解决 三种方法快速解决&quot;文件或目录损坏且无法读取& 发布时间:2020-06-05 09:19:46 作者:佚名 我要评论

    win10系统U盘读取不了怎么解决 三种方法快速解决"文件或目录损坏且无法读取&   发布时间:2020-06-05 09:19:46   作者:佚名    我要评论 win10电脑 ...

  9. 对于uos目前只能安装商店的感慨,强制安装除外

    对于uos目前只能安装商店的感慨,强制安装除外 jie1018 / 2020-5-16 21:35 浏览: 702 / 回复: 26     个人觉得,在软件不足的情况下,更应该是系统支持,而不是让用 ...

  10. CAD中解决打印图纸模糊而且有的字体深浅不一的方法

    按圈圈中选择打印样式