论文阅读笔记三十三:Feature Pyramid Networks for Object Detection(FPN CVPR 2017)
论文源址:https://arxiv.org/abs/1612.03144
代码:https://github.com/jwyang/fpn.pytorch
摘要
特征金字塔是用于不同尺寸目标检测中的基本组件。但由于金字塔表征的特征需要消耗较多的内存及计算资源,因此,深度学习尽量避免使用金字塔特征。本文利用深度卷积网络中自带的多尺寸信息构建特征金字塔。本文搭建了具有横向连接的自上而下的结构FPN,从而在所有尺寸上构建高层次的语义特征。本文在Faster R-CNN的基础结构上增加了FPN结构,并在COCO数据集上取得了很好的结果。
介绍
计算机视觉中尺寸的多样性是一项研究热点,基于图像金字塔构建的特征金字塔作为一种基本解决方法。如下图1,基于图像金字塔搭建特征金金字塔。金字塔具有尺度不变性,实际中图片的尺寸发生变化,可以通过在不同层之间进行移动,来抵消尺寸大小上的变化。因此,模型可以通过扫描金字塔中的每个位置来最大范围的尺寸检测不同尺寸的目标。
特征图像金字塔广泛应用于手工特征设计。对像DPM需要靠密集尺寸采样的检测器产生好的结果发挥着重要的作用。针对分类任务来说,卷积网络提取的特征代替手工设计的特征。卷积网络可以表述更高层次的语义信息。对不同尺寸具有鲁棒性,便于在单个尺寸输入计算得到的特征进行识别操作。如下图b。但目前效果较好的目标检测网络都采用多尺寸的信息进行测试。
从图像金字塔中每层提取的特征主要优势在于多尺寸表示。其中包含较强语义信息和较高分的辨率。然而,对图像金字塔每层特征提取需要消耗大量的计算资源,同时,对网络进行训练需要占用大量的内存资源。因此,图像金字塔多用于测试阶段,无法将训练/测试联系起来。因此,Faster R-CNN选择不适用特征图像金字塔。
图像金字塔并不是计算多尺寸特征的唯一方法。深度卷积网络逐层计算得到feature map。在网络层中内涵多尺寸信息,内部网络产生不同分辨率的feature maps。但层与层之间的语义信息会发生断裂。高分辨率的feature map但包含的却是低层次的信息,十分不利于目标的识别。
如上图c所示,SSD首次在卷积网络中金字塔特征层及上进行尝试,类似于特征图像金字塔。由于,SSD会重复利用前向传播过程中得到的多尺寸的feature map,因此,不会消耗太多的计算资源。SSD为了避免低层次的特征,直接在网络的较深层进行金字塔的搭建(比如在VGG 网络中的conv4-3层)并添加几层网络。从而无法得到较前层高分辨率的信息,不利于小目标的检测。
本文目标:利用卷积网络特征层级的金字塔外形,建立一个在所有尺寸大小上都具有较强语义信息的特征金字塔。本文,将分辨率较低,语义信息较强的feature map与分辨率较高,语义信息较弱的feature map通过自上而下的路径及连接结构进行结合。如上图d,结果是得到了一个特征金字塔,每一层都含有较强的语义信息,而且可以从单一尺寸进行快速搭建。本文展示了如何在不占用计算及内存的条件下来建立特征金字塔。
自顶而下带有跳跃连接的结构比较流行。这些网络的目标是得到单一的具有合适分辨率的高层次特征的feature map用于预测。如下图上面,而本文利用特征金字塔结构并在每一层进行预测。FPN编码得到了一个特征图像金字塔。
该文在不同的检测及分割结构上进行实验,在COCO数据集上取得了较好的结果。基于bounding box proposals,AR(average recall)提高了8.0个点,对于目标检测,COCO类型的AP提高了2.3个点,PASCAL提高了3.8个点。超过了基于ResNet的单尺寸Faster R-CNN。另外,FPN可以进行端到端的训练及测试。
特征金字塔网络
本文利用卷积网络中的金字塔特征层,特征层具有由低至高的语义信息。同时建立一个具有高层次语义信息的特征金字塔。得到的FPN是通用的,本文致力于滑动窗及区域候选框方法的检测器(像Fast R-CNN)。
本文网络输入任意单一尺寸,同时按每层比例大小以全卷积的方式输出相应的feature maps。此过程与作为backbone部分的卷积是独立的。本文的backbone为Resnet,FPN结构包括自顶向底,自底向顶及横向连接结构。
Bottom-up pathway
bottom-up是backbone卷积网络前向过程的计算。 计算不同尺寸大小的feature map得到一个特征层级。将包含相同尺寸大小的层叫做stage,FPN对每一个stage顶一个一个特征金字塔的一层。选择每个stage最后一层(每个stage最后一层的特征最强)的输出作为feature map的参考设置,并用于接下来金字塔的建立。
对于ResNets,使用每个stage最后一个残差模块激活值的输出。将其中的conv2,conv3,conv4,conv5的输出表示为,stride分别为{4,8,16,32}。由于conv1占用大量的内存,因此,金字塔中未包含conv1。
Top-down pathway and lateral connections
自顶向底的路径通过粗略的上采样可以获得更高分辨率的feature map,同时,由于来自金字塔的较高层次,具有更强的语义信息。特征通过横向连接与自底向上的特征进行增强。每个横向连接,将相同的自底向顶与自顶向底两个路径中相同尺寸的feature map进行融合。自底向顶的feature map带有低层次的语义信息。但细节信息更多。部分结构如下。
将粗分辨率的feature map上采样两倍(基于最近邻算法),上采样得到的feature map与自底向上对应的feature map及逆行相加。(通过1x1的卷积来降维)。此过程一直迭代进行,知道生成合适分辨率的feature map。
由于特征图像金字塔中的所有层都共享分类器和回归器。本文将所有feature map的通道数进行固定。设置为256因此,所有额外的卷积层都只有256个通道,而网络中没有非线性处理过程。
应用
本文主要将FPN应用到RPN用于region proposal的生成,及Fast R-CNN用于目标检测。
FPN for RPN
RPN为一个基于滑动窗的类无关的目标检测器。在原始RPN网络中,通过一个3x3的滑动窗进行密集的预测。在单尺寸大小的卷积feature map的输出端进行有类别/无类别的二分及边界框的回归。通过添加一个3x3的卷积层及一对1x1的卷积实现分类和回归。并将此部分作为网络的头部。目标/非目标的标准及边界框的回归目标由一系列anchor生成的参考框。锚框具有不同大小及尺寸从而可以覆盖不同形状的目标。
将RPN中的单一的feature map替换为FPN.相类似的,将金字塔中的每一层都添加一个head(3x3的卷积及一对1x1的卷积用于分类和回归)。由于head在金字塔所有层的每个位置上都进行密集的滑动。因此,不需要在特定层上添加一个多尺寸的anchor。与之相反,本文在金字塔的每层都添加一个固定尺寸的anchor。分别在层上设计anchor的大小为。同时,在每一层中仍使用多种缩放尺度。,因此整个特征金字塔包含15个anchors.
本文基于IOU进行训练标签的生成。一般anchor被标为正样本的情况为:(1)对于一个给定的ground truth有最高的IOU(2)与任意ground trth 的IOU超过0.7。
anchor被标记为负样本的情况:与所有ground truth box的IOU低于0.3。
值得注意的是ground truth box的尺寸并未直接对应金字塔对应的层级,而是与anchor进行匹配,而anchor已经对应金字塔中的层次。同时,FPN中head中的参数共享于金字塔的各个层。本文实验发现参数的共享和非共享对准确率无太大影响,同时金字塔的所有层都具有相似的语义信息。head公共分类器可以应用于任意尺寸图像的特征计算。
Feature Pyramid Networks for FastR-CNN
Fast R-CNN是基于区域的目标的特征检测器。RoI pooling 用于特征提取。Fast R-CNN是执行的大部分是单尺寸的操作。为了将RPN应用至Fast R-CNN,将不同尺寸的RoI应用至金字塔的各个层。将特征金字塔看作是有图像金字塔生成而来,因此,当执行图像金字塔时,可以调整基于区域的检测器。将一个wxh大小的RoI放入金字塔的Pk层中。
224为ImageNet预训练图片的尺寸。k0是大小224x224的ROI应该所在的层级。类似于基于ResNet的Faster R-CNN使用C4作为单尺寸特征图,将k0设置为0.4.直觉上,上式表示如果Roi的尺寸变小,则会调整其进入金字塔中的对应层级中。将预测head附加到所有层的RoI中。而这些heads的参数是共享的,与层数无关。正常情况下,ResNet中的conv5作为conv4的head,而本文中conv5已经基于conv5构建了特征金字塔。因此,本文只是应用RoIpooling提取7x7的特征,后接两层1024维的全连接层,每一层后接ReLU。最后是分类和回归层。所有层随机初始化。
实验部分
Reference
[1] E. H. Adelson, C. H. Anderson, J. R. Bergen, P. J. Burt, and J. M. Ogden. Pyramid methods in image processing. RCA engineer, 1984.
[2] S. Bell, C. L. Zitnick, K. Bala, and R. Girshick. Insideoutside net: Detecting objects in context with skip pooling and recurrent neural networks. In CVPR, 2016.
[3] Z. Cai, Q. Fan, R. S. Feris, and N. Vasconcelos. A unified multi-scaledeepconvolutionalneuralnetworkforfastobject detection. In ECCV, 2016.
[4] J. Dai, K. He, Y. Li, S. Ren, and J. Sun. Instance-sensitive fully convolutional networks. In ECCV, 2016. [5] N.DalalandB.Triggs. Histogramsoforientedgradientsfor human detection. In CVPR, 2005. [6] P. Doll´ar, R. Appel, S. Belongie, and P. Perona. Fast feature pyramids for object detection. TPAMI, 2014.
论文阅读笔记三十三:Feature Pyramid Networks for Object Detection(FPN CVPR 2017)的更多相关文章
- 【Network Architecture】Feature Pyramid Networks for Object Detection(FPN)论文解析(转)
目录 0. 前言 1. 博客一 2.. 博客二 0. 前言 这篇论文提出了一种新的特征融合方式来解决多尺度问题, 感觉挺有创新性的, 如果需要与其他网络进行拼接,还是需要再回到原文看一下细节.这里 ...
- 论文阅读笔记六十三:DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling(CVPR2017)
论文原址:https://arxiv.org/abs/1703.10295 github:https://github.com/lachlants/denet 摘要 本文重新定义了目标检测,将其定义为 ...
- 『计算机视觉』FPN:feature pyramid networks for object detection
对用卷积神经网络进行目标检测方法的一种改进,通过提取多尺度的特征信息进行融合,进而提高目标检测的精度,特别是在小物体检测上的精度.FPN是ResNet或DenseNet等通用特征提取网络的附加组件,可 ...
- Feature Pyramid Networks for Object Detection
Feature Pyramid Networks for Object Detection 特征金字塔网络用于目标检测 论文地址:https://arxiv.org/pdf/1612.03144.pd ...
- 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 ...
- 论文阅读 | FPN:Feature Pyramid Networks for Object Detection
论文地址:https://arxiv.org/pdf/1612.03144v2.pdf 代码地址:https://github.com/unsky/FPN 概述 FPN是FAIR发表在CVPR 201 ...
- 【CV论文阅读】:Rich feature hierarchies for accurate object detection and semantic segmentation
R-CNN总结 不总结就没有积累 R-CNN的全称是 Regions with CNN features.它的主要基础是经典的AlexNet,使用AlexNet来提取每个region特征,而不再是传统 ...
- 论文阅读笔记五十七:FCOS: Fully Convolutional One-Stage Object Detection(CVPR2019)
论文原址:https://arxiv.org/abs/1904.01355 github: tinyurl.com/FCOSv1 摘要 本文提出了一个基于全卷积的单阶段检测网络,类似于语义分割,针对每 ...
- 论文阅读笔记三十七:Grid R-CNN(CVPR2018)
论文源址:https://arxiv.org/abs/1811.12030 开源代码:未公开 摘要 本文提出了目标检测网络Grid R-CNN,其基于网格定位机制实现准确的目标检测.传统方法主要基于回 ...
随机推荐
- IMX6开发板学习烧写Linux-QT系统步骤做个笔记
平台:迅为-i.MX6开发板 烧写系统:Linux-QT <ignore_js_op> Qt系统的烧写,是使用 MfgTool2 工具,只需要简单的配置下. 打开 “Mfgt ...
- Eclipse安装教程 ——史上最详细安装Java &Python教程说明
参考链接:https://blog.csdn.net/zichen_ziqi/article/details/73995755
- 20165234 2017-2018-2《Java程序设计》课程总结
2017-2018-2<Java程序设计>课程总结 一.作业链接汇总 每周作业链接 预备作业一:我期望的师生关系 预备作业二:学习基础和C语言基础调查 预备作业三:Linux安装及学习 第 ...
- WebBrowser控件的NavigateToString()方法 参数 为中文时乱码问题的解决。
public static string ConvertExtendedASCII(string HTML) { StringBuilder str = new StringBuilder(); ch ...
- Matlab 读取 ROS bag 文件指定消息数据
近期在接触Ros的时候遇到了一些问题,如何将rosbag中的信息提取出来进行进一步处理呢? 如三维点位置信息,视频信息(如果有的话)等等. 我采用的是MATLAB 读取bag信息 filepath=f ...
- centos7.4_x86_64安装grafana5.2.1并安装常用zabbix插件
获取并安装grafana5.2.1# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.1-1. ...
- OpenStack实践系列⑤网络服务Neutron
OpenStack实践系列⑤网络服务Neutron 3.8 Neturn 服务部署 注册neutron服务 [root@node1 ~]# source admin-openrc.sh [root@n ...
- Spring动态数据源实现读写分离
一.创建基于ThreadLocal的动态数据源容器,保证数据源的线程安全性 package com.bounter.mybatis.extension; /** * 基于ThreadLocal实现的动 ...
- spring中BeanFactory和FactoryBean的区别
共同点: 都是接口 区别: BeanFactory 以Factory结尾,表示它是一个工厂类,用于管理Bean的一个工厂 在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器 ...
- Windows上的程序员神器Cmder
用过Windows版本Git的都知道Git自带了Git Bash,这个在很大程度上满足了我的需求,随着Git的版本升级越来越好用 安装Cmder Cmder官网,它把conemu,msysgit和cl ...