论文地址: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. iOS UI基础-1.0加法计算器

    1.打开Xcode,新建一个项目 2.Single View Application是最适合初学者的模板 3.填写该应用相关信息 4.搭建UI界面 项目创建完毕后,自动帮我们做了很多配置,也自动生成了 ...

  2. Java之构造器和构造方法的使用和意义

    我总是要把构造器和方法混淆,后来发现, 方法,实际上,是需要用于执行java代码的,而构造器, 构造器,,,是一个类的实例!!(我的理解,构造器是一个对象) 为什么呢? 类的实例,我们需要用类来创建对 ...

  3. Problem B. Full Binary Tree

    题目 链接:http://code.google.com/codejam/contest/2984486/dashboard#s=p1 googlde code jam 2014 Round1A 解题 ...

  4. 018-DNS解析过程与配置DNS服务

  5. EL—表达式

    El的数据访问操作: 1:获取变量名(四大作用域中的变量?六大作用域?) 只能从这六个区域中拿数据!!! 2:获取对象的属性值 3:获取集合元素 4:执行表达式 1:获取变量名(四大作用域中的变量) ...

  6. mysql 替换函数replace()实现mysql 替换字符串

    mysql 替换字符串的实现方法:mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,不再需要自己写函数去替换,用起来非常的方便,mysql 替换函数replace()Upd ...

  7. Linux中Postfix邮件安装Maildrop(八)

    Postfix使用maildrop投递邮件 Maildrop是本地邮件投递代理(MDA), 支持过滤(/etc/maildroprc).投递和磁盘限额(Quota)功能. Maildrop是一个使用C ...

  8. Docker与虚拟机技术

    最近docker技术在网络上非常火爆,各种技术下载中心总能看到一个以docker镜像方式下载的下载选项,而当你下载下来运行发现,这就是一个虚拟机嘛.究竟是不是呢?一起来看看. 我们先来看看传统意义上的 ...

  9. linux内核分析 第五周

    一.实验相关 1.下载老师最新的menu文件,并在其中添加上周所编写的代码,并运行 下载 添加 运行 2.gdb调试跟踪 gdb设置跟踪文件(先进入linux-3.18.6所在的文件) gdb设置断点 ...

  10. 使用CSP防止XSS攻击

    转载自阮一峰博客:http://www.ruanyifeng.com/blog/2016/09/csp.html 跨域脚本攻击 XSS 是最常见.危害最大的网页安全漏洞. 为了防止它们,要采取很多编程 ...