Article Analysis(AA): Feature Pyramid Networks for Object Detection

特征金字塔网络(FPN)解决了深度学习物体检测器在多尺度检测中的问题,通过自上而下的路径和边缘连接构建金字塔,实现了在不同尺度上具有强语义的特征。FPN在COCO检测基准上达到最佳单模型结果,同时保持高效,为多尺度物体检测提供实用解决方案。

Feature Pyramid Networks for Object Detection
作者: Tsung-Yi Lin, Piotr Dollar, Ross Girshick, Kaiming He, Bharath Hariharan, and Serge Belongie

短评:借用作者在现场回答问题的一句话,“feature pyramid可以在几乎不增加额外计算的情况下解决多尺度检测问题”。

摘要直译:特征金字塔是识别系统中不同尺度下检测物体的基本组成部分。但是最近的深度学习物体检测器避开了金字塔表征,部分原因是金字塔表征是计算和存储密集的。在该论文中,作者们探索了深度卷积网络内在多尺度特性和金字塔层次体系,得以在少量增加额外开销的情况下构造特征金字塔(feature pyramids)。为了在所有尺度上构建高层次语意特征图,一种带有边缘连接(lateral connections)的自上而下(top-down)的框架被开发出来了。这种框架被叫做特征金字塔网络(Feature Pyramid Network, FPN)。作为一种通用的特征提取器,FPN在几个应用中都展示出显著的性能改进。在基础的Faster R-CNN系统中使用FPN, 无需任何吹嘘,作者们的方法在COCO检测基线任务上达到了目前最高水平的单模型结果,超越目前所有存在的单模型包括那些来自COCO 2016挑战赛的赢家们。除此之外,我们的方法在一个GPU上能够达到每秒6帧,也因此是多尺度物体检测任务中一个实用且精确的解决方法。代码很快就会公开。

Introduction直译
在这里插入图片描述
在计算机视觉中,在广泛而不同的尺度上识别物体是一个基础挑战。特征金字塔建立在图像金字塔(简称为特征化图像金字塔,如上图中的(a))上定性了标准解决方法的基础。从某种意义上来说,这些金字塔是尺度不变的,物体尺度的变化可以通过在金字塔中移动它的层级偏移。直觉上来说,这种特性使得模型能够在广泛的尺度上识别物体,即在位置和金字塔层级上扫描模型。

在手工选特征的时代,特征化图像金字塔是备受倚重的。它对于物体检测器非常关键,比如DPM需要密集尺度采样来达到好的结果(e.g.,每8度10个音阶)。对于识别任务,工程化特征已经被大量的替换为深度卷积网络(ConvNets)计算产生的特征了。除了能够表征高层级语意,ConvNets对尺度不变形也更加鲁棒,因此有利于在单个输入尺度上计算特征来识别(如上图中的(b))。但是即便具有这种鲁棒性,金字塔仍然需要去达到更好的精度结果。目前所有在ImageNet和COCO检测挑战赛上的顶级结果都在特征化图像金字塔上使用多尺度测试。特征化图像金字塔的每一层,这一准则的优点是,它产生了多尺度特征表征,在这种表征上所有层级上都是强语意的,包括高像素层级。

然而,特征化图像金字塔的每一层有显而易见的限制。推理时间增加的太多了(增加了4倍),使得这个方法对于真实的应用并不实际。而且,在一个图像金字塔上训练端到端的深度网络因内存而不可行,所以如果利用,图像金字塔仅仅应用在测试阶段,这也造成了训练阶段推理和测试阶段推理的不一致性。由于这个原因,Fast R-CNN 和 Faster R-CNN都没有在默认设置中用特征化图像金字塔。

However, 图像金字塔不仅仅是计算多尺度特征表征的唯一方法。深度卷积网络同样是一层一层的计算特征层次体系,并且用下采样层,使得特征层次体系内在的具有多尺度,金字塔形状。这种网络内部特征层次体系能产生不同空间像素的特征图,但是由于不同深度而引入了巨大的语意差距。高像素图只拥有低级特征,这损害了他们用于物体识别的表征能力。

SSD是第一个尝试用卷积网络的金字塔特征层次体系的物体检测方法,它是一个金字塔化特征层次体系(上图中的(c))。理想的看,SSD风格的金字塔能够从前馈计算过程中的不同层上重用多尺度特征图,因此是没有额外开销的。但是为了避免用低层级特征,SSD放弃重用已经计算好的层,取而代之的是从网络中的高层级开始建立金字塔(e.g.,VGG net中的conv4_3),之后增加了几个新的层。因此SSD错过了重用特征层次体系中高像素图的机会。作者们展示出,高像素图对于检测小物体的重要性。

