Parallel Feature Pyramid Network for Object Detection

ECCV2018

总结:

文章借鉴了SPP的思想并通过MSCA(multi-scale context aggregation)模块进行特征融合从而提出PFPNet(Parallel Feature Pyramid Network)算法来提升目标检测的效果。

1.使用spp模块通过扩大网络宽度而不是增加深度来生成金字塔形特征图

2.提出msca模块,有效地结合了大不相同规模的上下文信息

3.效果好:82.3% (Pascal VOC 2007), 80.3% (PASCAL VOC 2012), 35.2% (MS-COCO),

4.速度快:a single Titan X:24fps(512*512),33fps(320*320),

特征金字塔回顾:

作者先回顾了之前的特征融合网络。(a)上方是常见的cnn网络,下面的结构则引入了特征金字塔,基于多个特征层进行预测,类似于SSD。(b)上方是近几年流行的U-net(也称为漏斗型网络),下方的结构融合不同层的特征进行预测,就是17年提出的FPN结构图。(c)是原始的空间金字塔结构,简单讲就是卷积后的特征图经过不同size的池化操作得到不同尺度的特征图,将不同尺度的特征图做融合后进行预测。(d)是文章提出的网络结构

网络结构:

Figure3是PFPNet的整体结构图。首先对于一张输入图像,先通过一个基础网络(VGG16全连接换卷积)提取特征,假设提取到的特征通道数是D,基于提取到的特征通过SPP网络得到不同尺度的特征图(记为高维特征b),用N表示尺度数量(图中N=3),得到的特征图通道数用CH表示,CH等于D;然后通过一个通道缩减操作bottleneck将(b)中的特征图的通道缩减得到低维特征(对应c),缩减后的通道数用CL表示,公式是CL=D/(N-1),(Figure3中(c)的输出特征通道数应该是2,而不是图中显示的1);然后通过MSCA操作得到融合后的特征图d,得到的特征通道数是Cp;最后基于融合后的多个特征图进行预测(每个特征图经过简单的预测网络(3*3conv)回归预测,非极大抑制得到最终结果)。

Figure4是MSCA模块的结构示意图。MSCA主要是基于特征通道的concat操作,但是输入特征有些不同。比如Figure4在得到P1这个融合特征时,是用fH(1)、下采样(双线性差值)后的fL(0)、上采样(非重叠平均池化)后的fL(2)进行concat后得到的。为什么不是用fL(1)而是用fH(1),因为在作者看来相同尺度的特征信息要足够多,而FH部分得到的特征是未经过通道缩减的,因此在得到某一个尺度的预测层特征时,被融合的对应尺度特征都是采用FH部分的输出特征,而不是FL部分的输出特征。相比之下,不同尺度的待融合特征采用FL部分的输出特征,相当于补充信息。因此concat后的特征通道数中有(N-1)*(D/(N-1))=D个是FL的输出,有D(等于CH)个是FH的输出,相当于各占一半,这也是前面介绍的为什么FL的输出特征通道数用D/(N-1)这个公式的原因。作者尝试过将CL=2D/N,全由FL进行concat操作得到融合特征,但是参数量增多且性能下降,这部分的实验结果没有展示出来,所以对于用fH的特征做融合对效果提升有多大就不得而知了。模块中的Convs也是一个瓶颈结构(bottleneck)。总的来说MSCA模块就是一个特征融合模块,作者期望通过concat操作最大程度地保存提取到的特征信息。

损失函数:

文章有两个不同的anchor确定方式,由此有两种对应的损失函数

一种是用SSD的anchor,此时loss记为PFPNet-S:;第二种使用ARM(anchor refinement module)模块的anchor,此时loss记为PFPNet-R:

超参数的选取:

文中有两个值需要人为设置,一个是金字塔的层数N,另一个是低维特征通道数CL。(其实这里有个问题,CL=D/N这不是确定的吗?为什么还可以调整?)作者根据取值不同做了实验。训练集为VOC07+VOC12的训练集,测试集为VOC07的测试集,取IOU为0.5,训练110K代,初始学习率10-3,在80K和100K衰减10倍。可以看到最优取值N=4,CL=256。

实验结果:

Table2为不同模块对模型的影响,说明了模块的有效性。

其中,PFPNet-S512说明anchor用SSD的方式,图片大小512*512;-R说明anchor使用用ARM模块。

另外:文中有个总结说得特别好,那就是对于目标检测任务而言,真正有用的特征一定具备这3个特点:1、特征要包含目标的细节信息。2、特征要通过足够深的网络提取得到。3、特征要包含目标的语义信息。

Parallel Feature Pyramid Network for Object Detection的更多相关文章

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

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

  2. 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 ...

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

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

  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 for Object Detection

    FPN-Feature Pyramid Networks for Object Detection 标签(空格分隔): 深度学习 目标检测 这次学习的论文是FPN,是关于解决多尺度问题的一篇论文.记录 ...

  8. 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)

    Rich feature hierarchies for accurate object detection and semantic segmentation 作者: Ross Girshick J ...

  9. 论文笔记:Rich feature hierarchies for accurate object detection and semantic segmentation

    在上计算机视觉这门课的时候,老师曾经留过一个作业:识别一张 A4 纸上的手写数字.按照传统的做法,这种手写体或者验证码识别的项目,都是按照定位+分割+识别的套路.但凡上网搜一下,就能找到一堆识别的教程 ...

随机推荐

  1. 轻量级CNN模型mobilenet v1

    mobilenet v1 论文解读 论文地址:https://arxiv.org/abs/1704.04861 核心思想就是通过depthwise conv替代普通conv. 有关depthwise ...

  2. web前端面试题(含答案)

    HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所 ...

  3. [翻译]Jupyter notebook .NET Core 内核预览1

    当您想到Jupyter Notebooks时,您可能会考虑使用Python,R,Julia或Scala而不是.NET编写代码. 今天,我们很高兴宣布您可以在Jupyter Notebooks中编写.N ...

  4. [2018-06-28] 创建第一个django项目

    1.创建一个名称为tmpl的项目 django-admin.py startproject tmpl 2.进入刚刚创建的tmpl目录 cd tmpl 3.创建一个名称为learn的应用 python ...

  5. 题解 【洛谷】AT654

    题解 AT654 [役人[错题已隐藏]] 此题题面没搬过来, 会日语的dalao可以自行去ATCoder查看. 给出此题的JavaAC代码: public class Main { public st ...

  6. 详解SpringBoot应用跨域访问解决方案

    一.什么是跨域访问 说到跨域访问,必须先解释一个名词:同源策略.所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同.Host(ip)相同.端口相同的条件,否则访问将被禁止,该访 ...

  7. Python基础学习(一)之Python的概述与环境安装

    Python介绍 Python语言介绍 Python是一门高级的.面向对象的.解释性.脚本语言. 高级语言:贴近开发者,对应底层语言,底层语言贴近机器:java.C#.php .ruby 面向对象对应 ...

  8. Tornado 异步socketTCP通信

    Tornado 有 TCPClient 和 TCPServer 两个类,可用于实现 tcp 的客户端和服务端.事实上,这两个类都是对iostream的简单包装. 真正重要的是 iostream ios ...

  9. linux搭建简易网站

    1.检查环境 getenforce #查看seLinux运行状态 Enforcing #强行执行 setenforce #临时关闭selinux vim /etc/selinux/config #编辑 ...

  10. Docker学习-Docker搭建Consul集群

    1.环境准备 Linux机器三台 网络互通配置可以参考 https://www.cnblogs.com/woxpp/p/11858257.html 192.168.50.21 192.168.50.2 ...