FPN结构

FPN ——Feature Pyramid Networks

backbone指网络的主干结构。

在Faster R-CNN中就用到FPN结构了,FPN结构对网络的好处在于:针对目标检测任务,cocoAP(IoU从0.5~0.95的均值)提升2.3个点,pascalAP提升3.8个点。

FPN结构_第1张图片

图a是一个特征图像金字塔结构,在传统的图像处理中是非常常见的一个办法。针对我们要检测不同尺度的目标的时候呢,会将图片首先给缩放到不同的尺度(比如这里将一幅图片给缩放到四个不同的尺度),针对每个尺度的图片,依次通过算法来预测。但生成多少个尺度就要进行多少次预测,这样效率比较低。

图b是Faster R-CNN所采用的一种方式,将图片通过backbone得到最终的特征图,在最终的特征图上进行预测。在这种情况下,针对小目标的预测效果并不是很好。

图c将图片输入给backbone,会在backbone正向传播的过程当中得到的不同的特征图上分别去进行一个预测。

图d就是FPN结构,和图c进行对比,并不是简单的在backbone上的不同特征图上进行一个预测,而是将不同特征图上的特征去进行一个融合,在融合之后所得到的特征图上再进行一个预测。

FPN结构_第2张图片

特征图的选取是有要求的,这里是按照2的整数倍进行选取。比如最底层的特征图是28 X 28,那上一层的就是用14 X 14,最上面就是7 X 7,即相邻的两个特征图,它的高和宽都缩小为下面这张图的一半。

针对backbone上的每一个特征层,都会使用一个1 X 1的卷积层进行处理。1 X 1卷积层的目的在于调整backbone上不同特征层的channel(一般情况下backbone上的不同特征层的channel是不一样的,是越来越多的,但为了后面进一步融合,必须保证相同的shape)。

因为之前对相邻的两个特征图进行处理,上面图高和宽都缩小为下面这张图的一半,所以需要将上面特征图进行一个二倍的上采样(比如对最上面的特征图,7 X 7大小,经过两倍的上采样之后,变成14 X 14,刚好和中间特征层通过1 X 1之后所得到的特征图的shape是一模一样的,现在channel一样,高和宽也一样,就能进行add操作了)

FPN结构_第3张图片

假设输入图像是640 X 640的RGB3通道图像。将得到的特征图分别通过一个1 X 1的卷积层来调整他们的channel,再从C2到C5进行融合。

你可能感兴趣的:(基础理论学习,人工智能)