(39)[ECCV14] SPPNet: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37993251/article/details/89066019

计划完成深度学习入门的126篇论文第三十九篇,Kaiming he以及孙剑等完成的对VIsual Recognition中Spatial Pyramid Pooling的研究。[github]


Abstract

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

在目标检测中,SPP-net的能力也很重要。利用SPP-net算法,只对整个图像进行一次特征映射计算,然后将特征集合到任意区域(子图像),生成固定长度的表示形式,用于训练检测器。该方法避免了卷积特征的重复计算。在处理测试图像时,我们的方法比R-CNN方法快24-102x倍,同时在Pascal VOC 2007上取得了更好或相近的精度。

在2014年的ImageNet Large Scale Visual Recognition Challenge (ILSVRC)中,我们的方法在所有38个团队中对象检测排名第二,图像分类排名第三。本文还介绍了本次比赛的改进情况。


1 INTRODUCTION

我们正在见证我们的视觉社区发生快速的革命性变化,这主要是由深度卷积神经网络(CNNs)[1]和大规模训练数据[2]的可用性造成的。近年来,基于深度网络的方法在图像分类Imagenet[3]、VisualCNN[4]、Overfeat[5]、[6]、

目标检测Rich feature hierarchies[7]、[8]、[5]、

许多其他识别任务[9]、[10]、[11]、[12],甚至非识别任务的技术水平上都有了长足的进步。

然而,在CNNs的训练和测试中存在一个技术问题:目前流行的CNNs要求固定的输入图像大小(如224 x 224),这限制了输入图像的长宽比和尺度。当应用于任意大小的图像时,目前的方法大多是通过剪切cropping[3]、[4]或warping弯曲[13]、[7]来将输入图像拟合到固定大小,如图1(上)所示。

但是裁剪区域可能不包含整个对象,而warping的内容可能导致不必要的几何失真。由于内容丢失或失真,会影响识别的准确性。此外,当对象尺度变化时,预定义的大小可能不合适。固定输入大小忽略了涉及范围的问题。

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

在本文中,我们引入了一个空间金字塔池spatial pyramid pooling(SPP)[14],[15]层来消除网络的固定大小约束。具体来说,我们添加了一个arXiv:1406.4729v4 [cs]。最后一个卷积层上的SPP层。SPP层汇集特性并生成固定长度的输出,然后将输出输入完全连接的层(或其他分类器)。换句话说,我们在网络层次结构的更深层(在卷积层和全连接层之间)执行一些信息聚合,以避免在开始时进行裁剪或扭曲。图1(下图)通过引入SPP层,展示了网络架构的变化。我们把这种新的网络结构称为SPP-net。

spatial pyramid pooling[14],[15](俗称spatial pyramid matching或SPM[15])是Bag-of-Words(BoW)模型[16]的扩展,是计算机视觉中最成功的方法之一。它将图像从较细的层次划分为较粗的层次,并在其中聚合本地特性。在CNNs最近流行之前,SPP一直是领先的和竞争获胜的分类系统(如[17]、[18]、[19])和检测系统(如[20])的关键组件。然而,SPP并没有被考虑在CNNs的背景下。

我们注意到,SPP对于深度CNNs有几个显著的特性:

1)SPP能够生成固定长度的输出,而不受输入大小的影响;

2) SPP使用多级空间垃圾箱,而滑动窗口池只使用一个窗口大小。多级池已被证明是鲁棒的对象变形[15];

3) SPP具有输入尺度的灵活性,可以在可变尺度下提取特征池。实验表明,这些因素都提高了深度网络的识别精度。

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

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

