Feature Pyramid Network for Object Detection
论文链接: https://arxiv.org/abs/1612.03144
一、Problem Statement
特征金字塔在识别系统中是一个基本的组成部分,用于在不同尺度上检测目标。但是因为传统的特征金字塔计算和存储花费太大,作者就提出以一个较小的额外花费来构建一个特征金字塔。
它是一个为了在所有尺度上建立高层次语义特征映射的一个自顶向下且含有旁支的结构。
(a)使用image pyramid,特征是通过不同图片大小独立计算出来的,缺点是很慢。
(b)基本的CNN结构,慢慢的降采样,然后进行预测。这样的办法会引入较大的semantic gaps,导致目标识别精度较低。
©采用的一些卷积特征金字塔结构,对每一个尺度进行预测,但是没有结合其他尺度的信息。
(d)本文提出的FPN结构。
二、Direction
目标:
建立一个在所有尺度上具有强语义信息的卷积特征金字塔。通过结合低分辨率的特征和语义丰富的高分辨率的特征,设计一个自顶向下且包含旁支的结构,且在每一个尺度上都进行预测。
三、Method
Faster R-CNN 和 FPN 相结合的结构:
基于Fast-RCNN detector 和 ResNets backbone。
1、 Bottom-up pathway
这个阶段其实就是把backbone(ResNets)每一个阶段中的最后一层作为创建参考特征图,创建特征金字塔。这是因为作者认为,每一个阶段中最深的那一层应该含有最强的特征。这个阶段不包含ResNets的Conv1,因为其有很大的memory footprint。
2、 Top-down pathway and lateral connections
这个阶段就是把Bottom-up的feature进行上采样,然后通过lateral connection进行加强。Upsample采用的是nearest neighbour upsampling。最后把它们进行相加融合。为了消除上采样产生的aliasing(锯齿效应)影响,在每个融合后的特征图上多加一个3x3卷积。
因为所有尺度上的特征图都是使用共有的分类回归器,所以作者把特征的维度定在了256。作者发现,使用sharing features提高了很小的精度,也减少了推理时间。
3、 Feature Pyramid Network Application
这个阶段就是在RPN和Fast-RCNN上使用FPN。
对于RPN,作者没有设置多尺度的anchors,而是对每一个层级使用单一尺度的anchor,但有三个比例。例如,
在
{
P
2
,
P
3
,
P
4
,
P
5
}
\{P_2, P_3, P_4, P_5\}
{P2,P3,P4,P5}上分别使用
{
3
2
2
,
6
4
2
,
12
8
2
,
25
6
2
,
51
2
2
}
\{32^2, 64^2, 128^2, 256^2, 512^2\}
{322,642,1282,2562,5122},且每个层级上的anchors对应有
{
1
:
2
,
1
:
1
,
2
:
1
}
\{1:2, 1:1, 2:1\}
{1:2,1:1,2:1}的比例,因此在feature pyramid上总共有15种anchors。
而对于不同尺度的RoI, 作者使用以下公式將这些RoI放入对应的level
P
k
P_k
Pk:
k
=
⌊
k
0
+
l
o
g
2
(
w
h
/
224
)
⌋
k=\lfloor k_0+log_2(\sqrt{wh}/224) \rfloor
k=⌊k0+log2(wh/224)⌋
224在这里是经典的ImageNet pre-training size。
k
0
k_0
k0是
w
w
wx
h
h
h=
22
4
2
224^2
2242的RoI层级。
四、Conclusion
解决multi-scale问题的一个办法,简单明了。