FPN-Feature Pyramid Networks for Object Detection

时间:2022-09-01 14:53:01

FPN-Feature Pyramid Networks for Object Detection

标签(空格分隔): 深度学习 目标检测


这次学习的论文是FPN,是关于解决多尺度问题的一篇论文。记录下论文笔记,欢迎交流。转载请注明网址:http://www.cnblogs.com/alanma/p/6884121.html

动机
特征金字塔是多尺度目标检测系统的一个基本组成部分。但是,在最近的深度学习目标检测上,考虑到特征金字塔花费的计算和存储代价,都选择避免使用特征金字塔。问题的关键是寻找特征金字塔对多尺度问题带来的准确率和代价的trade-off,这也就是这篇文章的研究目的。

整体思想
因为深度卷积神经网络具有内在的多尺度性质(池化带来的不同size的feature map),网络由浅即深,分辨率越来越粗糙,但是语义信息越来越丰富。相似的思想利用在FCN的skip layer。要识别多尺度的目标,也需要利用不同level的feature map。作者利用了这种内在多尺度性质,设计出FPN。结构如下图:
FPN-Feature Pyramid Networks for Object Detection
FPN-Feature Pyramid Networks for Object Detection
到这,应该已经了解了FPN基本思想,就是想利用不同level的feature map预测不同尺度的目标。尺寸小的物体因不断的池化会在较深的层消失,所以利用浅层检测小目标,但是浅层不如深层具备丰富的语义特征,所以还需要浅层融合深层的特征。
总结来说,FPN = top-down的融合(skip layer) + 在金字塔各层进行prediction。


这部分比较FPN和其他多尺度方法,说明为什么FPN代价较小

下面是对比图:
FPN-Feature Pyramid Networks for Object Detection
图(a)是相当常见的一种多尺度方法,称为featurized image pyramid,这种方法在较早的人工设计特征(DPM)时被广泛使用,在CNN中也有人使用过。就是对input iamge进行multi scale,通过设置不同的缩放比例实现。这种可以解决多尺度,但是相当于训练了多个模型(假设要求输入大小固定),即便允许输入大小不固定,但是也增加了存储不同scale图像的内存空间。

图(b)就是CNN了,cnn相比人工设计特征,能够自己学习到更高级的语义特征,同时CNN对尺度变化鲁棒,因此如图,从单个尺度的输入计算的特征也能用来识别,但是遇到明显的多尺度目标检测时,还是需要金字塔结构来进一步提升准确率。
从现在在imageNet和COCO数据集上领先的的一些方法来看,在测试的时候都用到了featurized image pyramid方法,即结合(a),(b)。 说明了特征化图像金字塔的每一级的好处在于,产生了多尺度的特征表示,每一级的特征都有很强的语义(因为都用cnn生成的特征),包括高分辨率的一级(最大尺度的输入图像)。
但是这种模式有明显的弊端,相比于原来方法,时间增长了4倍,很难在实时应用中使用,同样,也增大了存储代价,这就是为什么只是在测试阶段使用image pyramid。但是如果只在测试阶段使用,那么训练和测试在推断的时候会不一致。所以,最近的一些方法干脆舍弃了image pyramid。

但是image pyramid不是计算多尺度特征表示的唯一方法。deepCNN能够层次化的特征,而且因为池化的作用,会产生金字塔形的特征,具有一种内在的多尺度。但是问题在于,高分辨率的map(浅层)具有low-level的特征,所以浅层的目标识别性能较弱。这也是不同level融合的目的。
如图(c),SSD较早尝试了使用CNN金字塔形的层级特征。理想情况下,SSD风格的金字塔 重利用了前向过程计算出的来自多层的多尺度特征图,因此这种形式是不消耗额外的资源的。但是SSD为了避免使用low-level的特征,放弃了浅层的feature map,而是从conv4_3开始建立金字塔,而且加入了一些新的层。因此SSD放弃了重利用更高分辨率的feature map,但是这些feature map对检测小目标非常重要。这就是SSD与FPN的区别

