FPN Feature Pyramid Network for Object Detection

来源:互联网 发布:阿里云域名备案号 编辑:程序博客网 时间:2024/06/06 02:25
  • 看论文写点东西来拯救神游打开脑洞系列

  • 能翻译下来就很满足了

  • 加粗是不懂的地方


特点:可端到端训练 快 效果好 占内存少

理解

FPN(Feature Pyramid Network)算法同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的,这和常规的特征融合方式不同。

译文

摘要

​ 特征金字塔是不同大小的物体检测识别系统的基本组成部分。但是由于计算和存储大,近期的深度学习物体检测都没有用它。FPN采取了与侧面连接的自顶向下的结构,来建立所有大小的高水平的语义特征图。FPN作为一个一般的特征提取器在很多应用中都有很重要的提升。将Faster R-CNN作为基础网络使用FPN,我们的方法实现了COCO检测在单一模型中最佳效果,包括2016年的COCO挑战的冠军。除此之外,这个方法可以在GPU上达到6FPS,在多尺度物体检测的任务中具有实用性和很好的精确度。

介绍

现存的金字塔尺度不变,物体尺度的变化靠移动在金字塔的所在层数来抵消。直观感觉上来说,这个性质能够是一个模型检测很大尺度范围的物体检测,通过位置和金字塔层数来扫描模型。

  • (a)用一个图像金字塔去建立一个特征金字塔,每种图像尺寸都要经过独立的计算得到特征。慢

  • (b)近期的检测系统为了更快的检测,都是只选择一个单一尺度的特征。

  • (c)一个可选择复用通过卷积网络计算的金字塔层次特征,当它是一个特征图像金字塔。

  • (d)FPN,像(b),(c)一样快,但是更精确。

计算多尺度特征的表现不是只有图像金字塔这一个方法。深度卷积网络逐层的计算特征层次,由于采用了二次采样层,特征层次还包含了内在的多尺度和金字塔形状。这种网络内的特征层次可以产生不同空间分辨率的特征图,但是当因不同的深度出现很大的语义间隙时,高分辨率的图包含了将影响物体检测效果的低水平特征。

SSD是第一个尝试用卷积网络金字塔特征层次,犹如一个提取了特征的图像金字塔。理想状态时,SSD型的金字塔将复用在前项传播中计算得到的不同层次的多尺度特征图,这样会节省开销。但是为了避免使用到了低水平的特征,SSD放弃了复用计算好了的已有层,而是从网络的高处靠添加新的层,开始建立金字塔(像VGGnets 的conv4_3)。这样就失去了复用特征层次的更高分辨率图,而这对检测小物体很重要。

论文的目标是,在创建一个在各种尺度都有很强语义的特征金字塔的时候,利用卷积网络特征层次的金字塔形状。所以FPN通过自顶向下的方法和横向连接,来将低分辨率、有高分辨率的强语义特征、低语义特征三者连接。因此得到一个特征金字塔,每层都有高语义,且从每个单独输入图片的尺寸中快速建立。也就是说,在不额外牺牲representational power,速度,内存的前提下,将创造in-network feature pyramids来替代featurized image pyramids。

这种自上向下再连接的结构近年来很受欢迎。他们主要是采用此结构在高分辨率产生一个高水平的特征图,用来预测。像图二的上图。相反,本文的方法主要利用特征金字塔的结构来进行预测,每层的预测都是独立的。这个模型是在效仿一个featured图像金字塔。

为了评估这个方法,在以Faster R-CNN为基础网络模型,将基于ResNets与使用了FPN的进行对比,消融实验中提高了AR 8个百分点,COCO数据提高了2.3%,PASCAL提高了3.8%。

问题1

In addition, our pyramid structure can be trained end-toend with all scales and is used consistently at train/test time,which would be memory-infeasible using image pyramids.

相关工作

手工设计特征和早期神经网络

SIFT特征最初在尺度空间极值处提取,用于特征点匹配。

HOG 和之后的SIFT特征,在整个图像金字塔中密集计算

这些HOG和SIFT金字塔在图像分类、物体检测、人体姿势估计等方面发挥了很大的作用

深度卷积网络物体检测器

物体检测器:OverFeat,与早期神经网络人脸检测器相似,在一个图像金字塔上采用一个卷积网络作为滑动窗口检测器。

R-CNN,使用了区域提取基础的策略,每个提取框在用卷积网络分类之前进行了尺度归一化。

SPPnet证明了,这样基于区域的检测器在一个单一图像尺度的特征图提取时更高效。

Fast R-CNN和Faster R-CNN是最新的高精确度的检测方法,它们都是用从单一尺度计算出来的特征,因为这样可以达到速度与精确度的均衡。多尺度检测在小物体上表现的很好。

