SEnet

最近看一些人脸识别的论文使用了SEnet,所以认真看了下SEnet的代码。SEnet多加的支路几行代码就搞定。SEnet使用并联结构添加了对通道的注意力机制:
在这里插入图片描述
在这里插入图片描述
这种并联结构在deformable convolution中也见过:
在这里插入图片描述

### SENet 深度学习网络结构介绍 #### SE块的工作原理 SENet(Squeeze-and-Excitation Network)引入了一种新的机制来改进卷积神经网络的表现力。该方法的核心在于设计一种称为SE块的组件,它能够自适应地重新校准通道之间的关系。 具体来说,在传统的卷积操作之后,SE块会执行两个主要的操作: 1. **挤压(Squeeze)**:全局池化层将每个二维特征图的空间维度压缩成单一数值,从而得到一个关于整个空间位置的信息摘要向量。这一步骤有效地捕捉到了输入图像的整体特性[^5]。 2. **激励(Excitation)**:接着是一个全连接层加上ReLU激活函数以及sigmoid激活函数组成的子网,用于建模不同通道间的关系并生成权重系数。这些系数反映了各个通道的重要性程度,并最终乘回到原来的特征图上去调整其响应强度。 #### 应用实例 SE块可以方便地嵌入到现有的各种经典CNN架构之中,比如ResNet、Inception等。对于每一个基础模块而言,只需在其内部加入上述提到的SE机制即可实现增强效果。例如,在构建SE-Inception时,转换 \( \mathbf{F}_{tr} \) 被视为一个完整的Inception模块;而在创建SE-ResNet时,则将其应用于残差模块的非恒等映射分支部分。 ```python import torch.nn as 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), nn.ReLU(inplace=True), nn.Linear(channel // reduction, channel), 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) return x * y.expand_as(x) # Example usage with Residual Block class SEResBlock(nn.Module): expansion = 1 def __init__(self, inplanes, planes, stride=1, downsample=None): super(SEResBlock, 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.se = SELayer(planes) self.downsample = downsample self.stride = stride def forward(self, x): residual = x out = self.conv1(x) out = self.bn1(out) out = self.relu(out) out = self.conv2(out) out = self.bn2(out) out = self.se(out) if self.downsample is not None: residual = self.downsample(x) out += residual out = self.relu(out) return out ``` 通过这种方式,SENet不仅提高了模型的学习能力,还能够在多个数据集上取得更好的分类准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值