出现背景:
在以往的faster rcnn进行目标检测时,无论是rpn还是fast rcnn,roi 都作用在最后一层,这在大目标的检测没有问题,但是对于小目标的检测就有些问题。因为对于小目标来说,当进行卷积池化到最后一层,实际上语义信息已经没有了,因为我们都知道对于一个roi映射到某个feature map的方法就是将底层坐标直接除以stride,显然越后,映射过去后就越小,甚至可能就没有了。 所以为了解决多尺度检测的问题,引入了特征金字塔网络。
特征金字塔:
上图就是一个传统的图像金字塔,针对一个输入图像,resize成多个scale,针对每个scale,都输入网络训练,预测,这样,网络能够针对不同的scale的图像进行预测,但是问题严重,计算开销太大。关于特征金字塔,作者举例了传统的3类和自己提出的金字塔,如下图所示:
图b即对原始图像进行多次卷积池化的操作,仅采用网络的最后一层的特征图做预测。SPPnet、Fast R-CNN和Faster R-CNN都是采用的这种方法。这种方法速度快,内存占用较少;缺点在于仅关注了深层网络的最后一层的特征,却忽略了其他层的特征,尤其是浅层的特征没有充分利用。
图c即在原始图像上进行深度卷积,结合不同层的特征做多尺度融合的预测。SSD、DSSD等就是用的这种方式。这种方法的优点是对于有些目标来说,不需要进行多余的前向传播操作,因为简单的目标仅需要较浅层的特征就可以检测,复杂的目标用较深层的特征去检测。这样在一定程度上加速了网络的传播,不增加额外的计算量。缺点是获得的特征不鲁棒,对于小目标检测效果不好(比如SSD没有利用比Conv4_3更浅的层的特征,而这些浅层的特征图有着交大的分辨率,对小目标的检测很重要)。
图d就是作者提出的模型,虽然图c中的模型可以解决相关的问题,但是抛弃了高维度的特征,例如,在图像的细节预测上,一些微小的物体只有在高层次的卷积层才可以识别,在低维的卷积层是无法识别的,那么对图c的模型而言,很显然,在低层次的预测结果是很差的,因为此时没有考虑高维的图像特征,但是图d的模型解决了这个问题,将高维特征进行逐步下采样,与相应卷积层的特征图相加即可。既能结合高维的特征,又能在较小的计算开销下产生multi-scale的输出。
具体过程如下:
训练分两个过程,左边是bottom -up,右边是up- bottom。首先bottom- up,逐步卷积,完成卷积后,就是up -bottom。具体操作:上图中A相对B是高层,B相对A是浅层。将A特征图上采样(最近邻上采样,2倍),B特征图用1*1卷积核卷积,目的是使B层的特征图的channels与A层的特征图channels相同。然后A、B层特征图对应channels元素点和(注意此时A、B的特征图的resolution应相同),成为C。C后面再接一个3*3的卷积,目的是消除“上采样的混叠效应”。
具体结构如图:
注:Bottom-up pathway。即网络的前向传播过程。在前向传播过程中,feature map的大小在经过某些层后会改变,而经过其他一些层时不会改变,作者将不改变feature map大小的层归为一个stage,每次抽取的特征都是在每个stage的最后一层的输出。具体地,以Resnet-101为例,作者使用每个阶段最后一个残差结构的特征作为输出,用{C2、C3、C4、C5}表示,对应Conv2_x、Conv3_x、Conv4_x、Conv5_x的最后一个输出,他们对于输入图像具有4、8、16、32像素的步长。Resnet-101结构如下图:
C2、C3、C4、C5在“Top-down pathway”和“lateral connections”之后对应 P2、P3、P4、P5。
应用:
(1)用在RPN,可以提取多个维度的feature map的anchor,增加了feature的表达。
(2)用在Fast R-CNN,就是将ROI打在不同scale的Pyramid level上,最后统一roi-pooling到特定的scale,做CNN classification。 并且给出了经验值挑选方式:
Faster R-CNN是对Conv4_3后的特征图用RPN扫描,而这里是对不同的P都用RPN扫描一遍,即原来Faster R-CNN仅有一次RPN操作,这里有5次RPN操作。每个FPN后的RPN都对应一个尺度的Anchor。P2、P3、P4、P5、P6分别对应Anchors的尺寸为32*32、64*64、128*128、256*256、512*512。每个anchor又对应三种不同的aspect ratio:1:2、1:1、2:1。因此FPN后的Faster R-CNN有15种不同的anchor。关于anchor的整幅样本标定与Faster R-CNN中相同,不同的是Faster R-CNN中关于跨边界的anchor是舍弃的,这里作者并没有舍弃这些anchor。简化为如下:
论文的关键点: 引入Pyramid,同时保证整个Network的计算增量尽可能小。增强feature representation。浅层特征对定位效果好,深层特征由于语义更高级,对分类结果好。通过对深层和浅层特征的融合,使定位信息和分类信息相结合,构建一个更深的特征金字塔,融合了多层特征信息,并在不同的特征层上预测,大大提高了识别准确率(AP)。算法同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的。
注:echoes指的是把训练数据训练几轮的轮数。