首页 > 其他分享 >(即插即用模块-Attention部分) 四十一、(2023) MLCA 混合局部通道注意力

(即插即用模块-Attention部分) 四十一、(2023) MLCA 混合局部通道注意力

时间:2025-01-12 12:03:42浏览次数:3  
标签:MLCA nn arv self Attention global 2023 local size

在这里插入图片描述

文章目录

paper:Mixed local channel attention for object detection

Code:https://github.com/wandahangFY/MLCA


1、Mixed Local Channel Attention

现有通道注意力机制的局限性: 大多数通道注意力机制只关注通道特征信息,忽略了空间特征信息,导致模型的表达能力或目标检测性能较差。空间注意力模块的复杂性: 现有的空间注意力模块往往结构复杂,计算量大,难以直接应用于轻量级网络模型。这篇论文提出一种 混合局部通道注意力(Mixed Local Channel Attention),MLCA 的提出便是为了解决现有通道注意力机制的局限性,并提高目标检测网络的性能。

MLCA 的基本思想是通过将局部空间信息融入到通道注意力机制中,同时考虑通道信息、空间信息、局部信息和全局信息,从而提高网络的表达效果。

对于输入X,MLCA 的实现过程:

  1. 两步池化: 首先,对输入特征向量进行局部池化,将其转换为 1 * C * ks * ks 的向量,以提取局部空间信息。
  2. 双分支结构: 将输入特征向量分为两个分支:全局信息分支: 使用全局平均池化(GAP)将特征向量转换为 1 * 1 * C 的向量,保留全局信息。局部空间信息分支: 使用局部平均池化(LAP)将特征向量转换为 1 * 1 * C 的向量,保留局部空间信息。
  3. 一维卷积加速: 对两个分支分别进行一维卷积,将特征向量恢复到原始分辨率。
  4. 混合注意力: 将两个分支的特征向量进行融合,得到最终的混合注意力特征图。

Mixed Local Channel Attention 结构图:
在这里插入图片描述

2、代码实现

import torch
import torch.nn as nn
import torch.nn.functional as F
import math


