首页 > 其他分享 >【特征融合】卷积神经网络中的特征融合方式有哪些??让我们一起看看!

【特征融合】卷积神经网络中的特征融合方式有哪些??让我们一起看看!

时间:2024-09-12 11:49:44浏览次数:11  
标签:卷积 融合 feature 特征 64 tf import

【特征融合】卷积神经网络中的特征融合方式总结与探索…

【特征融合】卷积神经网络中的特征融合方式总结与探索…


前言:

  • **在深度学习中,**特征融合(Feature Fusion)是一种将不同特征图或不同层的输出进行组合的技术,旨在提升模型的表现。特征融合主要用于增强特征表示能力,特别是在处理多尺度特征、跨模态任务、以及需要融合多个来源的信息时尤为重要。

常见的特征融合方式

  • 串联(Concatenation)

  • 加法(Addition)

  • 乘法(Multiplication/Attention)

  • 全局池化(Global Pooling)

  • 特征金字塔网络(Feature Pyramid Network, FPN)

  • 跨模态融合(Cross-Modal Fusion)

  • 自注意力机制(Self-Attention Mechanism)


1. 串联(Concatenation)

  • 概念:将多个特征图在某一维度上进行拼接,通常是在深度(通道)维度上拼接。串联可以保留每个特征图的完整信息,但可能会增加参数量。

  • 应用UNet——在图像分割任务中,UNet模型在下采样和上采样路径之间使用了跳跃连接,通过串联低层特征和高层特征,提升模型的分割效果。

  • 代码示例

import tensorflow as tf
from tensorflow.keras import layers

# 假设我们有两个特征图:feature_map1 和 feature_map2
feature_map1 = tf.random.normal([1, 64, 64, 64])  # (batch_size, height, width, channels)
feature_map2 = tf.random.normal([1, 64, 64, 128])

# 在通道维度上进行拼接
fused_feature = tf.concat([feature_map1, feature_map2], axis=-1)  # 输出形状 (1, 64, 64, 192)
print(fused_feature.shape)
  • 应用场景:UNet 中的上采样路径和下采样路径的特征融合。

2. 加法(Addition)

  • 概念:将多个特征图进行逐元素相加。这种方式比串联更为简单,并且可以保留不同特征图之间的平衡关系。

  • 应用ResNet——残差网络中的跳跃连接(Skip Connection)通过加法方式将输入特征和卷积特征相加,解决了深层网络中的梯度消失问题。

  • 代码示例

import tensorflow as tf
from tensorflow.keras import layers

# 假设我们有两个特征图:feature_map1 和 feature_map2,形状必须一致
feature_map1 = tf.random.normal([1, 64, 64, 64])
feature_map2 = tf.random.normal([1, 64, 64, 64])

# 逐元素加法融合
fused_feature = feature_map1 + feature_map2
print(fused_feature.shape)
  • 应用场景:ResNet 的残差块。

3. 乘法(Multiplication/Attention)

  • 概念:乘法可以用于特征增强或者注意力机制,常见的方式是通过注意力图对特征进行加权乘法操作。

  • 应用SE-Block(Squeeze-and-Excitation Block)——通过全局池化和全连接层生成注意力权重,对每个通道进行加权,实现通道上的注意力机制。

  • 代码示例

import tensorflow as tf
from tensorflow.keras import layers

# 假设我们有一个特征图和一个权重向量
feature_map = tf.random.normal([1, 64, 64, 128])
attention_weights = tf.random.uniform([1, 1, 1, 128])

# 逐通道加权乘法
fused_feature = feature_map * attention_weights
print(fused_feature.shape)
  • 应用场景:SENet 中的通道注意力机制。

4. 全局池化(Global Pooling)

  • 概念:全局池化将特征图的空间维度通过求平均(Global Average Pooling, GAP)或最大值(Global Max Pooling, GMP)降维为一个单一值,用于保留全局特征。

  • 应用GoogLeNet——在网络的末端使用全局平均池化来减少参数量。

  • 代码示例

import tensorflow as tf
from tensorflow.keras import layers

# 假设我们有一个特征图
feature_map = tf.random.normal([1, 64, 64, 128])

