SPPNet论文详解

本文详细介绍了SPP-Net(空间金字塔池化网络),阐述了其基本原理,包括卷积层、特征图和空间金字塔池化层的运作方式,并通过ImageNet 2012分类实验、VOC 2007及Caltech101的实验结果展示了SPP-Net在图像分类和目标检测任务中的优势,如提高准确度和多尺寸训练的能力。
摘要由CSDN通过智能技术生成
 
< Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition >

Kaiming He
        当前深度卷积神经网络(CNNs)都需要输入的图像尺寸固定(比如224×224)。这种人为的需要导致面对任意尺寸和比例的图像或子图像时降低识别的精度(因为要经过crop/warp)。本文给网络配上一个叫做“空间金字塔池化”(spatial pyramid pooling,)的池化策略以消除上述限制。SPP-net的网络结构能够产生固定大小的表示(representation)不管输入图像的尺寸或比例。金字塔池化对物体的形变有很强的鲁棒性。由于这些优点,SPP-net可以普遍帮助改进各类基于CNN的图像分类方法。在ImageNet2012数据集上,SPP-net将各种CNN架构的精度都大幅提升,尽管这些架构有着各自不同的设计。在PASCAL VOC 2007和Caltech101数据集上,SPP-net使用单一全图像表示在没有调优的情况下都达到了最好成绩。
        SPP-net在物体检测上也表现突出。使用SPP-net,只需要从整张图片计算一次特征图(feature map),然后对任意尺寸的区域(子图像)进行特征池化以产生一个固定尺寸的表示用于训练检测器。这个方法避免了反复计算卷积特征。在处理测试图像时,我们的方法计算卷积比R-CNN方法快30--170倍,并且在Pascal VOC 2007 取得了更高的精度。
        在ImageNet大规模视觉识别任务挑战(ILSVRC)2014上,我们的方法在物体检测上排名第2,在物体分类上排名第3,参赛的总共有38个组。本文也介绍了为了这个比赛所作的一些改进。

1. 简介

我们看到计算机视觉领域正在经历飞速的变化,这一切得益于深度卷积神经网络(CNNs)[1]和大规模的训练数据的出现[2]。近来深度网络对图像分类 [3][4][5][6],物体检测 [7][8][5]和其他识别任务 [9][10][11][12],甚至很多非识别类任务上都表现出了明显的性能提升。
        然而,CNNs在训练和测试时都有一个技术问题,这些流行的CNNs都需要输入的图像尺寸是固定的(比如224×224),这限制了输入图像的长宽比和缩放尺度。当遇到任意尺寸的图像是,都是先将图像适应成固定尺寸,方法包括裁剪[3][4]和变形[13][7],如图1(上)所示。但裁剪会导致信息的丢失,变形会导致位置信息的扭曲变形,就会影响识别的精度。另外,一个预先定义好的尺寸在物体是缩放可变的时候就不适用了。
        那么为什么CNNs需要一个固定的输入尺寸呢?CNN主要由两部分组成,卷积部分和其后的全连接部分。卷积部分通过滑窗进行计算,并输出代表激活的空间排列的特征图(feature map)(图2)。事实上,卷积并不需要固定的图像尺寸,他可以产生任意尺寸的特征图。而另一方面,根据定义,全连接层则需要固定的尺寸输入。因此固定尺寸的问题来源于全连接层,也是网络的最后阶段。本文引入一种空间金字塔池化( spatial pyramid pooling,SPP)层以移除对网络固定尺寸的限制。特别地,将SPP层放在最后一个卷积层之后。SPP层对特征图进行池化,并产生固定长度的输出,这个输出再喂给全连接层(或其他分类器)。换句话说,在网络层次的较后阶段(也就是卷积层和全连接层之间)进行某种信息“汇总”,可以避免在最开始的时候就进行裁剪crop或变形warp。图1(下)展示了引入SPP层之后的网络结构变化。我们称这种新型的网络结构为SPP-net。
        空间金字塔池化[14][15](普遍称谓:空间金字塔匹配spatial pyramid matching, SPM[15]),是词袋模型(Bag-of-Words, BoW)的扩展,SPP模型是计算机视觉领域最成功的方法之一。它将图像划分为从更细到更粗的级别,并聚合他们的局部特征
