目标检测网络—SPPNet详解

翻译论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

概述

当前深度卷积神经网络(CNNs)都需输入固定的图像尺寸(fixed-size),如224×224)。这种需要是“人为”的,并且当面对任意尺寸或比例的图像时,识别精度会降低。而论文中提出的**“空间金字塔池化”(spatial pyramid pooling)的池化策略**,可以有效消除上述限制。SPP-net结构能够产生固定大小的特征表示(fixed-length representation),而不关心输入图像的尺寸或比例。

SPP-net在物体检测上也表现突出。用SPP-net,我们只需要从整张图片计算一次特征图(feature map),然后对任意尺寸的区域(子图像)进行特征池化,以产生一个固定尺寸的表示(representation)用于训练检测器(detectors)。 这个方法避免了反复计算卷积特征。


在检测或者分类时,流行的CNNs都需要输入的图像尺寸是固定的(比如224×224),这限制了输入图像的长宽比和缩放尺度。当遇到任意尺寸的图像时,都是先将图像适应成固定尺寸,方法包括裁剪(crop)和变形(wrap)。

但裁剪会导致信息的丢失,变形会导致位置信息的扭曲,就会影响识别的精度。另外,一个预先定义好的尺寸,在物体是缩放可变的时候就不适用了。

那么,为什么CNNs需要一个固定的输入尺寸呢?CNN主要由两部分组成,卷积部分和其后的全连接部分。卷积部分通过滑窗进行计算,并输出代表激活的空间排布的特征图(feature map)。事实上,卷积并不需要固定的图像尺寸,他可以产生任意尺寸的特征图。而另一方面,根据定义,全连接层则需要固定的尺寸输入。因此固定尺寸的问题来源于全连接层,也是网络的最后阶段。

SPPNet

为了解决固定尺度对网络的影响,论文提出了一种空间金字塔池化( spatial pyramid pooling,SPP)层。尤其是,将SPP层放在最后一个卷积层之后。SPP层对特征进行池化,并产生固定长度的输出,这个输出再喂给全连接层(或其他分类器)。换句话说,在网络层次的较后阶段(也就是卷积层和全连接层之间)进行某种信息“汇总”,可以避免在最开始的时候就进行裁剪或变形。
在这里插入图片描述
黑色图片代表卷积层之后的特征图,随后我们以不同大小的块来提取特征,分别是4 * 4,2 * 2,1 * 1,将这三张网格放到下面这张特征图上,就可以得到16+4+1=21种不同的块(Spatial bins)。我们从这21个块中,每个块提取出一个特征,这样刚好就是我们要提取的21维特征向量。这种以不同的大小格子的组合方式来池化的过程就是空间金字塔池化。

比如,要进行空间金字塔最大池化,其实就是从这21个图片块中,分别计算每个块的最大值,从而得到一个输出单元,最终得到一个21维特征的输出。

网络的训练

1、单一尺寸的训练,固定输入尺寸—>SPP—>固定size输出。
2、多尺度训练(YOLOv2有所借鉴)—>SPP—>固定size输出。
在这里插入图片描述
多尺寸训练的主要目的是在保证已经充分利用现在被较好优化的固定尺寸网络实现的同时,模拟不同的输入尺寸。 除了上述两个尺度的实现,我们也在每个epoch中测试了不同的s x s输入,s是从180到224之间均匀选取的。后面将在实验部分报告这些测试的结果。

RCNN、SPPNet对比

R-CNN

1、通过选择性搜索,对待检测的图片进行搜索出~2000个候选窗口。
2、把这2k个候选窗口的图片都缩放到227*227,然后分别输入CNN中,每个proposal提取出一个特征向量,(即:利用CNN对每个proposal进行提取特征向量。)
3、把上面每个候选窗口的对应特征向量,利用SVM算法进行分类识别。 可以看出R-CNN的计算量是非常大的,因为2000个候选窗口都要输入到CNN中,分别进行特征提取。

SPP-Net

1、首先通过选择性搜索,对待检测的图片进行搜索出2000个候选窗口。
2、特征提取阶段。区别!! 这一步骤的具体操作如下:把整张待检测的图片,输入CNN中,进行一次性特征提取,得到特征图,然后在特征图中找到各个候选框的区域,再对各个候选框采用空间金字塔池化,提取出固定长度的特征向量。而R-CNN输入的是每个候选框,然后在进入CNN,因为SPP-Net只需要一次对整张图片进行特征提取,速度会大大提升。
3、最后一步,采用SVM算法进行特征向量分类识别。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值