M2Det论文笔记

论文:M2Det: A Single-Shot Object Detector Based on Multi-Level Feature Pyramid Network . Qijie Zhao, Tao Sheng, Yongtao Wang,Zhi Tang,Ying Chen,Ling Cai,Haibin Ling

 

 

摘要

特征金字塔被最先进的单阶段目标检测器(例如DSSD, RetinaNet, RefineDet)和两阶段目标检测器(例如Mask RCNN, DetNet)广泛利用,以缓解由于,目标实例的尺度变化而产生的问题。虽然这些具有特征金字塔的目标检测器取得了令人鼓舞的结果,但由于它们只是简单地按照最初为目标分类任务而设计的骨干网络固有的多尺度金字塔结构来构造特征金字塔,因而存在一定的局限性。在这项工作中,我们提出了多层次特征金字塔网络(Multi-Level Feature Pyramid Network,MLFPN)来构建更有效的特征金字塔,以检测不同尺度的目标。

首先,融合backbone提取的多层次特征(即多个层)作为基础特征。

其次,我们将基础特征输入到交替连接的 Thinned U-shape Modules 和特征融合模块中,并利用每个U形模块的解码器层作为目标检测的特征。

最后将具有相同尺度的解码器层集合起来,构建一个用于目标检测的特征金字塔,其中每个特征图由来自多个层次的层(特征)组成。

为了评估所提出的MLFPN的有效性,我们设计并训练了一个强大的端到端one-stage目标检测器,称之为M2Det,将其集成到SSD的架构中,并实现了比最先进的one-stage检测器更好的检测性能。具体来说,在MSCOCO基准上,M2Det在单尺度推理策略下以11.8 FPS的速度实现了41.0的AP,在多尺度推理策略下实现了44.2的AP,这是one-stage检测器的SOTA成果。代码开源:https://github.com/qijiezhao/M2Det. 

 

引言

目标实例间的尺度变化是目标检测任务的主要挑战之一,通常有两种策略来解决这一挑战带来的问题。第一种方法是在图像金字塔(一系列resized的图片)中检测目标,它只能在测试时被利用。显然,这种解决方案将大大增加内存和计算复杂度,从而大大降低这类目标检测器的效率。第二种方法是从输入图像中提取的特征金字塔中检测目标,该方法可用于训练和测试阶段与第一个使用图像金字塔的解决方案相比,它具有更少的内存和计算成本。此外,特征金字塔构造模块可以很容易地集成到最先进的基于深度神经网络的检测器,得到端到端解决方案。

尽管具有特征金字塔的物体探测器取得了令人鼓舞的结果,但它们仍然有一些局限性,由于它们只是简单地根据骨干网络固有的多尺度金字塔结构来构造特征金字塔,而这些骨干网络实际上是为物体分类任务而设计的。

图片1.jpg 

例如,如图1所示,SSD直接独立使用骨干网络(即VGG16)的两层和步长为2的卷积得到的额外四层来构造特征金字塔;STDN仅利用DenseNet的最后一个密集块,通过池化和scale-transfer操作构建特征金字塔;FPN通过自顶向下的方式将深层和浅层融合来构造特征金字塔。一般来说,上述方法有以下两个局限性。

首先,金字塔中的特征图对于目标检测任务来说不够有表示性(representative),因为它们只是由为目标分类任务设计的骨干层(特征)构造而来。

其次,金字塔中的每个特征图(用于检测特定大小范围内的目标)主要或仅仅是由骨干网络的单层构造而成,即主要或仅包含单层信息。

一般来说,较深层的高级特征对分类任务更具判别性,较浅层的低级特征对目标位置回归任务更有帮助。此外,低级特征更适合于描述具有简单外观的目标,而高级特征则适合于描述具有复杂外观的目标。在实践中,大小相似的目标实例的外观可能非常不同。例如,一个红绿灯和一个远方的人有相当的大小,而人的外观要复杂得多。因此,金字塔中的每个特征图(用于检测特定大小范围内的物体)主要或仅由单一层级的特征组成,都会导致检测性能欠佳。

