论文地址:https://arxiv.org/pdf/1406.4729.pdf

论文翻译请移步:http://www.dengfanxin.cn/?p=403

一、背景:

传统的CNN要求输入图像尺寸是固定的(因为全连接网络要求输入大小是固定的)

  • crop处理,可能不包含整个物体,还会丢失上下文信息
  • warping处理,会导致图像变形
  • 以上都会导致CNN对不同scale/size泛化能力不强
 
于是SPP做了如下改进,即将SPP层加在最后一个卷积层后面,然后再送入FC网络。 

优点

  • 不管输入尺寸为多少,SPP都能生成固定尺寸的输出,这使得CNN无需固定输入图片尺寸
  • CNN使用多尺度图片输入进行训练,增加了scale-invariance,减少了过拟合
  • SPP运用了多尺度的信息,空间信息更加丰富,使得CNN对物体的形变更加robust
  • SPP可以广泛运用在任何CNN架构上,提高performance

二、SPP对R-CNN的改进:

1、使用了SPP灵活改变网络输入尺寸

2、将整张图片一次性输入CNN提取特征,将提取出的region proposal的坐标映射到feature map上,共享了计算

改进细节:

1、SPP

  • 将feature map(假设有K个channel)划分为固定数量的bin(见上图的网格,假设bin的数目为),在每个bin里使用Max Pooling(或者AvgPooling)
  • 最终每个金字塔得到-dimension的特征向量,然后拼接起来
  • 值得注意的是,最粗粒度的金字塔级别,只是用了一个bin,这等同于Global Average Pooling

2、Mapping a Window to Feature Maps

更多映射推理细节详见:https://blog.csdn.net/ibunny/article/details/79397399

3、训练方式

单一尺寸训练
如前人的工作一样,我们首先考虑接收裁剪成224×224图像的网络。裁剪的目的是数据增强。
多尺寸训练
携带SPP的网络可以应用于任意尺寸,为了解决不同图像尺寸的训练问题,我们考虑一些预设好的尺寸。现在考虑这两个尺寸:180×180,224×224。我们使用缩放而不是裁剪,将前述的224
的区域图像变成180大小。这样,不同尺度的区域仅仅是分辨率上的不同,而不是内容和布局上的不同。
为了降低从一个网络(比如224)向另一个网络(比如180)切换的开销,我们在每个网络上训练一个完整的epoch,然后在下一个完成的epoch再切换到另一个网络(权重保留)。依此往复。实验中我们发现多尺寸训练的收敛速度和单尺寸差不多。
多尺寸训练的主要目的是在保证已经充分利用现在被较好优化的固定尺寸网络实现的同时,模拟不同的输入尺寸。除了上述两个尺度的实现,我们也在每个epoch中测试了不同的sxs输入,s是从180到224之间均匀选取的。

三、SPP-Net网络结构:

左边是训练流程,右边是测试流程,注意SPP-Net是直接用SPP池化层的输出特征作Bounding Box的回归,不像R-CNN是用Conv5的特征。

测试过程:

输入任意尺寸大小的图像,类似R-CNN,利用SS得到近2K推荐区域

通过卷积网络进行一次特征提取,得到特征图

通过ROI映射计算得到推荐区域映射到特征图的特征

输入SPP得到固定尺寸的特征

然后类似R-CNN,通过全连接层,再输入SVM得到分类概率

NMS处理

对处理后的结果,结合SPP输出特征进行边框回归

训练过程:

1、依旧是预训练好的网络,以及2K推荐区域,得到每个区域的SPP pooling层的一维特征

2、fine-tune(最大不同)

  • 只fine-tune全连接网络

    • FC6,FC7,FC8
    • FC8被换成了21-way(20个类+背景)
      • 初始化为Guassian(0, 0.01)
  • learning rate从1e-4到1e-5
    • 250K个batch使用1e-4
    • 50k个batch使用1e-5
  • 正负例平衡
    • 每个batch中25%是正例,75%为负例
  • IOU threshold
    • 正例为0.5-1
    • 负例为0.1-0.5

3、SVM

  • IOU threshold为0.3
  • 负例互相之间IOU超过70%则去除一个
  • 使用了hard negtive mining的策略来训练SVM

4、Bbox Regression

  • 使用了和R-CNN里一样的边框回归来refine坐标
  • IOU阈值为0.5

四、SPP-Net缺点

SPP-Net只解决了R-CNN卷积层计算共享的问题,但是依然存在着其他问题:

(1) 训练分为多个阶段,步骤繁琐: fine-tune+训练SVM+训练Bounding Box

