|
Feature pyramid network是CVPR2017年的一篇文章,它在目标检测中融入了特征金字塔,提高了目标检测的准确率,尤其体现在小物体的检测上。
1. 动机(Motivation)
识别不同尺寸的物体是目标检测中的一个基本挑战,而特征金字塔一直是多尺度目标检测中的一个基本的组成部分,但是由于特征金字塔计算量大,会拖慢整个检测速度,所以大多数方法为了检测速度而尽可能的去避免使用特征金字塔,而是只使用高层的特征来进行预测。高层的特征虽然包含了丰富的语义信息,但是由于低分辨率,很难准确地保存物体的位置信息。与之相反,低层的特征虽然语义信息较少,但是由于分辨率高,就可以准确地包含物体位置信息。所以如果可以将低层的特征和高层的特征融合起来,就能得到一个识别和定位都准确的目标检测系统。所以本文就旨在设计出这样的一个结构来使得检测准确且快速。
虽然之前也有算法采用了多尺度融合的方式,但是一般都是在特征融合之后再做预测,而本文则是在不同的特征层都单独进行预测。
2. 结构(Architecture)
下图所示的三种结构是在目标检测中比较常见的结构:

图1 常见结构
(a) Featurized image pyramid:这种方式就是先把图片弄成不同尺寸的,然后再对每种尺寸的图片提取不同尺度的特征,再对每个尺度的特征都进行单独的预测,这种方式的优点是不同尺度的特征都可以包含很丰富的语义信息,但是缺点就是时间成本太高。
(b) Pyramid feature hierarchy:这是SSD采用的多尺度融合的方法,即从网络不同层抽取不同尺度的特征,然后在这不同尺度的特征上分别进行预测,这种方法的优点在于它不需要额外的计算量。而缺点就是有些尺度的特征语义信息不是很丰富,此外,SSD没有用到足够低层的特征,作者认为低层的特征对于小物体检测是非常有帮助的。
(c) Single feature map:这是在SPPnet,Fast R-CNN,Faster R-CNN中使用的,就是在网络的最后一层的特征图上进行预测。这种方法的优点是计算速度会比较快,但是缺点就是最后一层的特征图分辨率低,不能准确的包含物体的位置信息。
所以为了使得不同尺度的特征都包含丰富的语义信息,同时又不使得计算成本过高,作者就采用top down和lateral connection的方式,让低层高分辨率低语义的特征和高层低分辨率高语义的特征融合在一起,使得最终得到的不同尺度的特征图都有丰富的语义信息,如图2所示。

图2 Feature Pyramid Network
3. 特征金字塔(Feature Pyramid Network)
特征金字塔的结构主要包括三个部分:bottom-up,top-down和lateral connection。

图3 Feature Pyramid Network
3.1 Bottom-up
Bottom-up的过程就是将图片输入到backbone ConvNet中提取特征的过程中。Backbone输出的feature map的尺寸有的是不变的,有的是成2倍的减小的。对于那些输出的尺寸不变的层,把他们归为一个stage,那么每个stage的最后一层输出的特征就被抽取出来。以ResNet为例,将卷积块conv2, conv3, conv4, conv5的输出定义为{ C_2, C_3, C_4, C_5 } ,这些都是每个stage中最后一个残差块的输出,这些输出分别是原图的{ 1/4, 1/8, 1/16, 1/32 }倍,所以这些特征图的尺寸之间就是2倍的关系。
3.2 Top-down
Top-down的过程就是将高层得到的feature map进行上采样然后往下传递,这样做是因为,高层的特征包含丰富的语义信息,经过top-down的传播就能使得这些语义信息传播到低层特征上,使得低层特征也包含丰富的语义信息。本文中,采样方法是最近邻上采样,使得特征图扩大2倍。上采样的目的就是放大图片,在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的像素,在本文中使用的是最近邻上采样(插值)。这是最简单的一种插值方法,不需要计算,在待求像素的四个邻近像素中,将距离待求像素最近的邻近像素值赋给待求像素。设待求像素的坐标为 (i+u, j+v) ,( i, j 为正整数, u, v 为大于零小于1的小数),则待求像素灰度的值 f(i+u, j+v)的计算方式如下图所示:

图4 最近邻插值
如果 (i+u, j+v) 落在A区域内,即 u<0.5, v<0.5 ,则将a点的像素值赋给待求像素,同理,落在B区则将b点的像素值赋给待求像素,落在C区则赋予c点的像素值,落在D区则赋予d点的像素值。最邻近法计算量较小,但可能会造成插值生成的图像灰度上的不连续,在灰度变化的地方可能出现明显的锯齿状。
3.3 Lateral connection
如下图所示,lateral connection主要包括三个步骤:
(1) 对于每个stage输出的feature map C_n,都先进行一个1*1的卷积降低维度。
(2) 然后再将得到的特征和上一层采样得到特征图 P_{n+1} 进行融合,就是直接相加,element-wise addition。因为每个stage输出的特征图之间是2倍的关系,所以上一层上采样得到的特征图的大小和本层的大小一样,就可以直接将对应元素相加 。
(3) 相加完之后需要进行一个3*3的卷积才能得到本层的特征输出 P_n。使用这个3*3卷积的目的是为了消除上采样产生的混叠效应(aliasing effect),混叠效应应该就是指上边提到的‘插值生成的图像灰度不连续,在灰度变化的地方可能出现明显的锯齿状’。在本文中,因为金字塔所有层的输出特征都共享classifiers/ regressors,所以输出的维度都被统一为256,即这些3*3的卷积的channel都为256。

图5 Lateral connection
4. 应用(Application)
在文中,作者将FPN和Faster R-CNN相结合,将FPN用于RPN来提取proposal,将FPN用于Fast R-CNN来进行目标检测。接下来这部分内容和Faster R-CNN比较相关,如果有不了解Faster R-CNN的,大家可以参考我这篇文章:Jacqueline:【目标检测】Faster R-CNN。
4.1 Feature Pyramid Network for RPN
下图所示为Faster R-CNN中的RPN的网络结构,接收单尺度的特征输入,然后经过3*3的卷积,并在feature map上的每个点处生成9个anchor(3个尺寸,每种尺寸对应3个宽高比),之后再在两个分支并行的进行1*1卷积,分别用于对anchors进行分类和回归。这是单尺度的特征输入的RPN。

图6 RPN
所以将FPN和RPN结合起来,那RPN的输入就会变成多尺度的feature map,那我们就需要在金字塔的每一层后边都接一个RPN head(一个3*3卷积,两个1*1卷积),如下图所示,其中 P_6 是通过 P_5 下采样得到的。

图7 RPN with FPN
在生成anchor的时候,因为输入是多尺度特征,就不需要再对每层都使用3种不同尺度的anchor了,所以只为每层设定一种尺寸的anchor,图中绿色的数字就代表每层anchor的size,但是每种尺寸还是会对应3种宽高比。所以总共会有15种anchors。此外,anchor的ground truth label和Faster R-CNN中的定义相同,即如果某个anchor和ground-truth box有最大的IoU,或者IoU大于0.7,那这个anchor就是正样本,如果IoU小于0.3,那就是负样本。此外,需要注意的是每层的RPN head都参数共享的。
4.2 Feature Pyramid Network for Fast R-CNN
在Fast R-CNN 中有一个ROI Pooling层,它是使用region proposal的结果和特征图作为输入,得到的每个proposal对应的特征然后pooling,之后再分别用于分类结果和边框回归。之前Fast R-CNN使用的是单尺度的特征图,但是现在使用不同尺度的特征图,那么RoI需要在哪一个尺度的特征图上提取对应的特征呢? 作者认为,不同尺度的RoI应该使用不同特征层作为RoI pooling层的输入,大尺度RoI就用后面一些的金字塔层,比如P5;小尺度RoI就用前面一点的特征层,比如P4。那怎么判断RoI该用哪个层的输出呢?这里作者定义了一个计算公式:

其中,输出的k代表特征图的层数编号。 k_0 是基准值,为5,代表第5层特征图 P_5 。 w 和 h 为RoI的宽和高,224是ImageNet的标准输入。假设RoI的 w 和 h 为 112*122 ,那么 k = k_0 -1 ,即为4,选择第4层特征图。
4.3 Faster R-CNN with FPN
最后,我们可以得到有FPN的Faster R-CNN的结构图:

图8 Faster R-CNN with FPN
和普通的Faster R-CNN相同,为每个RoI提取特征之后,需要经过RoI pooling层将RoI的特征resize成相同大小的,这里是resize成7*7的,之后再连接两个1024-d的FC layer,然后再并行的输入到两个FC layer中分别进行分类和回归,便得到最终的结果。
总结
本文提出了FPN(Feature Pyramid Network)算法可以同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到很好的预测效果。此外,和其他的特征融合方式不同的是本文中的预测是在每个融合后的特征层上单独进行的。
本文都是根据个人理解编写的,希望可以帮到大家。此外,如有误,烦请指正。如果喜欢,请点赞哦,谢谢~
我将持续更新目标检测领域的经典paper,欢迎大家订阅哦! |
|