【深度学习|特征增强融合模块】MAF (Multi-scale Attention Fusion)一种多尺度的注意力融合模块

【深度学习|特征增强融合模块】MAF (Multi-scale Attention Fusion)一种多尺度的注意力融合模块

【深度学习|特征增强融合模块】MAF (Multi-scale Attention Fusion)一种多尺度的注意力融合模块


文章目录

  • [【深度学习|特征增强融合模块】MAF (Multi-scale Attention Fusion)一种多尺度的注意力融合模块](#【深度学习|特征增强融合模块】MAF (Multi-scale Attention Fusion)一种多尺度的注意力融合模块)
  • MAF (Multi-scale Attention Fusion)
  • 交通运输、机电主题会议
    • [第六届国际科技创新学术交流大会(IAECST 2024) 暨第四届物流系统与交通运输国际学术会议(LSTT 2024)](#第六届国际科技创新学术交流大会(IAECST 2024) 暨第四届物流系统与交通运输国际学术会议(LSTT 2024))
    • [第四届机电一体化与智能控制国际学术会议(MIC 2024)](#第四届机电一体化与智能控制国际学术会议(MIC 2024))
    • [2024年智能船舶与机电系统国际学术会议(ICISES 2024)](#2024年智能船舶与机电系统国际学术会议(ICISES 2024))
  • 测绘遥感、地质主题会议
    • [第三届地理信息与遥感技术国际学术会议(GIRST 2024)](#第三届地理信息与遥感技术国际学术会议(GIRST 2024))
    • [2024年遥感技术与图像处理国际学术会议(RSTIP 2024)](#2024年遥感技术与图像处理国际学术会议(RSTIP 2024))
  • 数学、力学、物理主题会议
    • [第五届应用力学与机械工程国际学术会议(ICAMME 2024)](#第五届应用力学与机械工程国际学术会议(ICAMME 2024))

欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!

祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文:

可访问艾思科蓝官网,浏览即将召开的学术会议列表。会议入口:https://ais.cn/u/mmmiUz

MAF (Multi-scale Attention Fusion)

MAF 是一种多尺度的注意力融合模块,旨在利用多种尺度的信息来增强特征表示。具体地,它结合了多种卷积层和注意力机制,用于捕捉图像中不同尺度的信息,并融合这些信息来生成更加丰富的特征表示。

  • MAF 使用了不同的卷积核大小(通过 dilation 参数控制),以及多种类型的注意力机制(包括通道注意力和空间注意力)。

MAF的主要特征:

  • 多尺度卷积 : 通过使用多个不同膨胀(dilation)率的卷积核(conv1_1, conv2_1, conv3_1)来提取不同尺度的特征。
  • 通道注意力: 通过平均池化和全连接层,学习每个通道的注意力系数,调整特征图的通道权重。
  • 空间注意力: 通过最大池化和平均池化,结合空间信息生成空间注意力图,调节特征图的空间位置权重。
  • 融合输出: 最终通过加法将多种不同来源的注意力特征融合,经过卷积处理后生成输出。

MAF 可以帮助网络聚焦于不同尺度的重要特征,并通过通道和空间注意力机制对特征图进行加权,从而提升模型的特征表达能力。

代码示例:

csharp 复制代码
class MAF(nn.Module):
    def __init__(self, dim, fc_ratio, dilation=[3, 5, 7], dropout=0., num_classes=6):
        super(MAF, self).__init__()

        self.conv0 = nn.Conv2d(dim, dim//fc_ratio, 1)
        self.bn0 = nn.BatchNorm2d(dim//fc_ratio)

        self.conv1_1 = nn.Conv2d(dim//fc_ratio, dim//fc_ratio, 3, padding=dilation[-3], dilation=dilation[-3], groups=dim//fc_ratio)
        self.bn1_1 = nn.BatchNorm2d(dim//fc_ratio)
        self.conv1_2 = nn.Conv2d(dim//fc_ratio, dim, 1)
        self.bn1_2 = nn.BatchNorm2d(dim)

        self.conv2_1 = nn.Conv2d(dim//fc_ratio, dim//fc_ratio, 3, padding=dilation[-2], dilation=dilation[-2], groups=dim//fc_ratio)
        self.bn2_1 = nn.BatchNorm2d(dim//fc_ratio)
        self.conv2_2 = nn.Conv2d(dim//fc_ratio, dim, 1)
        self.bn2_2 = nn.BatchNorm2d(dim)

        self.conv3_1 = nn.Conv2d(dim//fc_ratio, dim//fc_ratio, 3, padding=dilation[-1], dilation=dilation[-1], groups=dim//fc_ratio)
        self.bn3_1 = nn.BatchNorm2d(dim//fc_ratio)
        self.conv3_2 = nn.Conv2d(dim//fc_ratio, dim, 1)
        self.bn3_2 = nn.BatchNorm2d(dim)
        self.relu = nn.ReLU6()

        self.conv4 = nn.Conv2d(dim, dim, 1)
        self.bn4 = nn.BatchNorm2d(dim)

        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Conv2d(dim, dim//fc_ratio, 1, 1),
            nn.ReLU6(),
            nn.Conv2d(dim//fc_ratio, dim, 1, 1),
            nn.Sigmoid()
        )

        self.s_conv = nn.Conv2d(in_channels=2, out_channels=1, kernel_size=5, padding=2)
        self.sigmoid = nn.Sigmoid()

        self.head = nn.Sequential(SeparableConvBNReLU(dim, dim, kernel_size=3),
                                  nn.Dropout2d(p=dropout, inplace=True),
                                  Conv(256, num_classes, kernel_size=1))

    def forward(self, x):
        u = x.clone()

        attn1_0 = self.relu(self.bn0(self.conv0(x)))
        attn1_1 = self.relu(self.bn1_1(self.conv1_1(attn1_0)))
        attn1_1 = self.relu(self.bn1_2(self.conv1_2(attn1_1)))
        attn1_2 = self.relu(self.bn2_1(self.conv2_1(attn1_0)))
        attn1_2 = self.relu(self.bn2_2(self.conv2_2(attn1_2)))
        attn1_3 = self.relu(self.bn3_1(self.conv3_1(attn1_0)))
        attn1_3 = self.relu(self.bn3_2(self.conv3_2(attn1_3)))

        c_attn = self.avg_pool(x)
        c_attn = self.fc(c_attn)
        c_attn = u * c_attn

        s_max_out, _ = torch.max(x, dim=1, keepdim=True)
        s_avg_out = torch.mean(x, dim=1, keepdim=True)
        s_attn = torch.cat((s_avg_out, s_max_out), dim=1)
        s_attn = self.s_conv(s_attn)
        s_attn = self.sigmoid(s_attn)
        s_attn = u * s_attn

        attn = attn1_1 + attn1_2 + attn1_3
        attn = self.relu(self.bn4(self.conv4(attn)))
        attn = u * attn

        out = self.head(attn + c_attn + s_attn)

        return out

交通运输、机电主题会议

第六届国际科技创新学术交流大会(IAECST 2024) 暨第四届物流系统与交通运输国际学术会议(LSTT 2024)

  • 12月6-8日,广州

第四届机电一体化与智能控制国际学术会议(MIC 2024)

  • 12月27-29日,南昌

2024年智能船舶与机电系统国际学术会议(ICISES 2024)

  • 12月27-29日,广州

测绘遥感、地质主题会议

第三届地理信息与遥感技术国际学术会议(GIRST 2024)

  • 11月29日-12月1日,意大利罗马

2024年遥感技术与图像处理国际学术会议(RSTIP 2024)

  • 11月29-12月1日,大理

数学、力学、物理主题会议

第五届应用力学与机械工程国际学术会议(ICAMME 2024)

  • 12月20-22日,长沙
相关推荐
码上解惑11 小时前
从模型接入到应用运行:智能体开发平台的整体架构设计
人工智能·agent·智能体·spring ai
湘美书院--湘美谈教育11 小时前
湘美谈教育湘美书院大湘西文学系列:AI时代的武侠小说怎么写
大数据·人工智能·深度学习·机器学习·生活
Geoking.11 小时前
JSON vs JSONL:从数据格式到 AI Agent 的工程实践
人工智能·深度学习·json
饼干哥哥11 小时前
腾讯会议出AI同传了?这下跨境人开会不用担心哑巴英语了
人工智能·性能优化·腾讯
亲爱的译官.11 小时前
实测|告别手持翻译设备,AR眼镜能否解决跨语言沟通痛点?
人工智能·ar·亲爱的翻译官·翻译设备
Nturmoils11 小时前
把工具变成可发现能力:鸿蒙端动态能力注册表实践
人工智能
ZGIS智博创享11 小时前
矿产数智化专题连载③ | 深挖AI智能找矿内核:以传统成矿理论为根基,算法赋能隐伏矿体突破
人工智能·知识图谱·ai算法·ai找矿·地质找矿逻辑
xd18557855511 小时前
[特殊字符] 宠物美容指南 —— 鸿蒙AI智能助手开发全流程解析
人工智能·华为·harmonyos·鸿蒙·宠物
名不经传的养虾人12 小时前
从0到1:企业级AI项目迭代日记 Vol.71|系统显示正常,但实际上什么都没发生
数据库·人工智能·ai编程·ai工作流·企业ai
Urbano12 小时前
卫衣全工序自动化智造科普:替代工位、设备选型与产能升级方案
大数据·人工智能·自动化