携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第24天,点击查看活动详情
为什么要做特征融合
在深度神经网络,在比较浅层(或者说底层)特征图,这样特征图具有较高分辨率,具有丰富细节信息,以及更多的位置信息。但是同时也存在噪音,所以语义也比较低,那么对于深层神经网络来说,虽然具有较强语义信息,但是对于细节感知能力较差。这也是为什么将浅层和深层特征图进行融合。
因为透视效果,对于同一个目标,由于其距离摄像机的远近不同,而在图像上有着不同尺寸。能够检测出不同大小的目标,这是目标检测模型要面临的一个挑战。 我们一个比较朴素想法就是将图像按一定比例进行缩放后输入到网络,让模型可以见识到不同大小的目标,从而具有既能识别小目标、又能识别大目标的能力。
FPN(Feature Pyramid Net)
我们先来看一张图,这张图罗列出了用于解决检测不同比例目标的问题的一般方法,接下来就结合这张图给大家解释一下
Featurized image pyramid
如图中(a),在将图像输入网络前,先把图像 resize 成不同的尺寸,然后再对每种尺寸的图片进行预,好处是特征图可以保留丰富的语义信息,缺点时间成本太高,性能比较低,因为等同于对同一张图像进行了多次预测。具体实现例如 OverFeat
Single feature map
这种做法是利用网络最顶层特征图来做目标检测,这样做的好处是速度快,问题是最后一层的特征图的分辨率低,不容易准确检测和定位小目标,例如 YOLO、Faster R-CNN。
Pyramid feature hierarchy
从网络不同层提取不同尺度的特征,接下来在不同尺度的特征图分别进行预测,好处是在没有额外开销,利用原有主干网络不同层特征图进行不同尺度目标检测,缺点是尺度的特征语义信息不够丰富,通常认为底层的特征对于小物体检测是有帮助的,例如 SSD
Feature Pyramid Network
主要分为两个阶段分别为 Bottom-Up 和 Top-down 两个步骤,首先 Bottom-Up 在输入图像上不断地进行下采样,提取不同大小特征图。然后 Top-down 在顶层的特征图不同进行上采样后和对应尺寸特征图做融合(逐元素相加操作)。
Bottom-Up 路径
自下而上的路径(Bottom-Up pathway),这里使用 ResNet ,结构是由多个卷积模块(这里是 1 - 5 个模块)组成,每个模块中都有卷积层构成。进过一系列以卷积为主的模块不断进行下采样,会得到一系列具有不同大小的特征图。这里第 i 个卷积模块标记为 。
Top-down
在 Bottom-Up 中,将经过一些列卷积和下采样得到的不同尺度的特征图经过上采样。然后接下来要做的是,这里以 为例,将 经过了 卷积(主要是调整通道数),然后得到 M5,为了让 M5 与 C4 进行融合,需要对 M5 做上采样,将尺寸变为原有 2 倍,接下来将 C4 同样做 卷积操作,这样一来就可以 C4 和 M5 具有同样的形状,M5 和 C4 做逐点相加的操作的 M4。
RPN
接下来得到 M5、M4、M3 和 M2 分别作用 3x3 的卷积得到 P5、P4、P3 和 P2 然后就可以 RPN 候选框提取
注意这里看 P5 在 RPN 中分别经过 1x1 卷积在得到特征图上进行是前景还是背景的分类,以及对边界框进行回归,然后给出在特征图上一系列的候选框。
P5 上如何做候选框提取呢,首先会接一个 1x1 卷积来做前景和背景分类,然后用 1x1 卷积去做预测边界框的回归。然后根据分类和边界框回归结果就可以得到候选框
在 Fast R-CNN 在特征图上成功锚框(anchor)时,为了能够检测出不同尺度的目标,会生成不同尺度的锚框。不过在有了 FPN 之后,就不再需要不同尺度锚框了。
从 P2 到 P5 因为特征图尺寸在逐渐减少,也就等价于逐渐增加每个特征点是视野域,所以分别是 、、 和
然后在 FPN 在 P5 基础进行进行下采样得到得到 P6
那么然后 P6 基础再去预测,对于 P6 其视野域为 目的是检测更大的物体。
简单总计
同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果