FPN(feature pyramid networks)特征金字塔网络
论文:feature pyramid networks for object detection
论文链接:https://arxiv.org/abs/1612.03144
目前大多数的object detection算法都是只采用顶层特征做预测。低层特征图的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。为了精确定位和识别不同尺度的物体,可以利用特征金字塔对不同特征图上对目标进行检测。
常见网络对特征的利用方式主要有四种,如下
(a)图像金字塔,即将图像做成不同的尺度,然后生成对应的不同尺度的特征图。利用不同尺度的特征图去预测,这种方法增加了时间和计算成本。
(b)像SPP net,Fast RCNN,Faster RCNN等仅采用网络最后一层的特征。
(c)利用卷积生成特征层次结构,在不同层次的特征上进行预测,如像SSD(Single Shot Detector)采用这种多尺度特征融合的方式,没有上采样过程,即从网络不同层抽取不同尺度的特征做预测,这种方式不会增加额外的计算量。但是SSD算法中没有用到足够低层的特征,足够低层的特征对于检测小物体是很有帮助的。
(d)特征金字塔网络,顶层特征通过上采样和低层特征做融合,而且每层都是独立预测的。
一、SSD
多尺度目标检测是计算机视觉领域的一个基础且具挑战性的课题。在图像金字塔基础上构建的特征金字塔是传统解决思路,具有一定意义的尺度不变性。直观上看,这种特性使得模型可以检测大范围尺度的图像。
而图像金字塔并不是多尺度特征表征的唯一方式,CNN计算的时候本身就存在多级特征图,且不同层的特征图尺度就不同,形似金字塔结构。结构上虽不错,但是前后层之间由于不同深度影响,语义信息差距太大,主要是高分辨率的低层特征很难有代表性的检测能力。
但是SSD对于高分辨率的底层特征没有再利用,而这些层对于检测小目标很重要。 SSD从偏后的conv4_3开始,又往后加了几层,分别抽取每层特征,进行综合利用。
二、FPN
利用CNN的金字塔层次结构特性(具有从低到高级的语义),构建具有高级语义的特征金字塔。CNN的前馈计算就是自下而上的路径,特征图经过卷积核计算,通常是越变越小的。也有一些特征层的输出和原来大小一样,称为“相同网络阶段”。FPN为每个阶段定义一个金字塔级别, 然后选择每个阶段的最后一层的输出作为特征图的参考集。 因为每个阶段的最深层应该具有最强的特征。
那么如何去结合低层高分辨率的特征呢?
把更抽象,语义更强的高层特征图进行2倍上取样(最近邻上采样),然后把该特征横向连接至前一层特征(底下的一层做1*1的卷积,改变通道数量,然后和后面的一层做对应像素的加法),因此高层特征得到加强。横向连接的两层特征在空间尺寸上要相同。这样做应该主要是为了利用底层的定位细节信息。最后,用3 * 3的卷积核去处理已经融合的特征图(为了消除上采样的混叠效应),以生成最后需要的特征图。{C2, C3, C4, C5}层对应的融合特征层为{P2, P3, P4, P5},然后在{P2, P3, P4, P5}进行RPN操作。即一个3x3的卷积后面分两路,分别连接一个1x1的卷积用来进行分类和回归操作;将上一步获得的候选ROI进行ROI Pool操作,在上一步的基础上面连接两个1024层的全连接网络层,然后分两个支路,连接对应的分类层和回归层;
在Faster RCNN中,RPN用来提供ROI的proposal。backbone网络输出的single feature map上接了3×3大小的卷积核来实现sliding window的功能,后面接两个1×11×1的卷积分别用来做objectness的分类和bounding box基于anchor box的回归。我们把最后的classifier和regressor部分叫做head。
使用FPN时,我们在金字塔每层的输出feature map上都接上这样的head结构(3×33×3的卷积 + two sibling 1×1的卷积)。同时,我们不再使用多尺度的anchor box,而是在每个level上分别使用不同大小的anchor box。具体说,对应于特征金字塔的5个level的特征,P2 - P6,anchor box的大小分别是32^2,64^2,128^2,256^2,512^2。不过每层的anchor box仍然要照顾到不同的长宽比例,我们使用了3个不同的比例:1:2,1:1,2:11。这样,我们一共有5×3=15个anchor box。
金字塔结构中所有层级共享分类层(回归层),固定所有特征图中的维度,设置d = 256。
训练中,把重叠率(IoU)高于0.7的作为正样本,低于0.3的作为负样本。特征金字塔网络之间有参数共享,其优秀表现使得所有层级具有相似程度的语义信息。