# 全局平均池化
global_avg_pooled = tf.reduce_mean(feature_map, axis=[1, 2])  # 只保留通道维度
print(global_avg_pooled.shape)
  • 应用场景:GoogLeNet 的全局特征提取。

5. 特征金字塔网络(FPN)

  • 概念:特征金字塔网络(FPN)是一种多尺度特征融合方式,它在对象检测任务中广泛使用,通过自顶向下的路径将高分辨率和低分辨率的特征进行融合,适应不同尺度的目标。

  • 应用RetinaNet——FPN被广泛应用于对象检测任务中,增强了模型在多尺度下的检测性能。

  • 代码示例

import tensorflow as tf
from tensorflow.keras import layers

# 假设我们有两个来自不同层的特征图:high_level 和 low_level
high_level = tf.random.normal([1, 32, 32, 256])
low_level = tf.random.normal([1, 64, 64, 128])

# 通过上采样将高层特征与低层特征融合
high_level_upsampled = tf.image.resize(high_level, size=(64, 64))  # 上采样到与低层特征相同大小
fused_feature = high_level_upsampled + low_level
print(fused_feature.shape)
  • 应用场景:RetinaNet 和 Faster R-CNN 中的特征金字塔网络。

6. 跨模态融合(Cross-Modal Fusion)

  • 概念:跨模态融合用于结合来自不同模态(如图像、文本、音频等)的特征。常用于多模态任务,如视频分类中的图像和音频融合、视觉问答任务中的图像和文本融合。

  • 应用视觉问答(VQA)——通过融合图像特征和文本特征来回答视觉问题。

  • 代码示例

import tensorflow as tf
from tensorflow.keras import layers

# 图像特征和文本特征
image_feature = tf.random.normal([1, 64, 128])  # 图像特征 (batch_size, height, channels)
text_feature = tf.random.normal([1, 1, 128])  # 文本特征 (batch_size, 1, channels)

# 融合(可以通过加法、乘法或串联等方式)
fused_feature = tf.concat([image_feature, text_feature], axis=1)
print(fused_feature.shape)
  • 应用场景:VQA 中的跨模态融合。

7. 自注意力机制(Self-Attention Mechanism)

  • 概念:自注意力机制通过为每个位置(空间或时间)分配一个权重来加强重要特征。它被广泛应用于自然语言处理(如 Transformer)和图像任务(如 Non-local Networks)中。

  • 应用Transformer——通过自注意力机制捕捉序列中远距离的依赖关系。

  • 代码示例

import tensorflow as tf
from tensorflow.keras import layers

# 自注意力机制的简化实现
def self_attention(feature_map):
    batch_size, height, width, channels = feature_map.shape
    query = layers.Dense(channels)(feature_map)
    key = layers.Dense(channels)(feature_map)
    value = layers.Dense(channels)(feature_map)
    
    # 计算注意力得分
    attention_scores = tf.nn.softmax(tf.matmul(query, key, transpose_b=True))
    
    # 注意力加权后的特征
    attention_output = tf.matmul(attention_scores, value)
    return attention_output

feature_map = tf.random.normal([1, 64, 64, 128])
attention_feature = self_attention(feature_map)
print(attention_feature.shape)
  • 应用场景:Transformer 中的自注意力机制,Non-local Networks 中的图像特征建模。

总结

  • 串联(Concatenation) 和 加法(Addition) 是最常见的特征融合方式,适合处理不同层或不同来源的特征。

  • 乘法(Multiplication) 和 注意力机制 提供了一种特征选择机制,能够自适应地选择重要特征。

  • 全局池化(Global Pooling) 在提取全局特征时非常有效,特别是对于分类任务。

  • 特征金字塔网络(FPN) 在多尺度对象检测中表现出色。

  • 跨模态融合 则更适合多模态任务,如视觉问答和视频理解。

  • 自注意力机制 是当前最为重要的特征建模方式,广泛用于序列和图像任务。

标签:卷积,融合,feature,特征,64,tf,import
From: https://blog.csdn.net/gaoxiaoxiao1209/article/details/142170262

