【目标检测】FPN(Fature Pyramid Network)详解

论文题目:《Feature Pyramid Networks for Object Detection》
论文地址:https://arxiv.org/pdf/1612.03144.pdf

概述

       这篇论文主要解决的问题是目标检测在处理多尺度变化问题时的不足,现在的很多网络都使用了利用单个高层特征(比如说Faster R-CNN利用下采样四倍的卷积层——Conv4,进行后续的物体的分类和bounding box的回归),但是这样做有一个明显的缺陷,即小物体本身具有的像素信息较少,在下采样的过程中极易被丢失。我们知道低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略,即浅层特征有助于检测物体。为了处理多尺度的问题,经典的方法是利用图像金字塔的方式进行多尺度变化增强,但这样会带来极大的计算量。所以这篇论文提出了特征金字塔的网络结构,能在增加极小的计算量的情况下,处理好物体检测中的多尺度变化问题。

1. 前言

       下图中描述了四种不同的得到一张图片多尺度特征的方法:

在这里插入图片描述
       下面对图中的每个方法给出详细介绍:

(a)Featurized image pyramid

       图像金字塔(尺度不变性):常用的是高斯金字塔(没有CNN,手工操作,很复杂),所谓的高斯金字塔就是通过高斯平滑和亚采样获得一些下采样图像,也就是第K层高斯金字塔通过平滑、亚采样操作就可以获得K+1层高斯图像,高斯金字塔包含了一系列低通滤波器,其截止频率从上一层到下一层以因子2逐渐增加,所以高斯金字塔可以跨越很大的频率范围。总之我们输入一张图片,可以获得多张不同尺度的图像,我们将这些不同尺度的图像的4个顶点连接起来,就可以构造出一个类似真实金字塔的一个图像金字塔。通过这些操作我们可以为2维图像增加一个尺寸维度(或者说是深度),这样我们就可以从中获得更多的有用信息。整个过程类似于人眼看一个目标由远及近的过程(近大远小原理)。高斯核是唯一能够正确模拟人眼观看远近状态的数学工具。

优点:
1)对每一种尺度的图像进行特征提取,能够产生多尺度的特征表示,并且所有等级的特征图都具有较强的语义信息,甚至包括一些高分辨率的特征图。

缺点:
1)推理时间大幅度增加。
2)由于内存占用巨大,用图像金字塔形式训练一个端到端的深度神经网络变得不可行。
3)如果只在测试阶段使用图像金字塔,那么就会造成一个问题:由于训练时,网络只是针对某一个特点的分辨率进行训练,推理时运用图像金字塔,可能会在训练与推理时产生“矛盾”。

(b)Single feature map

       利用单个高层特征图进行预测:例如Faster R-CNN中的RPN层以及YOLOv1、YOLOv2就是利用单个高层特征图进行物体的分类和bounding box的回归。这种方法的优点是速度快、需要内存少;缺点是仅仅利用深层网络中最后一层的特征,却忽略的其它层的特征,细节信息可以在一定程度上提升检测的精度。浅层网络关注细节信息(例如物体的边缘、角点),深层网络关注语义信息(例如房子。汽车)。我们知道,对于检测任务而言,要同时进行分类与检测,分类需要的是语义信息,而检测更多的是需要物体的物理信息,即细节信息。因此,只利用高层特征图,不利于小物体的检测以及bounding box的回归效果。

(c)Pyramidal feature hierarchy*

       金字塔型特征层级:例如SSD目标检测模型就是不同层多尺度的特征图,即从网络不同层抽取不同尺度的特征做预测,因为一幅图像中可能具有多个不同大小的目标,区分不同的目标可能需要不同的特征。这种方式不会增加额外的计算量,但是这种方法存在问题:低层特征图语义信息不够以及低层特征图的分辨率也不高,SSD为了避免使用低层特征图,放弃了重用已经计算的层,而是从网络的高层开始构建金字塔(例如,VGG网络的Conv4之后,再添加几个新的卷积层),因此,SSD错过了重用低层高分辨的特征图,即没有充分利用到低层特征图中的空间信息(这些信息对小物体的检测十分重要)。。

