前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >目标检测FPN

目标检测FPN

作者头像
SIGAI学习与实践平台
发布2019-04-26 16:17:32
1.6K0
发布2019-04-26 16:17:32
举报

SIGAI特约作者

李博士(中国科学院大学)

研究方向:图像聚类、物体检测、自动机器学习、模型压缩和量化

导读

《Feature Pyramid Networks for Object Detection》这篇文章主要是用来解决Faster RCNN物体检测算法在处理多尺度变化问题时的不足。Faster RCNN中无论是RPN网络还是Fast RCNN网络,都是基于单个高层特征。这种做法一个明显的缺陷是对小物体不友好。为了处理小物体,经典的方式是采用图像金字塔的方式在训练或测试阶段对图片进行多尺度变化增强,但是这样带来了极大的计算量。本文方法通过构造一种独特的特征金字塔来避免图像金字塔的计算量过高的问题,同时能较好的处理物体检测中的多尺度变化问题。

摘要

特征金字塔是处理多尺度物体检测问题的一个基础组成部分。然而,最近基于深度学习的物体检测算法考虑到计算量和内存限制都尽量避免采用特征金字塔的方式。在这篇文章中,作者探索一种利用深度卷积网络本身固有的多尺度、层次结构来构造特征金字塔,它的好处是只会带来极小的额外消耗。具体的,本文构造了一种自顶向下、带有侧向连接的层次结构来构建各个尺度的高层语义特征。这种方法称之为Feature Pyramid Network (FPN)。FPN可以作为一种通用的特征提取器,并且在多个任务上带来了显著的性能提升。将FPN应用于Faster RCNN,在COCO上达到了最佳的单模型性能。另外,FPN的推理速度在GPU上可以达到5FPS,因此是一种检测性能高,同时推理速度能达到实际使用的方法。

简介

如何处理大范围尺度变化的物体是计算机视觉中的一个基本问题。图像特征金字塔[1](图1(a))是处理这个问题的一个标准解法。它在传统的基于手动设计特征的方法[2]中非常常用。一个极端的例子是DPM方法[3]使用了接近10种不同尺度来取得不错的效果。近年来,深度卷积网络的提出几乎完全替代了传统的基于手动设计特征的方法。深度神经网络本身对输入的图像具有较强的尺度鲁棒性(图1(b)),因此被广泛应用于各种物体检测系统[3][4][,5]. 然而,最近的ImageNet和COCO物体检测比赛结果表明,通过采用测试时多尺度的图像金字塔仍然可以提升最终的性能。这说明当前基于单层特征的检测系统还是具有一定的局限性。

虽然特征金字塔网络对传统方法和CNN方法都有一定程度的帮助,它有一个重大的缺陷无法忽视:带来了极大的计算量和内存需求。因此,现在的检测算法(例如Fast/Faster RCNN)一般在训练时采用单尺度的方式来加速训练,同时测试时用多尺度的方式来提升最终的性能。

除了图像金字塔可以用来处理多尺度的物体,深度网络本身具有的多层次结构也可以用来提取多尺度的特征(图1(c))。例如SSD方法[6]中就利用了多个特征层分别做预测。然而,由于底层的语义特征比较弱,在处理小物体(特征一般只出现在较低的特征层)时效果表现得不够好。

本文提出一种合理利用深度卷积网络各个层次特征的方法(图1(d)),它能较好的让各个不同尺度的特征都具有较强的语义信息。该方法称为Feature Pyramid Network (FPN),它能应用于物体识别、语义分割等任务中。FPN结合Faster-RCNN可以在COCO物体检测比赛中取得当前单模型的最佳性能(SOTA)。另外,通过对比实验发现,FPN能促使Faster-RCNN中的RPN网络的召回率提高8个点;不仅如此,它也能使Fast RCNN的检测性能提升2.3个点(COCO)和3.8个点(VOC)。

相关工作

OverFeat方法采用滑窗的方式从图像中选取各个尺度的图像块,然后用卷积神经网络来做识别。R-CNN用区域选择算法来选取一定数量的候选框(一般是2000个),然后将这些框统一缩放到深度卷积网络的输入像素大小,并用深度卷积网络来做识别。SPPNet[5]提出可以将单一尺度的图像输入到网络,然后在特征层用不同尺度的下采样来得到特征金字塔。这种处理方法比传统的图像金字塔更加高效。Fast RCNNFaster-RCNN则只采用了单一的尺度特征来平衡速度和精度。

FPN算法

