FPN(Feature Pyramid Networks)学习笔记

论文:Feature Pyramid Networks for Object Detection
论文连接:FPN

lateral connection横向连接、top-down architecture自顶向下
build high-level sematic feature maps at all scales 在所有尺度上构建高级语义特征图

低层的特征:语义(sematic)信息比较少,但是目标位置准确;
高层的特征:语义信息比较丰富,但是位置比较粗略。

原来大多数的目标检测算法都是只采用顶层特征来做预测。另外虽然也有一些算法采用的是多尺度特征融合的方式,但是一般采用融合后的特征来做预测。

文中体提到的4种利用特征的算法形式

(a) Featurized image pyramids,特征化图像金字塔 (全称Feature pyramid build upon image pyramids):
即将图像做成不同的scale,然后不同scale的图像各自生成对应的不同scale的特征。对图像金字塔的每一层进行特征化的主要优势在于,它产生了一种多尺度的特征表示,其中所有层都具有很强的语义,包括高分辨率层。这个方法的缺点就在于增加了时间成本,有些算法会在测试中采用图像金字塔。
在这里插入图片描述
(b) Single feature map:
即仅采用网络最后一层的特征。这里的特征都是通过深度神经网络 (ConvNets)计算得到的,除了能够表示更高级的语义外,ConvNets对尺度变化也更具鲁棒性,因此有助于从单个输入尺度上计算的特征进行识别。像SPP net,Fast RCNN,Faster RCNN是采用这种方式。
在这里插入图片描述
(c) Pyramidal feature hierarchy:
即在前向过程中从网络不同层抽取不同尺度的特征做预测,这种方式不会增加额外的计算量。deep ConvNet逐层计算特征层次,通过下采样层,特征层次具有固有的多尺度金字塔形状。这种网络特征层次结构生成了不同空间分辨率的特征图,但由不同深度,各个特征图之间有很大的语义鸿沟。高分辨率图的低级别特征会损害其对象识别的表征能力。像SSD(Single Shot Detector)采用这种多尺度特征融合的方式,作者认为SSD算法中没有用到足够低层的特征(在SSD中,最低层的特征是VGG网络的conv4_3),而在作者看来足够低层的特征对于检测小物体是很有帮助的。
在这里插入图片描述
(d) Feature Pyramid Network:
顶层特征通过上采样和低层特征做融合,将低分辨率、语义强的功能与高分辨率、语义弱的特征结合起来,而且每层都是独立预测的。
相似的结构采取的是自顶向下的、跳跃连接(skip connection)的网络结构(下图的上面一张图),目标是生成一个高分辨率的单一高级特征图(finest level,自顶向下的最后一层),并据此进行预测。经过多次上采样并融合特征到最后一步,拿最后一步生成的特征做预测。而FPN与上面这个网络结构十分相似,区别在于预测是在每一层中独立进行的。
在这里插入图片描述

模型的主要部分

输入:单尺度、任意大小的图片
输出:在多尺度输出按比例大小的特征图

论文的主干网络采用的是ResNets。模型的金字塔结构包括了自下而上(bottom-up)的路径、自顶向下(top-down) 的路径以及 横向连接(lateral connections)

Bottom-up pathway

自下而上的路径是通过主干网络的前馈计算得到的,它计算由多个比例的特征图组成的特征层次,从下而上相邻的两个特征图的缩放步长为2。

stage: 输出相同大小特征图的卷积层称为一个stage。
选择每个stage的最后一层的输出特征作为特征图的参考集,用来充实后建立金字塔结构。因为每个stage的最深层具有最强的特征。

于是,对于ResNets,用每个阶段的最后一个剩余块(residual block)作为输出,即对于ResNets的conv2,conv3,conv4,conv5的输出是{C2,C3,C4,C5}。

Top-down pathway and lateral connection

通过在金字塔的更高层上采样空间上较粗糙的、但语义信息更强的的特征图来获得高分辨率的特征,然后通过与自下而上过程中得到的下层特征图进行横向连接来增强特征,如下图所示。
在这里插入图片描述

  1. 对粗糙分辨率的特征进行最近邻上采样,使得空间分辨率提高了2倍。
  2. 通过1 * 1的卷积核来对相邻的下一层的通过自下而上过程得到的特征图进行卷积操作,目的是为了减少channel的维数。(对于最高层的话,就是直接进行这个操作来得到金字塔最高层的feature map)
  3. 然后通过元素的加成来融合。
    上述过程反复进行直到最终得到最高分辨率图为止。于是会得到最终的特征图集{P2,P3,P4,P5},对应于{C2,C3,C4,C5},相对应的两个有相同的空间大小。
    由于金字塔的所有层共享分类器和回归器,论文将所有的特征图的维度调整到了同一个大小d=256。

应用

RPN+FPN

RPN是一个滑动窗口的不分类(class-agnostic)目标检测器。在最初的RPN设计中,在单尺度卷积特征图的基础上,在密集的3 * 3滑动窗口上评估一个小的子网络,执行对象/非对象二元分类和边界盒回归。这是通过3 * 3的卷积层和两个并行的1*1的卷积层来进行分类和回归,论文称之为一个网络的 head 。对象/非对象标准和边界框回归目标是根据一组称为anchor的参考框定义的。anchor具有多个预定义的比例和纵横比,以覆盖不同形状的对象。
论文就是用RPN的这个head对每层特征图都执行操作。论文中提到没有必要对每个层都用不同尺寸的anchors,于是每个层都只对应了一个大小的anchor:{322,642,1282,2562,5122}分别对应{P2,P3,P4,P5,P6}。P6只是为了覆盖最大的锚框大小5122,是通过对P5进行步长为2的下采样得到的,并且它不用于后面Fast R-CNN。 但是每个anchor都有三种纵横比:{1:2,1:1,2:1}。所以整个金字塔结构将会有15种锚框。
根据锚与ground truth边界框的交并比(IoU)为anchor分配训练标签。一般地,如果某个anchor与给定的ground truth边界框中拥有最高的IoU,或与ground truth边界框的IoU超过0.7,则该anchor赋予正标签;如果与所有ground truth边界框的IoU都低于0.3,则该anchor赋予负标签。

Fast R-CNN

Fast R-CNN是一种基于区域的目标检测器,其中Region of Interest(RoI)池化用于提取特征。
一般我们通过以下方式将宽度为w、高度为h(在网络的输入图像上)的RoI分配给特征金字塔的Pk层:
在这里插入图片描述

其中224是标准的ImageNet预训练尺寸,k0是指w×h=2242的RoI应映射到的目标级别。与基于ResNet的Fast R-CNN系统类似,该系统使用C4作为单比例尺特征图,于是我们将k0设置为4。所以上式的意思是:如果RoI的尺寸变小(例如,224的1/2),则应将其映射到分辨率更高的级别(例如,k=3)。
将预测器head附加到所有层的所有RoIs上(Fast R-CNN的头是类别明确的分类器和边界框回归器)。

  1. 采用RoI pooling层来提取7 * 7的特征
  2. ReLU
  3. 2个并联的隐藏的1024-d的fc层

这些层是随机初始化的。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>