很自然地,该论文的目标是提升卷积网络的特征层次体系中金字塔形状,进而创造出一个特征金字塔,这样的特征金字塔能够在所有尺度上具有强语意特性。为了达到这个目标,我们依赖这样的框架,它通过自上而下的的路径(top-down pathway)和边缘连接(lateral connection)能够把低像素、强语意特征和高像素、弱语意特征进行组合(上图中的(d))。得到的结果就是在所有层级上具有丰富语意的特征金字塔并且能够从单输入图像尺度上很快建立起来。换句话说,作者们展示了怎样创建一个网络内的特征金字塔用以代替特征化图像金字塔,而不用牺牲表征能力,速度和内存。
相似的采用自上而下和跳连的框架在最近的研究中很流行。他们的目标是产生一单个良好像素的高层级特征图,并在该特征图上做预测(如图2的上部)。与之相反,作者们的方法提升了框架并作为一个特征金字塔,预测(e.g.,物体检测)在每个层级上是独立作出的(如图2的下部)。我们的方法效仿了特征化图像金字塔,而在该工作中它并没有被探索。(Introduction的接下来部分从略)。
在这里插入图片描述

Related Work直译
手选特征和早期神经网络。原始的SIFT特征是在尺度空间极值上提取的。HOG特征,和后来的SIFT的特征,是在整个图像金字塔上密集计算得到的。这些HOG和SIFT金字塔已经被用于图像分类,物体检测,人体姿势估计等非常多的作品中。快速计算特征化图像金字塔是非常有意义的领域。Dollar et al首次计算系数的采样金字塔来展示快速金字塔计算,之后插值丢失的层级。在HOG和SIFT之前,人脸识别领域早期的工作用到的卷积网络是在图像金字塔上计算浅层网络来跨尺度检测人脸。

深度卷积网络物体检测器:随着现代深度卷积网络的发展,物体检测像Over-Feat和R-CNN在精度方面展示出巨大的提升。OverFeat采用的策略与早期神经网络人脸检测器相似,即在图像金字塔上应用卷积网络作为滑窗检测器。R-CNN采用了基于区域推荐的策略(region proposal-based strategy),这种策略中在用卷积网络分类前,每个推荐区域都被尺度归一化了。SPPnet展示了这样一个基于区域的检测器,它能够在单图像尺度上提取的特征图上更有效的应用。最近的更加精确的检测器方法,比如Fast R-CNN和Faster R-CNN提倡使用单个尺度上计算得到的特征,因为它们在精确度和速度之间做了很好的平衡。然而,多尺度检测仍然表现的更好,特别是对于小物体。

使用多层的方法:最近有非常多的在卷积网络上使用不同层的的方法提升了检测和分割效果。FCN把多个尺度上的每个类别的部分得分加和用于计算语意分割。Hypercolumns用一个相似的方法计算物体实例分割。几个其他的方法(HyperNet, ParseNet, 和ION)在计算预测之前,把多层特征进行连结,这等价于计算转换后的特征的和。SSD和MS-CNN在特征层次体系的多个层上鱼刺物体,而不用组合特征或者得分。
最近也有方法探索边缘/跳跃连接,即将跨像素和语意级结合低层级特征图,包括用于分割的U-Net和Sharp-Mask,用于人脸检测的再结合网络(Recombinator network),用于关键点估计的堆叠沙漏网络(Stacked Hourglass networks). Ghiasi et al.展现了用于FCNs的拉普拉斯金字塔表征(Laplacian pyramid presentation),为再分割带来巨大进展。尽管这些方法采用的框架都带有金字塔似形状,它们与特征化图像金字塔都不相似,因为特征化图像金字塔在每个层级独立做预测(如图2)。事实上,对于金字塔框架(图2的上部),图像金字塔仍然需要跨多个尺度来识别物体。


核心分析:(终于到这一步咯)
该方法把任意大小的单尺度图片作为输入,输出多个层级上按比例大小的特征图,用一种全卷积的范式。这个过程是独立于骨干卷积框架的,在该工作中,骨干网用的是resNets。构建特征金字塔的过程,用到了自下而上路径和自上而下路径,及边缘连接。