(2) SPP-Net在fine-tune网络的时候固定了卷积层,只对全连接层进行微调,而对于一个新的任务,有必要对卷积层也进行fine-tune。(分类的模型提取的特征更注重高层语义,而目标检测任务除了语义信息还需要目标的位置信息)

参考资料:

https://blog.csdn.net/bryant_meng/article/details/78615353

https://www.jianshu.com/p/b2fa1df5e982

https://blog.csdn.net/ibunny/article/details/79397399

SPP Net(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)论文理解的更多相关文章

  1. SPP NET (Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)

    1. https://www.cnblogs.com/gongxijun/p/7172134.html (SPP 原理) 2.https://www.cnblogs.com/chaofn/p/9305 ...

  2. 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)

    Spatial pyramid pooling in deep convolutional networks for visual recognition 作者: Kaiming He, Xiangy ...

  3. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Kaiming He, Xiangyu Zh ...

  4. 深度学习论文翻译解析(九):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    论文标题:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 标题翻译:用于视觉识别的深度卷积神 ...

  5. SPPNet论文翻译-空间金字塔池化Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加 ...

  6. 论文阅读笔记二十五:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPPNet CVPR2014)

    论文源址:https://arxiv.org/abs/1406.4729 tensorflow相关代码:https://github.com/peace195/sppnet 摘要 深度卷积网络需要输入 ...

  7. 论文解读2——Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    背景 用ConvNet方法解决图像分类.检测问题成为热潮,但这些方法都需要先把图片resize到固定的w*h,再丢进网络里,图片经过resize可能会丢失一些信息.论文作者发明了SPP pooling ...

  8. 目标检测(二)SSPnet--Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognotion

    作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun 以前的CNNs都要求输入图像尺寸固定,这种硬性要求也许会降低识别任意尺寸图像的准确度. ...

  9. Paper Reading - Long-term Recurrent Convolutional Networks for Visual Recognition and Description ( CVPR 2015 )

    Link of the Paper: https://arxiv.org/abs/1411.4389 Main Points: A novel Recurrent Convolutional Arch ...

随机推荐

  1. chrome正受到自动测试软件的控制-----web自动化测试如何去掉这段提示

    本文为原创文章 在web自动化测试的时候,特别是在用chrome浏览器的时候经常会出现 “chrome正受到自动测试软件的控制”  这样的一句提示, 这是因为安装chrome浏览器的时候没有设置允许调 ...

  2. Twitter OA prepare: Anagram is A Palindrome

    Algorithm: Count the number of occurrence of each character. Only one character with odd occurrence ...

  3. MDX导航结构层次:《Microsoft SQL Server 2008 MDX Step by Step》学习笔记九

    <Microsoft SQL Server 2008 MDX Step by Step>学习笔记九:导航结构层次   SQL Server 2008中SQL应用系列及BI笔记系列--目录索 ...

  4. OpenStack trove原理及配置实践

    DBaaS是什么? 字面上理解数据库即是服务,简单来说就是以服务的形式为用户提供数据库服务. 在云平台上使用trove有什么优势? 简化IT操作流程,降低使用数据库使用门槛举个例子,曾经我搭建一个LA ...

  5. python 星号*使用方法

    1.乘号 2.表示倍数 def T(msg,time=1): print((msg+',,')*time) >>>T('hi',3) hi,,hi,,hi 3.单个星号* --1-- ...

  6. json-lib基础

    一.json-lib所需的jar包: json-lib.jar,commons-beanutils.jar,commons-collections.jar,commons-lang.jar,commo ...

  7. SQL锁机制和事务隔离级别

    摘自:http://www.cnblogs.com/haiyang1985/archive/2009/02/27/1399641.html 锁机制 NOLOCK和READPAST的区别. 1.     ...

  8. 微服务:Java EE的拯救者还是掘墓人?

    有人认为,微服务的大行其道是在给Java EE下达死刑判决书.也有人认为,Java EE已死的论调可笑至极.读者朋友,你们怎么看? 引言 有人说,Java确实过于臃肿,经常“小题大做”.但PHP.No ...

  9. HCNP学习笔记之IP地址、子网掩码、网关的关系

      0x00 概述 网络管理中的IP地址.子网掩码和网关是每个网管必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置. 以下我们就来深入浅出地讲解什么是子网掩码. IP地址的结构 ...

  10. django 项目中使用多数据库 multiple databases

    假如在一个django项目中使用到了不只一个数据库, 其实这在大一点的工程中很常见,比如主从库 那么会涉及到如下一些东西 1, 定义 在settings中的DATABASE中定义会使用到的数据,比如除 ...