CBAM[2018-ECCV]
论文细节可以参考link:https://zhuanlan.zhihu.com/p/65529934
- CBA-Module
Channel Attention Module
class CAModule(nn.Module):'''Channel Attention Module'''def __init__(self, channels, reduction):super(CAModule, self).__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.max_pool = nn.AdaptiveMaxPool2d(1)self.shared_mlp = nn.Sequential(nn.Conv2d(channels, channels // reduction, kernel_size=1, padding=0, bias=False),nn.ReLU(inplace=True),nn.Conv2d(channels // reduction, channels, kernel_size=1, padding=0, bias=False))self.sigmoid = nn.Sigmoid()def forward(self, x):input = xavg_pool = self.avg_pool(x)max_pool = self.max_pool(x)x = self.shared_mlp(avg_pool) + self.shared_mlp(max_pool)x = self.sigmoid(x)return input * x
- Spatial Attention Module
class SAModule(nn.Module):'''Spatial Attention Module'''def __init__(self):super(SAModule, self).__init__()self.conv = nn.Conv2d(2, 1, kernel_size=3, padding=1, bias=False) # default kernel_size = 7 x 7self.sigmoid = nn.Sigmoid()def forward(self, x):input = xavg_c = torch.mean(x, 1, True)max_c, _ = torch.max(x, 1, True)x = torch.cat((avg_c, max_c), 1)x = self.conv(x)x = self.sigmoid(x)return input * x
- ResBlock + CBAM
class BasicBlock(nn.Module):expansion = 1def __init__(self, inplanes, planes, stride=1, downsample=None):super(BasicBlock, self).__init__()self.conv1 = conv3x3(inplanes, planes, stride)self.bn1 = nn.BatchNorm2d(planes)self.relu = nn.ReLU(inplace=True)self.conv2 = conv3x3(planes, planes)self.bn2 = nn.BatchNorm2d(planes)self.ca = CAModule(planes)self.sa = SAModule()self.downsample = downsampleself.stride = stridedef forward(self, x):residual = xout = self.conv1(x)out = self.bn1(out)out = self.relu(out)out = self.conv2(out)out = self.bn2(out)out = self.ca(out) * outout = self.sa(out) * outif self.downsample is not None:residual = self.downsample(x)out += residualout = self.relu(out)return out
- Conclusion
- 将CBA-Module集成到不同的backbone中,模型的性能(在分类、检测)都有一致地提升;
- 从对比实验的结果来看,先进行Channel attention,后进行Spatial attention的效果会好一些;
- 对于Spatial attention而言,采用7x7的kernel,结果似乎更好一些;
CBAM[2018-ECCV]相关推荐
- 改进版ASPP(2):ASPP模块中加入CBAM(卷积注意力模块),即CBAM_ASPP
1.ASPP模型结构 空洞空间卷积池化金字塔(atrous spatial pyramid pooling (ASPP))通过对于输入的特征以不同的采样率进行采样,即从不同尺度提取输入特征,然后将所获 ...
- CBAM:融合通道和空间注意力的注意力模块
本文转载自AI公园. 作者:Sik-Ho Tsang 编译:ronghuaiyang 导读 使用CBAM加持的MobileNetV1,ResNeXt&ResNet,WRN优于使用SENet的网 ...
- MyDLNote-360camera: ECCV 2020 结合室内全景图像的三维布局和深度预测
Joint 3D Layout and Depth Prediction from a Single Indoor Panorama Image 2020_ECCV 目录 Abstract Intro ...
- 基于监督学习+自监督学习的智能抠图,精确到发丝 | CVPR 2020
来源 | AI算法与图像处理(ID:AI_study) 华盛顿大学的研究者最近发表的论文在CVPR 2020提供了一个新的和简单的智能抠图方法.你可以在家里做这些日常设置,使用固定或手持相机.我们的方 ...
- 刷新记录,算法开源!字节跳动获人体姿态估计竞赛双冠 | CVPR 2019
整理 | Jane 出品 | AI科技大本营(id:rgznai100) [导读]6 月 16--20 日,计算机视觉与模式识别领域顶会 CVPR 2019 在美国长滩举行.每年的 CVPR 盛会除了 ...
- 相机定位 | cv paper整理
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:梦寐mayshine 链接:https://zhuanlan.zhihu.com/p/13449 ...
- 机器学习、深度学习、自然语言处理、计算机视觉顶级期刊的论文资料分享(附顶会论文下载链接)...
推荐一个Github项目,项目整理了机器学习.深度学习.自然语言处理.计算机视觉等领域的顶会论文全集.超级赞!!! Github项目地址:https://github.com/murufeng/awe ...
- 基于深度学习的目标检测方法综述
引言 现有的深度学习的目标检测方法,可以大致分为两类:一.基于候选区域的目标检测方法:二.基于回归的目标检测方法.依据方法的提出时间,可以构建出如下时间线: 2014 CVPR R-CNN[1] 20 ...
- pytorch 模型同一轮两次预测结果不一样_2020年的最新深度学习模型可解释性综述[附带代码]...
最近low-level vision的炼丹经常出现各种主观评测上的效果问题,无法定位出其对于输入数据的对应关系,出现了问题之后很难进行针对性解决. 这个时候一个很自然的问题就是,都2020年了,深度学 ...
- IoU优化——在Anchor-Free中提升目标检测精度(附源码)
计算机视觉研究院专栏 作者:Edison_G 目前的anchor-free目标检测器非常简单和有效,但缺乏精确的标签分配方法,这限制了它们与经典的基于Anchor的模型竞争的潜力 公众号ID|Comp ...
最新文章
- 求助贴:人工智能offer,阿里or腾讯,选哪个?
- 支持百亿请求的微博广告运维技术实践
- java 科学计算法
- 浏览器和搜索引擎的区别
- 2021牛客多校9 - Cells(推公式+NTT)
- Docker解析及轻量级PaaS平台演练(一)--Docker简介与安装
- 前端学习(2815):小程序学习之开发者工具介绍
- 中国红色旅游消费大数据报告(2021)
- 求有向图中两点最短距离java_Java 迪杰斯特拉算法实现查找最短距离
- WPF RadioButton按钮控件取消选中设置
- vue 自定义键盘组件_vue 自定义 数字键盘+mint UI MessageBox的应用
- 数学动态规划:期望DP
- 《Python学习手册第4版》PDF源代码+《流畅的Python》PDF思维导图
- 点到直线的距离直线的交点及夹角
- 多图赏析联想Windows 8平板ThinkPad Tablet 2
- 怎样使用LeapFTP,LeapFTP使用教程,如何使用LeapFTP上传网站源代码(图解)
- ZlycerQan的 八云蓝(ran )
- 网络上的罗刚·心灵之约
- 计算机网络(16)数据链路层:数据链路层的功能
- IDEA debug热部署配置