论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition

1.提出背景

        现有的深度卷积神经网络(CNN)需要一个固定大小的(例如,224×224)的输入图像。这一要求是“人工的”,可能会降低对任意大小/尺度的图像或子图像的识别精度。

2.做了什么

        作者为网络配备了另一种池化策略,“空间金字塔池化”,以消除上述需求。新的网络结构,称为SPP-net,可以生成一个固定长度的表示,而不管图像的大小/规模。金字塔池对对象变形也具有鲁棒性。有了这些优点,SPP-net一般应该改进所有基于cnn的图像分类方法。

3.主要内容

3.1 Abstract

       现有的深度卷积神经网络(CNNs)需要一个固定大小的(例如,224×224)的输入图像。这一要求是“人工的”,可能会降低对任意大小/尺度的图像或子图像的识别精度。在这项工作中,我们为网络配备了另一种池策略,“空间金字塔池”,以消除上述需求。新的网络结构,称为SPP-net,可以生成一个固定长度的表示,而不管图像的大小/规模。金字塔池对对象变形也具有鲁棒性。有了这些优点,SPP-net一般应该改进所有基于cnn的图像分类方法。在ImageNet2012数据集上,我们证明了SPP-net提高了各种CNN架构的准确性,尽管它们的设计不同。在PascalVOC2007和Caltech101 数据集上,SPP-net使用单一的全图像表示和不进行微调,实现了最先进的分类结果。

        SPP-net的能力在目标检测中也很重要。使用SPP-net,我们只从整个图像中计算一次特征映射,然后将特征集中在任意区域(子图像)中,生成固定长度的表示来训练检测器。该方法避免了重复计算卷积特征。在处理测试图像时,我们的方法比R-CNN方法快24-102倍,同时在PascalVOC2007上获得了更好或相当的精度。在2014年ImageNet大规模视觉识别挑战(ILSVRC)中,我们的方法在所有38个团队中在目标检测中排名2,在图像分类中排名3。本文还介绍了对这次比赛的改进。