SPP-net在目标检测方面也显示出了强大的能力。在主要的目标检测方法R-CNN[7]中,通过深度卷积网络提取候选窗口的特征。该方法对VOC和ImageNet数据集均有较好的检测精度。但是RCNN的特征计算是费时的,因为它反复地将深度卷积网络应用到每幅图像的数千个扭曲区域的原始像素上。在本文中,我们证明了我们只能在整个图像上运行卷积层一次(无论窗口的数量),然后通过SPP-net在特征图上提取特征。这种方法的速度比R-CNN快100多倍。注意,在特征图(而不是图像区域)上训练/运行检测器实际上是一个更流行的想法[23]、[24]、[20]、[5]。但是SPP-net继承了深度CNN feature maps的强大功能,以及SPP对任意窗口大小的灵活性,使其具有出色的准确性和效率。在我们的实验中,基于spp -net的系统(建立在R-CNN管道上)的计算速度比R-CNN快24-102,但具有更好的或可比的精度。采用最新的EdgeBoxes[25]快速提案方法,我们的系统处理一个图像需要0.5秒(包括所有步骤)。这使得我们的方法在实际应用中很实用。

本文的初稿已在ECCV 2014上发表。在此基础上,我们参加了ILSVRC 2014[26]竞赛,在38支参赛队伍中,目标检测排名第二,图像分类排名第三(均为纯数据航迹)。对ILSVRC 2014做了一些修改。我们证明,与没有spp的网络相比,spp网络可以促进各种更深更大的网络(第3.1.2-3.1.4节)。此外,在我们的检测框架的驱动下,我们发现在具有灵活位置/大小窗口的特征图上进行多视图测试(第3.1.5节)可以提高分类精度。这份手稿也提供了这些修改的细节。


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,右上角)最常被a ^-shape激活;第118个过滤器(图2,右下角)最常被_shape激活。输入图像中的这些形状(图2(a))激活对应位置的feature maps(图2中的箭头)。

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

2.2 The Spatial Pyramid Pooling Layer

卷积层接受任意的输入大小,但是它们产生的输出大小是可变的。分类器(SVM/softmax)或全连接层需要固定长度的向量。这样的向量可以通过Bag-of-Words(BoW)方法生成,该方法将特性集中在一起。空间金字塔汇聚[14],[15]改进了BoW,它可以通过在局部空间箱中汇聚来维护空间信息。这些空间回收箱的大小与图像大小成正比,因此无论图像大小如何,回收箱的数量都是固定的。这与以前深度网络[3]的滑动窗口池形成了对比,其中滑动窗口的数量取决于输入大小。

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

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

有趣的是,最粗的金字塔级别只有一个覆盖整个图像的箱子。这实际上是一个全局池操作,在几个并发工作中也对其进行了研究。在[31]中,[32]采用全局平均池来减小模型大小,同时减小过拟合;在[33]中,在所有fc层之后的测试阶段使用全局平均池,以提高准确性;在[34]中,全局最大池用于弱监督对象识别。全局池操作对应于传统的Bag-of-Words方法。

2.3 Training the Network

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

Single-size training

在前面的工作中,我们首先考虑一个从图像中截取固定大小的输入(224 x 224)的网络。裁剪是为了增加数据。对于给定大小的图像,我们可以预先计算空间金字塔池所需的bin大小。考虑conv5之后的特征映射,其大小为a a(例如,13 x 13)。对于n x n个桶的金字塔级,我们将这个池化级别实现为滑动窗口池,其中窗口大小w i n=|a / n|s t r=\lfloor a / n\rfloor, \lceil .\rceil \text { and }\lfloor\cdot\rfloor 表示上限和下限ceiling and floor操作。使用 l 级金字塔,我们实现了 l 个这样的层。下一个全连接层(fc6)将连接 l 输出。

图4显示了cuda-convnet风格的[3]中3级金字塔池(3 \times 3,2 \times 2,1 \times 1)的示例配置。

我们单一规模训练的主要目的是支持多级池行为。实验表明,这是提高精度的原因之一。

Multi-size training

我们的网络与SPP预计将适用于任何大小的图像。来解决变化的问题图像大小在训练中,我们考虑一组预定义的大小。我们考虑两个尺寸:180 x 180除224 x 224。我们没有选择更小的180 x 180区域,而是将前面提到的224 x 224区域调整为180 x 180。因此,这两种尺度下的区域仅在分辨率上不同,而在内容/布局上不同。为了让网络接受180 x 180输入,我们实现了另一个固定大小的输入(180 x 180)网络。在本例中,conv5之后的feature map大小为a x a = 10 x 10。然后我们仍然使用w i n=|a / n|s t r=\lfloor a / n\rfloor来实现每个金字塔池级别。该180网络的空间金字塔池层的输出与224网络具有相同的固定长度。因此,这个180网络在每一层都具有与224网络完全相同的参数。换句话说,在训练过程中,我们通过共享参数的两个固定大小的网络来实现可变输入大小的sp网络。

