读FPN记

        入门深度学习半年,学习比较迷茫与浮躁,东西都是零零散散的学,没有好好静下心来读过论文。最近好好读了下FPN,虽说是比较早的文章,但还是很有用的,读下来有收获和感触,对特征金字塔底层与高层特征的作用有了些理解。

因此在这里记录一下自己阅读FPN做的笔记,也不算笔记,大概就是把每段用中文总结了一下,方便自己以后阅读和复习。

注:英文是每段落开头截取的一部分,用于定位段落,截取的比较随意,有些总结也可能比较“精辟”。

文章名称:[1612.03144] Feature Pyramid Networks for Object Detection (arxiv.org)

代码地址:GitHub - jwyang/fpn.pytorch: Pytorch implementation of Feature Pyramid Network (FPN) for Object Detection

1. Introduction部分

Nevertheless, featurizing each level of an image pyra-

首先有对图像金字塔每一层都进行特征化,但是很费时,在图像金字塔上训练端到端网络在内存上也不允许。

However, image pyramids are not the only way to com-

深度卷积网络具有固有的多尺度金字塔结构。但是不同深度语义鸿沟巨大,低层的低级特征对对象识别表征有害。

The Single Shot Detector (SSD) [22] is one of the first

SSD就采用了这种卷积网络自带的特征金字塔结构,用的是在正向传播中计算的不同层的多比例特征图,也就不会产生其他成本。

但是为了避免低级特征,就放弃再将底层计算好的特征图拿来用。事实证明,这些底层对检测小物体很重要。

The goal of this paper is to naturally leverage

本文就创造一种有自上而下和横向连接组成的特征金字塔,在所有尺度上都有丰富的语义,速度也快。

Similar architectures adopting to

并且在每个级别(特征图)上独立预测,并成为sota。

如图

 

2. Related work

Hand-engineered features and early neural networks.

早期手工设计特征 有SIFT HOG 在图像金字塔上计算。用于分类检测姿势估计等工作。

Deep ConvNet object detectors.

随着卷积网络发展出现了RCNN  overfeat。OverFeat采用了一种类似于早期神经网络人脸检测器的策略,将ConvNet作为图像金字塔上的滑动窗口检测器。R-CNN采用了一种基于区域提案的策略[37],其中每个提案在使用ConvNet分类之前都进行了尺度标准化。SPPnet[15]证明,这种基于区域的检测器可以更有效地应用于在单个图像尺度上提取的特征地图。最近更精确的检测方法,如Fast R-CNN[11]和Faster R-CNN[29]提倡使用从单一尺度计算的特征,因为它在准确性和速度之间提供了一个很好的折衷。

Methods using multiple layers.

有一些方式是在网络中使用不同层来改进检测和分割的。比如FCN是将不同类别在不同尺度上部分相加,来计算语义分割。Hypercolumns用了类似方法。HyperNet[18]、ParseNet[23]和ION[2])在计算预测之前连接多层的特征,这相当于对变换后的特征求和。SSD[22]和MS-CNN[3]在不结合特征或分数的情况下预测特征层次的多个层次上的对象。

还有些方法就是利用横向、跳跃连接 跨分辨率和语义级别 来关联低层特征图。U-Net[31]和SharpMask[28],用于人脸检测的重组器网络[17],以及用于关键点估计的堆叠沙漏网络[26]。Ghiasi等人[8]提出了一种拉普拉斯金字塔表示法,用于FCN逐步细化分割

3. Feature Pyramid Networks

Our goal is to leverage a ConvNet’s pyramidal feature

主要关注RPN 和fast rcn,还推广到实力分割。

输入任意大小的单尺度图像,按比例输出特征图,自上而下自下而上和横向连接,本文就用resnet。

Bottom-up

对于resnet  使用我们使用每个阶段的最后一个剩余块输出的功能激活。对于conv2、conv3、conv4和conv5输出,我们将这些最后剩余块的输出表示为{C2、C3、C4、C5},并且注意到它们相对于输入图像具有{4、8、16、32}像素的步长。由于conv1的内存占用量很大,我们没有将其包括在金字塔中。

