Feature Pyramid Networks for Object Detection 论文阅读笔记

Feature Pyramid Networks for Object Detection

用于目标检测的特征金字塔网络

论文概述

本文作者在2017年提出了一种网络结构:FPN(Feature pyramid Networks),主要解决目标检测中的多尺度问题。高层特征图分辨率低,每个特征数据语义信息比较丰富,但是目标位置比较粗略,具有较大的感受野,对应原图较大的区域,适用于检测大物体;底层特征图分辨率高,每个特征数据语义信息比较少,但是目标位置比较准确,具有较小的感受野,对应原图较小的区域。但是底层特征容纳的语义信息少,难以描述原始图像的特征的物体特征,直接利用底层特征做预测,难以检测物体。所以传统的目标检测算法只利用最深层特征做预测,往往难以预测小物体。FPN通过自底向上和自顶向下的路径以及横向连接,实现了多尺度特征的融合和独立预测,从而提高了目标检测的准确性,尤其是对小物体的检测。

论文详解

一、各种网络结构对比

a、特征化图像金字塔(Featurized image pyramids

  将图片缩放到不同的尺度,针对每个尺度的图像,依次通过算法预测。每一层同时使用CNN提取特征,生成对应的特征图,速度慢,耗时长。

b、CNN 提取高层特征(Single feature map)

  由backbone 生成的最后一层特征图进行预测,如SPP-Net,Fast R-CNN,Faster R-CNN就是采用这种方式。

c、金字塔特征层级(Pyramidal feature hierarchy)

  在backbone得到的不同特征图上分别进行预测,如SSD。本文作者认为SSD算法没有用到足够底层的特征(在SSD中,最低层的特征是VGG网络的conv4_3),而作者认为足够低层的特征对于检测小物体很重要。

d、特征金字塔网络(Feature Pyramid Network)

  在backbone得到的不同特征图上的特征进行融合,在融合之后的的特征图上再分别进行预测。

  下图,采用的是一个带有跳跃连接的自顶向下的结构,即经过对不同特征图的特征融合,使用融合后的最后一层特征做预测。和FPN区别在于,FPN是对每一层进行独立预测。

    

二、FPN 网络

2.1 FPN网络结构(使用ResNet-50作为测试)

(1)自底向上的路径

在使用卷积神经网络进行图像处理时,自底向上路径指的是通过前向传播计算骨干网络的特征层次结构。这个特征层次结构由多个尺度的特征图组成,每个尺度的特征图通过以2为步长的缩放操作得到。

在特征金字塔的构建中,通常多个层产生相同大小的输出图,因此定义每个阶段的输出作为一个特征层级,每个阶段的最后输出的特征图作创建特征金字塔。

对于ResNet,使用每个阶段的最后一个残差块的输出特征图,被标记为{C2, C3, C4, C5},分别对应conv2、conv3、conv4和conv5的输出,每个特征图相对于输入图片的步长为{4, 8, 16, 32}。由于conv1层的内存占用较大,因此不将其包含在金字塔中。

(2)自顶向下的路径和横向连接

自顶向下的路径指的是从网路的顶层开始向下传播信息,对金字塔高层进行上采样,扩展到与相邻底层相同的尺寸,得到分辨率高同时语义信息更强的信息,这些特征通过横向连接将上采样后的高层特征图与底层特征图融合,融合通过逐元素相加来实现,以获取更丰富的语义信息。

具体步骤:{C2, C3, C4, C5}分别传入卷积核尺寸为1*1*256(设置d=256)的卷积层,目的是调整backbone上不同特征图的通道数,使相邻的特征图保证相同的尺寸,更好的进行融合。起始时,使用最近邻差值方法对C5进行2倍上采样,和通道压缩后的C4特征图进行add融合,将融合后的特征图传入卷积核尺寸为3*3的卷积层得到最终的特征图,以减少上采样时的混叠效果。经过以上融合步骤最终生成的特征图称为{P2, P3, P4, P5},与{C2, C3, C4, C5}相对应。最后,对P5进行下采样得到P6(P6只用于RPN部分)。

(此图来源于网络) 

三、应用

3.1 Feature Pyramid Networks for RPN

RPN是一个Faster R-CNN论文提出的用来提取候选框的网络。在RPN的设计中,在单一尺度的特征图上应用3x3滑动窗口对每个位置抽取特征,然后通过两个平行的全连接层分别完成分类与回归任务。RPN引入了锚(Anchor)的概念,即一组具有预定义比例和长宽比的参考框,用于覆盖图像中不同形状的对象。

作者把应用RPN的单尺度特征图替换为拥有5层特征图的FPN。在FPN的每个层级上,都添加了一个相同的head(包含3x3卷积和两个1x1卷积层),从而实现了多尺度的目标检测。针对不同的特征层级,只使用单一尺度的anchor。规定anchor在不同层{P2、P3、P4、P5、P6}上的面积分别为{32²、64²、128²、256²、512²}像素,纵横比为{1:2, 1:1, 2:1},所以每个滑动窗口在原图都对应15个anchor。

在训练过程中,使用IoU(anchor与真实边界框的交并比)来分配训练标签。若一个anchor与某个真实边界框的IoU最大,或者与任意一个真实边界框的IoU超过0.7,则标记为正样本;若IoU低于0.3,则标记为负样本。此外,经过验证,head的参数在所有特征金字塔层级之间可以是共享的。

3.2  Feature Pyramid Networks for Fast R-CNN

Fast R-CNN是一种基于区域卷积网络的快速目标检测方法,使用RoI(感兴趣区域)池化来提取特征。通常Fast R-CNN在单一尺度的特征图上进行操作,为了与FPN配合,需要将不同尺寸的RoI分配到金字塔的不同层级上。

RoI的宽度为w,高度为h,通过下面的公式计算后将其分配到特征金字塔的Pk层级。

  • 224是ImageNet预训练图像尺寸;
  • k0是当RoI的宽度和高度为224*224时,应映射到该层级。(在此例中,k0=4);
  • w、h是指RoI宽度和高度(在此例中,RoI的尺寸是ImageNet预训练标准尺寸 224*224的一半);
  • k是指RoI最终在哪个特征层上进行预测和处理的层级(在此例中,计算得k=3)。

所以,如果RoI的尺寸相对于224x224的尺寸变得更小(比如是224的一半),那么它应该被映射到特征金字塔中分辨率更高的层级(即k值更小的层级,如k=3)。

接着,将所有层级的RoI池化层输出使用相同参数的head,减少了模型复杂度并促进特征在不同层级间的共享。与在Faster R-CNN中,采用ResNet conv5层作为head的传统方法不同,在FPA中conv5已经被用作构建了特征金字塔,因此添加了两个隐藏的全连接层(各层后接ReLU)作为检测网络的head用于最终的分类和边界框回归。这些全连接层是随机初始化的,比原来的conv5更加轻量级。

四、目标检测实验

在包含80个类别的COCO检测数据集上进行实验,训练集由80,000张训练图像和35,000张验证图像的子集(trainval35k)组成,并在5,000张验证图像的子集(minival)上进行消融实验,最终在标准测试集(test-std)上报告了最终的实验结果。

具体步骤:首先将网络的主干部分(backbones)在ImageNet1k分类数据集上进行预训练,然后在检测数据集上进行微调。本文使用的是公开预训练ResNet-50和ResNet-101模型,代码是基于py-faster-rcnn的重新实现,使用Caffe2框架开发。

4.1 Region Proposal with RPN

作者使用不同架构在COCO数据集评估RPN的性能,通过计算COCO-style的平均召回率(AR)以及针对小、中、大物体的平均召回率(ARs, ARm, ARl)来评估模型性能,并报告了每张图像100个(AR 100)和1000个(AR1k)proposal的结果。

实现细节:

  • 所有架构均采用端到端训练方式,输入图像的短边调整为800像素;
  • 在8个GPU上同步进行SGD训练;
  • 批量大小:每个GPU处理2张图像,每张图像包含256个anchor;
  • 权重衰减设置为0.0001,动量设置为0.9。
  • 学习率在前30k个小批量中设置为0.02,在接下来的10k个小批量中降低到0.002。
  • 本实验在训练时包含了图像外部的anchor boxes。
  • 在8个GPU上,使用FPN训练RPN在COCO数据集上大约需要8小时。

实验结果:

(a)和(b)的对比表明单尺度高级特征图并非比低一层的特征有效;

(c)将FPN引入RPN 后,AR1k相较于单尺度RPN基线(a)提高了8.0个点,对小物体检测性能(ARs1k)也提升了12.9个点。这表明了FPN极大地提高了RPN对不同尺度物体的鲁棒性;

(d)表示只有横向连接,没有自顶向下的路径。对自底向上的每一层结果进行1×1横向连接与3×3卷积连接到底部金字塔。(d)的结果与RPN基线相当,远不及FPN的方法。作者推测这是因为自底向上的金字塔不同层次之间存在较大的语义差距,特别是对于非常深的ResNet网络。

(e)表示只有自顶向下的路径,没有横向连接。效果也不理想,因为经过多次下采样和上采样后,其位置信息变得不准确。

(f)表示只采用经过多次特征上采样和融合到最后一步生成的特征用于预测,用于证明金字塔分层独立预测的表达能力。结果也没有FPN好,因为PRN网络是一个窗口大小固定的滑动窗口检测器,因此在金字塔的不同层滑动可以增加其对尺度变化的鲁棒性。另外(f)有更多的anchor,说明增加anchor的数量并不能有效提高准确率。

4.2 Object Detection with Fast/Faster R-CNN

实现细节:

  • 将输入图像的短边调整至800像素,保持图像的宽高比不变。
  • 在8个GPU同步进行SGD训练。
  • 批量大小:每个GPU上处理2张图像,每张图像生成512个感兴趣区域(RoIs)。
  • 设置权重衰减为0.0001,动量为0.9。
  • 学习率前60k mini-batc的学习率为0.02,后20k个mini-batch的学习率降至0.002。
  • 训练时每张图像使用2000个RoIs,测试时使用1000个RoIs。
  • 在COCO数据集上使用Fast R-CNN结合FPN进行训练大约需要10小时。

实验结果:

Table 2,是探究FPN对Fast R-CNN的影响。作者选择了一组由FPN上的RPN计算并固定的proposals(Table1(c))作为输入。

(a)将ResNet中所有conv5层的输出作为Fast R-CNN head的隐藏层;

(b)在Fast R-CNN的head使用了两个隐藏的全连接层;

(c)在Fast R-CNN中结合FPN,与(a)相比,AP提高了2.0点,小物体AP提高了2.1点。与(b)相比,AP提高了5.1点。这证明在基于区域的目标卷积问题中,FPN多尺度特征融合优于单尺度特征。

(d)和(e)显示去掉自顶向下连接或去掉横向连接都会导致性能下降,和在RPN上的观察结果一致。

(e)表示只在最高分辨率的特征层上使用Fast R-CNN的结果,AP为33.4%。这略低于(c)的结果(33.9%)。作者认为,可能是因为RoI池化对区域大小不敏感。

Table 3,是探究FPN对Faster R-CNN的影响。Faster R-CNN是一个由两个主要部分组成的目标检测框架:区域建议网络(RPN)和Fast R-CNN检测器,所以在Faster R-CNN中,这两部分必须使用相同的网络主干,即RPN和Fast R-CNN权重共享,从而减少了计算量并提高了效率。

与He等人在Table 3(*)中提供的ResNet-50 Faster R-CNN基线相比,(c)展示了使用FPN方法后得到的实验结果。FPN方法在平均精度(AP)上提高了2.6点,在AP@0.5(即IoU阈值为0.5时的平均精度)上提高了9.6点。这表明,在相同的实验条件下,FPN方法能够显著提高目标检测任务的性能。

在上面中,为简单起见,作者没有在RPN和Fast R-CNN中共享特性。Table 5 是评估采用特征共享后Faster R-CNN系统的性能。在单个NVIDIA M40 GPU上,使用ResNet-50作为backbone的系统每幅图像的推理时间仅为0.165秒,而ResNet-101版本也仅需0.19秒。尽管FPN架构引入了一些额外的层,但整体来看,作者的方法比基于ResNet的Faster R-CNN系统更快。

五、总结

FPN解决了多尺度物体检测、小目标检测的挑战,通过构建一个特征金字塔来融合不同尺度的特征信息,从而提高模型对不同大小物体的检测能力。其第一个核心结构是通过自顶向下和自底向上的方式构建特征金字塔,从不同层级的特征图中提取多尺度的语义信息。第二个核心核心结构是横向连接,FPN通过横向连接将低层级的高分辨率特征图与高层级的低分辨率特征图相结合,以获取更丰富的语义信息。

FPN被应用于目标检测等任务中,如Faster R-CNN,采用了FPN作为其特征提取的部分。这些模型在多个基准数据集上取得了优异的性能表现,证明了FPN在解决多尺度物体检测问题上的有效性。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值