SK 注意力模块 原理分析与代码实现

本文详细介绍了SK注意力模块,一种通道注意力模块,适用于视觉模型,能提升模型精度。SK模块基于SE模块改进,通过不同尺寸的卷积核自动选择特征,实现通道注意力。文中还提供了SK模块的实现代码和在模型中的应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文介绍SK模块,一种通道注意力模块,它是在SK-Nets中提出的,SK-Nets是2019 CVPR中的论文;SK模块可以被用于CV模型中,能提取模型精度,所以给大家介绍一下它的原理,设计思路,代码实现,如何应用在模型中。

一、SK 注意力模块

SK 注意力模块,它是一种通道注意力模块;常常被应用与视觉模型中。支持即插即用,即:它能对输入特征图进行通道特征加强,而且最终SK模块输出,不改变输入特征图的大小。

  • 背景:它在SE注意力模型的基础上进行改进;SK在学习通道注意力信息中,通过网络自己学习,来选择融合不同感受野的特征图信息
  • 设计
### SKNet 中的多尺度卷积 #### 网络架构概述 SKNet 的核心在于其引入的选择性核 (Selective Kernel, SK) 卷积模块,该模块允许网络动态调整不同尺度的感受野。这使得模型能够在训练过程中自动学习到最适合当前任务的卷积核尺寸组合[^2]。 #### 多尺度卷积实现细节 为了实现在单个层内处理多种感受野的能力,SK卷积采用了分组机制来创建多个分支,在每个分支上应用不同的扩张率或标准卷积操作。具体来说: 1. **基础路径**:保持不变的空间分辨率; 2. **扩展路径**:通过设置较大的膨胀因子(dilation rate),扩大了局部区域内的连接范围而不增加额外参数; 之后,这些来自不同子空间变换后的特征映射会被聚合起来形成最终输出。这种设计不仅保留了原始输入的信息完整性,还增强了对于复杂模式的理解能力。 ```python import torch.nn as nn class SelectiveKernelConv(nn.Module): def __init__(self, in_channels, out_channels, stride=1, groups=32, radix=2, reduction_rate=4): super().__init__() inter_channels = max(in_channels * radix // reduction_rate, 32) self.paths = nn.ModuleList([ nn.Sequential( nn.Conv2d(in_channels, out_channels//radix, kernel_size=(3, 3), padding=dil, dilation=dil, bias=False), nn.BatchNorm2d(out_channels//radix), nn.ReLU(inplace=True)) for dil in [1, 2]]) # Example of two paths with different dilation rates self.global_pool = nn.AdaptiveAvgPool2d(output_size=(1, 1)) self.fc_reduce = nn.Linear(out_channels, inter_channels) self.fc_expand = nn.Linear(inter_channels, out_channels*radix) def forward(self, x): U = sum([path(x).unsqueeze(dim=-1) for path in self.paths]) / len(self.paths) S = self.global_pool(U.sum(-1)).squeeze() Z = self.fc_reduce(S) attention_weights = F.softmax(self.fc_expand(Z).view(*U.shape[:2], -1), dim=-1) V = torch.sum(U * attention_weights.unsqueeze(-1) return V ``` 此代码片段展示了如何构建一个多尺度感知的SK卷积层,其中包含了两个具有不同膨胀系数的并行路径,并利用全局平均池化和全连接层实现注意力权重的学习过程。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗小树x

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值