2017_Feature Pyramid Networks for object detection(CVPR2017)Tsung-Yi Lin.pdf

一、背景及意义(动机)

识别大范围尺度的目标,是计算机视觉的一个基本挑战。特征金字塔是目标检测为了能够适应不同的尺度,常用的一个基本组件。图像金字塔的优势是特征化每一层图像,生成一个多尺度的特征表示,并且每一层特征表示都具有很强的语义信息。深度卷积神经网络对于尺度的变换更加鲁棒,但是并不是说它就不需要使用图像金字塔,在coco比赛上面取的最好效果的几个目标检测结果,都是采用了多尺度的测试方式。但是在深度卷积神经网络中对每一层图像进行特征化具有明显的局限性。这样会使推断时间增加,使得很难应用到实际场景中,并且训练过程中采用特征金字塔也是不可取的,大的金字塔层需要很大的显存。 图像金字塔并不是唯一的方式去计算多尺度强语义的特征表示。深度卷积网络逐层去计算特征层次,并且使用降采样层,这些特征层本身就具有多尺度金字塔结构。这些网络结构中的特征层提供了不同空间分辨率的特征图,但是由于处在不同的深度,它们表达的语义强度不同。高分辨率的特征图只能表达更低层的特征,语义强度不够,从而影响到目标检测的效果。在这篇论文中,作者使用了一个嵌入在深度卷积神经网络中的金字塔结构,能够利用多种分辨率的强语义特征来对目标进行识别并且能够在引入特征金字塔结构的情况下,不会带来过多额外的计算复杂度和内存的消耗。该结构采用自顶向下的方式并引入了skip connections,用于为各个尺度构建深层语义特征图。作者将该结构称为特征金字塔网络(FPN),这个体系结构作为通用的特征提取器在多个应用中带来了性能的提升,如目标检测和实例分割。作者将FPN结构嵌入到基本的faster rcnn中,在coco检出数据集上取得了单模型最好的结果,超过了所有现存的其它模型。另外作者提到的方法,在GPU上每秒可跑5帧,是多尺度目标检测在应用中的一个比较好的解决方案。
代码https://github.com/caffe2/caffe2

二、使用什么方法来解决问题(创新点)

2.1 创新点

作者利用卷积网络金字塔形状式的特征层来构建一个在各个尺度上都有强语义的特征金字塔。为了达到这个目的,作者使用了top-down 和skip connection结构,组合了低分辨率,语义强的特征和高分辨率语义弱的特征,使得每一层特征图都具有强的语义表达能力。作者通过该方式,在不牺牲表达能力,速度和内存的情况下,构建了一个网络内的特征金字塔,替换掉图像金字塔,并在多个任务上准确率和速度都得到了提高。

2.2 提到的方法与先前方法的区别

下图C是SSD采用的方式,虽然它采用了多种分辨率的特征,但是它使用的是较为底层的特征,表达的语义信息不够强。并且弃用了更高层的语义信息作者通过实验验证高层语义信息对于检测小目标是很重要的。如下图d作者提到的方法,正是利用skip connection和top down结构,组合了低分辨率,语义强的特征和高分辨率语义弱的特征。该结构在每一层都具有丰富的语义信息,并且只需单尺度输入,训练和测试速度很快,不需要消耗额外的显存。

下图与作者提出的结构类似,但是该结构只是生成单个更细粒度的高层特征图,作者也通过实验验证了提到的方式更加优越。

2.3 重要结论

  1. 尽管深度学习具有很强的表达能力,而且对尺度变化较为鲁棒,但是显式引入金字塔表示,对于处理多尺度问题仍然是很关键的。
  2. 高层语义信息和分辨率都对结果有影响。
  3. 使用bottom-up 金字塔效果比top-down要差很多,因为低层特征图语义信息不够强。
  4. 通过skip connetion将细节信息与抽象信息结合带来的效果提升明显。
  5. 对每层金字塔进行预测要比单层预测效果好,并且单单增加anchor个数,并不能够带来性能的提高。

三、方法介绍

