目录
前言
1 低层/高层特征
2 早/晚融合-Concat/Add
3 Attention特征融合
前言
特征融合是指来自不同层或分支的特征的组合,是现代网络体系结构中很常见的一种操作。图像处理的特征融合中,对于普遍的多尺度融合,广泛操作是直接将他们相加或者拼接起来!即通常通过简单的操作(例如求和或串联)来实现,但是,这不一定是最佳选择。随着Transformer在计算机视觉领域的快速发展,基于Attention的特征融合也占据一片天地!即注意力特征融合,该方案适用于大多数常见场景,包括由short and long skip connections以及在Inception层内的特征融合。
【相关学习资源】
深度特征融合---高低层(多尺度)特征融合
Attentional Feature Fusion 特征融合方法
深度学习论文: Attentional Feature Fusion及其PyTorch实现
【Attention】深入理解Attention机制
目前主流的attention方法都有哪些?
1 低层/高层特征
图像处理中,融合不同尺度的特征是提高图像效果的重要手段,在卷积中:
低层特征:低层特征分辨率更高,包含更多位置、细节信息,但是由于经过的卷积更少,其语义性更低,噪声更多。
高层特征:高层特征具有更强的语义信息,但是分辨率很低,对细节的感知能力较差。
如何将两者高效融合,是改善模型的关键。
2 早/晚融合-Concat/Add
很多工作通过融合多层来提升性能,按照融合与预测的先后顺序,分类为早融合(Early fusion)和晚融合(Late fusion)。
早融合(Early fusion): 先融合多层的特征,然后在融合后的特征上训练预测器(只在完全融合之后,才统一进行检测)。这类方法也被称为skip connection,即采用concat、add操作。这一思路的代表是Inside-Outside Net(ION)和HyperNet。 两个经典的特征融合方法:
- Concat:系列特征融合,直接将两个特征进行连接。两个输入特征x和y的维数若为p和q,输出特征z的维数为p+q;
- Add:并行策略,将这两个特征向量组合成复向量,对于输入特征x和y,z = x + iy,其中i是虚数单位。
晚融合(Late fusion):通过结合不同层的检测结果改进检测性能(尚未完成最终的融合之前,在部分融合的层上就开始进行检测,会有多层的检测,最终将多个检测结果进行融合)。这一类研究思路的代表有两种:
- Feature不融合,多尺度的feture分别进行预测,然后对预测结果进行综合,如Single Shot MultiBox Detector (SSD) , Multi-scale CNN(MS-CNN)
- Feature进行金字塔融合,融合后进行预测,如Feature Pyramid Network(FPN)等。
3 Attention特征融合
Attention机制:
学习权重分布:输入数据或特征图上的不同部分对应的专注度不同,对此Jason Zhao在知乎回答中概括得很好,大体如下:
- 这个加权可以是保留所有分量均做加权(即soft attention);也可以是在分布中以某种采样策略选取部分分量(即hard attention),此时常用RL来做。这个加权可以作用在原图上,也就是《Recurrent Model of Visual Attention》(RAM)和《Multiple Object Recognition with Visual Attention》(DRAM);也可以作用在特征图上,如后续的好多文章(例如image caption中的《 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》)。这个加权可以作用在空间尺度上,给不同空间区域加权;也可以作用在channel尺度上,给不同通道特征加权;甚至特征图上每个元素加权。 这个加权还可以作用在不同时刻历史特征上,如Machine Translation。
任务聚焦:通过将任务分解,设计不同的网络结构(或分支)专注于不同的子任务,重新分配网络的学习能力,从而降低原始任务的难度,使网络更加容易训练。
目前,利用注意力的方法进行特征融合的方法屡见不鲜,此处重在罗列一些思路:
- SENet:计算attention的方式,将每个通道的像素值做一个平均后,经过一系列操作,用sigmoid函数归一化。优缺:大尺度目标有效,小尺度目标效果差。
- MS-CAM:计算attentionde方式,提出的多尺度通道注意力模块用于更好地融合语义和尺度不一致的特征;通过添加另一个注意力级别(称为迭代关注特征融合)来缓解特征图的初始集成可能带来的问题。
后续特征融合,应进一步结合代码分析学习!