如何制作公司网站方案,吉林seo策略,wordpress下载页制作,潍坊网站建设咨询CBAM
论文网址#xff1a;CBAM 论文代码#xff1a;CBAM 本文提出了一种卷积块注意力模块#xff08;CBAM#xff09;#xff0c;它是卷积神经网络#xff08;CNN#xff09;的一种轻量级、高效的注意力模块。该模块沿着通道和空间两个独立维度依次推导注意力图#x…CBAM
论文网址CBAM 论文代码CBAM 本文提出了一种卷积块注意力模块CBAM它是卷积神经网络CNN的一种轻量级、高效的注意力模块。该模块沿着通道和空间两个独立维度依次推导注意力图然后将这些注意力图与输入特征图相乘进行自适应特征细化。CBAM 可以无缝集成到任何 CNN 架构中开销几乎可以忽略不计并且可以与基本 CNN 一起进行端到端训练。作者通过在 ImageNet-1K、MS COCO 检测和 VOC 2007 检测数据集上的大量实验验证了 CBAM结果表明各种模型在分类和检测性能上都有一致的提高。论文还讨论了网络工程和注意力机制方面的相关工作并强调了所提出的 CBAM 模块的贡献。
CBAM 模块由两个分支组成通道注意力分支和空间注意力分支。
Channer Attention Module
通道注意力分支旨在捕捉特征图不同通道之间的相互依存关系。它使用全局平均池化操作来获取通道统计信息然后应用两个全连接层来生成通道注意图。然后将这些注意力图与原始特征图按要素相乘以突出重要通道。
class ChannelAttention(nn.Module):def __init__(self, in_planes, ratio16):super(ChannelAttention, self).__init__()self.avg_pool nn.AdaptiveAvgPool2d(1)self.max_pool nn.AdaptiveMaxPool2d(1)self.fc nn.Sequential(nn.Conv2d(in_planes, in_planes // 16, 1, biasFalse),nn.ReLU(),nn.Conv2d(in_planes // 16, in_planes, 1, biasFalse))self.sigmoid nn.Sigmoid()def forward(self, x):avg_out self.fc(self.avg_pool(x))max_out self.fc(self.max_pool(x))out avg_out max_outreturn self.sigmoid(out)Spatial Attention Module
另一方面空间注意力分支侧重于捕捉每个通道内的空间依赖性。它采用挤压-激发操作首先使用全局平均池化技术对输入特征图进行挤压以获得通道统计信息。然后应用两个全连接层生成空间注意力图。这些图随后与原始特征图按元素相乘以强调重要的空间位置。
class SpatialAttention(nn.Module):def __init__(self, kernel_size7):super(SpatialAttention, self).__init__()self.conv1 nn.Conv2d(2, 1, kernel_size, paddingkernel_size//2, biasFalse)self.sigmoid nn.Sigmoid()def forward(self, x):avg_out torch.mean(x, dim1, keepdimTrue)max_out, _ torch.max(x, dim1, keepdimTrue)x torch.cat([avg_out, max_out], dim1)x self.conv1(x)return self.sigmoid(x)CBAM 模块通过元素相加的方式将通道和空间注意力图结合起来。这样该模块就能在网络中学习 关注什么 和 “关注哪里”从而有效改善信息流并增强 CNN 的表示能力。 就是这么简单