论文: Feature Pyramid Networks for Object Detection
作者: Tsung-Yi Lin, Piotr Dollár, Ross Girshick, Kaiming He, Bharath Hariharan, Serge Belongie
最近在读最新目标检测论文的时候,FPN一直出现,所以在这里又把FPN网络论文重新读了一遍,并简单记了些学习笔记。
识别尺寸差异很大的对象是计算机视觉的一项基本挑战,在FPN提出之前,主要有三种解决方案,如Fig1(a), (b), ©所示, (d)表示的是FPN网络。
Fig1 (a)中的是图像金字塔
基于图像金字塔的特征金字塔是多尺度物体检测的基础解决方案。图像金字塔方法在手工设计特征的时代被大量使用,如DMP。
Fig1 (b)中的是卷积神经网络
卷积神经网络除了能够表示高级语义外,还对尺度变化具有鲁棒性,因此有助于从单个输入尺度上计算出的特征中进行识别,如Fig1(b)所示。CNN即使具有这种鲁棒性,仍然需要金字塔来获得更准确的结果。但图像金字塔在CNNs中具有局限性。推测时间较长,在实际应用中不切实际;考虑到内存问题,在训练时图像金字塔是不可行的,因此会造成训练和测试时的不一致性。
深度卷积网络逐层计算得到特征层次,并且通过下采样层,特征层次(feature hierarchy)结构具有固有的多尺度、金字塔形状。这种in-network的特征层次产生了不同分辨率的特征图,但是会引入由不同深度引起的较大的语义鸿沟。高分辨率特征图具有不利于对象识别的低层特征表示。
Figure1 c)中的SSD的金字塔层次特征结构
理想情况下,SSD-style的金字塔将重用forward pass中计算出的来自不同层的多尺度特征,从而节省成本。但是,为了避免使用低级特征,SSD放弃了重用已经计算出的层,而是从网络的高层构建金字塔,然后添加了几个新层。因此,它错过了重用特征层次结构中的高分辨率特征。 实验证明,这些对于检测小物体很重要。
Fig1 (d)中的结构是论文中提出的FPN
论文的目标是利用ConvNet的特征层次金字塔结构,来创建在各个尺度具有较强语义信息的特征金字塔。为实现此目标,作者将具有低分辨率强语义信息的特征和具有高分辨率弱语义的特征,通过一个top-down的路径和横向连接(lateral connection)连接起来。
产生的结果是一个特征金字塔,它在所有levels上面具有丰富的语义信息,并且可以从单个尺寸的输入图像快速构建。
论文中,利用深度卷积网络固有的多尺度、金字塔层次结构来构建具有边际额外成本的特征金字塔。这种称为Feature Pyramid Network(FPN)的架构在很多应用中表现出了显著的改进。而且,FPN对所有尺寸可以进行端到端的训练,并且在训练和测试时保持一致性。
基于FPN的方法采用任意大小的单尺度图像作为输入,在多个levels上以全卷积形式输出成比例的特征图。FPN是和骨干网络是独立的。FPN的构造包括一个bottom-up的路径,一个top-down的路径和lateral连接。
Bottom-up pathway是骨干网络的前向计算,它计算了包含不同尺度特征图的特征层次(feature)。通常会有许多层产生相同大小的输出特征图,我们说这些层位于网络的同一stage。对于FPN,每一个stage定义一个金字塔level。FPN选择每一个stage的最后一层的输出作为特征图的reference set,我们将会对其进行丰富(rich)来构建金字塔。
具体来说,对于ResNet,FPN使用每一个stage的最后一个残差block输出的特征激活。论文中将这些最后一个残差block (conv2, conv3, conv4, conv5)的输出记为 { C 2 , C 3 , C 4 , C 5 } \lbrace C_2, C_3, C_4, C_5 \rbrace {C2,C3,C4,C5},它们的具有相较于输入图像的步长分别为 4, 8, 16和32。由于conv1占用大量内存,因此论文中没有将其包含在金字塔中。
Top-down pathway 对来自更高金字塔level的空间上更粗糙(spatially coarser)、更强语义信息(semantically stronger)的特征图进行上采样来得到更高分别率的特征图。这些特征通过与来自bottom-up的特征进行lateral连接来加强。
每一个lateral连接合并了来自bottom-up pathway和top-down pathway的具有相同分辨率的特征图。 Bottom-up特征图浅层具有lower-level的语义信息,但是它更有助于精确的定位,因为它下采样的次数更少一些。
FPN block如Fig 3所示, 1 x 1的卷积用来降低维度,合并操作通过逐元素相加。
所有的金字塔level共享分类器/回归器,所以在所有的输出特征图上的通道设置为256。在这些层里也没有设置non-linearites。
Table 1是进行的ablations的实验结果。
Table 4是FPN与一些其他模型的对比结果