相关文章

  • 技术揭秘 DWS 实时数仓解决方案,如何深度融合 Flink 简化数据链路
    摘要:DWS实时数仓解决方案支持数仓模型的分层和增量加工,能够实现数据的实时入库、出库和查询,确保数据的新鲜度。一、实时数仓介绍实时数仓是一种现代化的数据仓库系统,其核心优势在于能够处理和分析实时数据。随着信息技术和数据科学的飞速发展,企业对实时数据分析和决策支持的需求愈......
  • VUE3新特征
    一、支持组合式api1.1、setup()程序的入口        在Vue3中,setup() 函数是一个新的组件选项,作为使用CompositionAPI的入口点。这个函数是在组件被创建之前被调用,它是 beforeCreate 和 created 生命周期钩子之前被执行的地方。它使得逻辑复用和代码组织变......
  • GAF-PCNN-BiLSTM、GASF-CNN-BiLSTM、GADF-CNN-BiLSTM的多特征分类预测/故障诊断
    GAF-PCNN-BiLSTM、GASF-CNN-BiLSTM、GADF-CNN-BiLSTM的多特征分类预测/故障诊断目录GAF-PCNN-BiLSTM、GASF-CNN-BiLSTM、GADF-CNN-BiLSTM的多特征分类预测/故障诊断分类效果格拉姆矩阵图基本介绍程序设计参考资料分类效果格拉姆矩阵图基本介绍1.Matlab......
  • 基于多技术融合下生态系统服务权衡与协同动态分析及论文写作方法
    生态系统服务是指生态系统所形成的用于维持人类赖以生存和发展的自然环境条件与效用,是人类直接或间接从生态系统中得到的各种惠益。联合国千年生态系统评估(Millenniumecosystemassessment,MA)提出生态系统服务包括供给、调节、支持、文化服务,但自然条件和人类需求使得生态系统......
  • YOLOv9改进策略【Neck】| AIFI : 基于Transformer的尺度内特征交互,在降低计算成本的同
    一、本文介绍本文记录的是基于AIFI模块的YOLOv9目标检测改进方法研究。AIFI是RT-DETR中高效混合编码器的一部分,利用其改进YOLOv9模型,使网络在深层能够更好的捕捉到概念实体之间的联系,并有助于后续模块对对象进行定位和识别。文章目录一、本文介绍二、AIFI设计原理2.1、......
  • 各种攻击工具/漏洞流量特征
    常见的攻击工具Metasploit用途:广泛用于渗透测试的框架,允许研究人员开发、测试和执行代码攻击。流量特征:在渗透测试过程中,Metasploit可能会生成特定的网络流量,这些流量通常包含对目标系统的探测和漏洞利用尝试。Nmap用途:网络连接端扫描软件,用于扫描网上电脑开放的网络连......
  • 日志与追踪的完美融合:OpenTelemetry MDC 实践指南
    前言在前面两篇实战文章中:OpenTelemetry实战:从零实现分布式链路追踪OpenTelemetry实战:从零实现应用指标监控覆盖了可观测中的指标追踪和metrics监控,下面理应开始第三部分:日志。但在开始日志之前还是要先将链路追踪和日志结合起来看看应用实际使用的实践。通常我们排查......
  • 爆改YOLOv8|利用BiFPN双向特征金字塔改进yolov8
    1,本文介绍BiFPN(BidirectionalFeaturePyramidNetwork)是一种增强特征金字塔网络(FPN)的方法,旨在改善多尺度特征融合。BiFPN的主要创新点包括:双向特征融合:与传统FPN仅在自下而上的方向进行特征融合不同,BiFPN引入了双向融合机制。它不仅从低层特征向高层传递信息,还从高层特征向......
  • 卷积神经网络多输入和多输出的通道数(李沐老师课程)
    多通道卷积计算特殊的卷积层1*1卷积核代码:"""​多输入多输出的互相关运算"""importtorchfromtorchimportnnfromd2limporttorchasd2l​"""实现多输入通道互相关运算"""​​defcorr2d_multi_in(x,k): returnsum(d2l.corr......
  • 卷积神经网络(李沐老师课程)
    卷积神经网络(李沐老师课程)回顾MLP单层(上述列子需要14GBGPU)找寻图片上的人在哪里找寻图片上的人的两个基本原则从全连接层出发到卷积卷积层二维交叉相关二维卷积层案列交叉相关和卷积代码的实现importtorchfromtorchimportnnfromd2limportt......