• 论文阅读|FPN


    原文标题:Feature Pyramid Networks for Object Detection

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

    概要

    利用特征金字塔检测不同尺度的目标是一种基本的方法,但很多目标检测器都避免使用特征金字塔,因为特征金字塔这种表示方法计算速度代价比较大。作者提出了一种内在多尺度,金字塔层级的表示结构,能够构造高级语义特征的不同尺度表示,并且增加了较少的代价,称为FPN特征金字塔。所谓的内在多尺度是在不同的层级上去预测,而不是融合不同层级的feature map然后去预测;而高级语义特征的不同尺度表示,我认为是因为每一层都有上一层的特征的融合,所以每一层的feature map也有一定的高级语义的表达能力,同时还保留着低级别的特征。

    对于多尺度目标的表示,有上述四种方法。

    a是特征化的图像金字塔,这种方式比较慢。论文中 These pyramids are scale-invariant in the sense that an object's scale change is offset by shifting its level in the pyramid,我的理解是这里的object表示的是同类别的不同尺度的目标,这些目标有大有小,较大的目标在高层次的feature map中的表示应该和较小的目标在低层次的feature map中的表示是形同的,所以就可以说这个金字塔是尺度不变的。

    b是常见的单一feature map的预测,能够表示高级的语义信息,而且具有一定的尺度不变性,而且比上一种更快,但不能具有更鲁棒的尺度不变性。

    c作者称为金字塔化的特征层级表示,就是从不同层级的feature map中去直接预测,与作者提出的很相近

    d是作者所提出的方案,比较快而且也比较准确。

    结构框架

    FPN是一种自顶向下的结构,它不只是将top层上采样然后横向融合对应自底向上的一层,而是在融合之前,将自底向上中的对应层经过了1个1x1conv减少通道数 ,然后再进行的融合,后面结果表明这个lateral层很有必要;自顶向下经过迭代之后还不是最终的feature map,将各层feature map再经过一个3x3conv(目的是减少上采样的混叠效应,不太理解?)得到最终图中蓝框的feature maps,图中越蓝的框表示那一层有较强的语义信息。

    应用

    作者将FPN分别应用于rpn以及fast rcnn。

    rpn,对于FPN的每一level都经过1个3x3conv和两个1x1conv,在这里所有一个共享参数,就是在rpn head时,每一level的特征都经过相同的层,比非共享表现好一点,而且时间更少,这说明金字塔各层次的feature map有相似的语义级别。rpn实际上就是按照feature map的每一个点去滑动anchor生成多个anchor,只不过之前是在一个feature map上去滑动窗口,anchor有面积纵横比的区别,area(32,64,128,256,512)5种,根据纵横比(0.5,1,2)3种,在feature map的每个点上有15种不同的anchor。而运用了fpn之后,area分别对应于5个level的feature map,每一level又有上面3种纵横比,也就是在每一level的feature map上的每个点上变成只有3个anchor。没用fpn之前通过不同area的anchor来捕获不同尺度的目标,而fpn有不同尺度的feature map则可以再不同的level上捕获不同尺度的目标特征。

    fast cnn, 主要的区别在于ROI pooling不在是在一个feature map上而是在多level的feature maps上。对于从rpn得到的Bbox它是怎么确定level的呢?根据下面公式确定

    1570437174020

    k0 = 4 表示如果wh = 224时,它应该map到level4,这个224是ImageNet标准的预训练的图片大小,fasterCNN中采用C4作为单feature map输出,因此这里k0取为4。因为从rpn得到的Bbox有不同的area,所以就会被map到不同的level,进行roipooling,ROIpooling固定输出7x7,经过两个fc层,最后进行最终分类以及回归

    实验

    数据集:coco

    RPN vs FPN

    lateral是使用横向的层,top-down是自顶向下迭代融合生成各level。

    Fast R-CNN vs FPN

    Faster R-CNN vs FPN

    总结

    FPN主要是提供了一个多尺度特征表示的方法,称之为特征金字塔,主要就是将高层特征上采样加上经过lateral的下层特征得到具体的一层,然后自顶向下依次构造,各层经过分别处理后得到最终的多level feature maps。

    深层的卷积神经网络虽然有着更丰富的语义表达,具有有限的尺度不变性,因此需要多尺度的特征表示来弥补,这对于目标检测以及分割等任务都是有益的。

    参考

    https://blog.csdn.net/voxel_grid/article/details/79275637

    https://www.jianshu.com/p/973b243b75d8

  • 相关阅读:
    C++文件(夹)选择对话框
    BCB中选择文件对话框TOpenDialog过滤后缀名使用方法
    pjlib深入剖析和使用详解
    PJNATH介绍 -- 开源的用于NAT穿透的ICE, STUN和TURN
    STUN, TURN, ICE介绍
    一个boost底下的线程池
    在Windows下编译WebRTC
    FEC(Forward Error Correction)前向纠错 UDPRTP 中使用用于改善无线等网络丢包等问题--转
    FEC之我见四
    FEC之异或运算应用
  • 原文地址:https://www.cnblogs.com/QuintinLiu/p/11705966.html
Copyright © 2020-2023  润新知