论文:Feature Pyramid Networks for Object Detection
Motivation
许多图像识别的检测算法都考虑到不同尺寸图片(multi-scale)对算法的影响。下图是几种利用不同尺寸特征的策略。
a. 图像金字塔,生成不同尺寸的图片,每张图片生成不同的特征,分别进行预测,最后统计所有尺寸的预测结果。这种方法最大的缺点是运算时间长,很难用于训练,在测试的时候可能会用一下。
b. 使用单一feature map进行预测,一般是网络最后一层feature map。Fast R-CNN、Faster R-CNN采用这种方法。顶层的feature map包含粗略的位置信息,导致预测的bbox不精确。而且高层的feature map会忽略小物体信息。
c. 使用金字塔特征结构,使用不同层次的金字塔层feature map进行预测。SSD就是采用这种多尺度特征融合方法,从网络不同层抽取不同尺寸的特征做预测,没有增加额外的计算量。但是SSD没有使用足够底层的特征,SSD使用最底层的特征是VGG的conv4_3。
d. 特征金字塔网络。作者使用这种方法,对顶层特征进行向上采样,并与底层特征进行融合,得到高分辨率,强语义的特征。
作者这篇论文的目标是自然地利用ConvNet特征层次结构的金字塔形状,同时创建一个在所有尺度上都具有强大语义的特征金字塔。作者提出了一个网络架构,把低分辨率、强语义特征(高层特征)和高分辨率、低语义特征(底层特征)通过一个自顶向下的路径和横向连接结合起来。如下图所示
上半部分在特征金字塔的最底层进行预测,下半部分在特征金字塔的所有层单独预测,论文主要使用后者。
Feature Pyramid Networks
特征金字塔使用的网络骨架backbone是ResNet。特征金字塔网络包括自底向上、自顶向下和横向连接。特征金字塔的横向连接和自顶向下的连接示意图如下
Bottom-up pathway
自底向上结构就是网络的前向传播的过程。在backbone网络中,有许多网络层的输出大小都是一样,这些网络层就在同一阶段,每个特征金字塔层就对应一个阶段。每个阶段的最后一个feature map关联到对应的特征金字塔层,因为每个阶段的最后一个feature map有语义最强的特征。
对ResNet具体地说,ResNet有5个阶段,把conv2,conv3,conv4,conv5对应为特征金字塔的 { C 2 , C 3 , C 4 , C 5 } \{C_2, C_3, C_4, C_5\} { C2,C3,C4,C5}层。不考虑conv1的原因是conv1需要太大的内存。对于每个特征金字塔层,对应于输入图片的步长分别是 { 4 , 8 , 16 , 32 } \{4, 8, 16, 32\} { 4,8,16,32}像素。
Top-down pathway and lateral connections
自顶向下结构通过对特征金字塔高层向上采样生成更高分辨率特征。每个横向连接合并自顶向下结构和自底向上结构相同大小的feature map。上图虚线框表示一个横向连接,首先对上一层的特征金字塔层向上采样,扩大两倍。对应的自底向上的feature map进行1×1卷积,然后两者逐元素相加。之后,为了减低向上采样的混淆效应,对得到的feature map进行3×3卷积。最顶层的特征金字塔通过对 C 5 C_5 C5进行1×1卷积得到。得