《SENet+SKNet》阅读笔记

本文是关于卷积神经网络的深入研究,探讨了Squeeze-and-Excitation (SE) 模块如何通过通道间的相互依赖提升网络性能,以及Selective Kernel (SK) 块如何实现神经元感受野的动态调整。SE模块通过全局信息嵌入和自适应重新校准提升特征表示,而SK块则利用softmax attention融合不同大小的卷积核,使神经元能根据输入自适应调整感受野。两者的应用和代码实现也被提及。
摘要由CSDN通过智能技术生成

 

Squeeze-and-Excitation Networks

摘要

卷积神经网络建立在卷积运算的基础上,通过融合局部感受野内的空间信息和通道信息来提取信息特征。为了提高网络的表示能力,许多现有的工作已经显示出增强空间编码的好处。在这项工作中,我们专注于通道,并提出了一种新颖的架构单元,我们称之为“Squeeze-and-Excitation”(SE)块,通过显式地建模通道之间的相互依赖关系,自适应地重新校准通道式的特征响应。通过将这些块堆叠在一起,我们证明了我们可以构建SENet架构,在具有挑战性的数据集中可以进行泛化地非常好。关键的是,我们发现SE块以微小的计算成本为现有的最先进的深层架构产生了显著的性能改进。SENets是我们ILSVRC 2017分类提交的基础,它赢得了第一名,并将top-5错误率显著减少到2.251%,相对于2016年的获胜成绩取得了∼25%的相对改进。

第一点:SE模块

其实简单来说:通过池化层和卷积操作,作为每个通道上的权重,相乘。

 SE块是一个计算单元,它可以建立在转换FTR映射输入到特征映射上。 在下面的表示法中,我们将FTR看作一个卷积算子,并使用来表示所学习的一组滤波器核,其中vc指的是c-th滤波器的参数。 然后,我们可以将输出写入,其 中 

 是一个2D空间核,表示一个vc的单通道,作用于x的相应通道。

Squeeze:全局信息嵌入(其实就是个池化操作)

Excitation:自适应重新校正(FC(WZ)之后时候激活函数)

 

特征映射和对应通道的乘积

第二点:模型应用

第三点:模型代码 

from torch import nn
class SELayer(nn.Module):
    def __init__(self, channel, reduction=16):
        super(SELayer, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Linear(channel, channel // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction, channel, bias=False),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avg_pool(x).view(b, c)
        y = self.fc(y).view(b, c, 1, 1)
        #print("x.shape:",x.shape)
        #print("y.expand_as(x).shape:",y.expand_as(x).shape)
        return x * y.expand_as(x)
# #d打印网络结构及参数和输出形状
from torchsummary import summary
net = SELayer(64)
summary(net, input_size=(64,128,128))   #summary(net,(3,250,250))

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值