目标检测学习笔记11——FPN学习与论文解读

一、引言

论文链接:https://arxiv.org/abs/1612.03144

FPN:Feature Pyramid Network。从名称可看出,是对特征图进行一个“金字塔”的处理。目标是利用卷积网络的金字塔特征层次结构,它具有从低到高的语义,并构建一个从头到尾都具有高级语义的特征金字塔。

论文中提到

recent deep learning object detectors have avoided pyramid
representations, in part because they are compute and memory
intensive
.

之前的金字塔处理会耗费计算和存储资源,所以最近的一些目标检测方法都避免了一些金字塔化的处理。让我们看看以前的金字塔化是怎样的结构吧!

二、结构对比

图d是FPN的结构。论文中列出以下四种结构进行对比。
在这里插入图片描述

  • (a)对图像做金字塔处理
    先对原始图像构造图像金字塔,分别对这些图像作特征提取,并预测。这种方法的缺点是计算量大,需要大量的内存;优点是可以获得较好的检测精度。
  • (b)传统的预测方法
    对原始图像进行不断的卷积,然后输出一个高维特征的矩阵,对该矩阵作预测。浅层的网络更关注于细节和位置信息,高层的网络更关注于语义信息,而高层的语义信息能够帮助我们准确的检测出目标,因此我们可以利用最后一个卷积层上的feature map来进行预测。
  • (c)SSD的结构
    对中间产生的一部分特征矩阵分别作预测。但缺陷是,SSD忽略了低层特征,即错过了重用高分辨率特征映射的机会(高分辨率的特征图对于检测小物体是很重要的)。采用这种多尺度特征融合的方式,没有上采样过程,即从网络不同层抽取不同尺度的特征做预测,这种方式不会增加额外的计算量。作者认为SSD算法中没有用到足够低层的特征(在SSD中,最低层的特征是VGG网络的conv4_3),而在作者看来足够低层的特征对于检测小物体是很有帮助的。
  • (d)本文提出的FPN模型
    本文的目标是自然地利用卷积神经网络特征层次的金字塔形状,同时创建一个在所有尺度上具有强大语义的特征金字塔。

FPN结构:①首先自底向上一层层卷积,提取特征。②然后通过自顶向下路径和横向连接将低分辨率、语义强的特征与高分辨率、语义弱的特征结合在一起的架构。这样形成的特征金字塔,在所有层次上都具有丰富的语义,并从单个输入图像规模快速构建。换句话说,这种方法展示了如何创建网络内的特征金字塔,这些特征金字塔可以用来替换特征图像金字塔,而不牺牲表示能力、速度或内存。

三、实现细节

以Resnet来举例。
preview

  • 自底向上其实就是网络的前向过程。在前向过程中,feature map的大小在经过某些层后会改变,而在经过其他一些层的时候不会改变,作者将不改变feature map大小的层归为一个stage,因此每次抽取的特征都是每个stage的最后一个层输出,这样就能构成特征金字塔。
  • C1 C2 C3 C4 C5是经过层层卷积产生的特征图。没有使用C1是因为它的尺寸太大,会占用大量的内存。
  • 自顶向下的过程采用上采样(upsampling)进行,而横向连接则是将上采样的结果和自底向上生成的相同大小的feature map进行融合(merge)。在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应(aliasing effect)。并假设生成的feature map结果是P2,P3,P4,P5,和原来自底向上的卷积结果C2,C3,C4,C5一一对应。

这样提取出来的P2 P3 P4 P5就是一个融合低分辨率特征和高分辨率特征的特征向量了。

再拿Faster RCNN举例,P2 P3 P4 P5会由RPN网络以及最终的定位分类网络共用。

  • 作者一方面将FPN放在RPN网络中用于生成proposal,原来的RPN网络是以主网络的某个卷积层输出的feature map作为输入,简单讲就是只用这一个尺度的feature map。但是现在要将FPN嵌在RPN网络中,生成不同尺度特征并融合作为RPN网络的输入。P6是由P5上采样形成的,只在RPN网络部分使用。
  • 在每一个scale层,都定义了不同大小的anchor,对于P2,P3,P4,P5,P6这些层,定义anchor的大小为

    3

    2

    2

    32^2

    322,

    6

    4

    2

    64^2

    642,

    12

    8

    2

    128^2

    1282,

    25

    6

    2

    256^2

    2562

    51

    2

    2

    512^2

    5122,另外每个scale层都有3个长宽对比度:1:2,1:1,2:1。所以整个特征金字塔有15种anchor。

四、实验结果

在这里插入图片描述
(a)是基于conv4的特征图做的检测,(b)是基于conv5的特征图做的检测。这两个比较可以得出结论,并不是高层特征就比低一层的特征更有效。
(c)是FPN的,和a b 比较可以看出特征金字塔的优势。
(d)是SSD形式的,效果也比FPN差。
(e)表示有自顶向下的过程,但是没有横向连接,即向下过程没有融合原来的特征。这样效果也不好的原因在于目标的location特征在经过多次降采样和上采样过程后变得更加不准确。
(f)只用FPN结构中的P2,还是比FPN差,(f)有更多的anchor,说明增加anchor的数量并不能有效提高准确率。

在这里插入图片描述
将FPN用于Fast R-CNN的检测部分。除了(a)以外,分类层和卷积层之前添加了2个1024维的全连接层。
实验结果如下表Table2,这里是测试Fast R-CNN的检测效果,所以proposal是固定的(采用Table1(c)的做法)。与Table1的比较类似,(a)(b)(c)的对比证明在基于区域的目标卷积问题中,特征金字塔比单尺度特征更有效。(c)(f)的差距很小,原因可能是ROI pooling对于region的尺度并不敏感。因此并不能一概认为(f)这种特征融合的方式不好,要针对具体问题来看待,像上面在RPN网络中,可能(f)这种方式不大好,但是在Fast RCNN中就没那么明显。

在这里插入图片描述
将FPN用于Faster RCNN的实验结果如Table3。

在这里插入图片描述
Table4是和近几年在COCO比赛上排名靠前的算法的对比。注意到本文算法在小物体检测上的提升是比较明显的。

这些实验并没有采用其他的提升方法(比如增加数据集,迭代回归,hard negative mining),因此能达到这样的结果实属不易。

版权声明:本文为CSDN博主「Shadownow」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Shadownow/article/details/122582640

Shadownow

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