本文的目标是构建一种更高效的特征金字塔来检测不同尺度的目标,同时避免了上述方法的局限性。如图2所示,为了达到这一目的,我们首先融合骨干网络提取的多层次(即多层)特征作为基特征,然后将其输入交替连接的Thinned U-shape Modules(TUM)和特征融合模块(FFM)中,提取出更有代表性的、多级多尺度特征。值得注意的是,每个U形模块的解码器层共享相似的深度。最后,我们收集同等尺度的特征图,构建最终的特征金字塔用于目标检测。显然,形成最终特征金字塔的解码器层要比骨干网络深得多,更具有表示性。此外,最终特征金字塔中的每个特征图都由来自多个层级的解码器层组成。因此,我们称特征金字塔块为多层次特征金字塔网络(Multi-Level Feature Pyramid Network,MLFPN)。

为了评估所提出的MLFPN的有效性,我们通过将MLFPN集成到SSD的架构中,设计并训练了一个强大的端到端单阶段目标检测器,称之为M2Det(因为它是建立在 multi-level和 multi-scale特征上的)。

 

 

相关工作

无论是单阶段检测器还是两阶段检测器,为了提高不同尺度目标的检测精度,研究人员已经付出了大量的努力。据我们所知,主要有两种策略来解决这个尺度变化问题。

第一种方法是对图像金字塔(即一系列调整大小的输入图像副本)进行特征化(featurizing image pyramids),以产生语义上具有表示性的多尺度特征。来自不同尺度图像的特征分别产生预测,这些预测结合在一起得到最终的预测。在识别精度和定位精度方面,来自图像金字塔的特征确实超过了仅基于单尺度图像的特征。尽管性能有所提高,但这种策略在时间和内存方面的成本都很高,这就限制了它在实时任务中应用。考虑到这个主要缺点,SNIP等方法可以选择在测试阶段只使用特征图像金字塔作为后备方案,而其他方法包括Fast R-CNN和Faster R-CNN默认情况下选择不使用这个策略。

第二种方法是从网络内部固有层中提取的特征金字塔中检测目标,仅采用单尺度图像。与第一种策略相比,这种策略需要的额外内存和计算成本显著减少,可以在实时网络的训练和测试阶段部署。此外,特征金字塔构造模块很容易地修改和适配最先进的基于深度神经网络的检测器。

MS-CNN 提出了两个子网络( sub-networks),并首先将多尺度特征合并到深度卷积神经网络中用于目标检测。提出的子网络利用多种分辨率的特征图来检测图像中的多尺度目标。

SSD 利用了VGG16骨干网络后层的特征图和额外的特征层,在多个尺度上进行预测。

FPN利用横向连接和自上而下的通路产生特征金字塔,实现了更强大的表示。

DSSD 实现了反卷积层,用于聚合context并增强浅层特征的高级语义。

RefineDet采用了两步级联回归,在保持SSD效率的同时,在精度上取得了显著的进步。

 

 

方法

M2Det的整体架构为:

图片2.jpg 

M2Det使用骨干网络和MLFPN从输入图像中提取特征,然后像SSD一样,根据学习到的特征预测密集边界框和类别分数,然后执行NMS得到最终结果。

MLFPN由三个模块组成:特征融合模块(FFM)、Thinned U-shape Module(TUM)和Scale-wise Feature Aggregation Module(SFAM)。

FFMv1通过融合骨干网络的特征图,将语义信息集成到基础特征(Base feature)中。每个TUM生成一组多尺度特征,然后TUMs和ffmv2交替结合提取多层次多尺度( multi-level multi-scale)特征。SFAM通过特征尺度级联(scale-wise feature concatenation)操作和自适应注意力(adaptive attention)机制将特征聚合成多层次的特征金字塔。关于M2Det中的三个核心模块和网络配置的更多细节将在下面介绍。

MLFPN

如图2所示,MLFPN由三部分组成。

首先,FFMv1融合浅层特征和深层特征(如VGG的conv4_3和conv5_3)生成基础特征,为MLFPN提供多层次的语义信息。

其次,多个TUMs和FFMv2交替堆叠。每个TUM生成多个不同尺度的特征图。FFMv2融合基础特征和上一个TUM的最大的输出特征图。融合后的特征图会被输入到下一个TUM。注意,第一个TUM没有任何其他TUM的先验知识,只从基础特征中学习。输出的多层次多尺度特征计算如下:

图片3.png 

Xbase表示基础特征,xil表示第l个TUM中的第i个尺度的特征图。L表示TUM的数量,Tl表示第l个TUM网络,F表示FFMv2网络。

第三,SFAM通过尺度特征级联操作scale-wise feature concatenation operation)和通道注意机制来聚合多层次多尺度特征。

FFMs

FFMs融合了M2Det中不同层次的特征,这对构建最终的多层次特征金字塔至关重要。使用1x1卷积层来压缩输入特征的通道,并使用concatenation操作来聚合这些特征

FFMv1以骨干网络中两个不同尺度的特征图作为输入,在进行concatenation操作之前,采用上采样操作将深度特征缩放到相同尺度。

FFMv2将基础特征前一TUM的最大输出特征图作为输入,这两个尺度相同,并生成融合后的特征用于下一TUM

FFMv1和FFMv2的结构细节分别如图4 (a)和(b)所示。

图片4.jpg 

TUMs

FPN和RetinaNet不同,TUM采用了thinner u型结构,如图4 (c)所示。编码器是一系列的步长为2的3x3卷积层,逐渐将输入特征图的分辨率降低。解码器将这些层的输出作为其特征的参考集 reference set),而原始FPN选择ResNet骨干中每个阶段最后一层的输出。

解码器分支经过上采样逐元素相加运算后进行1x1卷积,以增强学习能力,并保持特征的平滑性

每个TUM的解码器的所有输出都形成当前层级的多尺度特征。总的来说,堆叠后的TUM输出形成多层次的多尺度特征,前面的TUM主要提供浅层特征,中间的TUM提供中层特征,后面TUM提供深层特征。

 

SFAM

SFAM的目标是将TUMs生成的多层次多尺度特征聚合成多层次特征金字塔,如图3所示。

SFAM的第一阶段是沿通道维度将等尺度的特征串接在一起。聚合的特征金字塔可以表示为X=[X1,X2,...,Xi],其中Xi=Concat(xi1,xi2,...,xiL)∈RWixHixC表示第i个尺度的特征,L是TUM的数量。聚合金字塔的每个尺度都包含多层次的特征。然而,简单的串接操作并不具有足够的适应性。

在第二阶段,使用通道注意力模块,使特征关注最重要的特征通道。与SENet一样,使用全局平均池化在squeeze步骤处生成通道统计量z∈RC。为了充分捕获通道依赖,excitation步骤通过两个全连接的层学习注意力机制:

S=Fex(z,W)=σ(W2δ(W1z))

σ为ReLU函数,δ为sigmoid函数,W1∈R C/r×C, W2∈RC×C/r, r为reduction ratio(实验中r = 16)。最终输出是通过激活s对输入X进行加权得到的:

图片5.jpg 

其中每个特征通过缩放操作得到增强或削弱。

图片6.jpg 

网络配置

我们用两种骨干网络来组装M2Det,在训练整个网络之前,需要在ImageNet 2012数据集上对骨干网络进行预训练。MLFPN的所有默认配置都包含8个TUMs,每个TUM有5个striding-Convs和5个Upsample操作,因此它将输出6个scale的特性。为了减少参数的数量,我们只对每个规模的TUM特征分配256个通道,这样网络可以很容易地在gpu上训练。至于输入大小,我们遵循原始SSD、RefineDet和RetinaNet,即320、512和800。

在检测阶段,我们对6个金字塔形特征分别添加两个卷积层,分别实现位置回归和分类。6个特征图的默认边界框的检测尺度范围遵循原始SSD的设置。当输入尺寸为800×800时,除了保持最大feature map的最小尺寸外,缩放范围按比例增加。在金字塔特征的每个像素设置了6个完全具有3个宽高比的Anchor。然后,我们使用概率分数0.05作为阈值,过滤出分数较低的Anchor。然后使用带有线性内核的soft-NMS 进行后处理,留下更精确的边界框。将阈值降低到0.01可以得到更好的检测结果,但会大大降低推理时间,我们并不认为这是为了追求更好的实用价值。

 

 

实验

 

 

 

 

 

 


上一篇:
下一篇:

首页 所有文章 机器人 计算机视觉 自然语言处理 机器学习 编程随笔 关于