FPN(Feature Preamid Networks)特征图金字塔网络主要解决的是物体检测中的多尺度问题,在基本不增加原有模型计算量的情况下大幅度提升小物体的检测性能。
通常一幅图像包含各种不同的物体,并且大小各异。比较理想的是一次就可以将所有大小的物体同时检测出来。因此,网络必须具备能够看到不同大小的物体的能力。并且网络越深,特征图就会越小,所以越往后小的物体也就越难检测出来。
在实际的feature map中,低层的feature map中主要包含低级的信息(物体边缘,颜色,初级位置信息等),但语义信息比较少。深层的feature map中包含语义信息比较丰富,但是目标位置信息比较粗略。
对于多重scale,目前主要有一下几种主流算法:
(1) 如图1所示,只在最后一个feature map进行检测,但这种结构无法检测不同大小的物体,在检测小物体时性能急剧下降。
图 1
(2) 由于上述单层特征检测对小物体检测性能较差,所以如图2所示利用图像的各个尺度进行训练,即将图像做成不同的scale,然后不同尺度的图像送入不同的网络中。但是这样是每个级别的金字塔都需要进行一次处理,所以速度很慢。
图 2
(3) 如图3所示,从网络不同层抽取不同尺度的特征做预测,这种方式不会增加额外的计算量。SSD即采用这种多尺度特征融合的方式,但是该方法的feature map 获得的信息仅来源于之前的层,之后的层的特征信息无法获取并加以利用。
图 3
(4) 如图4所示为FPN网络,其结构如下:一个自底向上的线路,一个自顶向下的线路,横向连接。
图 4
其中,自底向上过程就是神经网络的前向传播过程,特征图经过卷积核计算越来越下。自顶向下是对具有更多语义信息的高层特征进行上采样。横向连接通过1*1卷积改变底层特征通道数使得两层特征通道数相同,这样做可以将底层位置信息与高层语义信息相结合,提升检测精度。