深度学习阅读导航 | 04 FPN:基于特征金字塔网络的目标检测

举报
AI 菌 发表于 2021/08/04 22:58:54 2021/08/04
【摘要】 写在前面:大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我热爱AI、热爱分享、热爱开源! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~ 我的博客地址为:【AI 菌】的博客 我的Github项目地址是:【AI 菌】的Github 文章目录 摘要一、引言...

写在前面:大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我热爱AI、热爱分享、热爱开源! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~
我的博客地址为:【AI 菌】的博客
我的Github项目地址是:【AI 菌】的Github


2016年,何凯明大神、 Ross Girshick等人在CVPR上发表了《Feature Pyramid Networks for Object Detection》,提出了FPN的思想,为卷积神经网络检测不同尺寸大小的目标提供了新的解决思路。

想获取原文,请先关注栏目左侧公众号:

  • 回复【DL】,获取计算机视觉、深度学习经典论文合集;
  • 回复【CVPR】,获取2020年CV顶级会议最新论文合集。

摘要

特征金字塔是目标检测任务的基本组成部分,用于检测不同尺度的目标。但最近的深度学习目标检测器避免使用金字塔表示法,部分原因是它们需要大量计算和存储

在本文中,作者探索利用深层卷积网络固有的多尺度、层次结构来构建特征金字塔,它的好处是只会带来极小的额外消耗。提出了一种具有横向连接自上而下的体系结构,用于构建各种尺度的高层语义特征图。这种方法被称为Feature Pyramid Network,即特征金字塔网络

FPN作为一种通用的特征提取器,在一些应用上带来了显著的性能提升。在Faster R-CNN中使用FPN,可以在COCO上达到了最佳的单模型性能,甚至是超过了COCO 2016挑战赛的获胜者。

此外,该方法在GPU上的运行速度可以达到6FPS,是一种实用而准确的多尺度目标检测解决方案,代码将公之于众。

一、引言

检测大小不一的目标是计算机视觉中的一项基本的挑战。下图展示了处理多尺度物体检测问题的常用方法(a)(b)(c),以及本文提出的特征金字塔网(d)

在这里插入图片描述
图1中4幅图代表不同的方法,具体解释如下:

  • (a) 使用图像金字塔构建特征金字塔。每个图像尺度上的特征都是独立计算的,速度很慢
  • (b) 只使用单一尺度的特征,以加快检测的速度。
  • © 重复使用由ConvNet计算的金字塔特征层次,就好像它是特征化的图像金字塔一样。
  • (d) 本文提出的特征金字塔网络(FPN)与(b)和©一样快速,但更准确

(a) 特征化的图像金字塔

在ImageNet和COCO检测挑战赛中,最近所有排名靠前的模型都使用了特征化的图像金字塔(如图a)的多尺度测试。对图像金字塔的每一层进行特征化的主要优点是,它产生了一种多尺度特征表示,其中所有层次(包括高分辨率层级)在语义上都很强。一个极端的例子是DPM方法使用了接近10种不同尺度来取得不错的效果。

然而,对图像金字塔的每一层进行特色化都有明显的局限性。推理时间大大增加,使得这种方法在实际应用中不切实际。此外,在图像金字塔上端到端地训练深层网络,在内存方面也是不可行的。

(b)单一尺度特征
近年来,深度卷积网络的提出几乎完全替代了传统的基于手动设计特征的方法。深度神经网络本身对输入的图像具有较强的尺度鲁棒性(图1(b)),因此被广泛应用于各种物体检测系统,比如Fast RCNN、FasterR-CNN和YOLOv1,它们仅仅采用最高层的低分辨率特征图进行预测

然而,最近的ImageNet和COCO物体检测比赛结果表明,通过采用测试时多尺度的图像金字塔仍然可以提升最终的性能。这说明当前基于单层特征的检测系统还是具有一定的局限性

(c)金字塔型特征层级

然而,图像金字塔并不是计算多尺度特征表示的唯一方法。深度卷积神经网络逐层计算特征层次,对于子采样层,特征层次具有固有的多尺度、金字塔形状。这种网络内要素层次结构生成了不同空间分辨率的特征图,但由于深度不同导致了较大的语义鸿沟。高分辨率地图具有低级特征,这损害了它们对目标识别的表征能力