(d)Feature Pyramid Network

       FPN是为了解决以上三种结构的不足,即每一层不同尺度的特征图都具有较强的语义信息。这种网络结构能够在增加较少计算量的前提下融合低分辨率语义信息较强的特征图和高分辨率语义信息较弱但空间信息丰富的特征图。FPN的独特之处在于,它是以特征金字塔为基础结构,对每一层级的特征图分别进行预测。

2. FPN详细介绍

       FPN是传统CNN网络对图片信息进行表达输出的一种增强。它目的是为了改进CNN网络的特征提取方式,从而可以使最终输出的特征更好地表示出输入图片各个维度的信息。它的基本过程有三个分别为:自下至上的通路即自下至上的不同维度特征生成;自上至下的通路即自上至下的特征补充增强;CNN网络层特征与最终输出的各维度特征之间的关联表达。
       我们在下图中能看出这三个过程的细粒度表示。

在这里插入图片描述
● 自下至上的通路(Bottom-top pathway): 就是指的普通CNN特征自底至上逐层浓缩表达特征的一个过程。此过程很早即被认识到了即较底的层反映较浅层次的图片信息特征,像边缘等;较高的层则反映较深层次的图片特征像物体轮廓、乃至类别等;
● 自上至下的通路(Top-bottome pathway): 上层的特征输出一般其feature map size比较小,但却能表示更大维度(同时也是更加high level)的图片信息。此类high level信息经实验证明能够对后续的目标检测、物体分类等任务发挥关键作用。因此我们在处理每一层信息时会参考上一层的high level信息做为其输入(这里只是在将上层feature map等比例放大后再与本层的feature maps做element wise相加);
● CNN层特征与每一级别输出之间的表达关联: 在这里作者实验表明使用1x1的Conv即可生成较好的输出特征,它可有效地降低中间层次的channels 数目。最终这些1x1的Convs使得我们输出不同维度的各个feature maps有着相同的channels数目(本文用到的Resnet-101主干网络中,各个层次特征的最终输出channels数目为256)。

3. FPN应用与RPN层

在这里插入图片描述
       Faster RCNN中的RPN是通过最后一层的特征来做的。最后一层的特征经过3x3卷积,得到256个channel的卷积层,再分别经过两个1x1卷积得到类别得分和边框回归结果。这里将特征层之后的RPN子网络称之为网络头部(network head)。对于特征层上的每一个点,作者用anchor的方式预设了9个框。这些框本身包含不同的尺度和不同的长款比例。
       FPN针对RPN的改进是将网络头部应用到每一个P层。由于每个P层相对于原始图片具有不同的尺度信息,因此作者将原始RPN中的尺度信息分离,让每个P层只处理单一的尺度信息。具体的,对{322、642、1282、2562、512^2}这五种尺度的anchor,分别对应到{P2、P3、P4、P5、P6}这五个特征层上。每个特征层都处理1:1、1:2、2:1三种长宽比例的候选框。P6是专门为了RPN网络而设计的,用来处理512大小的候选框。它由P5经过下采样得到。
       另外,上述5个网络头部的参数是共享的。作者通过实验发现,网络头部参数共享和不共享两种设置得到的结果几乎没有差别。这说明不同层级之间的特征有相似的语义层次。这和特征金字塔网络的原理一致。

4.总结

       FPN(Feature Pyramid Network)同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的,这和常规的特征融合方式不同。
       同时,FPN的应用并不局限于目标检测领域,它给出了一种很好的特征融合的思想,因此在计算机视觉其他领域也可以得到很好的应用。
       细心一点不难发现,FPN的结构和语义分割网络U-Net极为相似,相比于U-Net,FPN只是多了几个低分辨率特征图的输出,同时FPN特征融合采用的是element-wise相加,而U-Net只需要最终输出的高分辨率特征图,特征融合采用的是concatenate。

猜你喜欢

转载自blog.csdn.net/Roaddd/article/details/114381858