Top-down

为了开始迭代,我们只需在C5上附加一个1×1卷积层,以生成最粗糙的分辨率贴图。最后,我们在每个合并的地图上附加一个3×3卷积来生成最终的特征地图,这是为了减少上采样的混叠效应。最后一组特征图被称为{P2,P3,P4,P5},分别对应于空间大小相同的{C2,C3,C4,C5}。

4. Applications

4.1. Feature Pyramid Networks for RPN

RPN是在单尺度卷积特征映射的基础上,在密集的3×3滑动窗口上评估一个小的子网络,执行对象\非对象二元分类和边界盒回归。这是通过一个3×3卷积层和两个兄弟1×1卷积来实现的,用于分类和回归,我们称之为网络头。对象\非对象标准和边界框回归目标是根据一组称为锚的参考框定义的[29]。

FPN则替换原来的单特征图。在每一层上加上roi head,为么一个级别指定一个单一比例的锚。我们将锚定定义为{P2、P3、P4、P5、P6}上分别有{322、642、1282、2562、5122}个像素的区域。1正如在[29]中一样,我们也在每个级别使用多个纵横比{1:2,1:1,2:1}的锚。因此,金字塔上总共有15个锚

IoU超过0.7,则该锚被指定为正标签;如果所有地面真相框的IoU低于0.3,则该锚被指定为负标签。

在RPN中的各个级别的roihead  共享参数是有好处的,类似于使用特征化图像金字塔,其中公共头部分类器可以应用于在任何图像比例下计算的特征

4.2. Feature Pyramid Networks for Fast R-CNN

一些在roi pooling层的细节

5. Experiments on Object Detection

在80个类别的coco 数据集上做实验,用了80k个训练集和35k的验证集 然后在5k个验证集的子集做消融实验。然后也在测试集上做了最后的测试。

网络backbone都是在imagenet上预训练过的。用了 resnet50和101。

5.1. Region Proposal with RPN

在coco数据集上记录平均AR 和在小中大尺度上的AR。Average recall。还记录每张图片上有100和1000个anchor的AR100 AR1k

FPN整体作用:

a和b是两个baseline,只采用了单一个特征层C4和C5.结果表示更高的特征层结果更差,仅仅使用高层语义是不够的,因为低层和高层信息总会有一些trade-off。而加入FPN后将结果得到巨大提升,也大大提升了RPN在不同尺度上的鲁棒性,比如在baseline中。S和l的差距为30左右,加入FPN后,s和l则减小到20左右。

Top-down带来的变化:

d是没有top-down的,如图

结果和baseline差不多,远远落后与FPN。这里的预测层还是分层独立的,作者也解释说是因为自底向上不用 层之间的语义差别较大。

 

e则表示自有自顶向下而没有横向连接,这样效果更不好,因为图片经过多次下采样上采样位置特征变得非常不准确。

f ,不同于FPN在各个不同尺度特征上检测,只是在金字塔结构的最后一个具有高分辨率的层上检测,会发现效果比baseline好一点但还是远远落后FPN,因为检测头是就有固定的尺寸的,它在不同的尺度上预测能够提升其鲁棒性。 同时作者也说更多的anchor并不会带来准确性的提高。

 

5.2. Object Detection with Fast/Faster R-CNN

测试fasterrcnn的检测部分:

 

首先a和b表示2个fc连接层,表明连接层并没有效果。

Abc联合起来则表明fpn有效果

d和e则表明去除top-down带来非常明显的下降,原因是使用低层的信息来预测会有很大的影响。

F则仅仅在带有FPN的P2层进行预测,也就是低层,但是效果并不差。这表明roi pooling对尺度信息并不敏感,很显然其也从金字塔特征中得到帮助。

再看在faster rcnn上的结果:

 

两者的区别是是否采用一致的proposal。Faster rcnn检测部分和RPN部分采用的是同样特征层上提取的proposal。

 

最终毫无疑问,作者的网络夺得桂冠,并且without bells and whistles。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值