美文网首页
论文阅读_FPN

论文阅读_FPN

作者: xieyan0811 | 来源:发表于2020-05-11 13:15 被阅读0次

论文地址:https://arxiv.org/pdf/1612.03144.pdf
源码:https://github.com/pytorch/vision

FPN源自2017年发表在cs.CV上的论文《Feature Pyramid Networks for Object Detection》在物体识别中使用特征金字塔。

特征金字塔常用于检测不同尺寸提物体,但也需要更大的内存和算力。本文介绍利用卷积网络实现特征金字塔,分层提取多尺寸特征的方法,同时控制资源占用。其核心技术是结合从上到下和从下到上结合的构建方法,使得金字塔底层特征具有描述高层语义的能力,作者将这种方法称为特征金字塔网络Feature Pyramid Networks(FPN)。该方法与Faster R-CNN网络相结合,在目标检测领域超越了之前最好的模型效果,并以6帧每秒的运算速度,兼具实时性和准确性。

识别图中不同尺寸的物体一直是机器视觉领域的一个重要问题,比如通过训练神经网络学习了识别兔子,但是识别图中不同大小的兔子仍是一个挑战。

基于金字塔的处理方法具有缩放不变性,在金字塔每一层都可以描述同样类别的特征。如之前的DPM算法通过10级尺寸缩放达到了较好的识别效果,如下图中(a)所示。近年来,更多模型使用卷积网络CNN提取特征,CNN只需输入单尺寸的图片(不缩放),即可抽取各层特征,如下图(b)所示。特征金字塔方法比图(b)中的方法精度更高,因此,最近表现优异的模型常用对卷积网络中的多层分别提取特征构造特征金字塔,如下图(c)所示,这种方法的缺点是占用资源过多。常用方法是只在测试时提取多尺寸的特征,这又造成了训练和测试方法不一致。

实际上,CNN网络内部各个层次提取的特征也呈金字塔形状,只是在不同的层次提取的特征描述的内容不同,比如底层提取明暗边角,上层提取语义如眼睛鼻子,无法在不同层之间比较。在Single Shot Detector (SSD)任务中使用特征金字塔时,为避免使用太底层的特征,它只使用高层语义构建金字塔,这样又损失了对图中小物体的检测能力。论文的目标是构建在任何层都能描述高层语义的特征金字塔,这就需要将CNN的高层特征和低层特征结合,如图中(d)所示。

FPN模型的输入是任意大小的单张图片,输出是多个尺度的特征,FPN可以基于任何CNN网络(如VGG或ResNet),在神经网络内部修改,同时兼顾特征的描述能力、时间、算力和内存占用。

FPN在实际应用中对Faster R-CNN进行了优化,Faster R-CNN分两部分,一部分是确定备选区,后简称RPN;另一部分是检测备选区的分类和精调备选框位置,后简称Detection。FPN对两部分都进行了有效的优化,对图片中小物体识别效果更好。

模型设计

使用CNN预训练模型处理分类以外的其它问题时,一开始大家都使用全连接层的输出;后来发现直接使用最后一个卷积层能更好地表述图片特征,剥离了预训练中分类的影响;再之后,使用CNN网络的多层输出成为一个趋势,但是它们在各层分别提取特征,层之间不相关。在哪些层提取的特征更有针对性,如何使用组织多层特征,或者分别使用单层特征成为下一步的问题。

文中用ResNet作为底层卷积网络(也可使用其它底层网络),特征金字塔网络使用了从上向下,从下向上,以及侧连接的方式构建。

从下向上

从下向上传播过程就是神经网络的前向传播过程,数据从图片逐层抽象。由于CNN卷积网络层次很多,将输出尺寸一样的层作为一个Stage,从每个Stage的最后一层提取一个金字塔层特征。如ResNet中每个Block之后的输出,分别为C1,C2,C3,C4,C5,由于第一层数据太多,使用{C2, C3, C4, C5}四层构造金字塔,它们对输入图片的降采样分别是{4, 8, 16, 32},比如一张224x224的图片,在C5层输出的大小是224/32=7,该层的输出是7x7xChannel,其中Channel为通道数(可理解为提取Channel种特征)。

从下向上和测连接

自上而下的采样,通过升采样的方式,将语义表达能力更强的上层特征向下融合——与从下向上的特征结合后生成下层特征。如下图所示。

图中以两倍升采样为例,从上向下方法用上层特征乘2扩展(2x up)到底层的大小之后,再与从下向上的采样(1x1 conv:用1x1的卷积级变换通道数)合并,再通过3x3的卷积层减少混叠效应。这就结合了上下层的语义特征(在金字塔最下层的中也能找到对鼻子眼睛的描述,且越下层描述的信息越丰富)。最终用卷积层的特征{C2,C3,C4,C5}构造出了金字塔特征{P2,P3,P4,P5}。一般情况下,固定特征金字塔的输出维度(通道数)为256,即提取256种特征。

具体用法

FPN基于 CNN网络修改,使基础网络输出由单层变成大小不同的多层,它对备选框提取RPN和备选框检测Detection两部分分别进行了优化。

