zoukankan      html  css  js  c++  java
  • SPP(Spatial Pyramid Pooling)层

     参考:https://www.cnblogs.com/zongfa/p/9076311.html

    Introduction

    在一般的CNN结构中,在卷积层后面通常连接着全连接。而全连接层的特征数是固定的,所以在网络输入的时候,会固定输入的大小(fixed-size)。但在现实中,我们的输入的图像尺寸总是不能满足输入时要求的大小。然而通常的手法就是裁剪(crop)和拉伸(warp)。

    这样做总是不好的:图像的纵横比(ratio aspect) 和 输入图像的尺寸是被改变的。这样就会扭曲原始的图像。而Kaiming He在这里提出了一个SPP(Spatial Pyramid Pooling)层能很好的解决这样的问题, 但SPP通常连接在最后一层卷基层。

    (上面的方法是截取或者拉升得到相同的物体尺寸;下面的方法是在不同尺寸的图片输入之后,经过conv layer层之后肯定尺寸也是不同的,再通过SPP层将它们固定到相同的尺寸,然后再进入接下来的步骤)

    SPP 显著特点

    1) 不管输入尺寸是怎样,SPP 可以产生固定大小的输出 
    2) 使用多个窗口(pooling window) 
    3) SPP 可以使用同一图像不同尺寸(scale)作为输入, 得到同样长度的池化特征。

    其它特点

    1) 由于对输入图像的不同纵横比和不同尺寸,SPP同样可以处理,所以提高了图像的尺度不变(scale-invariance)和降低了过拟合(over-fitting) 
    2) 实验表明训练图像尺寸的多样性比单一尺寸的训练图像更容易使得网络收敛(convergence) 
    3) SPP 对于特定的CNN网络设计和结构是独立的。(也就是说,只要把SPP放在最后一层卷积层后面,对网络的结构是没有影响的, 它只是替换了原来的pooling层) 
    4) 不仅可以用于图像分类而且可以用来目标检测

    SPP分类

    作者在分类的时候得到如下几个结果 
    1) 多窗口的pooling会提高实验的准确率 
    2) 输入同一图像的不同尺寸,会提高实验准确率(从尺度空间来看,提高了尺度不变性(scale invariance)) 
    3) 用了多View(multi-view)来测试,也提高了测试结果 
    4)图像输入的尺寸对实验的结果是有影响的(因为目标特征区域有大有有小) 
    5)因为我们替代的是网络的Poooling层,对整个网络结构没有影响,所以可以使得整个网络可以正常训练。

    SPP-net目标检测

    是基于RCNN而改进的,所使用的网络结构也称为:SPP-net,现在有比其更快的Fast-RCNN, 和Faster-RCNN。

  • 相关阅读:
    Can we call an undeclared function in C++?
    Template Metaprogramming in C++
    Templates and Default Arguments
    Templates and Static variables in C++
    Default Assignment Operator and References
    Advanced C++ | Conversion Operators
    Use of explicit keyword in C++
    When should we write our own assignment operator in C++?
    Copy constructor vs assignment operator in C++
    VMWare关闭beep声
  • 原文地址:https://www.cnblogs.com/xiaochouk/p/12185318.html
Copyright © 2011-2022 走看看