目标检测--SPP-net论文笔记(翻译+理解)

论文地址:https://arxiv.org/abs/1406.4729

摘要

现有的深度卷积神经网络需要固定大小的输入图像(例如,224×224)。这个要求是“人为的”,可能会降低对任意大小/比例的图像或子图像的识别精度。本文在深度卷积神经网络中使用了新的“空间金字塔池化”策略来避免上述限制。新的网络结构称为SPP-net,无论输入图像大小/比例是多少,都可以生成固定长度的表示向量。另外,金字塔池化也对目标变形具有鲁棒性。由于这些优势,SPP-net通常能够改善所有基于CNN的图像分类方法。在ImageNet 2012数据集上,SPP-net提高了各种不同设计的CNN架构的准确性。在Pascal VOC 2007和Caltech101数据集上,SPP-net使用单个完整图像表示且不进行微调,实现了SOTA分类结果。

SPP-net在目标检测中的作用也非常显著。使用SPP-net,我们仅对整个图像计算一次特征图,然后在任意区域(子图像)池化特征生成固定长度的表示向量来训练检测器。该方法避免了重复计算卷积特征,在测试时,我们的方法比R-CNN方法快24-102倍,并且在Pascal VOC 2007上实现了更好或相当的准确性。

在ImageNet大规模视觉识别挑战(ILSVRC)2014中,我们的方法在38支团队中目标检测排名第二,图像分类排名第三。本文还介绍了为该竞赛所做的改进。

1 引言

我们正在见证计算机视觉领域飞速革命性的发展,这主要是由深度卷积神经网络[1]和大规模训练数据集[2]引起的。基于深度网络的方法最近在图像分类[3]、[4]、[5]、[6]、目标检测[7]、[8]、[5],以及许多其他识别任务[9]、[10]、[11]、[12]甚至非识别任务方面都显著超越了现有技术水平。

然而,在CNN的训练和测试中仍存在一个技术问题:当前流行的CNN需要固定大小的输入图像(例如,224×224),这限制了输入图像的宽高比和尺寸。当应用于任意大小的图像时,目前的方法主要通过裁剪[3]、[4]或变形[13]、[7](如图1所示(上))将输入图像变换到固定大小。但是,裁剪区域可能不包含整个目标,而变形可能导致几何失真。由于内容丢失或失真,识别精度可能会受到影响。此外,预定义的尺寸可能在目标尺寸变化时不适用。固定输入大小忽略了比例问题。
在这里插入图片描述
图1:上:裁剪或变形以适应固定尺寸。中:传统的CNN。下:我们的空间金字塔池化网络结构

为什么CNN需要固定尺寸的输入图像呢?CNN主要由两部分组成:卷积层和之后的全连接层。卷积层以滑动窗口的方式操作,并输出代表激活的空间排列的特征图(如图2所示)。实际上,卷积层不需要固定图像尺寸,可以生成任意尺寸图像的特征图。但是,全连接层需要定义具有固定大小/长度的输入。因此,固定大小的约束只来自于网络的深层阶段的全连接层。

在本文中,我们介绍了一种空间金字塔池化(SPP)[14],[15]层来消除网络对固定尺寸的约束。具体来说,我们在最后一个卷积层之后添加了一个SPP层。SPP层对特征进行池化并生成固定长度的输出,然后将这些输出送入全连接层(或其他分类器)。换句话说,我们在网络层次结构的较深阶段(卷积层和全连接层之间)执行一些信息的“聚合”,以避免在开始时进行裁剪或变形。图1(下)显示了通过引入SPP层而导致的网络架构变化。我们将这种新的网络架构称为SPP-net。

空间金字塔池化(Spatial Pyramid Pooling)[14],[15],在计算机视觉中被广泛称为空间金字塔匹配(Spatial Pyramid Matching)或SPM[15],是计算机视觉中最成功的方法之一,是词袋模型(Bag-of-Words,简称BoW)[16]的扩展。它将图像分割为从细到粗的层次,并在其中聚合局部特征。在最近盛行的CNN之前,SPP长期以来一直是分类(如[17],[18],[19])和检测(如[20])领域中领先和获胜的系统的关键组成部分。尽管如此,SPP在CNN的架构中并未被考虑。我们注意到,SPP对于深度CNN具有几个显著的特性:1)SPP能够不受输入图像尺寸的影响生成固定长度的输出,而之前深度网络中使用的滑动窗口池化[3]则不能;2)SPP使用多层级空间bins,而滑动窗口池化只使用单个窗口大小。已经证明多层级池化对于物体的变形具有鲁棒性[15];3)由于输入尺寸的灵活性,SPP可以汇集在不同尺度上提取的特征。通过实验证明,所有这些因素提高了深度网络的识别准确性。

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