SSD是使用ConvNet的金字塔特征层次结构的首批尝试之一,形式如图(c)一样。理想情况下,SSD样式的金字塔将重复使用在正向传递中计算的不同层的多比例特征地图,因此是耗时间的。但是为了避免使用低层特征,SSD放弃了重用已计算的层,而是从网络的高层开始构建金字塔(例如,VGG的卷积层4_3),然后通过添加几个新层来构建金字塔。因此,它错失了重用特征层次的高分辨率图的机会。作者证明了这些对于检测小目标是很重要的。

(d)特征金字塔网路

本文的目标是自然地利用卷积网络特征层次的金字塔形状,同时创建一个在所有尺度上都具有较强语义的特征金字塔。为了实现这一目标,设计了一种结构,该结构通过自上而下的路径横向连接将低分辨率、语义强的特征与高分辨率、语义弱的特征相结合(如图1(d))。其结果是在所有级别上都具有丰富语义的特征金字塔,并且可以从单一的输入图像比例快速构建。换句话说,该方法在不牺牲性能、速度或内存的情况下可用于替换标准的特征化的图像金字塔方法

采用自顶向下和跳层连接的类似架构在最近的研究中很流行。他们的目标是制作一张高分辨率的单一高级特征图,在此基础上进行预测(图2,上图)。相反,我们的方法利用体系结构作为一个特征金字塔,其中预测(例如,目标检测)是在每个级别上独立进行的(图2 下图)。我们的模型呼应了一个特征化的图像金字塔,这在这些工作中没有被探索过。

在这里插入图片描述
图2 上图:具有跳层连接的自上而下的体系结构,其中是在最精细的级别上进行预测。下图:本文的模型具有类似的结构,但将其用特征金字塔,在所有级别独立进行预测。

本文提出一种合理利用深度卷积网络各个层次特征的方法(图1(d)),它能较好的让各个不同尺度的特征都具有较强的语义信息。该方法称为Feature Pyramid Network (FPN),它能应用于物体识别、语义分割等任务中。FPN结合Faster RCNN可以在COCO物体检测比赛中取得当前单模型的最佳性能(SOTA)。另外,通过对比实验发现,FPN能促使Faster RCNN中的RPN网络的召回率提高8个点;不仅如此,它也能使Fast RCNN的检测性能提升2.3个点(COCO)和3.8个点(VOC)。

此外,本文的金字塔结构可以用所有的尺度进行端到端的训练,并且在训练/测试时被一致地使用,这在使用图像金字塔时是不可行的。因此,FPN能够达到比所有现有最先进方法更高的精确度。此外,这种改进是在不增加测试时间的情况下实现的。我们相信这些进展将促进未来的研究和应用。

二、相关研究

2.1 手工设计的特征和早期的神经网络

SIFT特征最初是在尺度空间极值处提取的,并用于特征点匹配。HOG特征以及后来的SIFT特征都是在整个图像金字塔上密集计算的。这些HOG和SIFT金字塔已被用于图像分类、目标检测、人体姿态估计等众多工作中。快速计算特征图像金字塔也引起了人们的极大兴趣。多拉尔等人通过首先计算稀疏采样(按比例)金字塔,然后插入缺失的层级,演绎了快速金字塔计算。

2.2 深度卷积目标检测器

随着现代深度卷积网络的发展,OverFeat和R-CNN这样的目标检测器在准确度上有了显著的提高。OverFeat采用了一种类似于早期神经网络人脸检测器的策略,将ConvNet用作图像金字塔上的滑动窗口检测器。R-CNN采用了基于候选区域的策略,在使用ConvNet对每个候选框进行分类之前,每个候选框都经过了BN。SPPnet证明了这种基于区域的检测器可以更有效地应用于在单一图像尺度上提取的特征地图。最近更精确的检测方法,如Fast R-CNN和Faster R-CNN使用单一尺度的特征图计算特征,因为它在准确性和速度之间提供了很好的折衷。然而,多尺度检测的性能仍然更好,特别是对于小目标。

2.3 使用多层次的方法

