当前位置: 首页 > web >正文

(即插即用模块-特征处理部分) 四十五、(2024 TGRS) SFF 浅层特征融合模块

在这里插入图片描述

文章目录

  • 1、Shallow-level Feature Fusion
  • 2、代码实现

paper:A Multilevel Multimodal Fusion Transformer for Remote Sensing Semantic Segmentation

Code:https://github.com/sstary/SSRS


1、Shallow-level Feature Fusion

弥补传统融合方法的不足:现有的多模态融合方法通常只关注深层特征融合,忽略了浅层特征中包含的丰富细节信息。解决不同模态数据的异质性:不同模态数据之间存在统计特性和噪声水平的差异,直接融合可能会导致信息丢失或混淆。降低对 DSM 数据的依赖:DSM 数据虽然可以提供重要的高度信息,但其获取成本较高。SFF 模块可以降低对 DSM 数据的依赖,即使在缺少 DSM 数据的情况下,也能取得较好的分割效果。而这篇论文提出一种 浅层特征融合模块(Shallow-level Feature Fusion Module),SFF 模块通过融合浅层特征,可以更好地保留物体细节,例如形状、边界、颜色和纹理等,从而提高分割精度。

SFF 模块的核心思想是利用卷积神经网络 (CNN) 的局部感知能力,分别提取不同模态数据的浅层特征,并进行融合。具体来说,SFF 模块包含两个分支,分别处理可见光图像 (VIS) 和 DSM 数据:

SFF 模块的实现过程如下:

  1. 特征提取:使用 CNN 分别提取 VIS 和 DSM 数据的浅层特征。
  2. Squeeze-and-Excitation (SE) 模块:使用 SE 模块对聚合后的特征进行通道注意力建模,增强重要特征并抑制不相关特征。
  3. 特征融合:将两个分支的特征进行加权求和,得到最终的浅层特征表示。

Shallow-level Feature Fusion 结构图:
在这里插入图片描述


2、代码实现

import torch
import torch.nn as nn""" 官方github里没找到代码,但结构不复杂,复现了一下 """
class SELayer(nn.Module):def __init__(self, channel, reduction=16):super(SELayer, self).__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.fc = nn.Sequential(nn.Linear(channel, channel // reduction, bias=False),nn.ReLU(inplace=True),nn.Linear(channel // reduction, channel, bias=False),nn.Sigmoid())def forward(self, x):b, c, _, _ = x.size()y = self.avg_pool(x).view(b, c)y = self.fc(y).view(b, c, 1, 1)return x * y.expand_as(x)class SFF(nn.Module):def __init__(self, in_channels):super(SFF, self).__init__()self.se = SELayer(in_channels)def forward(self, dms, vis):dms = self.se(dms)vis = self.se(vis)return dms + visif __name__ == '__main__':x = torch.randn(4, 16, 128, 128).cuda()y = torch.randn(4, 16, 128, 128).cuda()model = SFF(16).cuda()out = model(x,y)print(out.shape)
http://www.xdnf.cn/news/3280.html

相关文章:

  • 远程 Debugger 多用户环境下的用户隔离实践
  • 12.SpringDoc OpenAPI 功能介绍(用于生成API接口文档)
  • malloc的实现原理
  • [Android 15] 在GlobalActionsDialog 中新增项目
  • 业务部绩效考核关键指标与数据分析
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十讲)
  • 第六部分:实战项目与拓展
  • Windows下Dify安装及使用
  • 【AI提示词】SWOT分析师
  • Qt快速上手:QSettings高效配置读写实战指南
  • 解锁Windows异步黑科技:IOCP从入门到精通
  • 基于SpringBoot的母婴商城系统设计与实现(附源码+PPT+论文)
  • 电脑重复图片太多?推荐一款开源的图片去重工具ImageContrastTools
  • 你的Java项目经历,是金子还是沙子?
  • 快充诱骗协议芯片的工作原理及应用场景
  • 可视化网页自动化流程管理工具
  • 混合开发与平台集成:自定义插件开发
  • 【C++QT】Combo Box 组合框控件详解
  • intellij idea最新版git开启Local Changes
  • VARIAN安捷伦真空泵维修清洁保养操作SOP换油操作流程内部转子图文并茂内部培训手侧
  • 算法设计:分治法的基础原理与应用
  • 【C/C++】线程池_学习笔记
  • 对于C++中的STL,push_back()和emplace_back()有什么区别?
  • 深度估计研究方向常用数据集介绍
  • PID控制中,一阶低通滤波算法
  • 08 Python集合:数据 “去重神器” 和运算魔法
  • 机器指标监控技术方案
  • 基于5G AIOT技术的未来社区解决方案PPT(45页)
  • ubuntu22.04 qemu arm64 环境搭建
  • 数据编码(Encoding)