提到的结构主要包括了:bottom-up pathway,top-down pathway和skip connetions

  • bottom-up pathway
    这里的bottom-up pathway其实就是前向传播,也就是模型使用的backbone,主要是计算由feature map构成的特征层,这些特征层的尺度一般是2倍差距。这里作者把feature map大小一致的层构成的网络看做是一个网络阶段,也即一个金字塔层;然后选择每一个金字塔层最后的feature map作为该金字塔层的特征图,最后采用skip connection 与高层 feature map进行连接。
    在这里作者使用的backbone是ResNets,并将每个阶段的最后的residual block作为每个金字塔层的特征,并将它们定义为{C2,C3,C4,C5},对应的stride分别为{4,8,16,32}。由于考虑到内存占用的问题,这里作者没有使用stride为2的金字塔层。
  • Top-down pathway and lateral connetions
    如下图,top-down pathway主要通过将语义信息更强但是分别率较低的层进行upsample来得到分别率更大语义信息也更强的金字塔层,并将得到的特征与bottom-up pathway对应分别率的金字塔层通过skip connection进行组合,得到语义信息更加强的特征。bottom-up特征图虽然语义信息不够强,但是它保留了更多的位置信息。bottom-up特征图在与高层特征图组合的时候采用了1x1的卷积层,来使两个feature map大小一致,然后再进行逐元素相加,最后在得到的特征图上,在使用一个3X3的卷积层得到最终的特征图。这个最终的feature map集和作者将其表示为{P2,P3,P4,P5}与{C2,C3,C4,C5}相对应。最后的回归器和分类器是各个金字塔层共享的,所以最后作者将每一层金字塔层的feature map设置为256。

3.1 在RPN网络中应用特征金字塔

作者将RPN网络(3x3卷积层+2个分开的1X1卷积层,一个用于分类,一个用于回归)应用到各个金字塔层。由于RPN网络是各个金字塔层共享的,它会对所有金字塔层的各个位置进行识别,所以作者对每个金字塔层只使用了一个尺度的anchor,但是使用了3种宽高比。
当目标与anchor具有最大的IOU,或者IOU大于0.7时,该anchor被分配为正样本,当与所有目标的IOU小于0.3时,该anchor被分配为负样本。 其它配置与原本faster rcnn一致。
作者也尝试过让RPN网络不在多个金字塔层共享,但是得到的结果与共享是类似的。这说明各个金字塔层消除了尺度的影响,有了类似的语义信息。

3.2 在fast R-CNN中应用特征金字塔

在利用RPN网络获取到候选目标之后,到哪一层金字塔层去提取特征呢?对于在图像上宽为w,高为h的目标,这里作者采用了如下方式选择金字塔层。

这里$k_0$是一个超参,表示$w\times h=224^2$大小的ROI应该在哪一层提取特征。这里作者将$K_0$设置为4。
fast rcnn的头部是所有特征层共享的,这里作者使用ROIpooling从每个金字塔层中提取7X7大小的特征,然后再接两个1024的全连接层。

四、实验结果及重要结论

作者在包含80个类别的COCO检出数据上进行试验。训练的时候使用了80K的训练集和35K的验证集的并集进行训练,并在5K的小验证集上进行测试,作者也在test-std上进行了测试,该测试集没有公开标签。
所有的网络的backbones采用Imagenet-1k进行预训练。这里作者使用了预训练的ResNet-50和ResNet-101

4.1 目标检测

4.1.1 RPN

4.1.1.1 评估方式和参数设置

这里作者采用的评价指标是COCO的评估方式即AR(Average Recall)和小,中,大目标的AR指标。也评估每张图片取100个proposals和1000个proposals的结果。

  • 预处理:将所有输入图像resize成短边为800像素的图片。
  • minibatch:使用8张卡,每个gpu一个minibath跑2张图片,每张图片256个样本。
  • 优化器:采用同步SGD进行优化。
  • 正则化:权重衰减为0.0001,动量为0.9。
  • 学习率调整策略:在开始的30k个mini-batch学习率设置为0.02,剩余的10kmini-batch设置为0.002。
  • 对于所有的RPN实验,作者将超出图像的anchor也一起训练。

4.1.1.2 实验结果

