一、前言
-
特征金字塔可用于检测不同尺度目标,但最近的深度学习目标检测器避免使用它,部分原因是它带来了极大的计算量和内存需求
-
本文利用深度卷积网络内在的多尺度、金字塔分级来构造具有很少额外成本的特征金字塔
-
本文开发了一种具有横向连接的自顶向下架构,称为特征金字塔网络(FPN),用于在所有尺度上构建高级语义特征映射
-
将FPN应用于一些目标检测器(如Faster R-CNN),结果得到了显著的改进
二、模型与方法
2.1 模型对比
图中:feature map用蓝色边框表示,边框越粗,表示其语义特征越强
(a) Featurized image pyramid
操作:
- 使用图像金字塔构建特征金字塔
- 每个尺度的图像的featue map都是独立计算的
结果:
- 计算量大,内存消耗太大
- 速度很慢
(b) Single feature map
操作:
- 通过深层卷积得到最终的单一尺度的feature map
- 只利用最终得到的feature map进行检测
结果:
- 计算量少,检测速度也很快
- 得到的语义特征比较单一
- 对小目标特征提取的太少,导致小目标的检测效果不好
说明:分类任务中还有大部分早期目标检测都是使用这种结构,如YOLOv1,Faster RCNN
(c) Pyramidal feature hierarchy
操作:
- 保存前向传播时每一个卷积层输出的featrue map
- 重新使用这些保存的feature map进行预测
结果:
- 卷积输出结果一般都会保存下来,所以重用它们几乎是零计算量的
- 对小目标的检测效果依然不好
说明:该结构的典型代表就是SSD目标检测模型,但是SSD是从网络最高层开始构建金字塔,没有使用较低层的卷积层输出的feature map,即高分辨率的feature map(后证明这些对于检测小目标很重要)
(d) Feature Pyramid Network
操作:
- 将低分辨率、强语义的特征与高分辨率、弱语义的特征通过自顶向下的路径和横向连接相结合
结果:
- 输出结果是一个特征金字塔,每一层的feature map都具有丰富的语义
- 可以用来代替(a)这种结构,同时不牺牲表征能力,速度或者内存
2.2 设计思路
卷积神经网络前向传播的过程中,每一层输出的feature map的从结果上来看就是一个特征金字塔
所以,本文很自然地利用了卷积神经网络输出多层次的feature map,并且在同时构建一个在所有尺度上都具有强大语义的特征金字塔,从而形成一个特征金字塔网络(Feature Pyramid Network)
2.3 FPN(Feature Pyramid Network)
FPN包括两个部分:
- 自顶而上的过程
- 自顶而下和侧向连接的融合过程
2.3.1 自顶而上的过程
自顶而上的过程就是卷积神经网络前向传播的输出不同尺度的feature map的过程。
在FPN中:
- 按输出的feature map的大小,将卷积层划分为不同的stage
- 每个stage之间的feature map大小比例相差为2
- 每个stage对应特征金子塔中的一个level
- 每个stage的最后一个feature map被选为对应特征金字中想要level的特征
以ResNet为例,选取conv2、conv3、conv4、conv5层的最后一个残差block输出的feature map作为特征金字塔对应level的特征,记为{C2、C3、C4、C5}。这几个特征层相对于原图的步长分别为4、8、16、32。此外,考虑到内存占用问题,没有将conv1包含在金字塔中。