FPN的目标是利用卷积网络本身带有的层次性语义特征,来构建特征金字塔。这篇文章以Faster-RCNN为例,来说明FPN如何应用到RPN和Fast RCNN中。FPN包含两个部分:第一部分是自底向上的过程,第二部分是自顶向下和侧向连接的融合过程。

自底向上的过程

自底向上的过程和普通的CNN没有区别。现代的CNN网络一般都是按照特征图大小划分为不同的stage,每个stage之间特征图的尺度比例相差为2。在FPN中,每个stage对应了一个特征金字塔的级别(level),并且每个stage的最后一层特征被选为对应FPN中相应级别的特征。以ResNet为例,选取conv2、conv3、conv4、conv5层的最后一个残差block层特征作为FPN的特征,记为{C2、C3、C4、C5}。这几个特征层相对于原图的步长分别为4、8、16、32。

自顶向下过程以及侧向连接

自顶向下的过程通过上采样(up-sampling)的方式将顶层的小特征图(例如20)放大到上一个stage的特征图一样的大小(例如40)。这样的好处是既利用了顶层较强的语义特征(利于分类),又利用了底层的高分辨率信息(利于定位)。上采样的方法可以用最近邻差值实现。为了将高层语义特征和底层的精确定位能力结合,作者提出类似于残差网络的侧向连接结构。侧向连接将上一层经过上采样后和当前层分辨率一致的特征,通过相加的方法进行融合。(这里为了修正通道数量,将当前层先经过1x1卷积操作。)如图所示。

具体的,C5层先经过1x1卷积,得到M5特征。M5通过上采样,再加上C4经过1x1卷积后的特征,得到M4。这个过程再做两次,分别得到M3和M2。M层特征再经过3x3卷积,得到最终的P2、P3、P4、P5层特征。另外,和传统的图像金字塔方式一样,所有M层的通道数都设计成一样的,本文都用d=256。细节图如下所示(以ResNet为例):

FPN本身不是检测算法,只是一个特征提取器。它需要和其他检测算法结合才能使用。下面介绍FPN如何应用于区域选择网络(RPN)和物体检测网络(Fast RCNN)。

FPN应用于RPN

Faster-RCNN中的RPN是通过最后一层的特征来做的。最后一层的特征经过3x3卷积,得到256个channel的卷积层,再分别经过两个1x1卷积得到类别得分和边框回归结果。这里将特征层之后的RPN子网络称之为网络头部(network head)。对于特征层上的每一个点,作者用anchor的方式预设了9个框。这些框本身包含不同的尺度和不同的长款比例。

FPN针对RPN的改进是将网络头部应用到每一个P层。由于每个P层相对于原始图片具有不同的尺度信息,因此作者将原始RPN中的尺度信息分离,让每个P层只处理单一的尺度信息。具体的,对{32^2、64^2、128^2、256^2、512^2}这五种尺度的anchor,分别对应到{P2、P3、P4、P5、P6}这五个特征层上。每个特征层都处理1:1、1:2、2:1三种长宽比例的候选框。P6是专门为了RPN网络而设计的,用来处理512大小的候选框。它由P5经过下采样得到。

另外,上述5个网络头部的参数是共享的。作者通过实验发现,网络头部参数共享和不共享两种设置得到的结果几乎没有差别。这说明不同层级之间的特征有相似的语义层次。这和特征金字塔网络的原理一致。

FPN应用于Fast RCNN

作者将FPN的各个特征层类比为图像金字塔的各个level的特征,从而将不同尺度的RoI映射到对应的特征层上。以224大小的图片输入为例,宽高为w和h的RoI将被映射到的特征级别为k,它的计算公式如下:

在ResNet中,k0的值为4,对应了长宽为224的框所在的层次。如果框的长宽相对于224分别除以2,那么k的值将减1,以此类推。

Fast-RCNN中,ResNet的conv4层被用来提取RoI,经过RoI Pooling后映射到14x14的大小。经过RoI Pooling后的特征再进入原来的conv5层,进而得到最终的分类和边框回归结果。在FPN中,conv5层已经被用来作为特征提取器得到P5层;因此,这里单独设计两个1024维的全连接层作为检测网络的网络头部。新的网络头部是随机初始化的,它相比于原来的conv5层更加轻量级。

对比实验

作者通过COCO数据集上的实验验证了FPN在RPN网络和Fast RCNN网络中都有较大的性能提升。

FPN对RPN网络的影响

