3分钟理解Spatial Pyramid Pooling层 (SPP层)

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。

在这里插入图片描述

直接使用SPPNet论文的原图,下面的变量均用上图中的表示,注意对应关系
不同size的图片(input image)经过’convolutional layers’后得到的feature map of conv5的size不同,ROI Pooling层的功能便是将不同size的feature map of conv5处理后得到相同长度的特征表示.(对应图中的大黑框部分)

具体流程:

假设输入ROI Pooling层的feature map of conv5的shape是(h,w,c)
一. 首先ROI Pooling层把feature map of conv5划分成44的小方块(对应图中蓝色矩形),每个小方块的宽高分别为w/4,h/4,通道数为c,不能整除时需要取整.针对feature map的每个通道,分别在这16个小方块进行最大池化(MaxPooling),也就是取出小方块里的最大值.每一个通道都能取出16个最大值,所以所有通道共有16c个值
二. 然后ROI Pooling层把feature map of conv5划分成2
2的小方块(对应图中绿色矩形),使用同样的方法得到4c个值
三. 接着ROI Pooling层把feature map of conv5划分成1*1的小方块(对应图中灰色矩形),得到c个值
四. 最后将上面三个值串联起来得到长度为16c+4c+c=21c的特征表示

显而易见,通过ROI Pooling层得到的特征表示是固定长度(21c)的, 与输入的h,w无关!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值