CNN中特征融合的一些策略

Introduction

特征融合的方法很多.如果数学化地表示,大体可以分为以下几种:

  • X + Y \textbf{X}+\textbf{Y} X+Y: X \textbf{X} X Y \textbf{Y} Y表示两个特征图, + + +表示元素级相加. 代表如ResNet、FPN
  • X    c o n c a t    Y \textbf{X} \; concat\;\textbf{Y} XconcatY . c o n c a t concat concat表示张量 拼接操作。 代表如GoogleNet、U-Net
  • X + G(X) ⋅ X \textbf{X}+\textbf{G(X)}\cdot\textbf{X} X+G(X)X. G ( ⋅ ) \textbf{G}(\cdot) G()是注意力函数。这里表示自注意力机制。代表如SENet、 CBAM、Non-local
  • G(Y) ⋅ X + Y \textbf{G(Y)}\cdot\textbf{X}+\textbf{Y} G(Y)X+Y. 同样是将注意力机制作用在一个特征图上,而权重信息来源于对方。代表如GAU
  • G(X) ⋅ X + ( 1 − G(X) ) ⋅ Y \textbf{G(X)}\cdot\textbf{X}+(1-\textbf{G(X)})\cdot\textbf{Y} G(X)X+(1G(X))Y. 软注意力机制的一种,对特征图进行加权平均。代表如HighwayNetworks
  • G ( X , Y ) ⋅ X + Y \textbf{G}(\textbf{X},\textbf{Y})\cdot\textbf{X}+\textbf{Y} G(X,Y)X+Y. 代表如SA
  • G ( X , Y ) ⋅ X + ( 1 − G ( X , Y ) ) ⋅ Y \textbf{G}(\textbf{X},\textbf{Y})\cdot\textbf{X}+(1-\textbf{G}(\textbf{X},\textbf{Y}))\cdot\textbf{Y} G(X,Y)X+(1G(X,Y))Y,代表如SKNet

X+Y

ResNet

X concat Y

GoogleNet

X+G(Y)Y

SENet[1]

SENet使用了通道注意力的模块。
在这里插入图片描述

给定特征图 X ∈ R C × H × W X\in \mathbb{R}^{C\times H\times W} XRC×H×W。通道注意力模块中的权重 w ∈ R C × 1 × 1 w\in \mathbb{R}^{C\times 1 \times 1} wRC×1×1可表示为:
w = σ ( B ( W 2 δ ( B ( W 1 ( g ( X ) ) ) ) ) ) w =\sigma(B(W_2\delta(B(W_1(g(X)))))) w=σ(B(W2δ(B(W1(g(X))))))
其中, g ( X ) = 1 H × W ∑ i = 1 H ∑ j = 1 W X [ : , i , j ] , g ( X ) ∈ R C g(X)=\frac{1}{H\times W}\sum_{i=1}^{H}\sum_{j=1}^WX_{[:,i,j]},g(X)\in \mathbb{R}^C g(X)=H×W1i=1Hj=1WX[:,i,j],g(X)RC是全局池化层, B B B是BN层, δ \delta δ是ReLU层, W W W是全连接层, W 1 ∈ R C r × C , W 2 ∈ R C × C r W_1\in \mathbb{R}^{\frac{C}{r}\times C},W_2\in \mathbb{R}^{C\times \frac{C}{r}} W1RrC×C,W2RC×rC,r是通道缩减倍数。

CBAM[2]

SE模块将特征图中所有位置的权重浓缩为一个实数值,忽略了不同位置间的差异,且更容易关注大目标而忽略小目标。 CBAM(Convolutional Block Attention Module)在通道注意力之后又加上了空间注意力。
在这里插入图片描述
这里仅介绍空间注意力模块。空间注意力是以通道为单位进行最大和平均池化,并将两者的结果进行concat,之后再一个卷积降成1wh的特征图空间权重,再将该权重和输入特征进行点积。
权重 w ∈ R 1 × H × W w\in \mathbb{R}^{1\times H\times W} wR1×H×W的数学表达形式为:
w = σ ( W ( [ F a v g c ( X ) ] ; F m a x c ( X ) ] ) ) w=\sigma(W([F_{avg}^c(X)];F_{max}^c(X)])) w=σ(W([Favgc(X)];Fmaxc(X)]))
其中 F a v g c F_{avg}^c Favgc是通道上的平均池化, F m a x c F_{max}^c Fmaxc是通道上的最大池化, W W W是卷积层。

Non-local[3]