SPP的优势与具体的CNN设计是相互独立的。在对ImageNet 2012数据集进行一系列受控实验中,我们展示了SPP对现有的四种不同CNN架构版本(或其修改版本)的改进效果。这些架构具有不同的卷积核数量/大小、步幅、深度或其他设计。因此,我们有理由推测SPP应该能够改进更复杂(更深、更大)的卷积架构。SPP-net还在Caltech101和Pascal VOC 2007数据集上在使用单个全图像表示且没有进行微调的情况下,表现出SOTA分类结果。
SPP-net在目标检测中也表现出很强的优势。在领先的目标检测方法R-CNN中,候选窗口的特征是通过深度卷积网络提取的。该方法在VOC和ImageNet数据集上表现出了显著的检测准确性。但是,在R-CNN中,特征计算特别耗时,因为它重复地将深度卷积网络应用于每个图像的数千个变形区域的原始像素。在本文中,我们展示了仅对整个图像运行卷积层一次(无论窗口数量如何),然后通过SPP-net在特征图上提取特征。这种方法使速度提高了一百倍以上。需要注意的是,在特征图(而不是原始图像区域)上训练/运行检测器实际上是一个更常见的方式。但是,SPP-net继承了深度CNN特征图的强大能力,也具有对任意窗口大小的灵活性,从而带来了出色的准确性和效率。在我们的实验中,基于SPP-net的系统(建立在R-CNN流水线上)计算特征比R-CNN快24~102倍,同时具有更好或相当的准确性。结合最近的快速候选区提取方法EdgeBoxes,我们的系统在0.5秒内处理一幅图像(包括所有步骤)。这使得我们的方法在实际应用中变得实用。

该手稿的初步版本已经发表在ECCV 2014上。基于这项工作,我们参加了ILSVRC 2014的比赛,并在所有38个团队中目标检测排名第二,图像分类中排名第三(这两个都是提供数据的轨道)。对于ILSVRC 2014,进行了一些修改。我们展示了SPP-nets可以提升各种更深更大的网络(第3.1.2-3.1.4节)。此外,受我们检测框架的驱动,我们发现在特征图上进行多视图测试,并使用灵活定位/大小的窗口(第3.1.5节),可以提高分类准确性。本手稿还提供了这些修改的详细信息。