多层使用的方法

近期研究通过在一个卷积网络上使用多层来提高检测和分割效果。

  • FCN在计算语义分割时汇总了多尺度的每类的部分分数。

  • HyperNet,ParseNet,ION这几种方法都是在计算预测之前就将多层的特征联系在一起。

  • SSD和MS-CNN在多层特征层次中预测物体时,并没有结合这些特征或是分数。

语义分割的U-net,Sharp-Mask等等都在尝试侧面连接或是遗漏连接,跨越分辨率和语义的层次与低水平特征图结合。再就是没有像Featured图像金字塔一样每层都独立预测,这样的话他们需要通过多尺度来识别物体。

特征金字塔网络

FPN的通用性,本文重在滑动窗口提议(RPN)和基于区域的检测器。第六部分将介绍举例FPN在分割上的实现。

输入:任意大小的翻译尺度的图像

输出:在一个全卷积样式,成比例大小的多水平的特征图

支柱卷积结构独立,金字塔由自底向上的部分,自上向下的部分,以及侧向连接。

自底向上前向传播的卷积网络支柱的计算结果,计算在几个尺度有特征图的一个特征层次。输出相同大小图的一些层列为一个网络阶段。对于特征金字塔,将为每个阶段定义一个特征金字塔。每个阶段的最后一层的输出作为特征图的参考集,用于建立金字塔。这样最后在每个阶段最深的层将有最强的信息。

特别地,对于ResNet,将每个阶段最后的剩余块输出作为特征激活物。定义conv2,conv3,conv4,conv5的输出这些最后的剩余块为{, ,,}

自上向下:总会有这种幻觉,对下等空间进行上采样,会得到更高分辨率的特征,更强的语义特征,特征图会在更高的金字塔层次。通过自底向上和侧面连接的特征来提高自上向下的特征。每个侧面连接的合并了来自自底向上和自上向下路的相同空间大小的特征图。自底向下的特征图有更低的语义,但是他的激活物在二次采样几次之后就会更精确定位。

图三是自上向下的结构,对粗分辨率的特征图,两倍空间分辨率上采样(最近邻域朴素上采样)。这个上采样图通过元素级别的增加,与相应的自底向上图结合(即经由1x1的卷积层减少通道维度)。这些处理一直迭代到生成最佳分辨率图。开始迭代前,我们在上附加一个1x1的卷积层,用来产生粗分辨率图。最后在每个边缘图加一个3x3的卷积层,用来生成最后的特征图,减少上采样的混淆效应。特征图的最后设置是,,,,与{, ,,}相对应,各自地有相同的空间大小。

由于各等级的金字塔都像传统的featured图像金字塔一样,使用共享的分类器/回归器,所以固定所有特征图的特征维度(通道数,记为d)。这篇论文设置 d=256,所有其他额外的卷积层有256个通道输出。我们根据经验发现其它层中有非线性只会产生请问的影响。

核心设计简单,鲁棒性好。已经在更多复杂的模块上进行试验(例如在连接处使用多层残余块),观察到少量的更好的结果。设计更好的连接模块不是本文的重点,所以我们只是选择了以上最简单的设计。

应用

他们的方法使用的是在深层卷积网络中建立特征金字塔。下面我们将通过我们的方法在RPN建立BBOX提取框生成器,还在Fast R-CNN中进行物体检测。为了证明我们算法的简单和高效性,在原系统上进行最小的修改,来让他们适合论文的特征金字塔。

RPN特征金字塔网络

RPN是滑动窗口的类型未知型物体检测。在原始的RPN设计中,一个很小的子网络用密集的3x3的滑动窗口评估,再加上一个一个单独尺度的卷积特征图,得到有无物体的二分类,和BBOX的回归。一个3x3卷积层后面加上两个用于分类和回归的滑动的1x1卷积,作为网络的头部。有无物体的标准和BBOX回归的目标是关于一组名为anchor参考框的定义。这些anchor是一些预定义的大小比例为了能够适应不同形状的物体。

改编替代FPN的单一尺寸的特征图。在金字塔的每层都添加相同设计的头部(3x3卷积+1x1滑动卷积)。因为在整个金字塔的所有位置中头部滑动密集,在一个具体的层级中有多个尺度是没必要的。相反,我们给每层只分配单一尺度的anchor。正式的,定义5个大小的anchor,{,,,,},分别对应在{,,,, }。这些anchor在每个层次上有多个比例{1:2,1:1, 2:1}。所以在这个金字塔上总共有15种anchor。

