SPP(Spatial Pyramid Pooling)层
Posted xiaochouk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。
以上是关于SPP(Spatial Pyramid Pooling)层的主要内容,如果未能解决你的问题,请参考以下文章
空间金字塔池化(Spatial Pyramid Pooling,SPP)
空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch)
转R-CNN学习笔记3:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)
利用pytorch复现spatial pyramid pooling层
空间金字塔池化Spatial Pyramid Pooling
目标检测论文解读2——Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition