参考 M2Det: A Single-Shot Object Detector based on Multi-Level读) - 云+社区 - 腾讯云
目录
摘要
特征金字塔广泛用在一阶段目标检测器(比如,DSSD,RetinaNet,RefineDet)和两阶段目标检测器(比如Mask R-CNN, DetNet)。尽管这些使用特征金子塔的目标检测器具有很好的结果,但是由于仅仅根据固有的多尺度(为目标分类任务而设计的骨干的金字塔结构)。最新的,在这个工作中,作者提出了一个方法称为多级金字塔网络(Multi-Level Feature Pyramid Network, MLFPN)来构建检测不同尺度目标更有效的金子塔:
- 首先融合骨干网提出的多级特征作为基础特征。
- 把基本的特征加入一组交替连接的U型模块和特征融合模块,利用每个U型模块的解码器层作为目标检测的特征。
- 将具有等效尺度(大小)的解码器层集合起来,形成一个用于目标检测的特征金字塔,其中每个特征图由多个层次的层(特征)组成。
为了评估所提出的多目标检测器(MLFPN)的有效性,设计并训练了一种功能强大的端到端单阶段目标检测器(M2Det),将其集成到SSD的体系结构中,该检测器的检测性能优于目前最先进的单阶段检测器。其中,M2Det在MS-COCO基准上,采用单尺度推理策略,在11.8 FPS的速度下,AP达到41.0,采用多尺度推理策略,AP达到44.2,是单级检测器中最新的研究成果。
简介:
目标实例间的尺度变化是对象检测任务的主要挑战之一,通常有两种策略来解决这一挑战产生的问题。 第一个是检测图像金字塔中的对象(即输入图像的一系列调整大小的副本),这只能在测试时使用。 显然,这种解决方案将大大增加内存和计算复杂度,从而使目标探测器的效率大大降低。 第二步是从输入图像中提取的特征金字塔中检测目标,可以在训练和测试阶段加以利用。 与使用图像金字塔的第一个解决方案相比,它具有更小的内存和计算成本。 此外,特征金字塔构造模块可以很容易地集成到先进的基于深度神经网络的检测器中,产生端到端解决方案。
尽管目标探测器具有特征金字塔取得了令人鼓舞的结果,但由于它们只是简单地根据实际为目标分类任务设计的主干的内在多尺度金字塔结构来构建特征金字塔,因此仍有一定的局限性。 例如,如图1所示,SSD直接独立使用两层主干(即VGG16)和通过stride 2卷积获得的四层额外层来构建特征金字塔; STDN仅使用DenseNet的最后一个密集块,通过池化和尺度转移操作构建特征金字塔; FPN采用自顶向下的方式融合深层和浅层,构建特征金字塔。 一般来说,上述方法有以下两个局限性。 首先,金字塔中的特征图在目标检测任务中没有足够的代表性,只是简单地从目标分类任务的主干层(特征)构造而成。 其次,金字塔中的每一个特征图(用于检测特定尺寸范围内的目标)主要或甚至仅由主干网的单层构成,即主要或仅包含单层信息。 总体而言,层次较深的高阶特征对分类子任务的判别能力更强,层次较浅的低阶特征对目标位置回归子任务的判别能力更强。 此外,低级特征更适合表征外观简单的物体,而高级特征更适合表征外观复杂的物体。 在实践中,具有相似大小的对象实例的外观可能完全不同。 例如,一个交通灯和一个遥远的人可能有相似的大小,而这个人的外观要复杂得多。 因此,金字塔中的每个特征图(用于检测特定尺寸范围内的目标)主要或仅由单级特征组成,将导致检测性能次优。
本文的目标是在不受上述现有方法的限制的情况下,构建一个更有效的特征金字塔来检测不同尺度的目标。 如图2所示,为了实现这一目标,我们首先将主干网提取的多层次特征(即多层)作为基本特征进行融合,然后将其输入到由多个联合瘦u型模块(TUM)和特征融合模块(FFM)组成的交互块中,提取出更具代表性的多层次多尺度特征。 值得注意的是,每个U型模块中的解码器层具有相似的深度。 最后,我们收集具有等价比例尺的特征图,构建最终的目标检测特征金字塔。 显然,构成最终特征金字塔的解码器层比主干中的层更深,也就是说,它们更具有代表性。 此外,最终特征金字塔中的每个特征图都由多层解码器层组成。 因此,我们称我们的特征金字塔块为多级特征金字塔网络(MLFPN)。
为了评估提出的MLFPN的有效性,我们将MLFPN集成到SSD的体系结构中,设计并训练了一个强大的端到端一级目标检测器,我们称之为M2Det(因为它建立在多级和多尺度特征之上)。 M2Det达到了最新水平的结果(单尺度推理策略下11.8 FPS速度下的AP为41.0,多尺度推理策略下的AP为44.2),优于MS-COCO基准上的一级检测器。
相关工作
研究人员已经投入了大量的努力来提高不同尺度物体的检测精度——无论是单级检测器还是两级检测器。 据我们所知,主要有两种策略来解决这个尺度变化问题。
第一种方法是对图像金字塔(即输入图像的一系列大小调整副本)进行特征化,以产生语义上具有代表性的多尺度特征。 来自不同尺度图像的特征分别产生预测,这些预测结合在一起给出最终的预测。 在识别精度和定位精度方面,不同尺寸图像的特征确实超过了单纯基于单尺度图像的特征。 诸如和SNIP等方法都采用了这种策略。 尽管这种策略可以提高性能,但它在时间和内存方面的成本都很高,这使得它不能应用于实时任务。 考虑到这一主要缺点,SNIP等方法可以选择只在测试阶段使用特征图像金字塔作为退步,而其他方法,包括Fast R-CNN和Faster R-CNN默认不使用这一策略。
第二种方法是在仅采集单尺度图像的情况下,从网络内部的固有层中提取特征金字塔进行目标检测。 与第一种策略相比,这种策略引入的额外内存和计算成本明显更低,能够在实时网络的训练和测试阶段进行部署。 此外,特征金字塔构造模块可以很容易地修改,并适合于最先进的基于深度神经网络的检测器。 MS-CNN、SSD、DSSD、FPN、YOLOv3、RetinaNet、RefineDet 以不同方式采用了这一策略。
据我们所知,MS-CNN提出了两个子网络,并首次将多尺度特征融合到深度卷积神经网络中用于目标检测。 提出的子网络利用多种分辨率的特征图来检测图像中的多尺度目标。 SSD利用VGG16基网后期的特征图和额外的特征层进行多尺度预测。 FPN利用横向连接和自上而下路径生成特征金字塔,实现了更强大的表征。 DSSD实现了反褶积层,用于聚合上下文并增强浅层特征的高级语义。 RefineDet采用两步级联回归,在保持SSD效率的同时,在精度上取得了显著进步。
提出的方法
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的先验知识,因此它只从学习。
输出多层多尺度特征计算方式为:
其中为基特征,
为第l个TUM中第i个尺度的特征,L为TUMs个数,
为第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骨干中每个阶段的最后一层的输出。另外,在解码器分支上进行上采样和逐元素求和运算后,再加上1x1个卷积层,增强了学习能力,保持了特征的平滑性。每一转译码器的输出均形成当前层的多尺度特征。每个TUM的解码器中的所有输出都形成当前层的多尺度特性。从整体上看,堆叠的TUMs的输出形成多层次、多尺度的特征,而前向的TUM主要提供浅层特征,中向的TUM提供中层特征,后向的TUM提供深层特征。
SFAM
SFAM的目的是将TUMs生成的多级多尺度特征集合成一个多级特征金字塔,如图3所示。第一阶段是沿着通道尺寸将相同尺度的特征连接起来。聚合特征金字塔可以表示为X = [X1;X2,...,Xi],其中Xi= 为第i大尺度的特征。在这里,聚合金字塔中的每个尺度都包含来自多层深度的特征。然而,简单的连接操作还不够自适应。在第二阶段中,我们引入了一个逐通道的注意模块,以鼓励特性将注意力聚焦在它们最受益的通道上。在SE block之后,使用全局平均池化在压缩步骤中生成通道方向的统计数据
。为了充分捕捉通道依赖性,以下激励步骤通过两个全连接层来学习注意机制:
其中为ReLU函数,
为sigmoid函数,
, r为还原比(r = 16)。
最终输出通过激活s对输入X重新加权得到:
其中,通过缩放操作,每个特征增强或减弱。
网络配置
用两种类型的骨干来配置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个特征图默认框的检测尺度范围按照原始SSD的设置。当输入大小是800×800,比例尺范围按比例增加,除了保持最大Ground truth的最小尺寸。在金字塔形特征的每个像素处设置了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的几种版本。
实验的实现细节
对于所有基于M2Det的实验,我们以热身策略开始训练5个epoch,初始化学习率为2×10−3,在90个epoch和120个epoch时分别降低到和
,在150个epoch时停止。M2Det是在PyTorch v0.4.0上开发的。在输入尺寸为320和512时,分别在4台NVIDIA Titan X GPU、CUDA 9.2和cuDNN 7.1.4的机器上进行实验,在输入尺寸为800时,我们在NVIDIA Tesla V100上对网络进行训练,以快速得到结果。批处理大小设置为32(2个GPU为16个,4个GPU为8个)。在拥有12gb内存的NVIDIA Titan Xp上,如果单GPU上的批处理大小小于5,那么训练性能将受到限制。值得注意的是,对于Resnet101,输入大小为512的M2Det不仅在批量大小上受到限制(只有4个可用),而且需要很长时间的训练,所以我们在V100上进行训练。
在4台Titan X设备上,输入尺寸为320×320和512×512的VGG-16主干网训练M2Det,总训练时间分别为3天和6天,320×320的ResNet-101主干网训练M2Det,总训练时间为5天。而在2台V100设备上,当输入尺寸为512×512时,使用ResNet-101对M2Det进行训练,则需要11天。最准确的型号是M2Det,采用VGG主干网,输入尺寸为800×800,耗时14天。
与先进方法进行比较
将提出的M2Det与最先进的检测器的实验结果进行了比较,如表1所示。在这些实验中,我们使用8个TUMs,每个TUM设置256个通道。比较所涉及的主要信息包括模型的输入大小、测试方法(是否使用多尺度策略)、模型的速度以及测试结果。下表给出了M2Det在10种不同设置版本下的测试结果,这些测试结果是在MS-COCO Test -dev划分上测试得到的,使用一个NVIDIA Titan X PASCAL,批量大小为1。其他统计结果来源于参考文献。值得注意的是,VGG骨干的M2Det -320达到了38.9的AP,这已经超过了大多数具有更强大的骨干和更大输入尺寸的目标检测器,如deformable R-FCN的37.5,Faster R-CNN+FPN的36.2。与ResNet-101组装可以进一步改善M2Det,单尺度版本获得的AP为38.8,与最先进的两级检测器Mask R-CNN 竞争。
此外,在优化PyTorch 1的基础上,它可以以15.8 FPS的速度运行。RefineDet继承了一阶段检测器和两阶段检测器的特性,AP达到了48.1,CornerNet提出乐关键点回归,并且借鉴了Hourglass的优点,因此AP达到了42.1。相比之下,本文提出的M2Det是基于原始SSD的回归方法,借助多尺度多层次的特征,得到了44.2 AP,超过了所有的一级检测器。由于使用不同的方法或工具,大多数方法都没有比较多尺度推理策略的速度,因此本文也只关注单尺度推理方法的速度。此外,为了强调M2Det的改善并不完全是由于模型深度的加深或得到的参数所引起的,我们将其与目前最先进的单级和两级检测器进行了比较。带有Hourglass的CornerNet有201M参数,带有ResNeXt-101-32x8d-FPN的Mask R-CNN有205M参数。相比之下,M2Det800-VGG只有1.47亿个参数。此外,考虑到深度的比较,它也不占优势。
消融研究
由于M2Det是由多个子组件组成的,我们需要验证它的每一个有效性,直到最终的性能。Baseline是一个基于原始SSD的简单检测器,输入尺寸为320×320,主干缩减为VGG-16。
TUM
为了证明TUM的有效性,本文进行了三个实验。首先,在DSSD之后,我们用一系列去卷积层扩展baseline检测器,AP已经从25.8提高到27.5,如上表第三列所示。然后将MLFPN代入其中。对于U型模块,首先对8个s-TUMs进行叠加,对s-TUMs进行了修改,减少了如TUM所示的1×1卷积层,与上次运算相比,性能提高了3.1,如上表的第四列所示。最后,第五列用s-TUM替换TUM达到了最好的性能,AP为30.8。
Base Feature
虽然叠加TUMs可以提高检测效果,但受到第一个TUM输入通道的限制。也就是说,减少通道会降低MLFPN的抽象,而增加通道则会极大地增加参数个数。为了解决这一问题,我们不再只使用基本特征一次,而是在每个循环的输入端引入基本特征。对于每个TUM,嵌入的基本特征都提供了必要的定位信息,因为它包含浅层特征。如上表第六列所示,AP百分比增至32.7。
SFAM
如上表第七列所示,与没有SFAM的体系结构相比,所有的评估指标都得到了升级。具体来说,所有的Bounding Box,包括小,中,大变得更加准确。
Backbone feature
在许多视觉任务中,当使用训练好的的ResNet-101而不是vgg -16作为骨干网络时,观察到AP显著地从33.2增加到34.1。如上表所示,这样的观察仍然是真实的,并且与其他AP度量一致。
MLFPN的变化
多尺度、多层次的特征被证明是有效的。但是MLFPN改进的局限性在哪里呢?向前一步,如何设计TUM,多少个TUMs可以?我们实现了一组变量来查找规则模式。我们将主干固定为VGG-16,输入图像大小为320x320,然后调整每个TUM的TUMs数量和内部通道数量。下表所示,在COCO minival set上对不同构型TUMs的M2Det进行了评估,对比固定通道时的TUMs数量,如256,可以得出叠加更多的TUMs在检测精度上得到了更大的提升。然后固定TUMs的数量,无论组装多少个TUMs,更多的通道肯定会对结果有好处。此外,假设我们以2个TUMS和128个通道的版本为基准,使用更多的TUMS比增加内部通道带来更大的改善,而参数的增加保持不变。
速度
比较了M2Det与最先进方法的推理速度。由于VGG-16去掉了FC层来减少主干网络,用它提取基本特征非常快。将批大小设置为1,取1000张图像的CNN时间和NMS时间之和,再除以1000得到一张图像的推理时间。我们将VGG-16装到M2Det上,提出输入尺寸为320×320的快速版M2Det,输入尺寸为512×512的标准版M2Det,以及输入尺寸为800×800的最精确版M2Det。M2Det在优化PyTorch的基础上,可以实现高速精确的结果,如下图所示。M2Det得益于单级检测的优点,本文提出的MLFPN结构,与其他方法相比,绘制出了明显更好的速度精度曲线。为了公平比较,在设备上复制并测试了SSD321-ResNet101、SSD513-ResNet101、RefineDet512-ResNet101、RefineDet320-ResNet101和CornerNet的速度。很明显,M2Det执行得更加准确和有效。此外,用hard-nms代替soft-nms,,m2dt-vgg-800甚至可以达到20 fps的速度,只牺牲了很少的精度。
六、讨论
我们认为M2Det的检测精度的提高主要是由提出的MLFPN带来的。一方面,我们将骨干网提取的多级特征融合为基本特征,然后将其输入到交替连接的U型轻量模块和特征融合模块中,提取出更具代表性的多级多尺度特征,即每个TUM的解码器层。显然,这些解码器层比主干层要深得多,因此更适合于目标检测。与我们的方法相比,现有的检测器只使用主干层或附加层,深度增加很少。因此,我们的方法可以实现优越的检测性能。另一方面,SFAM生成的多级特征金字塔的每个特征映射由多个层次的解码器层组成。特别是,在每个尺度上,我们都使用多级特性来检测对象,这对于处理对象实例之间复杂的外观变化会更好。
为了验证所提出的MLFPN能够学习到有效的特征来检测不同尺度和复杂外观的目标,将分类卷积层的激活值沿尺度和水平维度可视化,如下图所示。输入图像包括两个人,两辆车和一个红绿灯。此外,两个人的大小不同,以及两辆车。交通灯,小个子和小轿车的尺寸差不多。我们可以发现:1)与较小的人相比,较大的人在大尺度特征图上具有最强的激活值,从而对较小的车和较大的车都具有激活值;2)交通灯、较小的人和较小的汽车在相同尺度的特征图上具有最强的激活值;3)人、车、交通灯分别在最高、中、最低的地物图上具有最强的激活值。这个例子表明:1)、我们的方法学习了非常有效的特性来处理目标实例之间的尺度变化和复杂的外观变化;2)、使用多级特征来检测相似尺寸的物体是非常必要的。
七、结论
本文提出了一种新的多层特征金字塔网络(MLFPN)方法,构造了一种有效的特征金字塔来检测不同尺度的目标。MLFPN由几个新的模块组成。首先,采用特征融合模块(FFMv1)作为基本特征,融合骨干网提取的多层次特征。其次,将基本特征输入交替连接变薄u型模组(TUMs)和特征融合模组(FFMv2s),提取多级多尺度特征(即每个TUM的解码器层)。最后,将提取的具有相同尺度(大小)的多级多尺度特征进行聚类,利用尺度特征聚类模块(SFAM)构造一个特征金字塔,用于目标检测。基于提出的MLFPN设计了一个强大的一阶段端对端检测器,在MS-COCO上的一阶段检测器中达到了一个新的最佳检测结果。进一步的消融研究进一步证明了所提出的结构和新模块的有效性。