最近的一些方法通过在ConvNet中使用不同的层来改进检测和分割。FCN在多个尺度上对每个类别的部分分数求和,以计算语义分割。HyperColumns使用类似的方法进行目标实例分割。其他几种方法(HyperNet、ParseNet和ION)在计算预测之前将多层的特征连接起来,这相当于对变换后的特征求和。SSD和MS-CNN在没有组合特征或分数的情况下预测特征层次的多层上的目标。最近有利用横向、跳层连接的方法,其将低级特征图关联到分辨率和语义层上,包括用于分割的U-Net和SharpMask,用于面部检测的重组网络。Ghiasi等人为FCN呈现拉普拉斯金字塔,以逐步细化分割。虽然这些方法采用金字塔形状的体系结构,但它们不同于特征图像金字塔,在所有层次上都独立地进行预测,见图2。事实上,对于图2(上图)中的金字塔体系结构,仍然需要图像金字塔来识别多个尺度上的目标。

三、 特征金字塔网络

FPN的目标是利用卷积网络本身带有的层次性语义特征,来构建特征金字塔。如下图所示,FPN包含两个部分:第一部分是自底向上的过程,第二部分是自顶向下和侧向连接的融合过程。

在这里插入图片描述

3.1 自底向上的路径

自底向上的过程和普通的CNN没有区别。现代的CNN网络一般都是按照特征图大小划分为不同的stage,每个stage之间特征图的尺度比例相差为2。

在FPN中,每个stage对应了一个特征金字塔的级别(level),并且每个stage的最后一层特征被选为对应FPN中相应级别的特征。因为每个阶段的最深层都应该有最强的特征。

以ResNet为例,选取conv2、conv3、conv4、conv5层的最后一个残差block层特征作为FPN的特征,记为{C2、C3、C4、C5}。这几个特征层的长、宽相对于原图的1/4、1/8、1/16、1/32。

3.2 自上而下的路径与横向连接

自顶向下的过程通过上采样(up-sampling)的方式将顶层的小特征图放大到上一个stage的特征图一样的大小。这样的好处是既利用了顶层较强的语义特征(利于分类),又利用了底层的高分辨率信息(利于定位)。

上采样的方法可以用最近邻差值实现。为了将高层语义特征和底层的精确定位能力结合,作者提出类似于残差网络的侧向连接结构。横向连接将上一层经过上采样后和当前层分辨率一致的特征,通过相加的方法进行融合。(这里为了修正通道数量,将当前层先经过1x1卷积操作。)

以ResNet为例,具体的,C5层先经过1x1卷积,得到M5特征。M5通过上采样,再加上C4经过1x1卷积后的特征,得到M4。这个过程再做两次,分别得到M3和M2。M层特征再经过3x3卷积,得到最终的P2、P3、P4、P5层特征。另外,和传统的图像金字塔方式一样,所有M层的通道数都设计成一样的,本文都用d=256。细节图如下所示:

在这里插入图片描述
FPN本身不是检测算法,只是一个特征提取器。它需要和其他检测算法结合才能使用。下面介绍FPN如何应用于区域选择网络(RPN)和物体检测网络(Fast RCNN)。

四、应用

作者在RPN 中采用FPN的方法来生成候选边界框,并在Fast R-CNN中采用该方法来进行目标检测。为了证明FPN的简单性和有效性,当使它们适应我们的特征金字塔时,我们对原始检测器进行了最小的修改。

4.1 FPN应用于RPN

下图Faster R-CNN网络的整体结构,共享卷积层的最后一层的特征图经过3x3卷积,得到256个channel的卷积层,再分别经过两个1x1卷积得到类别结果和边框回归结果。对于特征层上的每一个点,作者用预设了9个不同大小和尺寸的Anchors。这些框本身包含不同的尺度和不同的长宽比例。
在这里插入图片描述
FPN针对RPN的改进是将RPN应用到上面每一个P层。由于每个P层相对于原始图片具有不同的尺度信息,因此作者将原始RPN中的尺度信息分离,让每个P层只处理单一的尺度信息。具体来说,在P2、P3、P4、P5、P6这五个特征层上,每个特征层上都预设1:1、1:2、2:1三种长宽比例的候选框,所以金字塔上总共有15个不同的候选框。其中,P6是专门为了RPN网络而设计的,它由P5经过下采样得到的。

另外,上述5个RPN的参数是共享的。作者通过实验发现,RPN参数共享和不共享两种设置得到的结果几乎没有差别。这说明不同层级之间的特征有相似的语义层次。这和特征金字塔网络的原理一致。

4.2 用于Fast R-CNN的特征金字塔网络