1 INTRODUCTION

        我们正在目睹我们的视觉社区的一个快速的、革命性的变化,主要是由深度卷积神经网络(CNN)[1]和大规模训练数据[2]的可用性引起的。基于深度网络的方法最近大大改进了图像分类目标检测,的许多其他识别任务,甚至非识别任务。然而,在cnn的训练和测试中存在一个技术问题:普遍的cnn需要一个固定的输入图像大小(例如,224×224),这限制了高宽比和输入图像的比例。当应用于任意大小的图像时,当前的方法大多将输入的图像匹配到固定的大小,要么通过裁剪,要么通过扭曲,如图1(上)所示。但是,裁剪后的区域可能不包含整个对象,而扭曲的内容可能会导致不必要的几何失真。由于内容丢失或失真,可能会影响识别精度。此外,当对象尺度变化时,预定义的尺度可能不合适。固定输入大小忽略了涉及比例的问题。

 

        那么,为什么cnn需要一个固定的输入大小呢?CNN主要由两部分组成:卷积层和后面的全连接层。卷积层以滑动窗口的方式运行,输出的特征映射表示激活的空间排列(图2)。事实上,卷积层并不需要固定的图像大小,并且可以生成任何大小的特征映射。另一方面,完全连接的层需要根据其定义有固定的大小/长度的输入。因此,固定大小的约束只来自于全连接的层,它们存在于网络的更深的阶段。 

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第1张图片

        在本文中,我们引入了一个空间金字塔池化(SPP)[14],[15]层来消除网络的固定大小约束。具体来说,我们在最后一个卷积层的顶部添加了一个SPP层。SPP层将特征池化并生成固定长度的输出,然后将这些输出输入到完全连接的层(或其他分类器)中。换句话说,我们在网络层次结构的更深层次阶段(在卷积层和全连接层之间)执行一些信息“聚合”,以避免在开始时进行裁剪或扭曲的需要。图1(底部)显示了通过引入SPP层而实现的网络体系结构的变化。我们称新的网络结构为SPP-net。

        空间金字塔池(俗称空间金字塔匹配或SPM[15]),作为Bag-of-Words(BoW)模型[16]的扩展,是计算机视觉中最成功的方法之一。它将图像划分为从更精细到更粗的级别,并在其中聚合局部特征。在最近cnn流行之前,SPP一直是分类(如[17]、[18]、[19])和检测(如[20])的领先和竞争获胜系统的关键组成部分。然而,SPP尚未在cnn中被考虑。我们注意到,SPP对于深度cnn有几个显著的特性:1)SPP能够无论输入大小如何输出固定长度,而之前的深度网络中使用的滑动窗口池[3]不能;2)SPP使用多级空间箱,而滑动窗口池只使用单一窗口大小。多层池化已被证明对对象变形具有鲁棒性[15];3)由于输入尺度的灵活性,SPP可以汇集在可变尺度上提取的特征。实验结果表明,所有这些因素都提高了深度网络的识别精度。

        SPP-net不仅可以从任意大小的图像/窗口中生成表示以用于测试,而且还允许我们在训练过程中提供不同大小或比例的图像。使用可变大小的图像进行训练,增加了尺度不变性,减少了过拟合。我们开发了一种简单的多尺寸训练方法。对于单个网络接受可变的输入大小,我们通过使用共享所有参数的多个网络来近似它,而每个网络都使用固定的输入大小进行训练。在每个epoch,我们用给定的输入大小训练网络,并在下一个epoch切换到另一个输入大小。实验表明,这种多尺寸训练与传统的单尺寸训练一样收敛,具有更好的测试精度。

        SPP的优点是与特定的CNN设计相正交的。在ImageNet2012数据集上的一系列控制实验中,我们证明了SPP在现有出版物[3]、[4]、[5](或它们的修改)中改进了四种不同的CNN架构,而不是非SPP。这些架构具有不同的过滤器数/大小、步幅、深度或其他设计。因此,我们有理由推测SPP应该改进更复杂的(更深的和更大的)卷积架构。SPP-net还显示了Caltech101和PascalVOC2007[22]的最先进的分类结果,只使用一个全图像表示,没有微调。

        SPP-net在目标检测方面也表现出了很大的强度。在领先的目标检测方法R-CNN[7]中,通过深度卷积网络从候选窗口中提取特征。该方法在VOC和ImageNet数据集上均具有显著的检测精度。但是RCNN中的特征计算是耗时的,因为它反复地将深度卷积网络应用于每幅图像的数千个扭曲区域的原始像素。在本文中,我们证明了我们只能在整个图像上运行一次卷积层(不管窗口数是多少),然后通过SPP-net在特征映射上提取特征。这种方法比R-CNN加速了100多倍。请注意,在特征地图(而不是图像区域)上训练/运行一个检测器实际上是一个更流行的想法,[23],[24],[20],[5]。但SPP-net继承了深度CNN特征图的力量,也继承了SPP对任意窗口大小的灵活性,从而产生了突出的精度和效率。在我们的实验中,基于spp-net的系统(建立在R-CNN管道上)比R-CNN快24-102×,同时具有更好或相当的精度。使用最近的edgeboxes[25]的快速建议方法,我们的系统处理一个图像需要0.5秒(包括所有步骤)。这使得我们的方法适合于实际应用。

        本手稿的初步版本已在ECCV2014年版上发表。基于这项工作,我们参加了ILSVRC2014[26]的比赛,在所有38个团队中,在目标检测中排名2,在图像分类中排名3(都只提供数据轨迹)。对ILSVRC2014做了一些修改。我们证明了spp网可以促进各种更深、更大的网络(秒。3.1.2-3.1.4)超过非spp同行。此外,在我们的检测框架的驱动下,我们发现在具有灵活定位/大小的窗口的特征图上的多视图测试(秒。3.1.5)可以提高分类精度。本手稿还提供了这些修改的细节。我们已经发布了该代码,以促进未来的研究,(http://research.microsoft.com/en-us/um/people/kahe/).

2 DEEP NETWORKS WITH SPATIAL PYRAMID POOLING

2.1 Convolutional Layers and Feature Maps

        考虑一下流行的七层架构[3],[4]。前五层是卷积的,其中一些之后是池化层。这些池化层也可以被认为是“卷积”,因为它们使用的是滑动窗口。最后两层是完全连接,以一个N-way softmax作为输出,其中N为类别数。

        上述的深度网络需要一个固定的图像大小。然而,我们注意到,对固定大小的要求只是由于完全连接的层需要固定长度的向量作为输入。另一方面,卷积层接受任意大小的输入。卷积层使用滑动滤波器,其输出与输入值的高宽比大致相同。这些输出被称为特征图[1]——它们不仅涉及响应的强度,而且还涉及它们的空间位置。

        在图2中,我们可视化了一些特征映射。它们是由conv5层的一些过滤器生成的。图2(c)显示了ImageNet数据集中这些过滤器的最强激活图像。我们看到一个过滤器可以被一些语义内容激活。例如,第55个过滤器(图2,左下角)被圆形激活最多;第66个过滤器(图2,右上角)被∧形激活最多;而第118个过滤器(图2,右下角)最容易被∨形激活。输入图像中的这些形状(图2(a))激活了相应位置的特征图(图2中的箭头)。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第2张图片

        值得注意的是,我们在图2中生成了特征图,而没有固定输入大小。这些由深度卷积层生成的特征映射类似于传统方法[27],[28]中的特征映射。在这些方法中,密集提取SIFT向量[29]或图像patch[28],然后进行编码,如通过向量量化[16]、[15]、[30]、稀疏编码[17]、[18]或Fisher核[19]进行编码。这些编码的特征由特征地图组成,然后由Bag-of-Words(BoW)[16]或空间金字塔[14],[15]合并。类似地,深度卷积特征也可以以类似的方式进行合并 

 2.2 The Spatial Pyramid Pooling Layer

        卷积层接受任意的输入大小,但它们产生可变大小的输出。类标识符(SVM/softmax)或全连接层需要固定长度的向量。这样的向量可以由Bag-of-Words(BoW)方法[16]生成,该方法将这些特征组合在一起。空间金字塔池化[14],[15]改进了BoW,因为它可以通过在局部box中池化来维护空间信息。这些box的大小与图像大小成正比,所以无论图像大小如何,box的数量都是固定的。这与之前的深度网络[3]的滑动窗口池相反,其中滑动窗口的数量取决于输入的大小。

        为了对任意大小的图像采用深度网络,我们将最后一个池化层(如池化层5,在最后一个卷积层之后)替换为空间金字塔池化层。图3说明了我们的方法。在每个box中,我们汇集了每个过滤器的响应(在本文中,我们使用最大池化)。空间金字塔池的输出为kMviamed向量,box数表示为M(k为最后一个卷积层的滤波器数)。固定维向量是全连通层的输入。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第3张图片

        使用空间金字塔池化,输入图像可以是任何大小的。这不仅允许任意的高宽比,而且还允许任意的比例。我们可以将输入图像的大小调整到任何尺度(例如,最小值(w,h)=180,224,……),并应用相同的深度网络。当输入图像处于不同的尺度时,网络(具有相同的过滤器大小)将提取不同尺度的特征。尺度在传统方法中起着重要的作用,例如,SIFT向量通常在多个尺度[29]、[27](由斑块和高斯滤波器的大小决定)。我们将证明,这些尺度对深度网络的准确性也很重要。

        有趣的是,最粗的金字塔层有一个覆盖整个图像的box。这实际上是一个“全局池化”操作,它也在几个并发工作中进行了研究。在[31]中,[32]使用全局平均化池来减小模型大小,也减少过拟合;在[33]中,在所有fc层后的测试阶段使用全局平均池来提高精度;在[34]中,全局最大池化用于弱监督对象识别。全局池化操作对应于传统的词包方法。 

2.3 Training the Network

        理论上,无论输入图像的大小如何,都可以采用标准的反传播[1]来训练上述网络结构。但在实践中,GPU实现(如cuda-convnet [3]和Caffe[35])最好是在固定的输入图像上运行。接下来,我们描述我们的训练解决方案,它利用这些GPU实现,同时仍然保留空间金字塔池行为。

        Single-size training :与之前的工作一样,我们首先考虑一个从图像中裁剪出的固定大小的输入(224×224)的网络。进行裁剪的目的是为了增加数据。对于具有给定大小的图像,我们可以预先计算空间金字塔池所需的box大小。考虑conv5之后的a×a大小的特征映射(例如,13×13)。使用n×n个box的金字塔级别,我们将这个池级别实现为滑动窗口池,其中窗口大小为=\left \lceil a/n \right \rceil,步幅=\left \lfloor a/n \right \rfloor\left \lfloor \right \rfloor\left \lceil \right \rceil表示向上取整和向下取整操作。对于一个l级的金字塔,我们实现了l个这样的层。下一个完全连接的图层(fc6)将连接到l个输出。图4显示了在[3]中的3级金字塔池(3×3,2×2,1×1)的一个示例配置。我们的单规模训练的主要目的是启用多级池化行为。实验表明,这是提高精度的原因之一

Multi-size training: 我们的SPP网络有望应用于任何大小的图像。为了解决训练中不同图像大小的问题,我们考虑了一组预定义的大小。我们考虑两种尺寸:180×180和224×224。我们没有种植一个较小的180×180区域,而是将上述224×224区域调整为180×180。所以在两个尺度上的区域只在分辨率上不同,而在内容/布局上没有不同。为了使网络接受180×180个输入,我们实现了另一个固定大小的输入(180×180)个网络。在这种情况下,conv5之后的特征图大小是一个a×a=10×10。然后我们仍然使用win=\left \lceil a/n \right \rceil和str=\left \lfloor a/n \right \rfloor来实现每个金字塔池级别。该180-网络的空间金字塔池化层的输出与224-网络的固定长度相同。因此,这个180-网络在每层中与224-网络具有完全相同的参数。换句话说,在训练过程中,我们通过两个共享参数的固定大小的网络来实现不同输入大小的spp网。
        为了减少从一个网络(例如,224)切换到另一个网络(例如,180)的开销,我们在一个网络上训练每个完整的历元,然后在下一个完整的历元上切换到另一个网络(保持所有权值)。这是迭代。在实验中,我们发现这种多尺寸训练的收敛速度与上述单尺寸训练相似..
        我们的多尺寸训练的主要目的是模拟不同的输入大小,同时仍然利用现有的良好优化的固定大小实现。除了上述的两尺度实现之外,我们还测试了一个使用s×s作为输入的变体,其中s是在每个时期从[180,224]中随机和均匀地采样的。我们在实验部分报告了这两种变体的结果。请注意,上述单尺寸/多尺寸的解决方案仅用于培训。在测试阶段,对任何大小的图像应用SPP-net。

3 SPP-NET FOR IMAGE CLASSIFICATION

3.1 Experiments on ImageNet 2012 Classifification

        我们在ImageNet2012的1000类训练集上训练网络。我们的训练算法遵循了[3],[4],[36]之前的工作实践。调整图像的大小,使较小的尺寸为256,并从整个图像1的中心或四个角中选择224×224裁剪。这些数据通过水平翻转和颜色改变的[3]来增强。Dropout[3]用于这两个完全连接的层。学习率从0.01开始,当误差趋于稳定时除以10(两次)。我们的实现是基于公开的[3][3]和Caffe[35]代码。本文中的所有网络都可以在2到四周内在一个GeForceGTXTitanGPU(6GB内存)上进行训练。

3.1.1 Baseline Network Architectures

        SPP的优点与所使用的卷积网络架构无关。我们在现有的出版物[3]、[4]、[5](或它们的修改)中研究了四种不同的网络架构,我们发现SPP提高了所有这些架构的准确性。这些基线架构如表1所示,下面简要介绍:

        论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第4张图片

  • ZF-5:该架构是基于Zeiler和Fergus’s (ZF)的(ZF)“fast”(small)模型[4]。这个数字表示五个卷积层。
  • Convnet*-5:这是对Krizhevsky等人的修改。网络[3]。我们将这两个池化层放在conv2和conv3之后(而不是放在conv1和conv2之后)。因此,每一层之后的特征图的大小与ZF-5相同。
  • Overfeat-5/7::该架构基于•论文[5],并对[6]进行了一些修改。与ZF-5/Convnet*-5相比,这种架构在最后一个池化层之前生成了一个更大的特征图(18×18,而不是13×13)。在conv3和以下的卷积层中使用了一个更大的滤波器数(512)。 我们还研究了一个具有7个卷积层的更深层次的结构,其中conv3到conv7具有相同的结构。

        在基线模型中,最后一个卷积层之后的池化层生成6×6个特征映射,其中有两个4096-dfc层和一个1000路的softmax层。我们对这些基线网络的复制情况见表2(a).我们为ZF-5训练了70个epoch,为其他训练了90个。我们对ZF-5的复制比在[4]中报道的更好。这是因为角落作物来自整个图像,正如[36]中也报道的那样。

3.1.2 Multi-level Pooling Improves Accuracy

        在表2(b)中,我们展示了使用单次训练的结果。培训和测试规模均为224×224。在这些网络中,卷积层与相应的基线模型具有相同的结构,而最终卷积层之后的池化层被SPP层所取代。对于表2中的结果,我们使用了一个4级的金字塔。金字塔是{6×6,3×3,2×2,1×1}(总共50个box)。为了公平比较,我们仍然使用标准的10视图预测,每个视图为224×224。我们在表2(b)中的结果显示,比表2(a).中的无spp基线有相当大的改善有趣的是,前1个误差的最大增益(1.65%)是由最精确的架构给出的。由于我们仍然使用与(a)中相同的10个裁剪视图,这些收益仅仅是因为多级池。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第5张图片

        值得注意的是,多级池化的增益并不仅仅是由于更多的参数;相反,这是因为多层次的池化对对象变形和空间布局[15]的方差具有鲁棒性。为了证明这一点,我们训练了另一个具有不同的4级金字塔的ZF-5网络:{4×4,3×3,2×2,1×1}(总共30个box)。这个网络的参数比无spp对应的网络少,因为它的fc6层有30×256-d输入,而不是36×256-d。该网络的top-1/top-5个错误是35.06/14.04。这个结果与上面的50 box金字塔(34.98/14.14)相似,但比无spp对应的金字塔(35.99/14.76)要好得多。 

3.1.3 Multi-size Training Improves Accuracy

        表2(c)显示了我们使用多尺寸训练的结果。培训规模分别是224和180,而测试规模仍然是224。我们仍然使用标准的10个视图预测。所有架构的top-1/top-5个错误进一步下降。SPP-net(Overfeat-7)下降到29.68%,比无SPP高2.33%,比单尺寸训练的高0.68%。

        除了使用180和224的两个离散大小外,我们还使用从[180,224]中均匀抽样的随机大小进行了评估。SPP-net的top-1/top-5个误差是30.06%/10.96%。top-1的错误比两尺寸版本略差,可能是因为224(用于测试)的访问更少。但结果仍然比单一尺寸的版本更好。

        以前有CNN解决方案[5],[36]处理不同的规模/大小,但它们大多是基于测试。在Overfeat [5]和Howard的方法[36]中,在测试阶段在多个尺度上应用单一网络,并取分数的平均值。Howard进一步在低/高分辨率图像区域上训练两个不同的网络,并平均分数。据我们所知,我们的方法是第一个用多个大小的输入图像来训练单个网络的方法。

3.1.4 Full-image Representations Improve Accuracy

        接下来,我们研究了全图像视图的准确性。我们调整图像的大小,使最小(w,h)=256,同时保持其高宽比。SPP-net应用于这个完整的图像来计算完整视图的分数。为了进行公平的比较,我们还评估了中心224×224作物(在上述评价中使用的)的单个视图的准确性。单视图测试精度的比较见表3。这里我们评估ZF-5/超过7。top1个错误率都通过全视图表示来降低。这显示了维护完整内容的重要性。尽管我们的网络只使用正方形图像进行训练,但它可以很好地推广到其他高宽比。

        比较表2和表3,我们发现多个视图的组合明显优于单一的全图像视图。然而,极限表示仍然有良好的优点。首先,我们通过经验发现(在下一个小节中讨论),即使是几十个视图的组合,额外的两个完整图像视图(带有翻转)仍然可以提高约0.2%的精度。其次,全图像视图在方法上与传统的[15]、[17]、[19]方法一致,即将整个图像的编码SIFT向量合并在一起。第三,在其他应用中,如图像检索[37],相似度排序需要图像表示,而不是分类评分。全图像表示。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第6张图片

3.1.5 Multi-view Testing on Feature Maps

        受我们的检测算法(下一节描述)的启发,我们进一步提出了一种特征图的多视图测试方法。由于SPP的灵活性,我们可以很容易地从卷积特征图中提取任意大小的窗口(视图)中提取特征。

       在测试阶段,我们调整一个图像的大小,使其为min(w,h)=s,其中s代表一个预定义的比例(如256)。然后,我们从整个图像中计算出卷积特征映射。对于翻转视图的使用,我们还计算了翻转图像的特征映射。给定图像中的任何视图(窗口),我们将这个窗口映射到特征映射(映射的方式在附录中),然后使用SPP将这个窗口中的特征池化(参见图5)。然后,将合并后的特性输入fc层,以计算该窗口的softmax分数。这些分数是最终预测的平均值。对于标准的10个视图,我们使用s=256,并且视图是在角落或中心上的224×224窗口。实验表明,特征图上10个视图预测的前5个误差在图像作物上原始10个视图预测的0.1%以内。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第7张图片

        我们进一步应用该方法从多个尺度中提取多个视图。我们将图像的大小调整为6个尺度的s∈{224、256、300、360、448、560},并计算每个尺度的整个图像上的特征图。我们使用224×224作为任何比例的视图大小,所以这些视图在不同比例的原始图像上有不同的相对大小。我们为每个比例使用18个视图:一个在中心,4个在角,4个在每一边的中间,有/没有翻转(当s=224有6个不同的视图)。这96个视图的组合将前5名的误差从10.95%减少到9.36%。结合两个富限视图(与翻转)进一步将前5名的误差降低到9.14%。 

        在[5]的论文中,视图也从卷积特征映射中提取,而不是图像作物。然而,它们的视图不能有任意大小;相反,窗口是那些合并特性与所需维度匹配的窗口。根据经验,这些受限制的窗口不如我们灵活定位/大小的窗口有益。

3.1.6 Summary and Results for ILSVRC 2014

        在表4中,我们与以前最先进的方法进行了比较。Krizhevsky等人。他的[3]是2012年ILSVRC的获胜方法;Overfeat [5],Howard[36],ZeilerFergus[4]是2013年ILSVRC的领先方法。我们只考虑单个网络的性能来进行可管理的比较。

        我们最好的单个网络在验证集上达到了9.14%的前5名错误。这正是我们提交给ILSVRC2014[26]的单模型条目。在测试集上的前5名错误为9.08%(ILSVRC2014与ILSVRC2012具有相同的训练/验证/测试数据)。在结合了11个模型后,我们团队的结果(8.06%)在参加2014年ILSVRC的所有38支团队中排名第三(表5)。由于SPPnet的优势通常应该独立于体系结构,我们期望它将进一步改进更深层次、更大的卷积体系结构[33],[32]。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第8张图片

 3.2 Experiments on VOC 2007 Classifification

        我们的方法可以生成一个全视图的图像表示。利用上述网络在ImageNet上进行预训练,我们从目标数据集中的图像中提取这些表示形式,并重新训练SVM分类器[38]。在SVM训练中,我们有意不使用任何数据增强(翻转/多视图)。我们将其标准化为SVM训练的特征.PascalVOC2007[22]中的分类任务涉及20个类别中的9,963张图像。5011张图片用于训练,其余的则用于测试。通过平均精度(mAP)评估性能。表6总结了这些结果。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第9张图片

        我们从表6(a).中的基线开始该模型为ZF-5,没有SPP。为了应用这个模型,我们调整了图像的大小,使其更小的维度为224,并裁剪了中心224×224区域。SVM是通过一个层的特征来训练的。在这个数据集上,图层越深,结果就越好。在表6(b)中,我们用SPP-net替换了无SPP网。作为第一步的比较,我们仍然将SPP-net应用于中心224×224作物。fc层的处理结果有所改善。这种收益主要是由于多级池化。 

        表6(c)显示了我们在完整图像上的结果,其中图像被调整大小,使较短的边为224。我们发现,结果有了显著的改善(78.39%vs.76.45%)。这是由于维护完整内容的完整图像表示。因为我们的网络的使用不依赖于规模,所以我们调整了图像的大小,使更小的维度为s,并使用相同的网络来提取特征。我们发现s=392基于验证集给出了最好的结果(表6(d))。这主要是因为在VOC2007中,对象占据的区域较小,而在ImageNet中占据的区域较大,所以两组对象的相对尺度不同。这些结果表明在分类任务中存在尺度问题,SPP-net可以部分解决这个“尺度不匹配”的问题。

        在表6(e)中,网络架构被我们的最佳模型(Overfeat-7,多尺寸训练)所取代,mAP增加到82.44%。表8总结了我们的结果和与最先进的方法的比较。在这些方法中,VQ[15]、LCC[18]和FK[19]均基于空间金字塔匹配,[13]、[4]、[34]、[6]均基于深度网络。在这些结果中,Oquab等人(77.7%)和Chatfiell等人(82.42%)是通过网络微调和多视图测试得到的。我们的结果与先进的状态相比较,只使用单一的全图像表示,没有微调。

3.3 Experiments on Caltech101

        Caltech101数据集[21]包含了102个类别中的9144张图像(一个背景)。我们对每个类别随机抽取30张图像进行训练,对每个类别随机抽取多达50张图像进行测试。我们重复10次随机分割,并平均精度。表7总结了我们的结果。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第10张图片

        在PascalVOC2007和 Caltech101的结果中有一些常见的观察结果:SPP-net优于无-SPP净值(表7(b)vs.(a)),full表现优于crop((c)vs.(b))。但是Caltech101的结果与PascalVOC有一些不同。全连接层的精度较低,而SPP层则更好。这可能是因为Caltech101中的对象类别与ImageNet中的对象类别相关性较小,而更深的层次对类别更为专门化。此外,我们发现在该数据集上测试的224量表具有最好的性能。这主要是因为Caltech101中的物体也占据了图像的大部分区域,正如ImageNet的情况一样。 

        除了裁剪之外,我们还评估了扭曲的图像,以适应224×224的大小。这个解决方案保持了完整的内容,但也引入了失真。在SPP(ZF-5)模型上,使用SPP层作为特征的准确率为89.91%,低于在未失真的全图像上使用相同模型的91.44%。

 4 SPP-NET FOR OBJECT DETECTION

        深度网络已被用于目标检测。我们简要回顾了最近最先进的R-CNN方法[7]。R-CNN首先通过选择性搜索[20]从每张图像中提取大约2000个候选窗口。然后将每个窗口中的图像区域扭曲到一个固定的大小(227×227)。利用预先训练好的深度网络来提取每个窗口的特征。然后根据这些特征训练一个二进制SVM分类器进行检测。R-CNN产生的结果质量惊人,并且大大优于以前的方法。然而,由于R-CNN反复地将深度卷积网络应用于每幅图像约2000个窗口,因此这是非常耗时的。特征提取是测试中主要的时间瓶颈。

        我们的spp-net也可以用于目标检测。我们只从整个图像中提取一次特征映射(可能是在多个尺度上)。然后,我们在特征映射的每个候选窗口上应用空间金字塔池,以池化该窗口的一个固定长度的表示(见图5)。因为耗时的卷积只应用一次,我们的方法可以运行得更快的数量级。

        我们的方法从特征图的区域中提取窗口级特征,而R-CNN直接从图像区域中提取。在之前的工作中,可变形部分模型(DPM)[23]从HOG[24]特征图的窗口中提取特征,而选择性搜索(SS)方法[20]从编码的SIFT特征图的窗口中提取特征。过度壮举检测方法[5]也从深度卷积特征映射的窗口中提取,但需要预定义窗口的大小。相反,我们的方法可以从深度卷积特征映射的任意窗口中提取特征。

4.1 Detection Algorithm

        我们使用选择性搜索[20]的“快速”模式,为每张图像生成大约2000个候选窗口。然后我们调整图像的大小,使min(w,h)=s,并从整个图像中提取特征映射。我们暂时使用ZF-5的SPP-net模型(单尺寸训练)。在每个候选窗口中,我们使用一个4级的空间金字塔(1×1,2×2,3×3,6×6,总共50个box)来汇集特征。这将为每个窗口生成12800d(256×50)表示。这些表示形式被提供给网络的全连接层。然后,我们针对这些特征训练一个二值线性SVM分类器。

        我们实施的SVM培训遵循了[20],[7]。我们使用地面真实窗口来生成正样本。负样本是那些与正窗口重叠最多30%的样本(通过交叉过联合(IoU)比率测量)。如果任何阴性样本与另一个阴性样本重叠超过70%,则被删除。我们应用标准的硬负向挖掘[23]来训练SVM。此步骤将被迭代一次。训练所有20个类别的支持向量机只需要不到1个小时。在测试中,分类器用于对候选窗口进行评分。然后,我们在得分窗口上使用非最大抑制[23](阈值为30%)

        我们的方法可以通过多尺度的特征提取来改进。我们调整图像的大小,使min(w,h)∈S={480、576、688、864,1200},并计算每个尺度的conv5的特征图。结合这些尺度的特性的一种策略是将它们汇集起来。但我们根据经验发现,另一种策略可以提供更好的结果。对于每个候选窗口,我们选择一个单一的尺度s∈S,这样比例的候选窗口有一个最接近224×224的像素数。然后我们只使用从这个尺度中提取的特征映射来计算这个窗口的特征。如果预定义的尺度足够密集,并且窗口近似为正方形,那么我们的方法大致相当于将窗口的大小调整为224×224,然后从其中提取特征。然而,我们的方法只需要从整个图像中计算一次特征映射(在每个尺度上),而不管候选窗口的数量是多少。

        我们还按照[7]的标准对预先训练过的网络进行了微调。由于我们的特性是从任何大小的窗口的conv5特性图中汇集出来的,所以为了简单起见,我们只对全连接的层进行了微调。在这种情况下,数据层接受conv5之后的固定长度的合并特性,然后是fc6、7层和一个新的21路(一个额外的负类别)fc8层。fc8的权值用σ=0.01的高斯分布进行初始化。我们将所有的学习速率固定为1e-4,然后对所有三层调整到1e-5。在微调过程中,正样本与地面真实窗口重叠[0.5,1],负样本重叠[0.1,0.5)。.在每个小批次中,25%的样本呈阳性。我们使用学习率1e-4训练250k个小批量,然后使用1e-5训练50k个小批量。因为我们只微调了fc层,所以训练非常快,在GPU上大约需要2个小时(不包括预缓存特性映射,这大约需要1个小时)。同样,在[7]之后,我们使用边界框回归来对预测窗口进行后处理。用于回归的特性是来自conv5的合并特性(作为[7]中使用的池5特性的对应物)。用于回归训练的窗口是那些与地面-真实窗口重叠至少50%的窗口。

4.2 Detection Results

        我们在PascalVOC2007数据集的检测任务上评估了我们的方法。表9显示了我们在不同层上的结果,通过使用1尺度(s=688)或5尺度。这里的R-CNN结果是在[7]中使用的具有5个转换层的AlexNet[3]。使用pool5层(在我们的例子中是合并的特征),我们的结果(44.9%)与R-CNN的结果(44.2%)相当。但是使用非微调的fc6层,我们的结果较差。一种解释是,我们的fc层是使用图像区域预先训练的,而在检测情况下,它们被用于特征地图区域。特征图区域可以在窗口边界附近有很强的激活,而图像区域可能没有。这种用法上的差异可以通过微调来解决。使用微调后的fc层(ftfc6,7),我们的结果可以与R-CNN的微调结果相比较或略好。经过边界盒回归,我们的5尺度结果(59.2%)比R-CNN(58.5%)好0.7%,我们的1尺度结果(58.0%)差0.5%。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第11张图片     

在表10中,我们进一步使用相同的SPPnet预训练模型(ZF-5),与R-CNN进行了比较。在这种情况下,我们的方法和R-CNN具有可比性的平均分数。这个预先训练过的模型提高了R-CNN的结果。这是因为ZF-5的架构比AlexNet更好,也因为SPPnet的多级池化(如果使用noSPPZF-5,R-CNN的结果就会下降)。表11显示了每个类别的结果。表11还包括了其他方法。选择性搜索(SS)[20]对SIFT特征图应用空间金字塔匹配。DPM[23]和区域[39]是基于HOG特性[24]。通过结合包括conv5在内的各种特性,区域集方法将[8]提高到46.1%。检测网[40]训练一个深度网络,输出像素级的对象掩码。这种方法只需要对整个图像应用深度网络一次,就像我们的方法一样。但该方法的mAP值较低(30.5%)。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第12张图片

4.3 Complexity and Running Time

        尽管具有相当的准确性,但我们的方法比R-CNN要快得多。R-CNN中卷积特征计算的复杂度为O(n·227**2),窗口数为n(∼2000)。我们的方法的复杂性在s尺度上是O(r·s**2),其中r是长宽比。 假设r大约是4/3。在s=688的单尺度版本中,这个复杂度大约是R-CNN的1/160;在5尺度版本中,这个复杂度大约是R-CNN的1/24。在表10中,我们使用相同的SPP(ZF-5)模型对特征计算的运行时间进行了公平的比较。RCNN的实现来自于作者在Caffe[35]中发布的代码。我们还在Caffe中实现了我们的特征计算。在表10中,我们使用GPU评估了100张随机VOC图像的平均时间。R-CNN每张图像需要14.37秒的卷积,而我们的1尺度版本每张图像只需要0.053秒。所以我们的传输速度比R-CNN快270×。我们的5尺度版本每张图像需要0.293s的卷积,所以比R-CNN快49×。我们的卷积特征计算速度非常快,因此fc层的计算时间占了相当大的一部分。表10显示,计算4096-dfc7特征的GPU时间为0.089s。考虑到卷积和全连接特性,我们的1尺度版本比R-CNN快102×,低1.2%;我们的5尺度版本快38×,有可比的结果。

        我们还比较了表9中R-CNN使用AlexNet[3]的运行时间,如原始论文[7]。我们的方法要快24×到64×。请注意,AlexNet[3]在每个conv层上与我们的ZF-5有相同数量的过滤器。AlexNet速度更快,因为它在某些层上使用分裂,这是为[3]中的两个gpu设计的。利用最近的窗口建议方法[25],我们进一步实现了一个有效的全系统。选择性搜索(SS)方案[20]在CPU上的每幅图像大约需要1-2秒。边框[25]的方法只需要∼0.2秒。请注意,仅在测试期间使用一种快速的建议方法就足够了。使用与上面训练的相同的模型(使用SS),我们仅测试由边框生成的建议。mAP为52.8,没有边界盒回归。考虑到边框没有用于训练,这是合理的。然后在训练阶段使用SS和EdgeBox作为建议,在测试阶段只采用EdgeBox。没有边界盒回归的mAP为56.3,由于额外的训练样本,它优于55.2(表10)。在这种情况下,总体测试时间是每张图像∼0.5s,包括所有步骤(建议和识别)。这使得我们的方法适合于实际应用。

 4.4 Model Combination for Detection

        模型组合是提高基于cnn的分类精度[3]的重要策略。我们提出了一种简单的组合检测方法。我们在ImageNet中预先训练另一个网络,使用相同的结构,但使用不同的随机初始化。然后我们重复上述检测算法。表12(SPP-net(2))显示了该网络的结果。它的mAP与第一个网络相当(59.1%vs.59.2%),并且在11个类别中优于第一个网络。

        给定这两个模型,我们首先使用任何一个模型来对测试图像上的所有候选窗口进行评分。然后,我们对两组候选窗口的联合(以及它们的分数)进行非最大抑制。一种方法给出的更自信的窗口可以抑制另一种方法给出的不那么自信的窗口。组合后,mAP提高到60.9%(表12)。在所有20个类别中,有17个组合的表现优于任何一个单独的模型。这表明这两种模型是互补的。我们进一步发现,互补性主要是由于卷积层。我们试图合并同一卷积模型的两个随机初始化的微调结果,但没有发现增益。

论文精读:SPPnet:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition_第13张图片

 4.5 ILSVRC 2014 Detection

        ILSVRC2014检测[26]任务涉及200个类别。在训练/验证/测试集中有∼450k/20k/40k的图像。我们专注于仅提供数据的跟踪器的任务(不允许使用1000类CLS训练数据)。在检测(DET)和分类(CLS)训练数据集之间有三个主要的差异,这极大地影响了训练前的质量。首先,DET训练数据仅是CLS训练数据的1/3。这似乎是仅提供数据的DET任务的一个基本挑战。第二,DET的类别数是CLS的1/5。为了克服这个问题,我们利用所提供的子类别标签2来进行预训练。总共有499个不重叠的子类别(即所提供的类别层次结构中的叶节点)。所以我们在DET训练集上对一个499类的网络进行了预训练。第三,DET/CLS训练集之间的对象尺度分布有所不同。CLS中的主要物体比例约为图像长度的0.8,而DET中约为0.5。为了解决尺度差异,我们将每个训练图像的大小调整为最小(w,h)=400(而不是256),并随机裁剪224×224个视图进行训练。只有当作物与地面真实对象重叠至少50%时,才使用。

        我们验证了预训练对PascalVOC2007的影响。对于CLS-训练前的基线,我们考虑了池中的5个特征(表9中的mAP为43.0%)。由DET预训练的200类网络取代,mAP显著下降到32.7%。一个499个类别的预训练网络将结果提高到35.9%。有趣的是,即使训练数据的数量没有增加,训练一个更多类别的网络也能提高特征质量。最后,用min(w,h)=400而不是256进行训练,进一步将mAP提高到37.8%。即便如此,我们还是看到,与CLS-训练前的结果仍然有相当大的差距。这表明了大数据对深度学习的重要性。

        对于ILSVRC2014,我们训练了一个499个类别的超越-7SPP-net。其余的步骤类似于VOC2007年的情况。在[7]之后,我们使用验证集生成正/负样本,由选择性搜索快速搜索模式提出窗口。训练集只使用地面真实窗口提供正样本。我们对fc层进行微调,然后使用验证集和训练集中的样本来训练支持向量机。在验证集上训练。

        我们的单一模型导致ILSVRC2014测试集[26]的mAP为31.84%。我们使用本文中介绍的策略结合了6个相似的模型。在测试集[26]中的mAP为35.11%。这个结果在ILSVRC2014(表13)[26]的仅提供数据的跟踪中排名第2。来自使用上下文信息的新加坡国立大学的获胜结果为37.21%。我们的系统在这个数据集的速度上仍然有很大的优势。在GPU上从所有5个尺度中提取卷积特征,我们的单个模型需要0.6秒(conv0.5秒,fc0.1秒,不包括建议)。使用相同的模型,每张图像需要32秒。对于40k的测试图像,我们的方法需要8个GPU·小时来计算卷积特征,而RCNN则需要15个GPU·天。

5 CONCLUSION

        SPP是一种用于处理不同规模、大小和长径比的灵活解决方案。这些问题在视觉识别中很重要,但在深度网络中却很少得到考虑。我们提出了一种用空间金字塔池化层训练深度网络的解决方案。所得到的SPP-net在分类/检测任务中显示出突出的准确性,并大大加快了基于DNN的检测。我们的研究还表明,许多经过时间验证的计算机视觉技术/见解仍然可以在基于深度网络的识别中发挥重要作用。

A PPENDIX A
        在附录中,我们描述了一些实现细节:
Mean Subtraction.
        224×224裁剪的训练/测试图像通常通过减去每像素的平均[3]来进行预处理。当输入图像在任何大小时,固定大小的平均图像并不直接适用。在ImageNet数据集中,我们将224×224的平均图像扭曲到所需的大小,然后减去它。在PascalVOC2007和 Caltech101中,我们在所有实验中都使用了常数平均(128)。
        
Implementation of Pooling Bins.
        在应用网络时,我们使用以下实现来处理所有的box。将conv5特征图(可以是完整的图像,也可以是一个窗口)的宽度和高度表示为w和h。对于有n个box的金字塔层,第(i,j)个box在 的范围内。如果需要舍入,我们采用左/顶边界的向下取整操作,右/下边界的向上取整操作
Mapping a Window to Feature Maps.
        在检测算法(以及特征图上的多视图测试)中,在图像域中给出了一个窗口,我们使用它对已下采样多次的卷积特征图(如conv5)进行裁剪。所以我们需要对齐特征映射上的窗口。在我们的实现中,我们将窗口的角点投影到特征映射中的一个像素上,这样图像域中的这个角点就最接近该特征映射像素的接受域的中心。由于所有卷积层和池化层的填充,映射变得复杂。为了简化实现,在部署过程中,我们为过滤器大小为p的层填充\left \lfloor p/2 \right \rfloor像素。因此,对于以(x^{'},y^{'})为中心的响应,它在图像域中的有效接受域以(x,y)=(Sx',Sy')为中心,其中S是之前所有步幅的乘积。在我们的模型中,S=16表示ZF-5的conv5,S=12表示Overfeat-5/7的conv5/7。给定图像域中的一个窗口,我们投影左(上)边界为:x0=bx/Sc+1和右(下)边界x0=dx/Se−1。如果填充物不是bp/2c,我们需要向x添加一个适当的偏移量。

        

        

        

        

        

        

你可能感兴趣的:(目标检测,深度学习,cnn,计算机视觉)