。在CNN之前,SPP一直是各大分类比赛[17][18][19]和检测比赛(比如[20])的冠军系统中的核心组件。对深度CNNs而言,SPP有几个突出的优点:1)SPP能在输入尺寸任意的情况下产生固定大小的输出,而以前的深度网络[3]中的滑窗池化(sliding window pooling)则不能;2)SPP使用了多层空间箱(bin),而滑窗池化则只用了一个窗口尺寸。多级池化对于物体的变形有十分强的鲁棒性[15];3)由于其对输入的灵活性,SPP可以池化从各种尺度抽取出来的特征。通过实验,我们将展示 所有提升深度网络最终识别精度的因素。
        SPP-net不仅仅让测试阶段允许任意尺寸的输入能够产生表示(representations),也允许训练阶段的图像可以有各种尺寸和缩放尺度。使用各种尺寸的图像进行训练可以提高尺度不变性,以及减少过拟合。我们开发了一个简单的多尺度训练方法。为了实现一个单一网络能够接受各种输入尺寸,我们使用 多个共享所有权重(Parameters)的网络来近似得到这种效果,不过,这里的每个网络分别使用固定输入尺寸进行训练。每个 epoch 使用固定的尺寸训练这个网络,下一轮使用另一个尺寸来训练。实验表明,这种多尺度的训练与传统的单体型训练是的收敛速度是一样的,但是带来更好的测试精度。
        SPP的优点是与各类CNN设计是正交的。通过在ImageNet2012数据集上进行一系列可控的实验,我们发现SPP对[3][4][5]这些不同的CNN架构都有提升。这些架构有不同的特征数量、尺寸、滑动距离(strides)、深度或其他的设计。所以我们有理由推测SPP可以帮助提升更复杂的(更大、更深)的卷积架构。SPP-net也做到了 Caltech101 [21]和Pascal VOC 2007 [22]上的最好结果,而只使用了一个全图像表示,且没有调优。
        在目标检测方面,SPP-net也表现优异。目前领先的方法是R-CNN[7],候选窗口的特征是借助深度神经网络进行抽取的。此方法在VOC和ImageNet数据集上都表现出了出色的检测精度。但R-CNN的特征计算十分耗时,因为他对每张图片中的上千个变形后的区域的像素反复调用CNN。本文中,我们展示了我们只需要在整张图片上运行一次卷积网络层(不管窗口的数量多少),然后再使用SPP-net在特征图上提取特征。这个方法相对于R-CNN缩减了上百倍的耗时。在特征图(而不是region proposal)上训练和运行检测器是一个很受欢迎的想法[23][24][20][5]。但SPP-net延续了深度CNN特征图的优势,也结合了SPP兼容任意窗口大小的灵活性,所以做到了出色的精度和效率。我们的实验中,基于SPP-net的系统(建立在R-CNN流水线上)比R-CNN计算卷积特征要快24-120倍,而精度却更高。我们进一步提出了一个单模型结合方法EdgeBoxes[25],来提升在 Pascal VOC 2007 detection task
的结果。
       我们参加了ILSVRC 2014 [26]的竞赛,在所有38个团队中,在目标检测中排名第二,在图像分类中排名第三(两者都提供了数据专用曲目)。 对于ILSVRC 2014,[25]做了一些修改。我们表明,SPPnets可以通过no-SPPcounterparts 来推动更深和更大的各种网络(第3.1.2-3.1.4节)。 此外,在我们的检测框架的驱动下,我们发现在具有灵活可变定位/大小的窗口的特征图上进行多视图测试(第3.1.5节)可以提高分类精度。


2. 基于空间金字塔池化的深度网络

2.1 卷积层和特征图

        在颇受欢迎的七层架构中[3][4]中,前五层是卷积层,其中一些后面跟着池化层。从他们也使用滑窗的角度来看,池化层也可以认为是“卷积层”。最后两层是全连接的,跟着一个N路softmax输出,其中N是类别的数量。上述的深度网络需要一个固定大小的图像尺寸。然后,我们注意到,固定尺寸的要求仅仅是因为全连接层的存在导致的。另一方
  • 8
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值