作者将FPN的各个特征层类比为图像金字塔的各个level的特征,从而将不同尺度的RoI映射到对应的特征层上。以224大小的图片输入为例,宽高为w和h的RoI将被映射到的特征级别为k,它的计算公式如下:
在这里插入图片描述在ResNet中,k0的值为4,对应了长宽为224的框所在的层次。如果框的长宽相对于224分别除以2,那么k的值将减1,以此类推。

在Faster RCNN中,ResNet的conv4层被用来提取RoI,经过RoI Pooling后映射到14x14的大小。经过RoI Pooling后的特征再进入原来的conv5层,进而得到最终的分类和边框回归结果。在FPN中,conv5层已经被用来作为特征提取器得到P5层;因此,这里单独设计两个1024维的全连接层作为检测网络的网络头部。新的网络头部是随机初始化的,它相比于原来的conv5层更加轻量级。

五、目标检测实验

5.1 FPN对RPN网络的影响

作者做了6个实验:

  • (a) 基于conv4的RPN(原始的RPN);
  • (b) 基于conv5的RPN;
  • © FPN;
  • (d) 只用自底向上的多层特征,没有自顶向下的特征;
  • (e) 有自顶向下的特征,但是不用横向连接,只是单纯的增加特征的分辨率;
  • (f) 用了自顶向下的特征,也用了横向特征融合,但是只用最后的P2作为预测。

对比结果见下表:

在这里插入图片描述
表格字符解释:

  • A R 100 AR^{100} AR100:当每张图预设100个候选框时的平均召回率
  • A R 1 k AR^{1k} AR1k:当每张图预设1000个候选框时的平均召回率
  • A R s 1 k AR^{1k}_s ARs1k:当每张图预设1000个候选框时,小目标的平均召回率
  • A R m 1 k AR^{1k}_m ARm1k:当每张图预设1000个候选框时,中等大小目标的平均召回率
  • A R l 1 k AR^{1k}_l ARl1k:当每张图预设1000个候选框时,大目标的平均召回率

分析表格,可以知道:

  • (a)和©对比:基于特征金字塔的方式,极大的提高了各个尺度框的召回率。尤其是小物体的效果提升非常明显。
  • (a)和(d)对比:单纯的用各个层次的特征做预测,相比于只用conv4做预测,效果提升非常有限。
  • (a)和(e)对比(36.1 v.s. 34.5):单纯的放大特征图,只会带来相反的效果。
  • (a)和(f)对比(36.1 v.s. 38.4):单纯用融合度最高的特征层(P2)来做预测,提升效果也很有限。

通过以上分析,可以得出结论:自顶向下横向连接尺度分离多个层次的预测是提升RPN性能的几个关键因素。

注:尺度分离是指,采用FPN时,每个层级上只需一个尺度的Anchor即可,当然每个层级的Anchors仍然可以取不同的size。

5.2 FPN对Fast RCNN网络的影响

类似于RPN的实验,作者在Fast RCNN上也做了六个实验:(a) 基于conv4来做预测(标准的Fast RCNN);(b)基于conv5来做预测;(c)FPN;(d)只用自底向上的多层特征;(e)用自顶向下的多层特征,但是没有横向连接;(f)有自顶向下的多层特征,也有横向连接,但是只用最后一个融合后的特征层P2。结果对比如下:
在这里插入图片描述
通过分析表格可以得出以下结论:

  • (a)和©对比:基于特征金字塔的方式,在各个尺度上的表现都超过了原来的Fast RCNN。
  • (a)和(d)对比:用各个层次的特征做预测,相比于只用conv4做预测,性能下降非常明显。这是因为网络底层特征的语义信息区分度不够,对分类任务来说,这是非常影响性能的。(RPN网络没有这个问题,因为它不区分物体的类别)
  • (a)和(e)对比):单纯的放大特征图,只会带来相反的分类效果。
  • (a)和(f)对比:用融合度最高的特征层(P2)来做预测,在Fast RCNN中效果提升非常明显。

六、结论

本文提出了一种简单而有效的方法,用于在卷积神经网络中构建特征金字塔。该方法在RPN和Faster R-CNN上都显示出了显著的改进。从而为特征金字塔的研究和应用提供了一种实用的解决方案,而不需要计算图像金字塔。最后,该研究表明,尽管深度卷积网络具有很强的表征能力和对尺度变化的鲁棒性,但是使用金字塔表示来解决多尺度问题仍然是至关重要的。

文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。

原文链接:ai-wx.blog.csdn.net/article/details/109595167

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。