对于ResNets,作者们用了每个阶段最后一个残差块输出的特征激活。分别用{ C 2 , C 3 , C 4 , C 5 {C_2, C_3, C_4, C_5} C2,C3,C4,C5}来表示conv2, conv3,conv4, conv5的输出特征激活。注意到这些阶段分别具有相对于输入图片{ 4 , 8 , 16 , 32 {4, 8, 16, 32} 4,8,16,32}像素的步长。作者们没有包含conv1,因为它占用太大内存。
在这里插入图片描述
图3,展示了自下而上和自上而下的组合过程。构建自上而下的特征图的块的过程是,对粗糙像素的特征图进行采样因子为2的上采样(为了简化,使用最近邻上采样)。然后与自下而上过程中的对应层用 1 × 1 1 \times 1 1×1的卷积层降维之后逐点相加。这个过程是迭代的,知道最好的像素图生成为止。开始时,作者们仅仅在 C 5 C_5 C5 1 × 1 1 \times 1 1×1卷积操作生成最粗糙的像素图。最后在每个合成的图上用 3 × 3 3 \times 3 3×3的卷积操作生成最终的特征图,这是用来降低上采样混淆效应。最终的特征图被称为{ P 2 , P 3 , P 4 , P 5 P_2, P3, P_4, P_5 P2,P3,P4,P5}对应于{ C 2 , C 3 , C 4 , C 5 C_2, C_3, C_4, C_5 C2,C3,C4,C5},它们分别具有相同的空间大小。

以上这段可能用看文字并不能得到很好的理解,可以参照这份源码中的1,2,3部分。事实上,博主也是对应着源码理解的。

由于金字塔中所有的层级都是共享分类器和回归器的(看源码的5部分),并且分类器和回归器与之前的特征化图像金字塔保持一致。所以作者们固定了特征图的维数,即通道数。在该论文中作者们设置 d = 256 d=256 d=256。在这些额外的层上没有非线性层,经验性的实验表明只有很小的影响。
该模型对很多设计选择都非常鲁棒,作者们在更多复杂精致的block(e.g.,用多层残差块)上做实验并且观察到细小的更好结果。

问题:如何确定某个RoI使用哪一层的特征图进行RoIpooling呢?看源码的8部分。这里也给与说明。
k = ⌊ k 0 + l o g 2 ( w h 2 / 224 ) k=\lfloor k_0 +log_2(\sqrt[2]{wh} / 224) k=k0+log2(2wh /224)
这里 224 224 224是常用的ImageNet预训练尺寸, k 0 k_0 k0是目标级,尺寸为 w × h = = 22 4 2 w \times h == 224^2 w×h==2242的RoI应该映射到本该目标级。论文中设置 k 0 = 4 k_0 = 4 k0=4。根据该公式,如果RoI的尺度变小,假如是224的一半,那么应该映射到更好的像素级,即 k = 3 k=3 k=3。换句话说,大目标物体,在高层级上分类,小目标物体在低层级上分类。

问题:对于Fast R-CNN最后的head是怎样的逻辑?
最后的分类器是类特定的(相对于只有物体和非物体的两类),这些分类器和边界框回归对于所有层级的所有RoI是共享参数的而不管它们层级。该论文中,只是将RoI池化成 7 × 7 7 \times 7 7×7的特征图,然后连接两个1024的全连接隐层(每个都跟有ReLU),接着是最终的分类和边界框回归。这些层的参数时随机初始化的。相对于标准的conv5头,这种2-fc头轻量而且速度快。

CVPR现场提问
1、不同深度的feature map为什么经过unsample后直接相加?
A:我们做了end-to-end的training,因为不同层的参数不是固定的,不同层同时给监督做end-to-end training,所以相加训练出来的东西能够更有效的融合浅层和深层的信息。

2、为什么FPN相比于去掉深层特征upsample(bottom-up pyramid)对于小物体检测提升明显?(RPN步骤mAP从30.5到44.9, Fast R-CNN步骤mAP从24.9到33.9)
A:对于小物体,一方面它提高了小目标的分辨率信息;另一方面,如图中的挎包一样,从上到下传递过来的更全局的情景信息可以更准确判断挎包的存在及位置。
在这里插入图片描述

3、如果不考虑时间情况下,image pyramid是否可能比feature pyramid的性能更高?
A:经过精细调整训练时可能的,但是image pyramid主要的问题在于时间和空间占用太大,而feature pyramid可以在几乎不增加额外计算的情况下解决多尺度检测问题。


参考文献:
[1] https://zhuanlan.zhihu.com/p/35854548


后记:本博客作为博主读论文系列。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值