class MLCA(nn.Module):
    def __init__(self, in_size,local_size=5,gamma = 2, b = 1,local_weight=0.5):
        super(MLCA, self).__init__()

        # ECA 计算方法
        self.local_size=local_size
        self.gamma = gamma
        self.b = b
        t = int(abs(math.log(in_size, 2) + self.b) / self.gamma)   # eca  gamma=2
        k = t if t % 2 else t + 1

        self.conv = nn.Conv1d(1, 1, kernel_size=k, padding=(k - 1) // 2, bias=False)
        self.conv_local = nn.Conv1d(1, 1, kernel_size=k, padding=(k - 1) // 2, bias=False)

        self.local_weight=local_weight

        self.local_arv_pool = nn.AdaptiveAvgPool2d(local_size)
        self.global_arv_pool=nn.AdaptiveAvgPool2d(1)

    def forward(self, x):
        local_arv=self.local_arv_pool(x)
        global_arv=self.global_arv_pool(local_arv)

        b,c,m,n = x.shape
        b_local, c_local, m_local, n_local = local_arv.shape

        # (b,c,local_size,local_size) -> (b,c,local_size*local_size)-> (b,local_size*local_size,c)-> (b,1,local_size*local_size*c)
        temp_local= local_arv.view(b, c_local, -1).transpose(-1, -2).reshape(b, 1, -1)
        temp_global = global_arv.view(b, c, -1).transpose(-1, -2)

        y_local = self.conv_local(temp_local)
        y_global = self.conv(temp_global)

        # (b,c,local_size,local_size) <- (b,c,local_size*local_size)<-(b,local_size*local_size,c) <- (b,1,local_size*local_size*c)
        y_local_transpose=y_local.reshape(b, self.local_size * self.local_size,c).transpose(-1,-2).view(b,c, self.local_size , self.local_size)
        # y_global_transpose = y_global.view(b, -1).transpose(-1, -2).unsqueeze(-1)
        y_global_transpose = y_global.view(b, -1).unsqueeze(-1).unsqueeze(-1)  # 代码修正
        # print(y_global_transpose.size())
        # 反池化
        att_local = y_local_transpose.sigmoid()
        att_global = F.adaptive_avg_pool2d(y_global_transpose.sigmoid(),[self.local_size, self.local_size])
        # print(att_local.size())
        # print(att_global.size())
        att_all = F.adaptive_avg_pool2d(att_global*(1-self.local_weight)+(att_local*self.local_weight), [m, n])
        # print(att_all.size())
        x=x*att_all
        return x


if __name__ == '__main__':
    x = torch.randn(4, 512, 7, 7)
    model = MLCA(512)
    output = model(x)
    print(output.shape)

标签:MLCA,nn,arv,self,Attention,global,2023,local,size
From: https://blog.csdn.net/wei582636312/article/details/144951430

相关文章

  • 全国省市县温室气体排放量数据(1970-2023)
    数据简介该数据为每个部门和国家的三种主要温室气体(CO2、CH4、N2O)和氟化气体的排放量估计值。CO2化石和生物成分的排放量是分开提供的。化石CO的排放2(也称为CO2_excl_short-cycle_org_C)包括所有化石CO2来源,例如化石燃料燃烧、非金属矿物工艺(例如水泥生产)、金属(黑色......
  • Life Long Learning(李宏毅)机器学习 2023 Spring HW14 (Boss Baseline)
    1.终身学习简介神经网络的典型应用场景是,我们有一个固定的数据集,在其上训练并获得模型参数,然后将模型应用于特定任务而无需进一步更改模型参数。然而,在许多实际工程应用中,常见的情况是系统可以不断地获取新数据,例如Web应用程序中的新用户数据或自动驾驶中的新驾驶数据。......
  • YOLOv11改进,YOLOv11添加HAttention注意机制用于图像修复的混合注意力转换器,CVPR2023,超
    摘要基于Transformer的方法在低层视觉任务中表现出色,例如图像超分辨率。然而,作者通过归因分析发现,这些网络只能利用有限的空间范围的输入信息。这意味着现有网络尚未充分发挥Transformer的潜力。为了激活更多的输入像素以获得更好的重建效果,作者提出了一种新型的混合注......
  • JavaScript ES2023/2024 新特性学习总结
    JavaScriptES2023/2024新特性学习总结ES2023/2024规范新特性与最佳实践总结作者:在人间耕耘更新时间:2025年1月10日目录前言核心特性概览ES2023新特性实战ES2024新特性实战实际开发应用场景性能与最佳实践总结前言ES2023/2024规范引入多项新特性,本文......
  • 2022-2023 集训队互测 Round 6 - >.<
    不能包含某一条路径,这个东西看起来很像字符串啊!我们把这些路径插入到trie中,建立AC自动机,然后再把\(n\)个单点插进去。在建出来的AC自动机上跑最短路,钦定某些点不能被进入即可。但是因为字符集是\(\mathcalO(n)\)的,所以直接暴力连边复杂度无法接受。考虑连边的过程,是继......
  • YOLOv11改进,YOLOv11自研检测头融合HyCTAS的Self_Attention自注意力机制(2024),并添加小目
    摘要论文提出了一种新的搜索框架,名为HyCTAS,用于在给定任务中自动搜索高效的神经网络架构。HyCTAS框架结合了高分辨率表示和自注意力机制,通过多目标优化搜索,找到了一种在性能和计算效率之间的平衡。#理论介绍自注意力(Self-Attention)机制是HyCTAS框架中的一个重要组......
  • YOLOv8改进,YOLOv8自研检测头融合HyCTAS的Self_Attention自注意力机制,2024,并添加小目标
    摘要论文提出了一种新的搜索框架,名为HyCTAS,用于在给定任务中自动搜索高效的神经网络架构。HyCTAS框架结合了高分辨率表示和自注意力机制,通过多目标优化搜索,找到了一种在性能和计算效率之间的平衡。#理论介绍自注意力(Self-Attention)机制是HyCTAS框架中的一个重要组......
  • (即插即用模块-Attention部分) 三十四、(2022) FACMA 频率感知跨通道注意力
    文章目录1、Frequency-AwareCross-ModalityAttention2、WeightedCross-ModalityFusionmodule3、代码实现paper:FCMNet:Frequency-awarecross-modalityattentionnetworksforRGB-DsalientobjectdetectionCode:https://github.com/XiaoJinNK/FCMNet1、......
  • (即插即用模块-Attention部分) 三十三、(2021) SPA 显著位置注意力
    文章目录1、SalientPositionsAttention2、代码实现paper:SalientPositionsbasedAttentionNetworkforImageClassificationCode:https://github.com/likyoo/SPANet1、SalientPositionsAttention在现有的自注意力机制中,其建模长距离依赖关系方面表现出色......
  • 省级、地级市、地市州盟保障性住房面积数据(2010-2023年)-社科数据
    省级、地级市、地市州盟保障性住房面积数据(2010-2023年)-社科数据https://download.csdn.net/download/paofuluolijiang/90028565https://download.csdn.net/download/paofuluolijiang/90028565保障性住房是中国政府为解决中低收入家庭住房困难而实施的一项重要政策。这类住房......