FPN
1. Introduction
特征化的 image pyramid 被大量使用,ConvNet被用来计算特征,除了能够表示更高层次的特征之外,convnet 对尺度上的变化也更有鲁棒性,很多检测挑战中都使用了对特征化图像金字塔的多尺度测试,它的主要优点是产生了一个多尺度的特征表示,其中所有级别的语义都很强,包括高分辨率级别。
然而图像金字塔也有明显的额局限性,inference 时间大大增加,所以想要端到端的训练网络是不可行的,如果我们只在test时用图像金字塔,就会造成train和test的inference时间不一致,由于这些原因,faster RCNN选择不使用t特征图像金字塔。
图像金字塔不是唯一计算多尺度特征的方法。深度convnet逐层计算特征层次结构,而特征层次结构具有固有的多尺度金字塔形状,这种网络特征层次结构产生不同空间分辨率的特征图,但引入了不同深度造成的较大语义空白,高分辨率的feature map 可能具有低层次的特征,that harm 了他们的目标识别能力。
本文的目标是自然的利用ConvNet的特征层次的金字塔形状,同时创建一个在所有尺度上都具有强大语义的特征金字塔。为实现这一目标,我们将低分辨率、语义强的特征与高分辨率、语义弱的的特征通过自顶向下的路径和横向连接结合起来。最后得到一个特征金字塔,它在所有级别上都有丰富的语义,并且由单个输入图像scale快速构建。而我们的方法不需要牺牲表达能力,速度或者内存。
3. Feature Pyramid Networks
我们的方法以任意大小的单尺度图像作为输入,并输出在多个层次上成比例大小的特征映射,以全卷积的方式,这个过程不依赖主干网络卷积结构。
Bottom-up pathway.
自下而上的路径时主干网络的前馈计算,他计算由多个尺度上的特征映射组成的特征层次,其缩放步长为2。通常有许多层产生相同大小的输出映射,这些层处于相同的网络阶段,而每个阶段的最后一层往往有最强的特征,所以我们选择每个阶段的最后一层的输出作为我们的feature map的参考集。
对于Resnet,我们使用feature activations output by 每个阶段的最后一个residual block。这些residual block的输出为{C2,C3,C4,C5}。它们相对于输入图像具有{4、8、16、32}的步长,考虑到内存的影响,我们没有把conv1的输出考虑在内。
Top-down pathway and lateral connections.
自上而下的路径,下层feature map随上层feature map进行upsampling,从语义上更强的feature map中获得更高的分辨率。然后特征通过横向连接自上而下的有同路被增强。自下而上的feature map具有较低的语义,但是它的激活更加本地化,因为它倍细分的次数更少(与原image的差别较小)。
如图3,我们对最近邻的feature map进行上采样,然后,左边的feature map进行1x1卷积层,减少通道尺寸,这个过程被迭代,直到生成最好的分辨率映射。对于C5,我们在C5上附加一个1x1的卷积层,生成最粗的分辨率图。最后,在每个合并映射上附加3x3卷积,生成最终的特征映射,这样可以减少upsampling 的 aliasing effect(混叠效应)。最后一组特征映射称为{P2, P3, P4, P5}。
由于金字塔的各个层次都使用共享的分类器和回归器,我们在所有的特征映射中固定特征维数,本文设为256,在这些额外的层中没有非线性,他们的影响很小,简单性时我们设计的核心,我们试验了很多复杂的block,观察到的效果要好一些,但设计更好的block不是本文的重点。
4. Applications
4.1. Feature Pyramid Networks for RPN
我们和faster R-CNN不同,我们通过用FPN代替单尺度特征映射。我们在每个层次上都附加了一个相同设计的head(即3×3conv和两个1×1的conv),因为head在所有金字塔层的所有位置都会密集滑动,就没有必要应用多尺度anchor,我们为每个级别分配单一的anchor,在{P2, P3, P4, P5, P6}上的面积为{32方, 64方, 128方, 256方, 512方} ,但是仍然使用三种横纵比,所以在金字塔上一共有15个anchor。ground-truth boxes的尺寸没有明确的分配到金字塔的level,相反,ground-truth和anchor相关联,anchor被分配到金字塔的level,即每个金字塔的层都有专门分配的anchor尺寸,而ground-truth的尺寸并不需要变动。
head的参数(filters等)在所有的特征金字塔上的不同层上是共享的,我们还评估了没有共享的方案,精度餐别差别不大,这说明我们的金字塔的所有层级都具有相似的语义性能。
4.2. Feature Pyramid Networks for Fast R-CNN
我们通过以下方式将宽度w和高度h(image input)的RoI分配给特征金字塔的pk级,
224是规范的ImageNet pretrian的大小,k0是224尺寸时应该映射的金字塔层数,在这个级别上应该擦用224的RoI大小,我们设置k0=4。如果RoI的尺寸变小,就应该映射到更高的分辨率级别。
我们给所有级别的RoI加上一个predictor head,所有head共享参数,由于已经利用conv5阶段的feature map来构建特征金字塔,所以,我们采用RoI pooling来提取7×7的特征,并在最终分类层和和回归层之前附加两个1024-d 全连接层,这些层随机初始化。