作者做了6个实验:(a) 基于conv4的RPN(原始的RPN); (b)基于conv5的RPN; (c) FPN;(d) 只用自底向上的多层特征,没有自顶向下的特征; (e) 有自顶向下的特征,但是不用横向连接,只是单纯的增加特征的分辨率; (f) 用了自顶向下的特征,也用了横向特征融合,但是只用最后的P2作为预测。对比结果见下表:

通过表格可以看出:

l (a)和(b)对比(36.1 v.s. 36.3):基于conv5个特征来训练RPN,对大物体比较友好(AR_l大),但是对小物体不友好(AR_s)小。因此,结合conv4和conv5一起来做会更好。这也是FPN方法的出发点。

l (a)和(c)对比(36.1 v.s. 44.0):基于特征金字塔的方式,极大的提高了各个尺度框的召回率。尤其是小物体的效果提升非常明显。

l (a)和(d)对比(36.1 v.s. 37.4):单纯的用各个层次的特征做预测,相比于只用conv4做预测,效果提升非常有限。

l (a)和(e)对比(36.1 v.s. 34.5):单纯的放大特征图,只会带来相反的效果。

l (a)和(f)对比(36.1 v.s. 38.4):单纯用融合度最高的特征层(P2)来做预测,提升效果也很有限。

l (c)和(f)对比(44.0 v.s. 38.4):相比于(f),(c)有两点不同:一个是使用了多尺度的特征层做预测,另一个是不同尺度的框被映射到不同的特征层。从(c)的效果明显好于(f)来看,这种尺度信息分离的方式是非常必要的。

通过以上对比可以看出,自顶向下的特征、横向连接、尺度分离、多个层次的预测是提升RPN性能几大功臣。这几种思路对后来的研究产生了比较大的影响,比如最近的Trident Network[7]就借鉴了其中的尺度分离、多分支预测的思想,达到了当前的SOTA。

FPN对Fast RCNN网络的影响

类似于RPN的实验,作者在Fast RCNN上也做了六个实验:(a) 基于conv4来做预测(标准的Fast RCNN);(b)基于conv5来做预测;(c)FPN;(d)只用自底向上的多层特征;(e)用自顶向下的多层特征,但是没有横向连接;(f)有自顶向下的多层特征,也有横向连接,但是只用最后一个融合后的特征层P2。结果对比如下:

从结果可以看出:

l (a)和(b)对比(31.9 v.s. 28.8):用conv5来做预测很明显在小物体上表现不好。这和RPN上实验的观测结果一致。

l (a)和(c)对比(31.9 v.s. 33.9):基于特征金字塔的方式,在各个尺度上的表现都超过了原来的Fast RCNN。

l (a)和(d)对比(31.9 v.s. 24.9):用各个层次的特征做预测,相比于只用conv4做预测,性能下降非常明显。这是因为网络底层特征的语义信息区分度不够,对分类任务来说,这是非常影响性能的。(RPN网络没有这个问题,因为它不区分物体的类别)

l (a)和(e)对比(31.9 v.s. 31.3):单纯的放大特征图,只会带来相反的分类效果。

l (a)和(f)对比(31.9 v.s. 33.4):用融合度最高的特征层(P2)来做预测,在Fast RCNN中效果提升非常明显。

l (c)和(f)对比(33.9 v.s. 33.4):用所有的特征层来做预测,相对于只用P2来做预测的提升不明显。这是由于RoI Pooling对物体尺度变化不太敏感造成的。

总结

本文提出了一种简单、有效的建立特征金字塔的方式。它的使用对RPN方法和Fast/Faster RCNN方法都有极大的性能提升。另外,它的训练和测试时间和普通的Faster-RCNN方法相差很小。因此,它可以作为图像特征金字塔的一种较好的替代。

参考文献

[1] E. H. Adelson, C. H. Anderson, J. R. Bergen, P. J. Burt, and J. M. Ogden. Pyramid methods in image processing. RCA engineer, 1984.

[2] N. Dalal and B. Triggs. Histograms of oriented gradients for human detection. In CVPR, 2005.

[3] P. F. Felzenswalb, R. B. Girshick, D. McAllester, and D. Ramanan. Object detection with discriminatively trained part-based models. TPAMI, 2010.

[4] R. Girshick. Fast R-CNN. In ICCV, 2015.

[5] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV, 2014.

[6] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, and S. Reed. SSD: Single shot multibox detector. In ECCV, 2016.

[7] Y. Li, Y. Chen, N. Wang, Z. Zhang. Scale-Aware Trident Networks for Object Detection. arXiv: 1901.01892, 2019.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SIGAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档