FPN在目标检测领域的应用

概述

在目标检测领域,针对检测的物体的形状大小不一,比较自然的想法是采用多尺度检测的方法,最为直接的方法就是将输入的图片进行不同比例的缩放,考虑到其对于内存的极大消耗,一般不在训练阶段使用这个方法,而只是在测试阶段引入这一技巧。随着神经网络在目标检测领域的逐渐使用,也衍生出了许多种利用不同尺度信息来提高目标检测进度的小技巧。

FPN在目标检测领域的应用_第1张图片

(a)直接对原始输入图像进行不同比例的缩放
(b)不利用其他尺度的特征信息,只直接使用最后一层的输出做预测
(c)在不同的特征层上进行预测,但是不与其他尺度的特征层进行融合
(d)在融合其他特征层基础上,在不同的尺度上进行预测,即我们所讲的FPN

模型整体架构

以残差网络作为基本网络,选取conv2, conv3, conv4和conv5作为特征金字塔,注意到这四个卷积层的输出相对于输入图像在宽和高缩小了$\frac{1}{4}$,$\frac{1}{8}$, $\frac{1}{16}$,$\frac{1}{32}$,随着输出特征宽高的减小,即越来越深的特征层,其特征层分辨率将会减小,但是其特征层代表的语义水平越来越高。在目标检测领域分辨率的减小不利于小目标的检测,举个例子,当我们把图片进行一定程度的缩小,比较大的物体依然是可见的,但是比较小的物体也许会变得模糊不清。不同尺度的特征层便于我们检测不同尺度的物体。

FPN在目标检测领域的应用_第2张图片

将conv2, conv3, conv4和conv5分别通过$1\times1$卷积,使通道数都变为256,将当前层的上层特征经过一个上采样层,这里采用的上采样方式是最近邻插值,经过上采样层后上层特征的宽高扩大了2倍,与经过$1\times1$的对应卷积层相加,最后使用一个$3\times3$来缓解上采样过程中所产生的混叠现象。当然由于M5没有融合其他特征层,所以不需要经过$3\times3$卷积。
FPN在目标检测领域的应用_第3张图片

FPN应用到Faster-RCNN中

普通的Faster-RCNN如下图所示:
FPN在目标检测领域的应用_第4张图片

当我们将FPN应用到特征提取网络中,Faster-RCNN结构如下图所示:
FPN在目标检测领域的应用_第5张图片

锚框

无论属于特征金字塔的哪一层,都设定的统一的锚框大小,在$\left\{P_2,P_3,P_4,P_5,P_6\right\}$上分别设置像素面积为$\left\{32^2,64^2,128^2,256^2,512^2\right\}$宽高比为$\left\{1:2,1:1,2:1\right\}$的锚框($P_6$在Faster-RCNN中不被使用)。在标签问题上所依据的原则依然和原始的Faster-RCNN一致,将与真实框交并比大于0.7的锚框标记为正样本,小于0.3的标记为负样本。

ROI的分配问题

FPN的引入产生了多个共享特征层,所以接下来的问题就是我们应当在哪个共享特征层中进行截取从而作为下游网络的输入。可以使用如下公式将宽和高分别为$w$和$h$的ROI分配给特征金字塔中的$P_k$,即在$P_k$中截取作为下游网络的输入:
$$k = \lfloor k_0 +\log_2{(\sqrt{wh}/224)} \rfloor$$
224是在ImageNet数据集上预训练好的特征提取网络(这里是残差网络)的输入的宽和高的大小。$k_0$是大小为$224\times224$的ROI应该分配的特征金字塔中的某一层。这里设置$k_0=4$。上式意味着,随着ROI尺寸的减少,所分配的共享特征层其分辨率愈高,即$k$愈小。

参考文献

[1]Lin T Y, Dollár P, Girshick R, et al. Feature pyramid networks for object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 2117-2125.
[2]Understanding Feature Pyramid Networks for object detection (FPN)
https://medium.com/@jonathan_...

你可能感兴趣的:(神经网络)