FPN结构详解

Feature Pyramid Networks

FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。
FPN结构详解_第1张图片
(a)为特征图像金字塔结构,要检测不同尺度目标时会将图片进行缩放,针对每个尺度的图片都依次通过进行预测。(速度慢)

(b)为单一特征图结构,将图片通过backbone得到最终特征图,在最终特征图上进行预测。(对小目标不友好)

©为金字塔特征层次结构,将图片输入backbone,在backbone正向传播过程中得到的不同的特征图上分别进行预测。(小目标容易被错分)

(d)为特征图金字塔网络,将不同特征图上的特征进行融合,在融合之后的特征图上再进行预测。FPN是一个利用深度卷积神经网络中固有的多尺度特征图,通过加入侧向连接和上采样,来以极小的附加计算量构建不同尺度的具有高级语义信息的特征金字塔的网络结构。

对于目标检测模型而言,FPN结构并不是模型中独立的一个模块,而是作为原始Backbone的附加项,融合在卷积神经网络之中。

特征图融合

在FPN中采用的不同的特征图需要选取都是2倍关系,例如最底层的特征图大小为28x28,则其上一层的特征图大小为14x14,最上层的为7x7。
FPN结构详解_第2张图片
每一个特征图都会对其采用1x1的卷积层进行处理,调整backbone上不同特征图的channel,为了融合保证channel相同。

对高层次的特征图进行2倍上采样,如对最上层7x7大小的特征图进行2倍上采样,得到14x14的特征图,从而保证与中间层特征图的尺寸大小相同

上两步处理后,最高层与中间层的特征图的shape完全相同,就可以进行add操作。

然后将融合得到的特征图再进行2倍上采样,与经过1x1卷积后的最底层特征图进行add操作。

FPN结构

以ResNet50为backbone,输入为640x640x3的图像。
ResNet网络:ResNet网络详解并使用pytorch搭建模型
FPN结构详解_第3张图片
在图中右半部分,融合得到新的特征图之后又进行了3x3卷积,这里是为了对融合之后的特征图进行进一步的融合

参考:FPN结构详解

你可能感兴趣的:(狗都不学的深度学习,python,深度学习,神经网络)