当前位置:   article > 正文

一种高效的通道注意力机制CEA模块_高效通道注意力模块

高效通道注意力模块

通道注意力有效提升了CNN的性能,但是随着一系列复杂注意力模块的提出不可避免增加了计算成本。为了平衡性能和复杂度,论文《ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks》设计了一种超轻量级的注意力模块-ECA Module(Efficient Channel Attention)来提升大型CNN的性能。ECA Module只包含k个参数(k<=9)。

分析SE注意力机制,发现避免降维和适当的跨通道交互对于学习有效和高效的通道注意分别很重要。在此基础上提出了ECA注意力机制,应用了一种不降维的局部跨通道交互策略,该策略可以通过一维卷积有效地实现。

论文中提出的ECA模块的结构图如下所示:

ECA模块的代码实现如下:

  1. import torch
  2. from torch import nn
  3. from torch.nn.parameter import Parameter
  4. class eca_layer(nn.Module):
  5. """Constructs a ECA module.
  6. Args:
  7. channel: Number of channels of the input feature map
  8. k_size: Adaptive selection of kernel size
  9. """
  10. def __init__(self, channel, k_size=3):
  11. super(eca_layer, self).__init__()
  12. self.avg_pool = nn.AdaptiveAvgPool2d(1)
  13. self.conv = nn.Conv1d(1, 1, kernel_size=k_size, padding=(k_size - 1) // 2, bias=False)
  14. self.sigmoid = nn.Sigmoid()
  15. def forward(self, x):
  16. # feature descriptor on the global spatial information
  17. y = self.avg_pool(x)
  18. # Two different branches of ECA module
  19. y = self.conv(y.squeeze(-1).transpose(-1, -2)).transpose(-1, -2).unsqueeze(-1)
  20. # Multi-scale information fusion
  21. y = self.sigmoid(y)
  22. return x * y.expand_as(x)

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号