备选框提取RPN

之前的RPN基于最后一个卷积层的输出提取特征,文中将其改为使用金字塔的多层输出作为特征,并对多层特征使用同样Head(这里Head是对备选框的分类和回归)处理。对金字塔处理涵盖图片不同的尺寸,因此无需再对Anchor缩放,只使用了三种长宽比{1:2, 1:1, 2:1},{P2,P3,P4,P5,P6}层共15个Anchor。与基本的RPN一样,在训练过程中使用IoU大于0.7的认为阳性,小于0.3认为阴性训练模型。

区域检测Detection

区域检测针对图中的小区域进行,使用Region-of-Interest (RoI)池化提取每个小区域的特征,使用FPN用金字塔中提取的特征取代原来的单层特征。由于各层的大小不同,比如对于长宽是wxh的小区域,查看应在哪一个金字塔层提取特征,公式如下:

其中k0为224x224大小的图片对应的层。假设224x224对应的是第4层,如果小区域为244x244的一半,则在第3层提取特征。可见,图片越小对应的层越低,分辨率也越高。

对所有的层使用同样的Head(Detection的Head也用于分类和回归处理),数据先经过7x7的RoI池化,和两个1024大小的MLP处理(中间有ReLU操作)后送入Head,

实验

作者以预训练的ImageNet网络作为基础,在包括80个分类的COCO数据集上进行实验。

备选框提取RPN

下图为基于ResNet50的训练结果

可以看到基于FPN的结果比基本单层C4或C5有明显提升,CNN高层特征虽然包含更强的语义特征,但也更加粗糙,FPN在对小物体识别APs识别中效果有明显提升。

在消融实验部分,可以看到,表中(d)部分在去掉了融入从上到下的特征之后,模型效果明显变差,这是由于卷积底层很少包括语义特征;表中(e)部分去掉了从下到上的特征,整体效果尚可,但是对于小物体APs的识别明显变差,这是由于卷积顶层相对粗糙;表中(f)仅使用了P2层特征(效果最好的一层),它与使用多层的效果非常相近,也可以看到由于它的精度较高,也使用了更多的Anchor,这从测面证明,更多的Anchor并不能提高模型效果。

区域检测Detection

下表为基于ResNet50区域检测Detection的训练结果

可以看到,FPN相比前两种单层特征提取方法更好,在对APs小物体识别方面尤其显著,在消融测试中效果也与RPN类似。

下表展示了RPN和Detection是否共享参数对模型效果的影响,可以看到共享参数后效果略有提升,共享参数也能减少检测时间。

在单GPU的NVIDIA M40上,基于ResNet50训练预测速度为0.148fps,基于ResNet101的速度为0.172fps。

下表为FPN与之前模型的效果对比。

源码分析

下面代码摘自torchvision库中使用FPN的示例,示范了FPN最简单的用法(还可以加一个参数用于扩展处理)。强烈建议看一下FPN实现部分(torchvision/ops/feature_pyramid_network.py),核心代码不超过100行。

构造函数的第一个参数是输入数据的通道数,第二个参数是输出的通道数,假设从CNN网络的不同层提取到不同大小的输出,其中一层为(1, 10, 64, 64),即1张图片,包含10个通道,图片大小为64x64,该层经过FPN转换后,图片大小不变,被压缩成5个通道,即使在金字塔的不同层次,每一通道也对应同种特征。并且将高层的语义融入了低层。

相关文章

  • 论文阅读_FPN

    论文地址:https://arxiv.org/pdf/1612.03144.pdf源码:https://githu...

  • (12)FPN

    FPN(feature pyramid networks)特征金字塔网络 论文:feature pyramid n...

  • [Paper Weekly]Feature Pyramid Ne

    FPN网络 本次阅读的文章是来自FAIR的多尺度的object detection算法:FPN(feature p...

  • FPN源码

    看FPN论文之后感觉没什么思路,感觉就需要看看源码了,没调试这里的代码,只是为了学习算法的流程。github:月夜...

  • FPN

    Feature Pyramid Networks for Object Detection Introductio...

  • 语义分割网络 - FPN 结构及代码

    初识 FPN FPN 全称 Feature Pyramid Network,翻译过来就是特征金字塔网络。何为特征金...

  • 目标检测算法之FPN

    前言 前面已经讲解完了RCNN系列的三篇论文,目标检测项目也基本可以跑起来了。今天要讲的FPN也是Two Stag...

  • 3 计算机视觉-阅读笔记(3)

    3.2.4 Feature Pyramid Networkd(FPN) FPN要解决的一个痛点是:检测不同尺度的目...

  • 20190414论文研讨 FPN、Mask R-CNN

    Feature Pyramid Networks(FPN) 研究背景与摘要 Feature pyramids(特征...

  • FPN 算法

    参考链接: FPN 学习笔记[https://www.cnblogs.com/wangyong/p/8535044...

网友评论

      本文标题:论文阅读_FPN

      本文链接:https://www.haomeiwen.com/subject/ejkunhtx.html