摘要:
为解决目标实例尺度变化带来的问题,特征金字塔广泛用在一阶段目标检测器(比如,DSSD,RetinaNet,RefineDet)和两阶段目标检测器(比如Mask R-CNN, DetNet)。尽管这些使用特征金子塔的目标检测器具有很好的结果,但是由于仅仅根据固有的多尺度(为目标分类任务而设计的骨干的金字塔结构)。最新的,在这个工作中,作者提出了一个方法称为多级金字塔网络(Multi-Level Feature Pyramid Network, MLFPN)来构建检测不同尺度目标更有效的金子塔。
- 首先融合骨干网提出的多级特征作为基础特征
- 把基本的特征加入一组交替连接的u型模块和特征融合模块,利用每个u型模块的解码器层作为目标检测的特征
- 将具有等效尺度(大小)的解码器层集合起来,形成一个用于目标检测的特征金字塔,其中每个特征图由多个层次的层(特征)组成
为了评估所提出的多目标检测器(MLFPN)的有效性,设计并训练了一种功能强大的端到端单级目标检测器(M2Det),将其集成到SSD的体系结构中,该检测器的检测性能优于目前最先进的单级检测器。
因此本文本质上提出了一种特征提取的方法。
介绍:
传统的多尺度目标检测的实现方式主要有两种方法:图像金字塔和特征金字塔。特征金字塔更容易集成到目前最新的基于神经网络的检测器,形成端对端的解决方案。特征金字塔的局限性:根据内部多尺度,骨干金字塔实质上用来进行目标分类任务的。这种方法有两个局限性:
- 金字塔中的特征图不能完全代表目标检测任务,仅仅用骨干网络的层来构建。
- 金字塔中的每个特征图主要甚至单独从骨干网的单层构建,因此它只包含单层信息。在实际中小尺寸目标实例的外表可能大相径庭。
例如一个交通灯和一个远距离的人可能具有可以比较的尺寸,并且人的外表更加复杂。因此,金字塔中的每个特征图(用来在特殊尺寸范围检测目标)主要或者仅仅由单层特征构成可能会导致次优的检测性能。
这篇文章的目的是构筑一个更加有效的特征金字塔对不同尺度的目标进行检测:
- 首先把从骨干网提取的多层特征融合起来作为基本的特征,然后把它加入交替连接的TUM和FFM来提取更多表示,多层多尺度特征。值得注意的是,每个u型模块中的解码器层具有相似的深度。
- 将具有等效尺度的特征映射集合起来,构建最终的特征金字塔进行目标检测。显然,构成最终特征金字塔的解码器层要比主干层深得多,即更具代表性。在最终的特征金字塔中,每个特征映射都由多个层次的解码器层组成。因此,我们称我们的特征金字塔块为多层次特征金字塔网络(MLFPN)。
提出的方法:
M2Det使用骨干网和MLFPN从输入图像提取特征,然后和SSD一样,然后在学到的特征上产生密集的bounding boxes和分类分数,接着用NMS操作来产生最终的结果。
MLFPN由三部分组成:特征融合模块(FFM)、变薄的U型模块(TUM)、鱼鳞状的特征聚合模块(SFAM)
FFMv1通过融合骨干网的基本特征使得基本特征的语义更加丰富。每个TUM产生一组多尺度特征,然后利用交互交叠的TUMs和FFMv2s提取多层次多尺度特征。此外,SFAM通过尺度特征拼接操作和自适应注意机制将特征聚合到多层次的特征金字塔中。下面分别介绍这三个模块:
MLFPN
如下图所示,MLFPN包含三个部分。
- 首先,FFMv1融合浅层和深层特征,形成基础特征,如VGG 中的conv4_3和conv5_3,为MLFPN提供多层次语义信息。
- 其次,几个TUMs和FFMv2交替堆叠。特别的是,每个TUM都会生成几个不同尺度的feature map。
FFMv2融合了基本特征和前面TUM输出的最大特征图。融合后的特征图被送入下一个TUM。请注意,第一个TUM没有任何其他TUMs的先验知识,因此它只从
学习。
多层多尺度特征计算方式为:
left[mathrm{x}_{1}^{l}, mathrm{x}_{2}^{l}, ldots, mathrm{x}_{i}^{l}right]=left{begin{array}{cc} mathrm{T}_{l}left(mathrm{X}_{text {base }}right), & l=1 \ mathrm{~T}_{l}left(mathbf{F}left(mathrm{X}_{text {base }}, mathrm{x}_{i}^{l-1}right)right), & l=2 ldots L end{array}right.
其中X_{text {base }} 为基特征,x_{i}^{l} 为第l个TUM中第i个尺度的特征,L为TUMs个数,T_l 为第l个TUM的处理,F为FFMv1处理。
SFAM通过鱼鳞状特征连接操作和通道式注意力机制聚合多层次多尺度特征。
FFMs
将FFMs应用于M2Det中不同层次特征的融合,是构建最终多层次特征金字塔的关键。它们使用1x1卷积层来压缩输入特征的通道,并使用连接操作来聚合这些特征映射。特别地,由于FFMv1以骨干网中两个尺度不同的feature map作为输入,在进行拼接操作之前,采用一次upsample操作将深度feature重新缩放到相同的尺度。同时,FFMv2将上一个TUM的基特征和最大的输出特征图作为输入,这两个特征是相同尺度的,并为下一个TUM生成融合的特征。FFMv1和FFMv2的结构细节分别如下图(a)和(b)所示。
TUM
TUMs不同于FPN和RetinaNet, TUM采用较薄的u型结构,如下图所示,编码器为一系列跨度为2的3x3的卷积层。解码器将这些层的输出作为其特征映射的参考集,原始FPN选择ResNet骨干中每个阶段的最后一层的输出。另外,在解码器分支上进行上采样和elementwise求和运算后,再加上1x1个卷积层,增强了学习能力,保持了特征的平滑性。每一转译码器的输出均形成当前层的多尺度特征。总体而言,堆积TUMs的输出形成了多层次、多尺度的特征,而前面的TUM主要提供浅层特征,中间的TUM主要提供中层特征,后面的TUM主要提供深层特征。
SFAM
SFAM的目的是将TUMs生成的多级多尺度特征集合成一个多级特征金字塔,如下图所示。
第一阶段是沿着通道尺寸将相同尺度的特征连接起来。聚合特征金字塔可以表示为X = [X1;X2,...,Xi],其中Xi= operatorname{Concat}left(x_{i}^{1} ; x 2 i, ldots, x_{i}^{L}right) in R^{W_{i} times H_{i} times C} 为第i大尺度的特征。在这里,聚合金字塔中的每个尺度都包含来自多层深度的特征。然而,简单的连接操作还不够自适应。
第二阶段中引入了一个面向频道的注意力模块,使得功能将注意力集中在它们受益最多的频道上。在SE block之后,使用全局平均池在压缩步骤中生成通道方向的统计数据z in R^{C} 为了充分捕捉通道依赖性,以下激励步骤通过两个完全连通的层来学习注意机制:
s=F_{e x}(z ; W)=sigmaleft(W_{2} deltaleft(W_{1} zright)right)
其中sigma 为ReLU函数,delta 为sigmoid函数, W_{1} in R^{frac{C}{r} times C}, W_{2} in frac{C}{r} times C ,r为还原比(r = 16)。
最终输出通过激活s对输入X重新加权得到:
W_{1} in R^{frac{C}{r} times C}, W_{2} in frac{C}{r} times C
其中tilde{X}_{i}=left[tilde{X}_{i}^{1}, tilde{X}_{i}^{2}, ldots, tilde{X}_{i}^{C}right] 通过缩放操作,每个特征增强或减弱。
网络配置
用两种类型的骨干来配置M2Det。在训练整个网络之前,需要在ImageNet 2012数据集上对骨干进行预处理。MLFPN的默认配置包含8个TUM,每个TUM有5个striding- conv和5个Upsample操作,因此它将输出6个scale的特性。为缩小参数,只对其TUM特性的每个尺度分配256个频道,这样网络就可以在gpu上轻松训练。对于输入的大小,我们采用原SSD、RefineDet和RetinaNet,即, 320, 512和800。
在检测阶段,我们在6个金字塔形特征中分别加入2个卷积层来分别实现定位回归和分类。6个feature map默认框的检测尺度范围按照原始SSD的设置。当输入大小是800×800,规模范围增加比例除了保持最大特征图的小尺寸。在金字塔形特征的每个像素处,我们设置了6个锚点,三个锚点的比例完全相同。然后,我们使用0.05的概率值作为阈值,过滤掉大部分得分较低的锚点。然后使用带有线性内核的soft-NMS进行后处理,留下更精确的框。将阈值降低到0.01可以得到更好的检测结果,但会大大降低推理时间,实际上不能得到更好的效果。
实验
在本节中,我们展示了挑战MS-COCO基准上挑战bounding box检测任务的结果,我们使用trainval35k集合进行训练,它是来自训练集分离的80k图片的集合和从40k图像val分割中随机抽取35个图像子集。
为了与最先进的方法进行比较,我们在test-dev拆分上报告了COCO AP,它没有公共标签,需要使用评估服务器。然后,为了方便报告了minival上的消融研究的结果。实验部分包括四个部分:
(1)介绍实验的实现细节;
(2)与先进方法的比较;
(3) M2Det消融研究;
(4)比较MLFPN内部结构的不同设置,介绍M2Det的几种版本。