我们发布了代码以促进未来的研究。(http://research.microsoft.com/en-us/um/people/kahe/)

2 具有空间金字塔池化的深度网络

2.1. 卷积层和特征图

当前流行的CNN一般有七层架构[3],[4],前五层是卷积层,其中一些后面跟着池化层。这些池化层也可以被视为“卷积”,因为它们也使用滑动窗口。最后两层是全连接层,输出是一个N路softmax,其中N是类别的数量。

上述网络的输入是固定尺寸的图像。然而,我们注意到,固定尺寸的需求仅源于全连接层,因为它们需要固定长度的向量作为输入。而卷积层可以接受任意尺寸的输入。卷积层使用滑动卷积核,它们的输出与输入具有大致相同的宽高比。这些输出被称为特征图,不仅包括响应的强度,还包括它们的空间位置。

在图2中,我们可视化了一些特征图。它们是由conv5层的一些卷积核生成的。图2©显示了这些卷积核在ImageNet数据集中最强激活值的图像。我们可以看到,卷积核可以被某些语义内容激活。例如,第55个卷积核(图2,左下)被圆形激活;第66个卷积核(图2,右上)被上尖角形激活;第118个卷积核(图2,右下)被下尖角形激活。输入图像中的这些形状(图2(a))激活了相应位置的特征图(图2中的箭头)。
在这里插入图片描述
图2:特征图的可视化。 (a) Pascal VOC 2007中的两幅图像。 (b) 一些conv5卷积核的特征图。箭头表示图像中最强响应及其对应的位置。 © 具有相应卷积核最强响应的ImageNet图像。绿色矩形标记了最强响应的感受野。

值得注意的是,我们在没有固定输入尺寸的情况下生成如图2的特征图。这些由深度卷积层生成的特征图类似于传统方法中的特征图。在传统方法中,SIFT向量或图像补丁被密集提取,然后通过向量量化、稀疏编码或Fisher核等编码技术进行编码。这些编码特征包含特征图,然后通过词袋模型(BoW)或空间金字塔进行池化。类似地,深度卷积特征也可以用类似的方式进行池化。

2.2. 空间金字塔池化层

卷积层可以接受任意尺寸的输入图像,产生不同尺寸的输出向量。分类器(如SVM/softmax)或全连接层需要固定长度的输入向量。这样的向量可以通过词袋(BoW)方法[16]来生成,该方法将特征汇集起来。空间金字塔池化[14],[15]改进了BoW,它可以通过在局部空间区域(spatial bins)池化来保持空间信息。这些空间区域的大小与图像尺寸成比例,因此无论图像大小如何,空间区域的数量都是固定的。这与以前的深度网络[3]中的滑动窗口池化形成了对比,滑动窗口的数量取决于输入图像的尺寸。

为了适应任意尺寸的图像,我们将最后一个池化层(例如,在最后一个卷积层后的pool5)替换为一个空间金字塔池化层。图3说明了我们的方法。在每个空间区域中,我们对每个卷积核的响应进行池化(在本文中,我们始终使用最大池化)。空间金字塔池化的输出是kM维向量,其中M表示空间区域的数量(k是最后一个卷积层中卷积核的数量)。这个固定维度的向量是全连接层的输入。
在这里插入图片描述
图3:具有空间金字塔池化层的网络结构。conv5是最后一个卷积层,256是其卷积核数量。

利用空间金字塔池化,输入图像可以是任意大小。不仅允许任意长宽比,还允许任意尺寸。我们可以将输入图像调整为任何尺寸(例如,min(w; h)=180, 224,…)并应用相同的深度网络。当输入图像尺寸不同时,网络(具有相同的卷积核大小)将在不同的尺寸上提取特征。图像尺寸在传统方法中起着重要作用,例如,SIFT向量通常在多个尺寸上提取[29],[27](由补丁和高斯卷积核的大小确定)。我们将展示图像尺寸对深度网络的准确性也很重要。

有趣的是,最粗糙的金字塔层级是一个覆盖整个图像的单个区域。实际上,这是一个“全局池化”操作,其它同期研究也对其进行了分析。在[31],[32]中,使用全局平均池化来减小模型大小并减少过拟合;在[33]中,在所有全连接层之后的测试阶段使用全局平均池化来提高准确性;在[34]中,使用全局最大池化进行弱监督目标识别。全局池化操作对应于传统的词袋方法。

2.3. 训练网络

理论上,上述网络结构可以不受输入图像大小的影响,使用标准反向传播[1]训练。但在实践中,GPU实现(如cuda-convnet [3]和Caffe [35])更倾向于在固定的输入图像上运行。接下来,我们将描述我们的训练解决方案,能够利用现有的GPU实现,同时仍然保留空间金字塔池化的行为。

单一尺度训练
与之前的工作类似,我们首先考虑一个网络,它的输入是从图像中裁剪的固定大小图像(224×224),裁剪是为了数据增强。对于给定大小的图像,我们可以预先计算空间金字塔池化所需的bin的大小。考虑到conv5之后的特征图的大小为a×a(例如,13×13)。对于有n×n个bin的金字塔层级,我们用滑动窗口池化实现,其中窗口大小 ,步幅 ,两个符号表示上取整和下取整操作。对于有l层级的金字塔,我们实现l层。接下来的全连接层(fc6)将连接l层个输出。图4显示了3级金字塔池化(3×3、2×2、1×1)在cuda-convnet [3]中的示例配置。

我们单一尺寸训练的主要目的是实现多级池化行为。实验表明,这是提高准确性的原因之一。
在这里插入图片描述
图4:以cuda-convnet为例的三级金字塔池化。这里sizeX是池化窗口的大小。此配置适用于具有13×13的conv5特征图尺寸的网络,因此pool3×3、pool2×2和pool1×1层分别有3×3、2×2和1×1个bin。

多尺度训练
我们带有SPP的网络希望能够应用于任意尺寸的图像。为了解决训练中不同图像尺寸的问题,我们考虑一组预定义的尺寸。我们考虑两种尺寸:180×180和224×224。我们不是裁剪一个小的180×180区域,而是将前述224×224区域调整为180×180。因此,两个尺寸的图像只在分辨率上有所不同,而内容/布局相同。为了使网络能够接受180×180图像输入,我们实现了另一个固定大小输入(180×180)的网络。在这种情况下,conv5层后的特征图大小为a×a = 10×10。然后我们仍然使用 和步幅 来实现每个层级的金字塔池化。这个180网络的空间金字塔池化层的输出与224网络相同,具有相同的固定长度。因此,在每一层中,180网络和224网络具有完全相同的参数。换句话说,在训练过程中,我们通过两个共享参数的固定大小网络来实现可变输入尺寸的SPP-net。

为了减少从一个网络(224)切换到另一个网络(180)的开销,我们每个完整的epoch都在一个网络上训练,然后在下一个完整的epoch切换到另一个网络上(保持所有权重不变)。这样循环进行。在实验中,我们发现这种多尺度训练的收敛速度与单尺度训练相似。

我们多尺度训练的主要目的是模拟不同的输入尺寸,同时利用现有的、经过优化的固定尺寸的GPU实现。除了上述的两种尺寸实现之外,我们还测试了一种变体,即在每个epoch用s×s作为输入,其中s从[180; 224]中随机均匀采样。我们将在实验部分报告这两种变体的结果。

需要注意的是,上述的单尺度/多尺度解决方案仅用于训练。在测试阶段,直接将SPP-net应用于任何尺寸的图像。

3 SPP-NET 用于图像分类

3.1 ImageNet 2012数据集上的分类实验

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

3.1.1 基线模型

SPP的优势与使用的卷积网络架构无关。我们研究了现有版本中的四种不同网络架构[3],[4],[5](或它们的修改版),研究表明SPP提高了所有这些架构的准确性。表1列出了这些基线模型,下面简要介绍:
在这里插入图片描述
表1:网络架构:卷积核个数×卷积核大小(例如,96×72),卷积核步长(例如,str 2),池化窗口大小(例如,pool 32),以及输出特征图大小(例如,map size 55×55)。LRN代表局部响应归一化。调整填充以产生预期的输出特征图大小。

• ZF-5:这种架构基于Zeiler和Fergus的(ZF)“快速”(较小)模型[4]。数字表示有五个卷积层。

• Convnet*-5:这是对Krizhevsky等人网络[3]的修改。我们在conv2和conv3之后放置了两个池化层(而不是在conv1和conv2之后)。因此,每一层之后的特征图的大小与ZF-5相同。

• Overfeat-5/7:此架构基于Overfeat论文[5],并根据[6]进行了一些修改。与ZF-5/Convnet*-5不同,这种架构在最后一个池化层之前产生一个更大的特征图(18×18而不是13×13)。在conv3和接下来的卷积层中使用更大的卷积核数量(512)。我们还研究了一个更深的架构,有7个卷积层,其中conv3到conv7具有相同的结构。

在基线模型中,最后一个卷积层后的池化层生成6×6的特征图,后面接着两个4096维的全连接层和一个1000类的softmax层。我们复现了这些基线网络,结果列在表2 (a) 中。我们对ZF-5进行了70个epoch的训练,对其他网络进行了90个epoch的训练。我们对ZF-5的复现效果比[4]中报告的更好。这是因为我们的角裁剪是来自整个图像,这也在[36]中有说明。
在这里插入图片描述
表2:ImageNet 2012验证集中的错误率。所有结果均采用标准的10视图测试。括号中是相对于“无SPP”基线的增益。

3.1.2 多级池化提高准确性

在表2(b)中,我们展示了使用单一尺度训练的结果。训练和测试的尺寸都是224×224。在这些网络中,卷积层的结构与对应的基线模型相同,最后一个卷积层后的池化层被替换为SPP层。对于表2中的结果,我们使用了一个4级金字塔。金字塔为{6×6,3×3,2×2,1×1}(共50个bin)。为了公平比较,我们仍然使用标准的10视图预测,每个视图都是一个224×224的裁剪图像。我们在表2(b)中的结果显示,比没有SPP基线模型有显著的提升。有趣的是,最大的top-1错误改善(1.65%)来自于准确率最高的架构。由于我们仍然使用和(a)中一样的10个裁剪视图,这些改进完全来自于多级池化。

值得注意的是,多级池化的提升不仅仅是因为参数更多;还因为多级池化对目标变形和空间布局的差异具有鲁棒性。为了表明这一点,我们训练另一个具有不同4级金字塔的ZF-5网络:{4×4,3×3,2×2,1×1}(共30个bin)。这个网络的参数比没有SPP的对应网络更少,因为它的fc6层具有30×256维的输入,而不是36×256维。该网络的top-1/top-5错误率为35.06/14.04。这个结果类似于上面的50个bin金字塔(34.98/14.14),但比没有SPP的对应网络要好得多(35.99/14.76)。

3.1.3 多尺度训练提高准确性

表2(c)显示了我们使用多尺度训练的结果。训练尺寸为224和180,而测试尺寸仍然为224。我们仍然使用标准的10视图预测。所有架构的top 1/top 5错误进一步下降。SPP-net(Overfeat-7)的top 1错误率降至29.68%,比其无SPP对应版本降低了2.33%,比其单一尺寸训练的对应版本好0.68%。

除了使用180和224两个离散尺寸之外,我们还评估了从[180,224]均匀采样的随机尺寸。SPP-net(Overfeat-7)的top 1/top 5错误率为30.06%/10.96%。top 1错误率略差于两种尺寸的版本,可能是因为尺寸为224(用于测试)的访问次数较少。但结果仍优于单一尺度版本。
有一些之前的CNN解决方案[5],[36]处理各种尺寸/大小,但它们大多是基于测试的。在Overfeat [5]和Howard的方法[36]中,在测试阶段将单个网络应用于多个尺度,并对得分进行平均。Howard进一步在低/高分辨率图像区域上训练了两个不同的网络,并对得分进行了平均。据我们所知,我们的方法是第一个使用多个尺寸的输入图像训练单个网络的方法。

3.1.4 全图像表示提高准确性

接下来我们研究全图像视图的准确性。我们调整图像大小,使得min(w, h)=256,同时保持其纵横比。然后在这个全图像上应用SPP-net来计算全视图的分数。为了公平比较,我们还评估了中心224×224裁剪的单视图(这在上述评估中使用)的准确性。单视图测试准确性的比较见表3。这里我们评估ZF-5/Overfeat-7。相比裁剪视图,全视图表示的top-1错误率都有所降低。这显示了保持完整内容的重要性。即使我们的网络仅使用方形图像进行训练,它也能很好地推广到其他宽高比。
在这里插入图片描述
表3:在ImageNet 2012验证集中使用单视图的错误率。图像被调整大小,使min(w, h) = 256。裁剪视图是图像中心的224×224区域。

将表2和表3进行比较,我们发现多视图的组合比单个全图像视图要好得多。然而,全图像表示仍然具有良好的优点。首先,我们经验性地发现(在下一小节讨论),即使对于数十个视图的组合,额外的两个全图像视图(通过翻转)仍然可以将准确性提高约0.2%。其次,全图像视图在方法论上与传统方法[15],[17],[19]一致,这些方法中对整个图像的编码SIFT向量进行池化汇总。第三,在其他应用中,例如图像检索[37],需要图像表示而不是分类分数来进行相似性排名。全图像表示可能更受欢迎。

3.1.5 在特征图上多视角测试(只生成一次特征图)

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

在测试阶段,我们调整图像大小,使min(w,h) = s,其中s表示预定义的比例(如256)。然后我们为整个图像计算卷积特征图。为了使用翻转视图,我们还计算了翻转图像的特征图。给定图像中的任何视图(窗口),我们将该窗口映射到特征图中(映射方式见附录),然后使用SPP从该窗口池化特征(参见图5)。池化后的特征然后被馈送到fc层以计算该窗口的softmax分数,再将这些分数平均进行最终预测。对于标准的10个视图,我们使用s = 256,并且视图是在四角或中心的224×224窗口。实验表明,特征图上的10视图预测的top-5错误率与原始的图像裁剪上的10视图预测的误差在0.1%以内。

我们进一步将该方法应用于从多个尺度提取多个视图。我们将图像调整大小为六个尺度s ∈ {224, 256, 300, 360, 448, 560},并为每个尺度在整个图像上计算特征图。对于任何尺度,我们使用224×224作为视图大小,因此这些视图在原始图像上具有不同的相对大小。我们为每个尺度使用18个视图:一个在中心,四个在角点,四个在每边的中间,有/无翻转(当s=224时有6个不同的视图)。这96个视图的组合将top-5错误率从10.95%降低到9.36%。将两个全图像视图(带翻转)结合起来,将top-5错误率进一步降低到9.14%。

在Overfeat论文[5]中,视图也是从卷积特征图中提取的,而不是图像裁剪。然而,他们的视图不能有任意的大小,而是那些池化特征匹配所需尺寸的窗口。我们通过实验证明,这些受限的窗口不如我们灵活定位/大小的窗口效果好。

3.1.6 ILSVRC 2014总结与结果

在表4中,我们与之前的最先进方法进行了比较。Krizhevsky等人[3]的方法是ILSVRC 2012的获胜方法;Overfeat[5]、Howard[36]和Zeiler和Fergus[4]的方法是ILSVRC 2013的领先方法。为了便于比较,我们只考虑单网络性能。
在这里插入图片描述

表4:ImageNet 2012的错误率。所有结果均基于单个网络。Overfeat中的视图数量取决于尺度和步幅,在最细尺度上有数百个。

我们最好的单网络在验证集上的top-5错误率为9.14%。这正是我们提交给ILSVRC 2014[26]的单模型结果。在测试集上的top-5错误率为9.08%(ILSVRC 2014与ILSVRC 2012使用相同的训练/验证/测试数据)。在结合了11个模型后,我们团队的结果(8.06%)在参加ILSVRC 2014的38个团队中排名第3(表5)。由于SPP-net的优势应该通常与架构无关,我们预计它还会进一步提高更深和更大卷积架构的性能[33], [32]。
在这里插入图片描述
表5:ILSVRC 2014分类竞赛结果[26]。列出了每个团队的最佳入围作品。

3.2 Voc 2007数据集上的分类实验

3.3 Caltech101数据集上的分类实验

4 SPP-NET 用于目标检测

深度网络已经被用于目标检测。我们简要回顾了最近的最先进的R-CNN方法[7]。R-CNN首先通过选择性搜索[20]从每个图像中提取大约2,000个候选窗口。然后,将每个窗口中的图像区域变形为固定大小(227×227)。预训练的深度网络用于提取每个窗口的特征。然后,在这些特征上训练二元SVM分类器进行检测。R-CNN取得了很好的效果,并且在很大程度上优于以前的方法。然而,由于R-CNN在每个图像上重复应用深度卷积网络约2,000次,因此它非常耗时。特征提取是测试中的主要时间瓶颈。

我们的SPP-net也可以用于物体检测。我们只需从整个图像中提取一次特征图(可能在多个尺度上)。然后,我们对特征图的每个候选窗口应用空间金字塔池化,生成固定长度表示(参见图5)。因为耗时的卷积运算只应用一次,所以我们的方法可以运行得快几个数量级。
在这里插入图片描述

图5:从特征图的任意窗口池化特征。特征图是整个图像计算出来的。池化操作在候选窗口中执行。

我们的方法从特征图中提取候选窗口特征,而R-CNN则直接从原始图像中提取。在之前的工作中,DPM算法[23]从HOG[24]特征图的窗口中提取特征,选择性搜索(SS)方法[20]则从编码的SIFT特征图的窗口中提取。Overfeat检测方法[5]也从深度卷积特征图的窗口中提取,但需要预定义窗口大小。相反,我们的方法允许从深度卷积特征图的任意窗口中提取特征。

4.1 检测算法

我们使用选择性搜索的“快速”模式[20]为每个图像生成大约2000个候选窗口。然后我们调整图像的大小,使得最小的宽度或高度为s,然后从整个图像中提取特征图。我们暂时使用ZF-5的SPP-net模型(单尺度训练)。在每个候选窗口中,我们使用一个4级空间金字塔(1×1,2×2,3×3,6×6,总共50个bins)来池化特征。这为每个窗口生成了一个12,800维(256×50)的表示。这些表示被提供给网络的全连接层。然后我们在这些特征上为每个类别训练一个二元线性SVM分类器。

我们实现SVM训练的方法参照了[20]和[7]。我们使用真实标签窗口生成正样本。负样本是那些与正样本窗口重叠度不超过30%的样本(通过交并比(IoU)计算)。如果任何负样本与另一个负样本的重叠度超过70%,则移除该负样本。我们应用标准难例挖掘方法[23]来训练SVM。这个步骤迭代一次。训练所有20个类别的SVM需要不到1小时。在测试中,分类器用来为候选窗口打分。然后我们再对得分窗口使用非最大值抑制方法[23](阈值为30%)。

我们的方法可以通过多尺度特征提取进行改进。我们调整图像的大小,使得min(w, h)=s∈𝑆={480,576,688,864,1200},并计算每个尺度的conv5的特征图。合并这些尺度的特征的一种策略是逐通道进行池化。但我们经验证发现,另一种策略效果更好。对于每个候选窗口,我们选择一个单一的尺度𝑠∈𝑆,使得这个尺度的候选窗口(在原图中的)大小最接近224×224。然后我们只使用从这个尺度提取的特征图来计算这个窗口的特征。如果预定义的尺度足够密集,并且窗口近似为正方形,那么我们的方法大致等同于将窗口调整为224×224,然后从中提取特征。然而,我们的方法只需要为整个图像(在每个尺度)计算特征图一次,无论候选窗口的数量如何。

我们遵循[7]的方法对预训练网络进行了微调。由于我们是对conv5特征图中候选窗口进行池化得到的特征,为了简化,我们只对全连接层进行微调。在这种情况下,数据层接受conv5后固定长度的池化特征,然后是fc6、fc7层和一个新的21路(包含一个额外的负类别)的fc8层。fc8的权重使用σ=0.01的高斯分布进行初始化。我们将所有层的学习率固定为1e-4,然后将后三层的学习率调整为1e-5。在微调过程中,正样本是那些与真实窗口重叠在[0.5, 1]范围内的样本,负样本是那些重叠在[0.1, 0.5)范围内的样本。在每个小批中,25%的样本是正样本。我们使用学习率1e-4训练250k个小批,然后使用1e-5训练50k个小批。由于我们只微调全连接层,所以训练非常快,在GPU上大约需要2小时(不包括预缓存特征图,这大约需要1小时)。同样遵循[7]的方法,我们使用边界框回归来后处理预测窗口。用于回归的特征是conv5后池化的特征(作为[7]中用于回归的pool5特征的对应项)。用于回归训练的窗口是那些与真实窗口重叠度超过50%的窗口。

4.2 检测结果

我们在Pascal VOC 2007数据集的检测任务上评估了我们的方法。表9显示了我们在使用单一尺度1-scale(s=688)或多尺度5-scale时各层的结果。这里的R-CNN结果是使用了5个卷积层的AlexNet[3][7]。使用pool5层(我们是池化特征),我们的结果(44.9%)与R-CNN的结果(44.2%)相当。但是使用未经微调的fc6层时,我们的结果较差。一个解释是,我们的fc层是使用图像区域预训练的,而在检测时,它们是在特征图区域上使用的。特征图区域在窗口边界附近可能有强烈的激活,而图像区域可能没有。(为什么使用图像区域预训练,所有的fc层都是在卷积层提取完特征图之后啊?GPT给的解释:预训练是图像分类任务,在整张图像上进行;推理是目标检测,在候选区域的特征图上进行,特征图上的这些区域可能与整个图像有很大不同,因为它们更关注图像的局部信息,并且可能包含强烈的边界特征)这种使用差异可以通过微调来解决。使用微调的fc层(ftfc6和ftfc7),我们的结果与R-CNN的微调结果相当或略好。在边界框回归后,我们的5-scale结果(59.2%)比R-CNN(58.5%)好0.7%,我们的1-scale结果(58.0%)差0.5%。
在这里插入图片描述
表9:在Pascal VOC 2007上的检测结果(mAP)。"ft"和"bb"分别表示微调和边界框回归

在表10中,我们进一步使用与SPPnet相同的预训练模型ZF-5与R-CNN进行比较(之前是AlexNet)。在这种情况下,我们的方法和R-CNN平均分数相当。这个预训练模型提升了R-CNN的结果,这是因为ZF-5的架构比AlexNet更好,也因为SPPnet的多级池化(如果使用无SPP的ZF-5,R-CNN的结果会下降)。表11显示了每个类别的结果。
在这里插入图片描述
表10:Pascal VOC 2007上的检测结果(mAP),使用相同的SPP预训练模型(ZF-5)。

表11还包括了其他的方法。选择性搜索(SS)[20]在SIFT特征图上应用空间金字塔匹配。DPM [23]和Regionlet [39]基于HOG特征[24]。通过结合包括conv5在内的各种特征,Regionlet方法提高到46.1% [8]。DetectorNet [40]训练了一个深度网络,输出像素级的目标掩模。这种方法跟我们的方法一样,只需将深度网络应用到整个图像上一次。但是这种方法的mAP较低(30.5%)。
在这里插入图片描述
表11:Pascal VOC 2007检测结果的比较。

4.3 复杂度和运行时间

尽管我们的方法与R-CNN准确性相当,但我们的方法比R-CNN快得多。在R-CNN中,卷积特征计算的复杂度是𝑂(𝑛⋅2272),其中窗口数量𝑛约为2000个。我们的方法在尺度𝑠上的复杂度是𝑂(𝑟⋅𝑠2),其中𝑟是宽高比。假设𝑟约为4/3。在单尺度版本中,当𝑠=688时,这个复杂度约为R-CNN的1/160;在5尺度版本中,这个复杂度约为R-CNN的1/24。

在表10中,我们使用相同的SPP (ZF-5)模型,公平地比较了特征计算的运行时间。R-CNN的实现来自于作者发布的在Caffe [35]中实现的代码。我们也在Caffe中实现了我们的特征计算。在表10中,我们评估了使用GPU处理100张随机VOC图像的平均时间。R-CNN每张图像的卷积计算需要14.37秒,而我们的单尺度版本每张图像只需要0.053秒。所以我们的方法比R-CNN快270倍。我们的5尺度版本每张图像的卷积计算需要0.293秒,所以比R-CNN快49倍。我们的卷积特征计算如此快速,以至于全连接层的计算时间占据了相当大的一部分。表10显示,每张图像计算4096维fc7特征的GPU时间为0.089秒。考虑到卷积和全连接特征,我们的单尺度版本比R-CNN快102倍,但性能下降1.2%;我们的5尺度版本比R-CNN快38倍,且结果相当。

我们也在表9中比较了运行时间,其中R-CNN使用的是原始论文[7]中的AlexNet [3]。我们的方法比R-CNN快24到64倍。注意,AlexNet [3]在每个卷积层上的卷积核数量与我们的ZF-5相同。AlexNet更快,因为它在某些层上使用了分割,这是为了在[3]中的两个GPU上设计的。

我们进一步利用最近的候选框生成方法[25]实现了一个高效的完整系统。选择性搜索[20]在CPU上每张图像需要大约1-2秒。EdgeBoxes方法[25]只需要大约0.2秒。注意,只在测试阶段使用快速候选框生成就足够了。我们使用上面训练的同一模型(使用SS)测试由EdgeBoxes生成的候选框。在没有边界框回归的情况下,平均精度(mAP)是52.8。考虑到EdgeBoxes并未用于训练,这个结果是合理的。然后,我们在训练阶段使用SS和EdgeBox提取候选框,在测试阶段只采用EdgeBoxes。在没有边界框回归的情况下,mAP为56.3,这比55.2(表10)要好,因为有额外的训练样本。在这种情况下,每张图像的总推理时间约为0.5秒,包括所有步骤(候选框生成和识别)。这使我们的方法适用于实际应用。

4.4 目标检测模型组合

模型组合是提高基于CNN的分类准确性的重要策略[3]。我们提出了一种简单的检测模型组合方法。

我们在ImageNet上预训练另一个网络,使用相同的网络结构和不同的随机初始化。然后我们重复上述的检测算法。表12(SPP-net (2))显示了这个网络的结果。其mAP与第一个网络相当(59.1% vs 59.2%),并在11个类别中超过了第一个网络。
在这里插入图片描述
表12:使用模型组合在VOC 2007上的检测结果。两个模型的结果都使用了“ftfc7 bb”。

给定这两个模型,我们首先使用其中一个模型来对测试图像上的所有候选窗口进行评分。然后我们对两组候选窗口(及其得分)的并集执行非极大值抑制。一个方法生成的置信度高的窗口可以抑制另一个方法生成的置信度低的窗口。组合后,mAP提升到60.9%(表12)。在所有20个类别中,有17个类别的组合模型表现优于任何一个单独的模型。这表明这两个模型是互补的。

我们进一步发现,这种互补性主要是因为卷积层。我们试图组合两个随机初始化的同一卷积模型的微调结果,但没有发现任何提升。

4.5 ILSVRC 2014检测

ILSVRC 2014目标检测任务[26]涉及200个类别。训练集/验证集/测试集中大约有45万/2万/4万张图像。我们专注于仅使用提供目标检测的数据进行训练(不允许使用1000类别的分类训练数据)。

检测任务(DET)和分类任务(CLS)训练数据集之间有三个主要的差异,这对预训练的质量有很大影响。首先,DET训练数据只有CLS训练数据的1/3。这可能是仅使用检测数据进行训练的一个基本挑战。其次,DET的类别数量是CLS的1/5。为了解决这个问题,我们利用提供的子类别标签进行预训练。总共有499个非重叠的子类别(即,提供的类别层次结构中的叶节点)。因此,我们在DET训练集上预训练一个499类别的网络。第三,DET/CLS训练集中的目标尺寸分布不同。在CLS中,主导的目标尺寸约为图像长度的0.8,但在DET中约为0.5。为了解决尺寸差异,我们将每个训练图像的最小宽度或高度调整为400(而不是256),并随机裁剪224×224的视图进行训练。只有当一个裁剪区域与一个真实目标有至少50%的重叠时,才会使用该裁剪区域进行训练。

我们在Pascal VOC 2007上验证了预训练的效果。对于分类预训练基线,我们考虑了pool5特征(在表9中的mAP为43.0%)。用在检测上预训练的200类别网络替换后,mAP显著下降到32.7%。499类别的预训练网络将结果提高到35.9%。有趣的是,即使训练数据数量没有增加,训练更多类别的网络也能提高特征质量。最后,将min(w, h)从256改为400进一步提高了mAP,达到了37.8%。尽管如此,我们看到它与CLS预训练结果之间仍然存在相当大的差距。这表明了大数据对深度学习的重要性。

对于ILSVRC 2014,我们训练了一个499类别的Overfeat-7 SPP-net。剩下的步骤与VOC 2007的情况类似。按照[7]的做法,我们使用验证集生成正/负样本,窗口由选择性搜索快速模式生成。训练集只贡献使用真实窗口的正样本(这种做法会产生的正样本数远大于负样本数)。我们对fc层进行微调,然后使用验证集和训练集的样本训练SVM。边界框回归在验证集上训练。

我们的单一模型在ILSVRC 2014测试集上的mAP达到31.84% [26]。我们使用本文介绍的策略组合了六个类似的模型,在测试集上的mAP达到35.11% [26]。这个结果在ILSVRC 2014仅作用提供数据赛道的排行榜上排名第二(表13)[26]。获胜的结果是来自新加坡国立大学NUS的37.21%,它使用了上下文信息。

我们的系统在这个数据集上仍然显示出速度方面的巨大优势。我们的单一模型在GPU上对每个测试图像提取5个尺度的卷积特征需要0.6秒(0.5秒用于卷积,0.1秒用于fc,不包括候选框生成)。使用同样模型的RCNN需要32秒。对于40k的测试图像,我们的方法需要8个GPU•小时来计算卷积特征,而RCNN则需要15个GPU•天。

5 结论

空间金字塔池化(SPP)是处理输入图像不同尺寸、大小和长宽比的灵活解决方案。这些问题在视觉识别中非常重要,但在深度网络的背景下却鲜少受到关注。我们提出了一种训练带有空间金字塔池化层的深度网络的解决方案。由此产生的SPP-net在分类/检测任务中表现出卓越的准确性,并大大加速了基于深度神经网络的检测。我们的研究还表明,计算机视觉中许多经过时间验证的技术/见解在基于深度网络的识别中仍然可以发挥重要作用。

附录 A

在附录中,我们描述了一些实现细节:
均值减法
裁剪的224×224的训练/测试图像通常要减去像素均值进行预处理[3]。当输入图像的尺寸任意时,固定尺寸的均值图像不能直接应用。在ImageNet数据集中,我们将224×224的均值图像变形到所需的尺寸,然后再减去它。在Pascal VOC 2007和Caltech101中,我们在所有实验中使用常数均值(128)。

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值