​ 前言:

前面分享了一篇《继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. 逆向工程初步160个crackme-------1

    放假在家学习的效率真的很低,看完看雪加密解密的前两章就迫不及待的找了几个crackme练习一下,顺便熟悉ollydbg的使用. 工具:exeinfope(查壳工具),ollydbg(2.10版) 1. ...

  2. 2021.02.21cf补题

    B. National Project 题意:总长度为n的公路进行维修,天气是有规律性的,连续g天的好天气,连续b天的坏天气,必须在好天气进行维护,问至少维护n的一半,那么至少需要多少天 思路:必须是 ...

  3. 什么是redis的缓存雪崩, 穿透, 击穿?

    目前的互联网系统没有几个不使用缓存的, 但是只要使用缓存的话就会面临这几个问题, 如使用redis缓存技术, 可能会遇到缓存的雪崩, 穿透, 以及击穿. 首先来看一个简单的正常缓存流程: 如用户访问J ...

  4. [Python] Flask从0到1开发轻量级网页

    概述 Flask采用MVT模型,即Model, Template, View Model:定义数据的存储格式,并且提供了数据库访问的API View:定义那些数据被显示,是业务逻辑处理模块 Templ ...

  5. [笔记] 《c++ primer》书店程序 Chapter7

    Sales_data.h 1 #ifndef SALES_DATA_H 2 #define SALES_DATA_H 3 4 #include "Version_test.h" 5 ...

  6. Docker Swarm(三)Service(服务)分配策略

    Service的分配原則 預設分散至多個nodes上 使用率較低的node優先配置 使用者可自行定義此分配模式 Service分配的3種方式 Service Constraints (服务约束) 参考 ...

  7. Linux_配置认证访问FTP服务

    [RHEL8]-FTPserver:[Centos8]-FTPclient !!!测试环境我们首关闭防火墙和selinux(FTPserver和FTPclient都需要) [root@localhos ...

  8. STM32 SWD下载口无法下载的原因和解决办法

    1.SWD的下载口在程序中被禁用,IO口被设置为普通IO口 2.芯片被锁,原因有可能是程序执行了不正确的访问导致芯片被锁 3.供电不正常 4.SWD烧了 解锁原因: 在下载程序的时候有时候会发生错误导 ...

  9. 基于Centos 7.4 搭建ELK整合SpringBoot日志收集

    基于Centos 7.4搭建es7.12.0+logstash-7.12.0+kibana-7.12.0(ELK)整合SpringBoot日志收集 注:Skywalking和logstash可共用一个 ...

  10. NB-IOT技术与发展问答

    http://blog.csdn.net/pan0755/article/details/70145936 该部分分享的是物联网各垂直应用领域里,NB-IoT技术的部署,看看适合NB-IoT技术的垂直 ...