介绍
摘要
为了提高各种计算机视觉任务的性能,研究了多种注意力机制。然而,现有方法忽视了保留通道和空间两个方面信息的重要性,以增强跨维度的交互。因此,我们提出了一种全局注意力机制,通过减少信息损失和放大全局交互表示来提升深度神经网络的性能。我们引入了带有多层感知器的3D排列用于通道注意力,同时结合了卷积空间注意力子模块。在CIFAR-100和ImageNet-1K上的图像分类任务评估中,表明我们的方法在ResNet和轻量级MobileNet上稳定地优于几种最新的注意力机制。
YOLOv11目标检测创新改进与实战案例专栏
点击查看文章目录: YOLOv11创新改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例
点击查看专栏链接: YOLOv11目标检测创新改进与实战案例
文章链接
论文地址:论文地址
代码地址:代码地址
基本原理
全局注意力机制(Global Attention Mechanism)是一种用于增强深度神经网络性能的技术,特别是在计算机视觉任务中。该机制的技术原理在于通过保留通道和空间方面的信息,以增强跨维度的交互作用。相较于以往方法,全局注意力机制着重于在处理通道和空间信息时保持全局交互的重要性。
该机制采用了一种全新的方法来处理通道和空间信息,以提高深度神经网络的性能。具体而言,全局注意力机制结合了3D置换与多层感知器用于通道注意力,同时还包括一个卷积空间注意力子模块。这些组件共同作用,旨在减少信息损失并放大全局维度交互特征。
在技术实现上,全局注意力机制通过对输入特征图进行处理,得到中间状态和输出状态。其中,通道注意力图和空间注意力图分别用于捕获通道和空间维度的重要特征。通过元素级乘法操作,这些注意力图与输入特征图进行交互,从而实现全局跨维度的信息交互。
核心代码
import torch
import torch.nn as nn
class GAM(nn.Module):
def __init__(self, in_channels, out_channels, rate=4):
super().__init__()
in_channels = int(in_channels)
out_channels = int(out_channels)
inchannel_rate = int(in_channels/rate)
self.linear1 = nn.Linear(in_channels, inchannel_rate)
self.relu = nn.ReLU(inplace=True)
self.linear2 = nn.Linear(inchannel_rate, in_channels)
self.conv1=nn.Conv2d(in_channels, inchannel_rate,kernel_size=7,padding=3,padding_mode='replicate')
self.conv2=nn.Conv2d(inchannel_rate, out_channels,kernel_size=7,padding=3,padding_mode='replicate')
self.norm1 = nn.BatchNorm2d(inchannel_rate)
self.norm2 = nn.BatchNorm2d(out_channels)
self.sigmoid = nn.Sigmoid()
task与yaml配置
详见:https://blog.csdn.net/shangyanaf/article/details/143099416