基于标签真实框的IoU值,给anchor分配训练标签。正规的,当对于给定的真实框下最高的IoU,或是当任意真实框下IoU高于0.7,一个anchor记为正标签,当IoU对于任意真是框都低于0.3时。记为负标签。真实框的尺度与金字塔的层次的关系是不明确的。

头部的参数在所有金字塔的层次中是共享的。也评估过没有共享参数的情况,得到了相似的精确度。共享参数的好处是所有层次的金字塔分享相似的语义层次。有点类似于用featured图像金字塔,一个普通的头分类器能够应用于任意图像尺寸的特征计算。

做了上述的改编,RPN能够用FPN训练测试,在相同的样式。详情见实验。

Fast R-CNN 特征金字塔网络

Fast R-CNN是一个在用于额外特征的RoI池化里基于区域的物体检测器。Fast R-CNN在单一尺度特征图中最平凡。为了让它用上FPN,需要给金字塔层次分配不同尺度的RoI。

我们认为我们的金字塔是有一个图像金字塔产生的。这样的话我们就可以像在图像金字塔里一样,采取基于区域的检测器的分配策略。对于特征金字塔的 层次, 分配RoI的宽度为w,高度为h(网络的输入图像):

(1)

224是权威的ImageNet的预训练大小。 时RoI应该映射的目标层次。类似于基于ResNet的Faster R-CNN系统的,我们设置 为4.直觉来讲,方程(1)表示当RoI的尺度变小的是时候(比如说224的一半时),它将被映射到一个更好的分辨率层(也就是说k=3).

将预测器的头部放在所有的层的所有的RoI中(在Fast R-CNN中,这些头部是具体的类别分类器和BBOX回归器).再一次,无论什么层次,头部都共享参数。在某篇论文中,一个ResNet的conv5层(一个九层的深度子网络)在conv4的特征里已经包含了这些头部,但是我们的方法已经利用了conv5来建立特征金字塔。我们只是采取RoI池化来提取7x7的特征,在最后的分类和回归层之前,关联着2个隐含1024维的全连接层(每个后面都跟着ReLU)。这些层被随机初始化,在ResNet里没有与训练的fc层。相比较于标准的conv5的头部,我们的2-fc MLP头部重量更轻更快。

基于这些改编,我们能就特征金字塔擦训练测试Fast R-CNN。细节见后面章节。

物体检测实验结果

COCO检测数据集总共包含80类。

  • 80k 训练

  • 35k val (5k 消融)

  • 测试集 没有公开的标签

基础网络:ImageNet1k分类数据集的预训练,在检测的数据集上进行微调。

用公开了的ResNet-50和ResNet-101模型

用RPN区域提取

对于大中小号物体的平均召回率分别记做:

每张图片100或是100个提取框记为:,

实施细节 所有结构端到端训练,输入图片进行大小重调,短边为800像素。在8个GPU上同步SGD训练。一个很小batch是每个GPU两张图片,每张图像有256个anchor。衰退的权重为0.0001,冲量为0.9。前30k个小batch学习率为0.02,后10K个的学习率为0.002。对于所有的RPN实验来说(基于底线的),我们将anchor Box算入图像训练之外的,不像有些地方将其忽略。其他的实现细节就如Faster R-CNN一样。在8块GPU上,用COCO数据集训练带FPN的RPN,需要8个小时。

消融实验


与底线做对比 为了跟原始的RPN公平对比,我们用,或是 的单一尺度图跑两条基础线,都像我们一样用了相同的超参数,包括5个anchor比例{,,,,},表格1中(b)相比较(a)来说丝毫没有优势,也说明以一个单一更高水平的特征图是不够的,需要在粗分辨率与更强语义之间权衡。

在RPN中放了FPN之后, 提高到了56.3,涨了8个点。除此之外,在小物体上表现提高了12.9,我们的金字塔提高了RPN在不同尺度物体上的变现的鲁棒性。

自上到下改进的重要性

1x1 + 3x3

侧面连接的重要性

金字塔表示的重要性

用Fas/Faster R-CNN物体检测

对于大中小号物体的平均精确度分别记做:

实现细节 输入图片进行大小重调,短边为800像素。在8个GPU上同步SGD训练。一个min-batch是每个GPU两张图片,每张图像有512个RoI。衰退的权重为0.0001,冲量为0.9。前60k个小batch学习率为0.02,后20K个的学习率为0.002。每张图2000个RoI用于训练,1000个用于测试。在COCO数据集上训练带FPN的Fast R-CNN需要10小时

Fast R-CNN(修正提取框)


Faster R-CNN(连续提取框)

与COCO竞赛冠军对比



扩展:分割提取

结论


阅读全文
0 0
原创粉丝点击