
论文地址:.01507.pdf
CNN中的核心操作就是卷积,早期大多研究都在探索如何增强空间编码能力,以提升CNN的性能。这篇文章探索了通道上的注意力,明确地建模通道间的依赖关系,并提出了一个新颖的模块,称为SE-block。
SE的架构如上图所示,简单描述为:
可以看出,SE的原理还是非常简单,总的来说,SE就是对每个通道上的权重进行了显式建模,然后再对原feature map加权,使其每个通道具有不同的重要程度,也即有了通道注意力机制。
下面给出SE模块的Pytorch实现,可以将下面的代码作为插件用于任意feature map之后,以增强其通道注意力。
import torch
from torch import nnclass SE_Block(nn.Module):def __init__(self, ch_in, reduction=16):super(SE_Block, self).__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1) # 全局自适应池化self.fc = nn.Sequential(nn.Linear(ch_in, ch_in // reduction, bias=False),nn.ReLU(inplace=True),nn.Linear(ch_in // reduction, ch_in, bias=False),nn.Sigmoid())def forward(self, x):b, c, _, _ = x.size()y = self.avg_pool(x).view(b, c) # squeeze操作y = self.fc(y).view(b, c, 1, 1) # FC获取通道注意力权重,是具有全局信息的return x * y.expand_as(x) # 注意力作用每一个通道上
本文发布于:2024-02-27 17:48:31,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1709108128114045.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
| 留言与评论(共有 0 条评论) |