Non-local是为视频分类设计的一个模块,去掉时间维度也可应用到2D图像上。CBAM用卷积生成点的权重值,视野狭窄。而Non-local能捕获全局信息。
在这里插入图片描述
图中的乘号表示矩阵相乘。先使用3个1x1x1卷积压缩特征图,其中 θ \theta θ ϕ \phi ϕ分支用来计算每个点与其它所有点的相关系数,用softmax归一化为权重,乘以 g g g分支得到拥有全局信息的结果,然后用1x1x1卷积恢复通道数。为了方便插入任何一个网络,将其作为一个residual分支。
同样是对全局信息建模,Non-local相较于全连接层少了很多参数,其核心的计算点与点之间相关系数的部分甚至不需要参数。不过仍然存在计算时间长的问题。

G(Y)X+Y

GAU[4]

PAN是一个为图像分割设计的网络,其使用的GAU(Global Attention Upsample)模块,如下图所示
在这里插入图片描述
GAU出现在网络的decoder部分。其中Y是高层特征图,X是底层特征图。高层特征采用了Global Pooling得到权重,底层特征经过一个卷积层实现与高层特征相同数量的map,乘以权重后再和高层相加。
作者认为,decoder部分主要任务是恢复目标类别的像素位置,而高层特征含有丰富的类别信息能够指导底层特征。

G(X)X+(1-G(X))Y

Highway Networks[5]

Highway Network是2015年提出来的,时间上早于ResNet。想要解决的问题就是如何训练深度网络。其解决方案是基于LSTM的门控机制。特征融合公式可表示为:
H ( x ) ⋅ T ( x ) + x ⋅ ( 1 − T ( x ) ) H(x)\cdot T(x)+x\cdot (1-T(x)) H(x)T(x)+x(1T(x))
它和residual模块比较相似:
H ( x ) ⋅ T ( x ) + x ⋅ ( 1 − T ( x ) ) = ( H ( x ) − x ) ⋅ T ( x ) + x = F ( x ) + x H(x)\cdot T(x)+x\cdot (1-T(x)) = (H(x)-x)\cdot T(x) + x = F(x) + x H(x)T(x)+x(1T(x))=(H(x)x)T(x)+x=F(x)+x
下图体现了二者结构上的差别。图a是residual模块,图c是Highway
在这里插入图片描述

G(X,Y)X+(1-G(X,Y))Y

SKNet[6]

SK(Selective kernel )模块的作用是自适应调整感受野。
在这里插入图片描述
模块分为三个部分。Split部分 分别经过3x3卷积和5x5卷积,产生不同感受野的特征图,可看作X和Y。Fuse部分和SE模块类似,区别是最后恢复成两个不同的通道权重。Select部分将X和Y的权重做个Softmax然后加权融合。
由于SK模块的加入提高了模型的复杂度,为了降低参数量作者使用了分组卷积,以及用3x3的带孔卷积替换5x5卷积。

Remarks

  • 公式的 Y \textbf{Y} Y可以表示成 f ( X ) f(\textbf{X}) f(X) f ( g − 1 ( X ) ) f(g^{-1}(\textbf{X})) f(g1(X)), f f f g g g表示一系列CNN操作。意思是 Y \textbf{Y} Y要么直接来源于 X \textbf{X} X,如ResNet, 要么和 X \textbf{X} X有共同的祖先,如GoogleNet。反之亦可。
  • 公式中只体现了两个特征图的融合,可拓展至多个特征图,如DenseNet。
  • G ( ⋅ ) \textbf{G}(\cdot) G()相较于普通的网络层多了元素点乘的操作,在Non-local中还多了矩阵相乘操作。其具体提取的信息也不同,比如通道、空间、时序、全局、局部等,抑或是它们之间的排列组合,篇幅有限相关的算法不一一写出。

