SPP(Spatial Pyramid Pooling)

Spatial Pyramid Pooling(空间金字塔池化)

在一般的CNN结构中,在卷积层后面通常连接着全连接。而全连接层的特征数是固定的,所以在网络输入的时候,会固定输入的大小(fixed-size)

但在现实中,我们的输入的图像尺寸总是不能满足输入时要求的大小。然而通常的手法就是裁剪(crop)和拉伸(warp),两种方式可能出现不同的问题:(i)裁剪的区域可能没法包含物体的整体;(ii)变形操作造成目标无用的几何失真。如果识别目标尺寸变化多样,那么提前定义好的尺寸就可能不太适合。。

而Kaiming He在这里提出了一个SPP(Spatial Pyramid Pooling)层能很好的解决这样的问题

SPP(Spatial Pyramid Pooling)_第1张图片

SPP 显著特点

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

SPP(Spatial Pyramid Pooling)_第2张图片

SPP(Spatial Pyramid Pooling)_第3张图片
使用多个窗口(pooling窗口,上图中蓝色,青绿,银灰的窗口, 我们先看最左边有16个蓝色小格子的图,它的意思是将从(conv_5)得到的特征映射分成16份,另外16X256中的256表示的是channel,即SPP对每一层都分成16份(不一定是等比分,原因看后面的内容就能理解了)。
中间的4个绿色小格子和右边1个紫色大格子也同理,即将特征映射分别分成4X256和1X256份
那么将特征映射分成若干等分是做什么用的呢? 我们看SPP的名字就是到了,是做池化操作,一般选择MAX Pooling,即对每一份进行最大池化。

我们看上图,通过SPP层,特征映射被转化成了16X256+4X256+1X256 = 21X256的矩阵,在送入全连接时可以扩展成一维矩阵,即1X10752,所以第一个全连接层的参数就可以设置成10752了,这样也就解决了输入数据大小任意的问题了。然后对feature maps 进行pooling,将分别得到的结果进行合并就会得到固定长度的输出), 这就是得到固定输出的秘密原因。

注:特征映射:特征映射,也称降维,是将高维多媒体数据的特征向量映射到一维或者 低维空间的过程。

你可能感兴趣的:(深度学习,人工智能,深度学习,计算机视觉,cnn)