图(4)是FPN的结构,FPN是为了自然地利用CNN层级特征的金字塔形式,同时生成在所有尺度上都具有强语义信息的特征金字塔。所以FPN的结构设计了top-down结构和横向连接,以此融合具有高分辨率的浅层layer和具有丰富语义信息的深层layer。这样就实现了从单尺度的单张输入图像,快速构建在所有尺度上都具有强语义信息的特征金字塔,同时不产生明显的代价。

FPN与FCN的区别:
FPN在金字塔的所有层都进行prediction。FCN同样进行了融合,但是最后是在单个层进行的prediction。

精度和速度:FPN作为一个通用的特征提取器,可以放入到其他网络中,实验展示了FPN带来的明显提升。FPN+faster r-cnn在coco数据集检测任务中碾压了所有现有的单模型方法。同时FPN+faster r-cnn的检测速度为5fps,因此也是一种可以实用的方法。

代码:作者还没放出...


FPN在RPN和fast rcnn上的使用

  • 任意尺度的输入(全卷积)。输出是多层,成比例的(池化步长)的feature map。主体网络结构可任意,如ResNet
  • Bottom-up
    排除conv1(考虑到内存),产生相同大小feature map尺寸的layer算做一个stage,其实就是以pool层为界。那特征金字塔的层的尺寸步长就是pool步长2。取每个stage的最后一层feature map作为特征金字塔的层,因为越深的层的特征语义信息越好。
  • top-dowm和横向连接
    就是执行融合过程。首先上层上采样2倍(最近邻上采样),浅层进行1x1的卷积保证两层的维度相同,最后进行相加进行融合,得到更具有语义信息的浅层。最后,特征金子塔的每一级都进行3x3的卷积,免除上采样产生的混叠效应。
  • 最后,所有的特征金字塔的层都要确保通道数一致(d =256),因为它们最后在进行预测的时候,要共享最后的分类器(在RPN和fast rcnn中,共享了box的分类器和box的回归器)。
  • RPN:因为特征金字塔的不同层已经代表着不同的尺度,所以在产生anchor的时候,在特定层只考虑不同的形状比,而不考虑不同的scale。然后特征金字塔的所有层共享box分类器和回归器。
  • Fast rcnn: fast rcnn就是一个基于区域的目标检测器。以往它的输入是单尺度的。现在考虑FPN多尺度。因为我们可以将CNN的特征金字塔看成是来自于image pyramid.这个不难理解,因为CNN的每层对应不同大小的感受野。那么多尺度需要将不同大小的roi,对应到特征金字塔的不同的层(因为我们要将CNN的特征金字塔看成是来自于image pyramid.)。论文给出了计算公式:
    FPN-Feature Pyramid Networks for Object Detection
    根据公式很容易理解,文章把224224大小的ROI对应到ResNet faster rcnn的C4, 如果有一个roi大小是224224的1/4,也就是更小的目标,应该对应到比C4更浅的层去。再根据池化的步长,很容易推测出对应到C3,那么检测112*112大小的roi,就到C3层检测。
    同RPN一样,后面也共用box分类器和box回归器。

FPN-Feature Pyramid Networks for Object Detection的更多相关文章

  1. Feature Pyramid Networks for Object Detection比较FPN、UNet、Conv-Deconv

    https://vitalab.github.io/deep-learning/2017/04/04/feature-pyramid-network.html Feature Pyramid Netw ...

  2. 『计算机视觉』FPN:feature pyramid networks for object detection

    对用卷积神经网络进行目标检测方法的一种改进,通过提取多尺度的特征信息进行融合,进而提高目标检测的精度,特别是在小物体检测上的精度.FPN是ResNet或DenseNet等通用特征提取网络的附加组件,可 ...

  3. 【Network Architecture】Feature Pyramid Networks for Object Detection(FPN)论文解析(转)

    目录 0. 前言 1. 博客一 2.. 博客二 0. 前言   这篇论文提出了一种新的特征融合方式来解决多尺度问题, 感觉挺有创新性的, 如果需要与其他网络进行拼接,还是需要再回到原文看一下细节.这里 ...

  4. Feature Pyramid Networks for Object Detection

    Feature Pyramid Networks for Object Detection 特征金字塔网络用于目标检测 论文地址:https://arxiv.org/pdf/1612.03144.pd ...

  5. 论文阅读笔记三十三:Feature Pyramid Networks for Object Detection(FPN CVPR 2017)

    论文源址:https://arxiv.org/abs/1612.03144 代码:https://github.com/jwyang/fpn.pytorch 摘要 特征金字塔是用于不同尺寸目标检测中的 ...

  6. 论文阅读 | FPN:Feature Pyramid Networks for Object Detection

    论文地址:https://arxiv.org/pdf/1612.03144v2.pdf 代码地址:https://github.com/unsky/FPN 概述 FPN是FAIR发表在CVPR 201 ...

  7. FPN(feature pyramid networks)

    多尺度的object detection算法:FPN(feature pyramid networks). 原来多数的object detection算法都是只采用顶层特征做预测,但我们知道低层的特征 ...

  8. Parallel Feature Pyramid Network for Object Detection

    Parallel Feature Pyramid Network for Object Detection ECCV2018 总结: 文章借鉴了SPP的思想并通过MSCA(multi-scale co ...

  9. Paper Reading: Relation Networks for Object Detection

    Relation Networks for Object Detection笔记  写在前面:关于这篇论文的背景知识,请参考我前面的两篇随笔(<关于目标检测>和<关于注意力机制&gt ...

随机推荐

  1. 2&period;设计包含 min 函数的栈&lbrack;StackWithMinValue&rsqb;

    [题目]: 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素.要求函数min.push以及pop的时间复杂度都是O(1). [解法一]: 使用一个辅助栈来保存最小元素,其栈顶元素为当前栈 ...

  2. Web 在线文件管理器学习笔记与总结(13)重命名文件夹(14)复制文件夹

    (13)重命名文件夹 ① 重命名文件夹通过 rename($oldname,$newname) 实现 ② 检测文件夹名是否符合规范 ③ 检测当前目录中是否存在同名文件夹名称,如果不存在则重命名成功 i ...

  3. discuz pc端显示触摸版

    1./source/function/function_core.php function checkmobile() {return true; //此为加上的内容global $_G; ..... ...

  4. java应用uploadify 3&period;2丢失session

    java应用uploadify 3.2丢失session http://c-bai.iteye.com/blog/1829269 uploadify上传用的是一个flash插件. flash中有个bu ...

  5. tableView的基本使用(改良版)

    @interface ViewController ()<UITableViewDataSource, UITableViewDelegate> { int i;//用来计算接受通知的次数 ...

  6. Firefly是什么?有什么特点?

    原地址:http://bbs.gameres.com/forum.php?mod=viewthread&tid=219285 Firefly是免费.开源.稳定.快速扩展.能 “热更新”的分布式 ...

  7. 认识StringBuffer类

    概述: StringBuffer类是线程安全的可变字符序列 线程安全效率低 StringBuffer和String的区别 * String是一个不可变的字符序列 * StringBuffer是一个可变 ...

  8. laravel带参数分页

    <!---分页--> <div id="pagination-box"> {{ $list->appends(['mobile'=>$mobil ...

  9. &lbrack;CC-MINXOR&rsqb;XOR Minimization

    [CC-MINXOR]XOR Minimization 题目大意: 有一个长度为\(n\)的数列\(A_{1\sim n}\).\(q\)次操作,操作包含以下两种: 询问\(A_{l\sim r}\) ...

  10. 如何查出sqlserver 性能瓶颈

    转载地址:https://www.cnblogs.com/yanwenbink05/p/4047374.html