这里a是使用了$C_4$的特征,b是使用了$C_5$的特征,所有的都使用了5种尺度的anchor $[32^2,64^2,128^2,256^2,512^2]$,这里$AR^{1k}$表示测试的时候每个图片proposals数为1000。

  • 与baseline相比
    从a和b的结果来看,单个高层的特征图并不足够,因为b虽然语义更强,但是分辨率也更低了。
    从a跟c的结果可以看出,使用FPN后效果提升明显,特别对小目标。
  • top-down结构的影响
    从d中结果可以看到,效果比FPN差距很大,这可能是低层特征层没有足够的语义信息。另外共享head和不共享效果差不多。
  • skip connection的影响
    通过skip connetciont将细节信息与抽象信息结合带来的效果的提升明显。
  • 对每层金字塔层进行预测的影响
    对每层金字塔进行预测要比单层预测效果好,而且使用最后一层金字塔层也增加了anchor数,说明通过增加anchor个数,并不能够带来性能的提高。

4.1.2 fast/faster R-CNN

4.1.2.1 评估方式和参数设置

这里作者采用的评价指标是COCO-style的评估方式即AR(Average Recall),小,中,大目标的AR指标以及PASCAL-style的评估方式,即在IOU的阈值为0.5的情况下的AP。测试的时候每张图片1000个proposals。

  • 预处理:将所有输入图像resize成短边为800像素的图片。
  • minibatch:使用8张卡,每个gpu一个minibath跑2张图片,每张图片512个样本。
  • 优化器:采用同步SGD进行优化。
  • 正则化:权重衰减为0.0001,动量为0.9。
  • 学习率调整策略:在开始的60k个mini-batch学习率设置为0.02,剩余的20kmini-batch设置为0.002。
  • 对于所有的RPN实验,作者将超出图像的anchor也一起训练。

4.1.2.2 实验结果

RPN与fast RCNN不共享backbone

作者为了更好比较先前方法与当前提到的FPN网络在fast RCNN上的效果,将fast RCNN和RPN网络独立开来,不进行特征共享,并使用了基于FPN的RPN网络的候选结果进行训练。
从实验结果可以看到,FPN相较于之前resnet+faster rcnn AP提高了2个点。d和e表明移除top-down connetions或者移除skip connection带来的影响,fast rcnn与RPN网络具有相同的结论。f是只用最后一层特征来预测,从结果来看使用多层金字塔特征会比只用最后一层要好,但是优势并不明显,这里可能的原因是ROIpool对于区域的尺度不敏感。

RPN与fast RCNN共享backbone

Table3中* 为使用resnet101+faster rcnn的结果。a也是相同的模型,但是使用的配置参数不一样。主要的不同有1)原本输入的图片尺度为600,现在作者将其变成800 2)原本训练的时候,每张图片只使用了64个ROI,现在训练的时候每张图片使用了512个ROIs 3)原本anchor尺度只有4个,现在作者改为了5个
3)在测试的时候每张图片只有300个proposals,现在每张图片有1000个proposals。通过设置上的变动,AP比原本提高了7.6个点;AP@0.5比原本提高了9.6个点。

作者也比较了共享特征和不共享特征对结果的影响

从结果可以发现共享确实能够带来性能的提升,而且也大大提高运行速度。在特征共享的基础上,基于FPN的faster RCNN,使用resnet50作为baakbone推断的时候每张图片需要跑0.165秒,使用Resnet101则需要0.19秒。而当尺度的resnet50,如Table3(a)则需要跑0.32秒。

与COCO比赛的冠军进行对比

从结果可以看到作者提到的方法具有很大的优势。并且作者也没有使用最近提出的其它改进的方法。

4.2 实例分割

这里作者沿用了DeepMask和sharpMask的框架。

从结果可以看出速度和准确率都有极大提升。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 524813168@qq.com

文章标题:2017_Feature Pyramid Networks for object detection(CVPR2017)Tsung-Yi Lin.pdf

文章字数:3.6k

本文作者:xieweihao

发布时间:2018-01-13, 21:30:50

最后更新:2020-01-23, 10:16:27

原始链接:http://weihaoxie.com/post/c8c7a90a.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