图像处理中,融合不同尺度的特征是提高图像效果的重要手段,在卷积中:
✅浅层特征:浅层特征分辨率更高,包含更多位置、细节信息,但是由于经过的卷积更少,其语义性更低,噪声更多。
✅高层特征:高层特征具有更强的语义信息,但是分辨率很低,对细节的感知能力较差。
如何将两者高效融合,是改善模型的关键。
MLFPN
✅论文地址:
https://arxiv.org/abs/1811.04533
✅代码地址:
https://github.com/qijiezhao/M2Det
之前的特征金字塔目标检测网络共有的两个问题是:
1、原本 backbone 是用于目标分类的网络,导致用于目标检测的语义特征不足;
2、每个用于目标检测的特征层主要或者仅仅是由单级特征层(single-level layers)构成,也就是仅仅包含单级信息;这种思想导致一个严重的问题,对分类子网络来说更深层更容易区分,对定位的回归任务来说使用更浅层比较好。此外,浅层特征更适合描述具有简单外观的目标,而深层特征更适合描述具有复杂外观的目标。在实际中,具有相似大小目标实例的外观可能非常不同。例如一个交通灯和一个远距离的人可能具有可以比较的尺寸,但是人的外表更加复杂。因此,金字塔中的每个特征图主要或者仅仅由单层特征构成可能会导致次优的检测性能。
为了更好地解决目标检测中尺度变化带来的问题,M2det提出一种更有效的特征金字塔结构MLFPN,其大致流程如下图所示:首先,对主干网络提取到的特征进行融合;然后通过TUM和FFM提取更有代表性的Multi-level&Mutli-scale特征;最后通过SFAM融合多级特征,得到多级特征金字塔用于最终阶段的预测。M2Det使用主干网络+MLFPN来提取图像特征,然后采用类似SSD的方式预测密集的包围框和类别得分,通过NMS得到最后的检测结果。
MLFPN主要有3个模块组成:
1)特征融合模块FFM;
2)细化U型模块TUM;
3)尺度特征聚合模块SFAM。
✅首先,FFM1对主干网络提取到的浅层和深层特征进行融合,得到base feature;
✅其次,堆叠多个TUM和FFMv2,每个TUM可以产生多个不同scale的feature map,每个FFMv2融合base feature和上一个TUM的输出,并给到下一个TUM作为输入(更高level)。
✅最后,SFAM通过scale-wise拼接和channel-wise attention来聚合multi-level&multi-scale的特征。
01特征融合模块FFM
FFM用于融合M2Det中不同级别的特征,先通过1x1卷积压缩通道数,再进行拼接。
FFM1 用于融合深层和和浅层特征,为 MLFPN 提供基本输入的特征层(Base Feature);由于 M2Det 使用了 VGG 作为 backbone,因此 FFM1 取出了 Conv4_3 和 Conv5_3 作为输入:FFM1使用两种不同scale的feature map作为输入,所以在拼接操作之前加入了上采样操作来调整大小;
FFMv2用于融合 MLFPN 的基本输入(Base Feature)和上一个 TUM 模块的输出,两个输入的scale相同,所以比较简单。
02细化U型模块TUM
TUM使用了比FPN和RetinaNet更薄的U型网络。在上采样和元素相加操作之后加上1x1卷积来加强学习能力和保持特征平滑度。TUM中每个解码器的输出共同构成了该TUM的multi-scale输出。每个TUM的输出共同构成了multi-level&multi-scale特征,前面的TUM提供low level feature,后面的TUM提供high level feature。
TUM 的编码器(encoder)使用 3×3 大小、步长为 2 的卷积层进行特征提取,特征图不断缩小;解码器(decoder)同过双线性插值的方法将特征图放大回原大小。
03尺度特征聚合模块SFAM
SFAM旨在聚合TUMs产生的多级多尺度特征,以构造一个多级特征金字塔。在first stage,SFAM沿着channel维度将拥有相同scale的feature map进行拼接,这样得到的每个scale的特征都包含了多个level的信息。然后在second stage,借鉴SENet的思想,加入channel-wise attention,以更好地捕捉有用的特征。SFAM的细节如下图所示:
网络配置
✅M2Det的主干网络采用VGG-16和ResNet-101。
✅MLFPN的默认配置包含有8个TUM,每个TUM包含5个跨步卷积核5个上采样操作,所以每个TUM的输出包含了6个不同scale的特征。
✅在检测阶段,为6组金字塔特征每组后面添加两个卷积层,以分别实现位置回归和分类。
✅后处理阶段,使用soft-NMS来过滤无用的包围框。
注:本文仅用于学术分享,如有侵权,请联系后台作删文处理。
最后:
如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!