【计算机视觉 | 注意力机制】12种即插即用涨点模块分享!含注意力机制、卷积变体、Transformer变体等

1. GAM - 全局注意力机制

论文名称:Global Attention Mechanism: Retain Information to Enhance Channel-Spatial Interactions全局注意力机制:保留信息以增强通道-空间交互
简介:各种注意力机制被研究用以提高不同计算机视觉任务的性能。然而,之前的方法忽略了保留通道和空间两个方面的信息以增强跨维度交互的重要性。因此,论文提出一种全局注意力机制,通过通道和空间双注意力减少信息损失,增强全局特征交互,从而提升视觉任务的性能。
核心原理:利用通道和空间的双重注意力机制,有效地保留重要信息,优化特征表达,提高任务精度。
在这里插入图片描述

2. STN - 空间变换网络

论文名称:Spatial Transformer Networks空间变换器网络
简介:卷积神经网络定义了一个非常强大的模型类,但仍受限于以计算和参数高效的方式对输入数据空间不变性的缺乏能力。在这项工作中,作者引入了一个新的可学习模块,即空间转换器,它明确地允许网络内的数据进行空间操作。该可微分模块可以插入现有的卷积架构中,赋予神经网络主动根据特征图自身对特征图进行空间变换的能力,而无需任何额外的训练监督或优化过程的修改。
核心原理:STN通过空间变换函数的学习,赋予网络处理空间变换的能力,从而提升空间不变性。
在这里插入图片描述

3. SENet - 挤压和激励网络

论文名称:Squeeze-and-Excitation Networks挤压和激励网络
简介:卷积神经网络建立在卷积操作之上,通过在局部感受野内融合空间和通道信息来提取有效特征。为了增强网络的表示能力,几种最近的方法展示了增强空间编码的好处。在本文中,作者关注通道关系,并提出了一种新的架构单元“Squeeze-and-Excitation”(SE)模块,它通过明确建模通道之间的依赖关系,自适应地重新校准通道级特征响应。
核心原理:通过“Squeeze”和“Excitation”操作,增强通道维度的特征表达能力,提升网络在通道级的表示能力。
在这里插入图片描述

4. DConv - 动态卷积

论文名称:OMNI-DIMENSIONAL DYNAMIC CONVOLUTION全维动态卷积
简介:全维动态卷积(ODConv)是一种新颖的卷积模块,可以作为常规卷积的直接替代,插入到许多CNN架构中。它利用多维注意力机制,沿卷积核的所有四个维度(空间大小、输入通道数、输出通道数和核数量)学习核的互补注意力,以获得更强的特征表达能力。ODConv可以显著提升各种CNN网络的性能,包括轻量级和大型模型,同时参数量不增。即使只用单核,它也可以匹敌或超过现有的多核动态卷积模块。
核心原理:通过学习卷积核的各维度注意力,ODConv在不增加参数的情况下大幅提升网络性能。
在这里插入图片描述

5. FAN - 完全注意力网络

论文名称:Understanding The Robustness in Vision Transformers理解视觉Transformer中的鲁棒性
简介:最新的研究显示,视觉Transformer(ViTs)在处理各种图像损坏时表现出很强的鲁棒性。尽管这种鲁棒性部分归因于自注意力机制,但我们对其中的工作原理还不是很清楚。论文通过引入全注意力网络(FANs)中的注意力通道模块,加强了自注意力在学习鲁棒特征表示方面的作用。
核心原理:通过加强自注意力通道模块,增强自注意力在学习鲁棒特征表示中的作用,提升模型鲁棒性。
在这里插入图片描述

6. CA - 协调注意力

论文名称:Coordinate Attention for Efficient Mobile Network Design协调注意力以实现高效的移动网络设计
简介:移动网络中的通道注意力机制通常会忽略空间位置信息,这对生成位置敏感的注意力图很重要。本文提出了一种坐标注意力机制,将位置编码嵌入到通道注意力中,以获得对位置敏感的注意力。它将通道注意力分解成两个方向的1D特征编码,每个方向聚合一维的特征,这样就可以在一个方向上捕获长程依赖,同时在另一个方向保留精确的位置信息。
核心原理:通过在通道注意力中嵌入位置编码,捕捉长程依赖并保留精确位置信息,提升位置敏感的特征表达。

7. ASFF - 自适应空间特征融合

论文名称:Learning Spatial Fusion for Single-Shot Object Detection学习空间融合用于单阶段物体检测
简介:AS为了处理物体检测中尺度变化的挑战,金字塔特征表示是常见的做法。但是,基于特征金字塔的单阶段检测器,不同尺度特征之间的不一致性是其主要局限。本文提出了一种新颖的数据驱动的金字塔特征融合策略,即自适应空间特征融合。它可以学习空间过滤冲突信息的方式来抑制不一致性,从而提高特征的尺度不变性,并增加很小的推理开销。
核心原理:通过自适应学习空间过滤冲突信息,抑制不一致性,增强特征的尺度不变性。
在这里插入图片描述

8. CFNet - 全新多尺度融合

论文名称:DNET: A CASCADE ENCODER-DECODER NET-WORK FOR DENSE PREDICTIONDNET:用于稠密预测的级联编码器-解码器网络
简介:CFNet通过级联编码器-解码器网络结构进行多尺度特征融合,适用于稠密预测任务。
核心原理:通过共享编码器-解码器结构,强化多尺度特征的融合,提高模型在稠密预测任务中的性能。
在这里插入图片描述

