目标检测算法之FPN

前言

前面已经讲解完了RCNN系列的三篇论文,目标检测项目也基本能够跑起来了。今天要讲的FPN也是Two Stage目标检测算法中很是值得推敲的论文,它进一步优化了Faster-RCNN,使得对小目标的检测效果更好,因此一块儿来看看吧。node

背景

Faster-RCNN选取一个特征提取网络如VGG16作backbone,而后在高层特征(如VGG16后面的conv4)接RPN和检测头进行网络。正是因为Faster-RCNN基于图像的高级特征,这就致使对小目标的检测效果不好。而CV领域经常使用的处理尺度问题的办法就是特征金字塔,将原图以不一样的比例采样,而后获得不一样分辨率的图像进行训练和测试,在多数状况下确实是有效的。可是特征金字塔的时间开销很是大,致使在工程中应用是及其困难。FPN重新的角度出发提出了一个独特的特征金字塔网络来避免图像金字塔产生的超高计算量,同时能够较好的处理目标检测中的尺度变化问题,对小目标检测更鲁棒,同时在VOC和COCO数据集上MAP值均超过了Faster-RCNN。git

简介

咱们使用下图来阐释咱们是如何处理尺度变化大的物体检测的。github

在这里插入图片描述
  • 上图(a)是处理这类问题最经常使用的方法,即特征金字塔,这种方法在传统的手动设计特征的方法中很是经常使用,例如DPM方法使用了接近10种不一样的尺度得到了不错的效果。
  • 上图(b)是在CNN提出以后出现的,由于神经网络模型对物体尺度自己有必定的鲁棒性,因此也取得了不错的性能,但最近的研究代表将特征金字塔和CNN结合仍能够提高性能,这说明基于单层特征的检测系统仍存在对尺度变化敏感的缺点。
  • 上图(c)表示除了使用图像金字塔,咱们可使用深度学习自己的多层次结构来提取多尺度特征。最多见的就是SSD算法中利用多个特征层来分别作预测。但这种方式也有一些缺点就是浅层的语义特征比较弱,在处理小物体时表现得不够好。
  • 上图(d)表示本文提出的FPN(Feature Pyramid Network ),它它能较好的让各个不一样尺度的特征都具备较强的语义信息。FPN结合Faster RCNN能够在COCO物体检测比赛中取得当前单模型的最佳性能(SOTA)。另外,经过对比实验发现,FPN能让Faster RCNN中的RPN网络的召回率提升8个点;而且它也能使Fast RCNN的检测性能提高2.3个点(COCO)和3.8个点(VOC)。

FPN结构

下图表示FPN的总体结构:咱们能够看到FPN的总体结构分为自底向上自顶向下和侧向链接的过程。接下来咱们分别解释一下这两个关键部分。算法

自底向上

这一部分就是普通的特征提取网络,特征分辨率不断缩小,容易想到这个特征提取网络能够换成任意Backbone,而且CNN网络通常都是按照特征图大小分为不一样的stage,每一个stage的特征图长宽差距为2倍。在这个自底向上的结构中,一个stage对应特征金字塔的一个level。以咱们要用的ResNet为例,选取conv二、conv三、conv四、conv5层的最后一个残差block层特征做为FPN的特征,记为{C二、C三、C四、C5},也便是FPN网络的4个级别。这几个特征层相对于原图的步长分别为四、八、1六、32。微信

自上向下和侧向链接

自上向下是特征图放大的过程,咱们通常采用上采样来实现。FPN的巧妙之处就在于从高层特征上采样既能够利用顶层的高级语义特征(有助于分类)又能够利用底层的高分辨率信息(有助于定位)。上采样可使用插值的方式实现。为了将高层语义特征和底层的精肯定位能力结合,论文提出了相似于残差结构的侧向链接。向链接将上一层通过上采样后和当前层分辨率一致的特征,经过相加的方法进行融合。同时为了保持全部级别的特征层通道数都保持一致,这里使用1*1卷积来实现。在网上看到一张图,比较好的解释了这个过程:FPN只是一个特征金字塔结构,须要配合其余目标检测算法才能使用。网络

实验

1.FPN对RPN网络的影响

以下表所示,论文作了6个实验。app

  • (a)基于conv4的RPN,原始原始的RPN。
  • (b)基于conv5的RPN。
  • (c) 完整FPN。
  • (d)只用了自底向上的多层特征,没有自顶向下的特征。
  • (e)用了自顶向下的特征,但不用侧向链接。
  • (f)用了自顶向下的特征,也用了横向特征融合,但只用最后的P2作预测。(完整的预测是使用每个level的特征 作预测)

分析表格可知,自顶向下的特征、横向链接、尺度分离、多个层次的预测是提高FPN性能的关键。为了更好的理解,放一张Faster-RCNN结合FPN的细致结构图以下,图能够在最下方的github工程找到:svg

在这里插入图片描述

2.FPN对Fast RCNN的影响

使用和实验1相同的规则对Fast RCNN作了实验,结果以下表所示。性能

在这里插入图片描述

结论

本文提出了一种简单、有效的创建特征金字塔的方式。它的使用对RPN方法和Fast/Faster RCNN方法都有极大的性能提高。另外,它的训练和测试时间和普通的Faster RCNN方法相差很小。所以,它能够做为图像特征金字塔的一种较好的替代。学习

源码

https://github.com/unsky/FPN


本文分享自微信公众号 - GiantPandaCV(BBuf233)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索