为了减少从一个网络(例如,224)切换到另一个网络(例如,180)的开销,我们在一个网络上训练每个完整历元,然后切换到另一个网络(保留所有权重),以完成下一个完整历元。这是迭代。在实验中,我们发现这种多尺度训练的收敛速度与上述单尺度训练相似。

我们的多大小训练的主要目的是模拟不同的输入大小,同时仍然利用现有的经过良好优化的固定大小实现。除上述两尺度实现外,我们还测试了以s s为输入的变量,其中s是从[180;在每一个时代。我们在实验部分报告了这两种变体的结果。

请注意,以上单/多大小解决方案仅用于训练。在测试阶段,很容易将SPP-net应用于任何大小的图像。


3 SPP-NET FOR IMAGE CLASSIFICATION

3.1 Experiments on ImageNet 2012 Classificatio

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

3.1.1 Baseline Network Architectures

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

  • ZF-5:该架构基于Zeiler和Fergus s (ZF) fast (small)模型[4]。这个数字表示五个卷积层。
  • Convnet*-5:这是对Krizhevsky等人的网络[3]的一个修改。我们将两个池化层放在conv2和conv3之后(而不是conv1和conv2之后)。因此,每一层之后的feature map都具有与ZF-5相同的大小。
  • Overfeature -5/7:此架构基于Overfeat paper[5],并在[6]中进行了一些修改。与ZF-5/Convnet*-5相比,该架构在最后一个池化层之前生成一个更大的功能映射(18 x 18而不是13 x 13)。conv3和下面的卷积层使用较大的过滤器号(512)。我们也调查一个更深层次的结构,有7个卷积层,其中conv3到conv7具有相同的结构。

在基线模型中,在最后一个卷积层之后的池化层生成6 x 6个feature map,其中两个4096-d fc层和一个1000路softmax层紧随其后。我们对这些基线网络的复制如表2(a)所示。我们对ZF-5的复制比[4]中报道的要好。这个增益是由于角作物是从整个图像,这也是报告在[36]。

3.1.2 Multi-level Pooling Improves Accuracy

在表2 (b)中,我们展示了使用单一训练的结果。训练和测试的规模都是224 x 224。在这些网络中,卷积层与相应的基线模型具有相同的结构,而在最后一个卷积层之后的池化层被SPP层替代。对于表2中的结果,我们使用一个4级金字塔。金字塔是f66,3,3,2,1g(总共50个箱子)。为了进行公平的比较,我们仍然使用标准的10个视图预测,每个视图有224个切割。表2 (b)中的结果比表2 (a)中的no-SPP基线有了很大的改进。有趣的是,top-1错误的最大收益(1.65%)是由最精确的体系结构给出的。由于我们仍然使用与(a)中相同的10个裁剪视图,这些收益完全是由于多级池。

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

3.1.3 Multi-size Training Improves Accuracy

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

除了使用180和224这两个离散尺寸外,我们还使用从[180, 224]。SPP-net的前1/5错误(overfeature -7)为30.06%/10.96%。top- 1错误比两种大小的版本略差,这可能是因为访问224(用于测试)的大小更少。但是单尺寸版本的效果更好。

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

3.1.4 Full-image Representations Improve Accuracy

接下来我们研究全图视图的准确性。我们调整图像的大小,使最小值(w;h)=256,同时保持其纵横比。将SPP-net应用于这幅全图,计算全图的分数。为了公平的比较,我们也评估了中心224 224作物单视图的准确性(在上述评估中使用)。单视图测试精度比较如表3所示。这里我们评估ZF-5/ overfeature -7。前1位的错误率都通过全视图表示得到了降低。这显示了维护完整内容的重要性。即使我们的网络只使用正方形图像进行训练,它也能很好地推广到其他纵横比。

对比表2和表3,我们发现多视图的组合比单一全图视图要好得多。然而,fullimage表示仍然具有良好的优点。首先,我们根据经验发现(在下一小节中讨论),即使是几十个视图的组合,添加的两个全图视图(带有翻转)仍然可以将精度提高约0.2%。其次,全图视图在方法上与传统的[15]、[17]、[19]方法一致,其中将整幅图像的编码SIFT向量汇集在一起。第三,在图像检索[37]等其他应用中,相似性排序需要图像表示而不是分类分数。可以首选全图像表示。

3.1.5 Multi-view Testing on Feature Maps

受我们的检测算法(在下一节中描述)的启发,我们进一步提出了一种基于特征映射的多视图测试方法。由于SPP的灵活性,我们可以很容易地从卷积特征图中提取任意大小的窗口(视图)的特征。在测试阶段,我们将图像的大小调整为最小(w;h) = s,其中s表示预定义的刻度(如256)。然后从整个图像中计算卷积特征图。用于切割后的视图,我们还计算了翻转后的图像的特征图。图像中给出任何视图(窗口),我们这个窗口映射到特征图(在附录的方式映射),然后使用SPP池的特性从这个窗口(参见图5)。然后集中特性送入fc层计算将softmax得分的窗口。这些分数的平均值用于最终的预测。对于标准的10视图,我们使用s = 256,视图的角或中心是224 224个窗口。实验表明,地物图10视图预测的前5位误差在原始图像作物10视图预测的0.1%以内。

我们进一步应用该方法从多个尺度中提取多个视图。我们将图像的大小调整到6个尺度s \in\{224,256,300,360,448,560\};计算每个比例尺的整个图像的特征图。我们使用224 224作为任何比例的视图大小,因此这些视图对于不同比例的原始图像具有不同的相对大小。我们为每个比例使用18个视图:一个在中心,四个在角落,四个在每一边的中间,有/没有翻转(当s = 224时,有6个不同的视图)。这96个视图的组合将前5个错误从10.95%减少到9.36%。将这两个完全视图(加上翻转)结合起来,可以进一步将前5个错误减少到9.14%。

在Overfeat论文[5]中,视图也是从卷积特征图中提取的,而不是图像裁剪。但是,它们的视图不能有任意大小;相反,窗口是那些汇集的特性匹配所需维度的窗口。我们从经验上发现,这些受限窗口不如我们灵活的位置/大小窗口有益。

3.1.6 Summary and Results for ILSVRC 2014

在表4中,我们将与以前最先进的方法进行比较。Krizhevsky等人的[3]是ILSVRC 2012的获奖方法;Overfeat[5]、Howard的[36]、Zeiler和Fergus的[4]是主要的方法2013年ILSVRC。对于可管理的比较,我们只考虑单网络性能。

我们最好的单网络在验证集上获得了9.14%的top-5错误,这正是我们提交给ILSVRC 2014[26]的单模型条目。测试集前5位误差为9.08% (ILSVRC 2014与ILSVRC 2012的训练/验证/测试数据相同)。结合11个模型后,我们团队的成绩(8.06%)在参加ILSVRC 2014的38个团队中排名第三(表5)。由于SPPnet的优势应该是总体上独立于架构的,我们希望它能进一步完善更深、更大的卷积架构[33]、[32]。

3.2 Experiments on VOC 2007 Classification

我们的方法可以生成全视图图像表示。利用上述网络在ImageNet上的预训练,从目标数据集中提取这些表示,并对SVM分类器[38]进行再训练。在SVM训练中,我们故意不使用任何数据增强(flip/multi-view)。我们对SVM训练的特征进行l2正规化。

Pascal VOC 2007[22]中的分类任务涉及20个类别的9963幅图像。5011张图片用于培训,其余的用于测试。通过平均平均精度(mAP)来评估性能。表6总结了结果。

我们从表6 (a)中的baseline开始,模型为ZF-5,没有SPP,为了应用这个模型,我们调整了图像的尺寸,使其更小的尺寸为224,裁剪中心224 x 224区域。支持向量机是通过一个层的特征来训练的。在这个数据集中,层越深,结果越好。在表6 (b)中,我们将无spp网替换为我们的spp网。作为第一步比较,我们仍然将SPP-net应用于中心作物224 - 224。改进了fc层的计算结果。这种增长主要是由于多层次的统筹。

表6 (c)显示了我们对完整图像的结果,其中图像的大小进行了调整,使较短的边为224。我们发现结果有了很大的改善(78.39%对76.45%)。这是由于维护完整内容的全图像表示。

由于网络的使用不依赖于规模,所以我们调整图像的大小,使较小的维度为s,并使用相同的网络提取特征。我们发现,基于验证集,s = 392得到了最好的结果(表6 (d))。这主要是因为在VOC 2007中,对象占据较小的区域,而在ImageNet中,对象占据较大的区域,因此两组相对对象尺度不同。这些结果表明,规模问题在分类任务中,而sp -net可以部分解决这种规模不匹配问题。

在表6 (e)中,网络架构被我们最好的模型所替代(overfeature -7, multi-size training), mAP增加到82.44%。表8总结了我们的结果,并与最先进的方法进行了比较。其中VQ[15]、LCC[18]、FK[19]均基于空间金字塔匹配,[13]、[4]、[34]、[6]基于深度网络。在这些结果中,Oquab等(77.7%)和Chatfield等(82.42%)通过网络微调和多视图测试得到。我们的结果与目前的技术水平相当,只使用了一个完整的图像表示,并且没有进行微调。

3.3 Experiments on Caltech101

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

Pascal VOC 2007和Caltech101结果中有一些常见的观察结果:SPP-net优于no-SPP net(表7 (b) vs. (a)), fullview表示优于crop ((c) vs. (b))。但Caltech101的测定结果与Pascal VOC有一定的差异。全连通层精度较低,SPP层精度较高。这可能是因为Caltech101中的对象类别与ImageNet中的对象类别关系不大,而更深层的对象类别更加专门化。此外,我们发现scale 224在这个数据集上测试的所有scale中性能最好。这主要是因为Caltech101中的物体也像ImageNet一样占据了图像的大部分区域。

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

表8总结了我们的结果,并与Caltech101上最先进的方法进行了比较。我们的结果(93.42%)较先前的纪录(88.54%)大幅上升(4.88%)。


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直接从图像区域中提取。在之前的工作中,Deformable Part Model (DPM)[23]从HOG [24] feature map中提取windows的特征,而Selective Search (SS)方法[20]从编码SIFT feature map中提取windows的特征。超专长检测方法[5]也提取了深度卷积特征图的窗口,但需要预先定义窗口大小。相反,我们的方法能够从深度卷积特征映射中提取任意窗口中的特征。

4.1 Detection Algorithm

我们使用快速模式的选择性搜索[20]生成约2000个候选窗口每幅图像。然后我们调整图像的大小,使最小值(w;h) = s,从整个图像中提取特征映射。我们目前使用的是单尺寸训练的ZF-5 SPP-net模型。在每个候选窗口中,我们使用一个4级的空间金字塔(1 \times 1,2 \times 2,3 \times 3,6 \times 6,总共50个箱子)来汇集特性。这将为每个窗口生成12,800- d(256 x 50)表示。这些表示形式提供给网络的全连接层。然后根据这些特征训练每个类别的二叉线性SVM分类器。

我们的SVM训练的实现遵循[20],[7]。我们使用ground-truth窗口生成阳性样本。负样本是那些与正窗口重叠最多30%的样本(由相交-过并集(IoU)比值测量)。如果与另一个负样本重叠超过70%,则删除任何负样本。我们采用标准的硬挖掘[23]来训练支持向量机。此步骤迭代一次。培训所有20个类别的支持向量机需要不到1小时的时间。在测试中,使用分类器对候选窗口进行评分。然后,我们使用非最大抑制[23](阈值为30%)对得分的窗口。

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

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

4.2 Detection Results

对Pascal VOC 2007数据集的检测任务进行了评价

表9显示了我们使用1-scale (s=688)或5-scale在不同层上的结果。在这里,R-CNN的结果是报告在[7]使用AlexNet[3]与5 conv层。使用pool5层(在我们的例子中是池功能),我们的结果(44.9%)可以与R-CNN的结果(44.2%)进行比较。但是使用非微调的fc6层,我们的结果较差。一种解释是,我们的fc层是使用图像区域进行预训练的,而在检测情况下,它们用于特征映射区域。feature map区域可以在窗口边界附近有强激活,而图像区域可能没有。这种用法的差异可以通过微调来解决。使用微调的fc层(ftfc6;7),我们的结果可以与R-CNN的微调结果进行比较,或者略好于R-CNN的微调结果。在边界盒回归后,我们的5-scale结果(59.2%)比R-CNN(58.5%)好0.7%,而我们的1-scale结果(58.0%)比R-CNN差0.5%。

在表10中,我们使用相同的SPPnet预训练模型(ZF-5)与R-CNN进行了进一步的比较。在这种情况下,我们的方法和R-CNN具有可比性的平均得分。R-CNN的结果是由这个预先训练的模型提高的。这是因为ZF-5的架构比AlexNet更好,也因为SPPnet的多级池(如果使用noSPP ZF-5, R-CNN的结果会下降)。

表11显示了每个类别的结果。表11还包括其他方法。选择性搜索(SS)[20]在SIFT特征图上应用空间金字塔匹配。DPM[23]和Regionlet[39]基于HOG特征[24]。该方法结合了包括conv5在内的多种特征,将区域化方法提高到46.1%。DetectorNet[40]训练一个深度网络,输出像素级对象mask。这种方法只需要对整个图像应用一次深度网络,就像我们的方法一样。但该方法具有较低的mAP(30.5%)。

4.3 Complexity and Running Time

虽然我们的方法具有相当的精度,但我们的方法比R-CNN快得多。在R-CNN中卷积特征计算的复杂度为O(n·227^2),窗口数字n(∼2000)。我们的方法的复杂度是O(r·s^2),在s的范围内,r是纵横比。假设r是4/3。在单标度版本中,当s = 688时,复杂度为大约是R-CNN的1/160;在5-scale版本中,这个复杂度大约是R-CNN s的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-scale版本的卷积每张图像需要0.293秒,因此比R-CNN快49秒。我们的卷积特征计算速度非常快,fc层的计算时间占了相当大的比例。表10显示,计算4,096-d fc7特征的GPU时间为每张图像0.089s。考虑到卷积和全连接的特性,我们的1-scale版本比R-CNN快102,比R-CNN低1.2%;我们的5-scale版本要快38倍,并且有类似的结果。

我们还比较了表9中R-CNN使用与原始论文[7]相同的AlexNet[3]的运行时间。我们的方法要快24到64。注意,AlexNet[3]在每个conv层上具有与ZF- 5相同数量的过滤器。AlexNet速度更快,因为它在某些层上使用了分裂,这是为[3]中的两个gpu设计的。

在最近的窗口建议方法[25]的帮助下,我们进一步实现了一个高效的全系统。选择性搜索(SS)方案[20]在CPU上每幅图像花费大约1-2秒。边缘盒[25]的方法只需要0.2s。注意,只在测试期间使用快速建议方法就足够了。使用与上面训练的相同的模型(使用SS),我们只测试由edgebox生成的提案。没有边界盒回归的地图为52.8。考虑到边框不用于培训,这是合理的。然后我们在培训阶段同时使用SS和EdgeBox作为提案,在测试阶段只使用EdgeBox。没有边界盒回归的mAP为56.3,由于增加了训练样本,所以优于55.2(表10)。在本例中,包括所有步骤(提案和识别)在内,每张图像的总体测试时间为0.5秒。这使得我们的方法在实际应用中很实用。

4.4 Model Combination for Detection

模型组合是提高基于cnn分类精度[3]的重要策略。提出了一种简单的组合检测方法。我们在ImageNet中预先训练另一个网络,使用相同的结构但不同的随机初始化。然后重复上述检测算法。

表12 (SPP-net(2))显示了这个网络的结果。其地图可与第一个网络相比较(59.1%对59.2%),并在11个类别中优于第一个网络。给定这两个模型,我们首先使用其中一个模型对测试图像上的所有候选窗口进行评分。然后,我们对两组候选窗口的并集(及其得分)执行非最大抑制。一种方法给出的更自信的窗口可以抑制另一种方法给出的不那么自信的窗口。合并后,mAP提升至60.9%(表12)。在所有20个类别中,有17个组合的表现优于任何一个单独的模型。这说明两个模型是互补的。我们进一步发现,互补主要是由于卷积层。我们尝试将相同卷积模型的两个随机初始化微调结果结合起来,但没有发现任何好处。

4.5 ILSVRC 2014 Detection

ILSVRC 2014检测[26]任务涉及200个类别。培训/验证/测试集中有450k/20k/40k图像。我们专注于只提供数据的跟踪任务(不允许使用1000类CLS训练数据)。

检测(DET)和分类(CLS)训练数据集之间存在三个主要差异,这对训练前的质量影响很大。首先,DET训练数据仅为CLS训练数据的1/3。这似乎是只提供数据的DET任务的一个基本挑战。第二,DET的类别数是CLS的1/5。为了克服这个问题,我们利用提供的子类别标签s2进行培训。共有499个不重叠的子类别(即,即提供的类别层次结构中的叶节点)。因此,我们在DET训练集上对499类网络进行了预训练。CLS中占主导地位的对象尺度约为图像长度的0.8,而DET中约为0.5。为了解决尺度差异,我们将每个训练图像的大小调整为min(w;h) = 400(而不是256),并随机裁剪224 224个视图用于培训。裁剪只在与地面真相对象重叠至少50%时使用。

我们验证了预培训对Pascal VOC 2007的效果。对于CLS-pre-training基线,我们考虑了pool5特性(表9中的mAP 43.0%)。一个499类的预训练网络将结果提高到35.9%。有趣的是,即使训练数据量没有增加,训练更多类别的网络也可以提高特性质量。最后,与min(w;h) = 400,而不是256,进一步提高了37.8%的地图。尽管如此,我们仍然看到与cl -pre-training的结果有相当大的差距。这说明了大数据对深度学习的重要性。为ILSVRC 2014,我们训练了一个499类超壮举- 7 SPP-net。余下的步骤与2007年挥发性有机化合物的个案相似。在[7]之后,我们使用验证集生成正/负样本,使用windows提出的选择性搜索快速模式。训练集仅使用ground truth窗口提供正样本。我们对fc层进行微调,然后使用验证集和训练集中的示例来训练支持向量机。在验证集上进行边界盒回归训练。

我们的单一模型在ILSVRC 2014测试集[26]中得到31.84%的mAP。我们使用本文介绍的策略将六个相似的模型结合起来。在测试集[26]中,mAP值为35.11%。这一结果在ILSVRC 2014的纯数据跟踪中排名第二(表13)。最终优胜的结果是37.21%来自NUS,它使用上下文信息。

我们的系统在速度上仍有很大的优势。在GPU上从所有5个尺度中提取卷积特征,每测试一张图像需要0.6秒(conv 0.5秒,fc 0.1秒,不包括提案)。使用相同的模型,以RCNN的方式,每张图像需要32秒。对于40k测试图像,我们的方法需要8个GPU·小时来计算卷积特征,而RCNN需GPU运行要15天。

5 CONCLUSION

SPP是一个灵活的解决方案,可以处理不同的规模、大小和纵横比。这些问题在视觉识别中很重要,但在深度网络环境中却很少被考虑。提出了一种利用空间金字塔池层训练深度网络的方法。由此产生的SPP-net在分类/检测任务中显示出优异的精度,大大加快了基于dnn的检测速度。我们的研究还表明,在基于深度网络的识别中,许多经过时间检验的计算机视觉技术/远见仍然可以发挥重要作用。

猜你喜欢

转载自blog.csdn.net/weixin_37993251/article/details/89066019