9. simAM - 简单无参数注意力模块

论文名称:SimAM: A Simple, Parameter-Free Attention Module for Convolutional Neural NetworksSimAM:一种简单的无参数注意力模块
简介:论文提出一个简单高效的卷积神经网络注意力模块SimAM。不同于现有逐通道或空间注意力,SimAM不增加网络参数就可以为层内特征图推断三维注意力。具体来说,作者定义一个能量函数并导出闭式解来发现每个神经元的重要性,用少于10行代码实现。SimAM运算符选择基于能量函数解得出,避免结构调优。
核心原理:使用能量函数来计算每个神经元的重要性,无需结构调整和额外参数,简化计算过程。
在这里插入图片描述

10. 三重注意力模块

论文名称:Rotate to Attend: Convolutional Triplet Attention Module旋转以注意:卷积三重注意力模块
简介:本文研究了一种轻量级但有效的注意力机制——三元组注意力,它通过三分支结构和旋转操作来捕获输入张量不同维度之间的交互,从而计算注意力权重。该方法可以轻松集成到典型的CNN模型中,对计算和参数量影响很小。

核心原理:通过旋转和三分支结构的组合捕获输入特征的多维交互,有效提升网络性能。

11. SQR - 选择性查询回忆

论文名称:选择性查询回忆增强基于查询的目标检测训练
简介:这篇论文研究了基于查询的目标检测器在最后解码阶段预测错误而在中间阶段预测正确的现象。通过回顾训练过程,作者归因该现象于两个限制:后期阶段缺乏训练强调以及解码顺序导致的级联错误。为此,作者设计了选择性查询回忆(SQR)策略来增强基于查询的目标检测器的训练。该策略累积收集中间查询,并选择性地将其直接输入后期阶段,从而强调后期阶段的训练,并让后期阶段可以直接使用中间查询。
核心原理:通过选择性回忆中间查询,并直接输入后期阶段,增强后期阶段的训练效果。
在这里插入图片描述

12. 语义感知的域泛化分割模型

论文名称:语义感知的域泛化分割
简介:该框架本文提出了一个框架来解决语义分割的域泛化问题,其中分割模型在源域训练后需要在未见的数据分布不同的目标域上进行泛化。该框架包含两个新模块:语义感知正则化(SAN)和语义感知拉伸(SAW)。SAN通过类别级的特征中心对齐来促进不同域之间的域不变性。SAW在已经对齐的特征上施加分布对齐来增强类别间的区分度。
核心原理:通过语义感知正则化和语义感知拉伸,增强不同域之间的领域不变性,提高类别区分度。
在这里插入图片描述

### 即插即用卷积模块替换传统卷积层 在深度学习框架中,尤其是像PyTorch这样的库,可以方便地通过继承`nn.Module`类创建自定义的卷积层,并将其无缝集成到现有的模型架构中。对于想要替换成更高效的即插即用(Plug-and-Play, PnP)卷积模块的情况,通常涉及以下几个方面: #### 设计PnP卷积层 设计一个新的卷积操作时,需考虑其内部参数初始化方式以及前向传播逻辑。假设有一个名为`CustomConv2d`的新卷积层,它可以在不修改原有网络结构的前提下直接替代标准的`torch.nn.Conv2d`。 ```python import torch from torch import nn class CustomConv2d(nn.Module): def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, padding=0, dilation=1, groups=1, bias=True): super(CustomConv2d, self).__init__() # 初始化权重和其他必要的属性... self.conv = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding, dilation=dilation, groups=groups, bias=bias) def forward(self, x): return self.conv(x) ``` 此代码片段展示了一个简单的自定义卷积层模板[^1]。实际应用中的PnP卷积可能会引入额外的功能特性,比如动态调整感受野大小、采用不同的激活函数或正则化策略等。 #### 替换现有模型中的卷积层 要将上述定制化的卷积层应用于预训练好的模型或其他已有项目里,只需遍历整个模型图谱,找到所有类型的`nn.Conv2d`实例并用新构建的对象取代之。下面是一个用于执行这一过程的小工具函数示例: ```python def replace_conv_layers(model, new_layer_class=CustomConv2d): """ 遍历给定model对象内的每一层, 如果该层属于nn.Conv2d,则用new_layer_class代替。 参数: model (nn.Module): 要处理的目标模型. new_layer_class (type): 新型卷积层对应的类,默认为CustomConv2d. 返回值: None: 修改后的变化会反映在传入的model上. """ for name, module in list(model.named_children()): if isinstance(module, nn.Conv2d): setattr(model, name, new_layer_class( in_channels=module.in_channels, out_channels=module.out_channels, kernel_size=module.kernel_size, stride=module.stride, padding=module.padding, dilation=module.dilation, groups=module.groups, bias=(module.bias is not None))) elif len(list(module.children())) > 0: replace_conv_layers(module, new_layer_class=new_layer_class) # 使用方法如下: pretrained_model = ... # 加载预先训练过的模型 replace_conv_layers(pretrained_model, CustomConv2d) ``` 这段脚本展示了如何递归访问子模块,并利用反射机制(`setattr`)完成旧有组件至新型号之间的转换工作。 #### 测试与验证 更换完成后应当进行全面测试以确认新的实现不会破坏原始功能。这包括但不限于对比输出特征映射的一致性、评估性能指标的变化趋势等方面。此外,在迁移过程中还需特别留意不同版本间API接口差异可能带来的兼容性挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值