Reference

  1. Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.
  2. Woo S, Park J, Lee J Y, et al. Cbam: Convolutional block attention module[C]//Proceedings of the European conference on computer vision (ECCV). 2018: 3-19.
  3. Wang X, Girshick R, Gupta A, et al. Non-local neural networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7794-7803.
  4. Li H, Xiong P, An J, et al. Pyramid attention network for semantic segmentation[J]. arXiv preprint arXiv:1805.10180, 2018.
  5. Srivastava R K, Greff K, Schmidhuber J. Training very deep networks[C]//Advances in neural information processing systems. 2015: 2377-2385.
  6. Li X, Wang W, Hu X, et al. Selective kernel networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2019: 510-519.
  • 27
    点赞
  • 184
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 多源信息融合CNN分类代码是一种将多种信息源进行融合并利用卷积神经网络CNN)进行分类的方法。融合不同信息源可以帮助提高分类器的性能,使其更准确地对不同类别进行分类。 在实现多源信息融合CNN分类代码时,首先需要选择并准备多个信息源作为输入。例如,可以选择图像、文本和声音等多种信息来进行分类任务。然后,需要对每个信息源进行预处理和特征提取,以便将其转化为适合CNN模型处理的格式。 接下来,可以设计一个多分支的CNN模型,每个分支对应一个信息源。每个分支都包括卷积层、池化层和全连接层等基本结构,可以根据实际情况进行调整和修改。在每个分支的最后一层,将各个信息源的特征融合起来,可以使用拼接、加权融合或串联等方式。 在训练过程,可以采用交叉熵损失函数作为目标函数,并通过反向传播算法更新模型的参数。为了在训练过程充分利用多源信息的优势,可以设计一些策略,如多模态损失融合、动态权重调整等。 最后,可以使用测试数据对训练好的模型进行评估。将测试数据输入到多分支的CNN模型,并根据模型的输出进行分类预测。可以使用准确率、召回率和F1-score等指标来评价分类器的性能。 总之,多源信息融合CNN分类代码是一种将多种信息源进行融合并利用CNN模型进行分类的方法。通过合理设计模型结构和训练策略,可以提高分类器的性能,从而更准确地对不同类别进行分类。 ### 回答2: 多源信息融合CNN分类代码是一种融合多种信息输入的卷积神经网络分类模型。这种模型可以将来自不同来源和不同类型的信息进行融合,从而提高分类准确性和性能。 在实现多源信息融合CNN分类代码时,首先需要引入多种输入数据,可以是图像、文本、声音等。然后,通过数据预处理步骤对每个输入进行特征提取和转换,将其转化为适合卷积神经网络处理的格式。对于图像输入,可以使用卷积和池化层来提取图像的特征;对于文本输入,可以使用词嵌入和循环神经网络来获取文本的特征;对于声音输入,可以使用声谱图和卷积层来提取声音的特征。 接下来,将多个输入的特征进行融合。常见的融合方法包括级联、拼接和加权平均等。级联是将多个输入特征沿着特征维度进行拼接;拼接是将多个输入特征在某个特定的维度进行拼接;加权平均是针对每个输入特征分配一个权重,然后进行加权求和。 融合后的特征将作为卷积神经网络的输入,通过卷积层、池化层和全连接层进行分类。卷积层可以提取图像和文本的局部特征,池化层可以进行特征降维,全连接层可以学习特征之间的关系,最终输出类别的概率分布。 在编写多源信息融合CNN分类代码时,可以使用深度学习框架如TensorFlow、PyTorch等来简化模型的搭建和训练过程。根据具体的任务和数据,可以进行超参数的调整和模型的优化,如选择合适的网络结构、调整学习率和正则化参数等。 总之,多源信息融合CNN分类代码是一种将不同来源和类型的信息进行融合的分类模型,通过合理的特征提取和融合方法,可以提高分类的准确性和性能。 ### 回答3: 多源信息融合是在分类任务利用多个数据源的信息来提高分类性能的一种方法。而卷积神经网络CNN)是一种广泛应用于图像分类任务的深度学习模型。 在多源信息融合的CNN分类代码,首先需要准备多个数据源的训练数据。这些数据可以是不同类型的图像,或者是来自不同领域的数据。接下来,我们需要建立一个CNN模型,用于学习多源信息的特征表示和分类任务。 代码的第一部分是数据预处理。我们需要将多源数据加载到内存,并对其进行预处理,如图像的大小调整、颜色通道转换等。然后,我们将数据分成训练集和测试集,用于模型的训练和评估。 第二部分是模型的建立。我们可以使用Python的深度学习框架,如TensorFlow或PyTorch,来建立CNN模型。在模型的建立,我们可以采用传统的CNN结构,如卷积层、池化层和全连接层,并根据不同的任务需求进行调整和扩展。在这里,我们需要利用多源信息,可以通过多输入的方式来处理多个数据源。 第三部分是模型的训练和验证。我们使用训练集的数据来训练CNN模型,通过反向传播算法更新模型的权重参数,使其能够更好地拟合训练数据。然后,我们使用测试集的数据来评估模型的分类性能,可以使用准确率、精确率、召回率等指标来评估模型的性能。 最后,我们可以根据需要对模型进行调优,如调整模型的结构、增加正则化项、调整学习率等,并进行进一步的实验和验证。 总之,多源信息融合的CNN分类代码主要包含数据预处理、模型建立、模型训练和验证等几个部分。通过这些步骤,我们能够最大限度地利用多个数据源的信息,提高分类任务的性能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值