M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network
Single-shot目标检测新模型,使用multi-level特征,收录于AAAI2019.
这篇论文吸引我的地方,是对目标检测模型不同层次特征的适应性的描述。
code:https://github.com/qijiezhao/M2Det
paper:https://arxiv.org/abs/1811.04533
目录
摘要
相关工作
介绍
理论
实验
摘要
特征金字塔被最先进的一级one-stage检测子(如DSSD、Retinanet、Refinedt)和two-stage检测子(如Mask RCNN、Detnet)广泛利用,以缓解目标实例之间的尺度变化带来的问题。尽管这些具有特征金字塔的目标探测器取得了令人鼓舞的效果,由于它们只是简单地根据原始设计用于对象分类任务的骨架固有的多尺度金字塔结构构造特征金字塔,因而存在一定的局限性。在这项工作中,我们提出了多层次特征金字塔网络(MLFPN),以构造更有效的特征金字塔来检测不同尺度的物体。首先,我们将主干提取的多级特征(即多层)融合为基础特征。第二,将基本特征输入交替的关节细化U形模块和特征融合模块,利用每个USHAPE模块的译码器层作为目标检测的特征。最后,我们将具有等效尺度(大小)的译码器层集合起来,构造一个用于目标检测的特征金字塔,其中每个特征映射都由多个层次的层(特征)组成。为了评估所提出的MLFPN的有效性,我们设计并训练了一个功能强大的端到端one-stage检测子,我们称之为M2DET,将其集成到固态硬盘的架构中,并实现了比最先进的one-stage检测子更好的检测性能。具体来说,在MS-COCO基准测试中,M2DET采用单尺度推理策略,以11.8 fps的速度达到了41.0的AP,采用多尺度推理策略,达到了44.2的AP,这是one-stage检测子的最优成果。
介绍
对象实例之间的尺度变化是目标检测任务的主要挑战之一,通常有两种策略来解决这一挑战带来的问题。第一种方法是利用图像金字塔中检测目标,这一策略只能在测试时使用。显然,这种解决方案将大大增加内存和计算的复杂性,因此这种目标检测子的效率将大幅下降。第二种方法是从输入图像中提取特征金字塔,在训练和测试阶段使用。与第一种使用图像金字塔的解决方案相比,它的内存和计算成本更低。此外,特征金字塔模块可以很容易地集成到最先进的基于深度神经网络的检测子中,从而得到端到端的解决方案。
虽然带有特征金字塔的目标探测器取得了令人鼓舞的效果,但由于它们只是根据固有的多尺度金字塔结构来构造特征金字塔,而这种结构实际上是为分类任务而设计的。例如,如图1所示,SSD直接独立地使用两层主干(即vgg16)和通过步长2的卷积获得的四个额外层来构造特征金字塔;STDN仅使用densenet的最后一个dense块通过池和尺度变换来构造特征金字塔;FPN通过自上而下融合深层和浅层来构造特征金字塔。一般来说,上述方法有以下两个局限性。首先,金字塔中的特征图对于对象检测任务来说不够有代表性,因为它们只是由为对象分类任务设计的主干的层(特征)构建的。其次,金字塔中的每个特征图(用于检测特定范围内的对象)主要或甚至完全由主干的单层层构成,也就是说,它主要或仅包含单层信息。一般而言,较深层次的高层次特征对分类子任务的识别性更强,而较浅层次的低层次特征对目标定位回归子任务的识别性更强。此外,低层次特征更适合描述外观简单的物体,而高层次特征更适合描述外观复杂的物体(此处对于特征的把握值得注意)。在实践中,具有类似大小的对象实例的外观可能非常不同。例如,一个红绿灯和一个遥远的人可能有相当的大小,而且这个人的外表要复杂得多。因此,金字塔中的每个特征图(用于检测特定尺寸范围内的物体)主要或仅由单层特征组成,将导致检测性能不理想。
本文的目标是在避免现有方法的局限性的同时,构造一个更有效的特征金字塔来检测不同尺度的目标。如图2所示,为了实现这一目标,我们首先将主干提取的多级特征(即multiple layers)融合为基础特征,然后将其输入U形模块(TUM)和特征融合模块(FFM)中,提取出更具代表性的多级多层次特征。值得注意的是,每个U形模块中的解码器层具有相似的深度。最后,我们聚合了具有等效尺度的特征图,构建了目标检测的最终特征金字塔。显然,构成最终特征金字塔的解码器层要比主干中的层深得多,也就是说,它们更具代表性。此外,最终特征金字塔中的每个特征图都由来自多个级别的解码器层组成。因此,我们称特征金字塔块为多级特征金字塔网络(MLFPN)
为了评估所提出的MLFPN的有效性,我们设计并训练了一种功能强大的端到端单级目标探测器,我们称之为M2DET(根据它是建立在多级和多尺度特征之上的),将MLFPN集成到SSD的体系结构中。M2DET实现了最新的最先进的结果(即单尺度推理策略下的AP为41.0,速度为11.8 fps,多尺度推理策略下的AP为44.2),在MS-COCO上由于现有one-stage检测子。
相关工作
研究人员已经付出了大量的努力来提高不同尺度物体的探测精度——不管它是one-stage检测子还是two-stage探测子。据我们所知,主要有两种策略来解决这个尺度变化问题。
如图2所示,MLFPN包含三个部分。首先,FFMV1融合了浅层和深层特征,产生了基础特征,如VGG的conv4 3和conv5 3,为MLFPN提供了多级语义信息。第二,多个TUM和FFMV2交替堆叠。具体地说,每个TUM生成具有不同比例的几个特征图。FFMV2融合了上一个TUM的基本特性和最大输出特性图。融合后的特征图被送入下一个TUM。注意,第一个tum没有任何其他tum的先验知识,所以它只从学习。输出多级多尺度特征计算如下:
这儿表示基准特征,表示在第个TUM的第个尺度的特征,表示TUM的数量,表示第个TUM,表示FFMv1。第三SFAM采用concatenation操作和通道注意力机制聚合多级多尺度特征。
FFMs融合了M2DET中不同层次的特征,对构建最终的多层次特征金字塔至关重要。它们使用1X1卷积层压缩输入特性的通道,并使用串联操作聚合这些特性图。特别是,由于ffmv1在主干网中采用两个不同尺度的特征映射作为输入,因此在连接操作之前,它采用一个上采样操作将深度特征重新缩放到相同的尺度。同时,FFMV2将前一个TUM的基本特征和最大输出特征图(这两个特征具有相同的比例)作为输入,并为下一个TUM生成融合特征。FFMV1和FFMV2的结构细节分别如图4(a)和(b)所示。
TUMs:与fpn和retinanet不同,tum采用thinner的U形结构,如图4(c)所示。编码器是一系列3x3卷积层,步幅为2。解码器将这些层的输出作为其特征映射的参考集,而原FPN选择Resnet主干网中每个阶段最后一层的输出。此外,我们在解码器分支上加上1x1卷积层,再加上元素求和运算,以增强学习能力,保持特性的平滑。每个TUM解码器中的所有输出构成了当前级别的多尺度特征。总的来说,堆叠TUM的输出形成了多层次的多尺度特征,而前部TUM主要提供浅层次特征,中部TUM提供中层次特征,后部TUM提供深层次特征。
SFAM:如图3所示,SFAM目的是聚合TUMs产生的多级多尺度特征为多级特征。SFAM的第一个阶段是沿着通道维度将等效尺度的特征连接在一起。聚合特征金字塔可以表示为。表示第i个尺度的特征。这里,聚合金字塔中的每个比例都包含来自多层次深度的特征。但是,简单的串联操作还不够适应。在第二阶段中,我们引入了一个通道注意力模块,以鼓励特性关注它们最受益的通道。根据SE模块,我们使用全局平均池在压缩步骤中生成信道统计。为了完全捕获通道依赖性,以下激发步骤通过两个完全连接的层学习注意力机制:
(事实上,使用的是两个全连接层,注意力常用的方法)
我们将M2DET组装成两种主干(Simonyan和Zisserman 2015;He等人2016年)。在培训整个网络之前,需要在Imagenet 2012数据集上对主干进行预培训(Russakovsky等人2015年)。MLFPN的所有默认配置都包含8个Tums,每个Tum有5个Strating Conv和5个upsample操作,因此它将输出6个尺度的特性。为了减少参数数量,我们只为每个级别的TUM功能分配256个信道,这样网络就可以很容易地在GPU上进行训练。至于输入尺寸,我们按照原来的SSD、refinedet和retinanet,即320、512和800。
在检测阶段,我们在6个金字塔特征中各增加两个卷积层,分别实现位置回归和分类。六个功能图的默认框的检测比例范围遵循原始SSD的设置。当输入尺寸为800×800时,除保持最大特征图的最小尺寸外,比例范围按比例增大。在金字塔特征的每个像素处,我们设置了六个锚定,三个比率完全相同。之后,我们使用0.05的概率分数作为阈值,过滤掉大多数得分低的锚。然后我们使用soft-NMS(Bodla等人2017年)采用线性内核进行后处理,留下更精确的盒子。将阈值降低到0.01可以产生更好的检测结果,但这会大大缩短推理时间,我们不认为这是为了追求更好的实用价值。
实验
评价:
本文在第一部分提出了很多关于特征适应性的见解。提出的理论也是非常有效的,但是遗憾的是这依然是一个拼机器的工作。
参考文献:Zhao Q, Sheng T, Wang Y, et al. M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network. 2018.