前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

作者头像
狼啸风云
修改2022-09-04 21:27:43
1.8K0
修改2022-09-04 21:27:43
举报

摘要

现有的深度卷积神经网络(CNNs)需要一个固定大小的输入图像(如224×224)。这一要求是“人为的”,可能会降低对任意大小/尺度的图像或子图像的识别精度。在这项工作中,我们为网络配备了另一种池化策略,“空间金字塔池”,以消除上述要求。这种新的网络结构称为SPP-net,可以生成固定长度的表示,而不受图像大小/比例的影响。金字塔池对物体变形也有很强的鲁棒性。基于这些优点,SPP-net一般应改进所有基于cnn的图像分类方法。在ImageNet 2012数据集中,我们证明了SPP-net提高了各种CNN架构的准确性,尽管它们的设计不同。在Pascal VOC 2007和Caltech101数据集中,SPP-net实现了最先进的分类结果使用单一的全图像表示和没有微调。在目标检测中,spp网络的能力也很重要。利用SPP-net算法,只对整个图像进行一次特征映射计算,然后将特征集合到任意区域(子图像),生成固定长度的表示形式,用于训练检测器。该方法避免了卷积特征的重复计算。在处理测试图像时,我们的方法比R-CNN方法快24-102×,而在Pascal VOC 2007上达到了更好或相近的精度。在2014年的ImageNet Large Scale Visual Recognition Challenge (ILSVRC)中,我们的方法在所有38个团队中目标检测排名第二,图像分类排名第三。本文还介绍了本次比赛的改进情况。

1、简介

我们正在见证我们的视觉社区发生快速的革命性变化,这主要是由深度卷积神经网络(CNNs)和大规模训练数据[2]的可用性造成的。近年来,基于深度网络的方法在图像分类目标检测、许多其他识别任务,甚至非识别任务的技术水平上都有了长足的进步。然而,在CNNs的训练和测试中存在一个技术问题:目前流行的CNNs要求固定的输入图像大小(如224×224),这限制了输入图像的长宽比和尺度。当应用于任意大小的图像时,目前的方法大多是通过剪切或扭曲来将输入图像拟合到固定大小,如图1(上)所示。但是裁剪区域可能不包含整个目标,而扭曲的内容可能导致不必要的几何失真。由于内容丢失或失真,会影响识别的准确性。此外,当目标尺度变化时,预定义的尺度可能不适合。修正输入大小忽略了涉及范围的问题。那么,为什么CNNs需要固定的输入大小呢?CNN主要由两个部分组成:卷积层和随后的全连接层。卷积层以滑动窗口的方式运行,输出特征图,表示激活的空间排列(图2)。实际上,卷积层不需要固定的图像大小,可以生成任意大小的特征图。另一方面,根据定义,全连接层需要有固定的大小/长度输入。因此,固定大小的约束只来自于完全连接的层,它们存在于网络的更深层。在本文中,我们引入了一个空间金字塔池(SPP)[14],[15]层来消除网络的固定大小约束。具体来说,我们在最后一个卷积层的上面添加了一个SPP层。SPP层汇集特性并生成固定长度的输出,然后将输出输入全连接层(或其他分类器)。换句话说,我们在网络层次结构的更深层(在卷积层和全连接层之间)执行一些信息“聚合”,以避免在开始时进行裁剪或翘曲。图1(下图)通过引入SPP层,展示了网络架构的变化。我们把这种新的网络结构称为SPP-net。

空间金字塔池化(通常称为空间金字塔匹配或SPM)是单词包(BoW)模型的扩展,是计算机视觉中最成功的方法之一。它将图像从较细的层次划分为较粗的层次,并在其中聚合本地特性。在CNNs最近流行之前,SPP长期以来一直是领先的和竞争获胜的分类系统和检测系统的关键组成部分。然而,SPP并没有被考虑在CNNs的背景下。我们注意到,对于深度CNNs, SPP具有几个显著的特性:1)SPP能够生成固定长度的输出,而不受输入大小的影响;2) SPP使用多级空间垃圾箱,而滑动窗口池只使用一个窗口大小。多级池已被证明是鲁棒的对象变形;3) SPP具有输入尺度的灵活性,可以在可变尺度下提取特征池。实验表明,这些因素都提高了深度网络的识别精度。SPP-net不仅可以从任意大小的图像/窗口生成用于测试的表示,还允许我们在训练期间提供不同大小或比例的图像。使用可变大小的图像进行训练可以提高尺度不变性,减少过拟合。我们开发了一种简单的多尺寸训练方法。对于接受可变输入大小的单个网络,我们通过共享所有参数的多个网络对其进行近似,而每个网络都使用固定的输入大小进行训练。在每个历元中,我们用给定的输入大小训练网络,并为下一个历元切换到另一个输入大小。实验表明,该多尺度训练与传统的单尺度训练收敛相似,并且测试精度较高。

SPP的优点与特定的CNN设计是正交的。在ImageNet 2012数据集上的一系列对照实验中,我们证明了SPP在现有出版物(或它们的修改)中改进了四种不同的CNN架构,超过了没有SPP的同类出版物。这些架构具有不同的过滤器数量/大小、步长、深度或其他设计。因此,我们有理由推测SPP应该改进更复杂(更深入和更大)的卷积架构。SPP-net还显示了Caltech101和Pascal VOC 2007上最先进的分类结果,只使用一个完整的图像表示,没有微调。SPP-net在目标检测方面也显示出了强大的能力。在主要的目标检测方法R-CNN中,通过深度卷积网络提取候选窗口的特征。该方法对VOC和ImageNet数据集均有较好的检测精度。但是R-CNN的特征计算是费时的,因为它反复地将深度卷积网络应用到每幅图像数千个扭曲区域的原始像素上。在本文中,我们证明了我们只能在整个图像上运行卷积层一次(无论窗口的数量),然后通过SPP-net在特征图上提取特征。这种方法的速度比R-CNN快100多倍。注意,在特征图(而不是图像区域)上训练/运行检测器实际上是一个更流行的想法。但是SPP-net继承了深度CNN feature maps的强大功能,以及SPP对任意窗口大小的灵活性,使其具有出色的准确性和效率。在我们的实验中,基于SPP-net的系统(建立在R-CNN管道上)的计算速度比R-CNN快24-102倍,但具有更好或相近的精度。采用最新的EdgeBoxes快速提案方法,我们的系统处理一个图像需要0.5秒(包括所有步骤)。这使得我们的方法在实际应用中很实用。

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

2、带有空间金子塔池化的深度网络

2.1、卷积层和特征图

考虑流行的七层架构。前五层是卷积层,其中一些层之后是池化层。这些池化层也可以被认为是“卷积的”,因为它们使用的是滑动窗口。最后两个层次是完全连接的,输出是一个N-way softmax,其中N是类别的数量。上面描述的深度网络需要一个固定的图像大小。然而,我们注意到,固定大小的要求只是由于全连接层需要固定长度的向量作为输入。另一方面,卷积层接受任意大小的输入。卷积层使用滑动滤波器,其输出与输入的纵横比大致相同。这些输出被称为特征映射——它们不仅涉及响应的强度,而且还涉及它们的空间位置。

在图2中,我们可视化了一些功能映射。它们是由conv5层的一些过滤器生成的。图2(c)显示了ImageNet数据集中这些过滤器的最强激活图像。我们看到过滤器可以被一些语义内容激活。例如,第55个过滤器(图2,左下角)最常被一个圆形激活;第66个过滤器(图2,右上角)最受∧形激励;第118个过滤器(图2,右下角)是由一个念形状激活最多的。输入图像中的这些形状(图2(a))激活对应位置的feature maps(图2中的箭头)。值得注意的是,我们生成图2中的feature maps时没有固定输入大小。这些深卷积层生成的特征图类似于传统方法中的特征图。在这些方法中,SIFT向量或图像patch被密集提取并编码,如向量量化、稀疏编码、或Fisher kernel。这些编码的特征由特征映射组成,然后由单词包(BoW)或空间金字塔、汇集。类似地,深层卷积特性也可以用类似的方式进行合并。

2.2、空间金字塔池化层

卷积层接受任意的输入大小,但是它们产生的输出大小是可变的。分类器(SVM/softmax)或全连接层需要固定长度的向量。这样的向量可以通过单词包(BoW)方法生成,该方法将特性集中在一起。空间金字塔汇聚改进了BoW,它可以通过在局部空间箱中汇聚来维护空间信息。这些空间回收箱的大小与图像大小成正比,因此无论图像大小如何,回收箱的数量都是固定的。这与以前深度网络的滑动窗口池形成了对比,其中滑动窗口的数量取决于输入大小。为了对任意大小的图像采用深度网络,我们将最后一个池层(例如,在最后一个卷积层之后的pool5)替换为一个空间金字塔池层。图3演示了我们的方法。在每个空间bin中,我们将每个滤波器的响应汇集在一起(在本文中,我们使用max池)。空间金字塔池的输出为kM维向量,桶数记为M (k为最后一个卷积层的滤波器数)。固定维向量是全连接层的输入。

使用空间金字塔池,输入图像可以是任何大小。这不仅允许任意宽高比,还允许任意比例。我们可以调整输入图像的大小到任意比例(例如,min(w,h)=180, 224,…),并应用相同的深度网络。当输入图像在不同尺度时,网络(具有相同的滤波器大小)将提取不同尺度的特征。尺度在传统方法中起着重要的作用,例如SIFT向量通常是在多个尺度下提取的(由patch和高斯滤波器的大小决定)。我们将证明尺度对深度网络的精度也很重要。有趣的是,最粗的金字塔级别只有一个覆盖整个图像的盒子。这实际上是一个“全局池”操作,在一些并发工作中也对此进行了研究。

2.3、训练网络

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

单一尺寸训练:

在前面的工作中,我们首先考虑一个从图像中截取固定大小的输入(224×224)的网络。裁剪是为了增加数据。对于给定大小的图像,我们可以预先计算空间金字塔池所需的bin大小。考虑conv5后一个尺寸为axa的特征图。对于n×n个bin的金字塔级,我们将这个池级实现为滑动窗口池,窗口尺寸\text { win }=\lceil a / n\rceil ,步长s t r=\lfloor a / n\rfloor\lfloor\cdot\rfloor\lceil\cdot\rceil 分别代表上取整和下取整操作。使用l级金字塔,我们实现了l个这样的层。下一个全连接层(fc6)将连接l输出。图4显示了cuda-convnet风格中3级金字塔池(3×3,2×2,1×1)的示例配置。

多尺寸训练:

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

为了减少从一个网络(例如,224)切换到另一个网络(例如,180)的开销,我们在一个网络上训练每个完整epoch,然后切换到另一个网络(保留所有权重),以完成下一个完整epoch。这是迭代。在实验中,我们发现这种多尺度训练的收敛速度与上述单尺度训练相似。我们的多大小训练的主要目的是模拟不同的输入大小,同时仍然利用现有的经过良好优化的固定大小实现。除了上述两尺度实现外,我们还测试了一个变量,该变量使用s×s作为输入,在每个历元中随机且均匀地采样[180,224]。我们在实验部分报告了这两种变体的结果。请注意,以上单/多尺寸解决方案仅用于训练。在测试阶段,很容易将SPP-net应用于任何大小的图像。

3、SPP-net用来进行图像分类

3.1、在ImageNet 2012图像分类上的实验

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

3.1.1、baseline网络结构

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

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

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

3.1.2、多层池化来提升精度

在表2 (b)中,我们展示了使用单一规模训练的结果。训练和测试尺寸均为224×224。在这些网络中,卷积层与相应的baseline模型具有相同的结构,而在最后一个卷积层之后的池化层被SPP层替代。对于表2中的结果,我们使用一个4级金字塔。金字塔为{6×6,3×3,2×2,1×1}(共50个盒子)。为了进行公平的比较,我们仍然使用标准的10视图预测,每个视图的大小为224×224。表2 (b)中的结果比表2 (a)中的no-SPP基线有了很大的改进。有趣的是,top-1错误的最大收益(1.65%)是由最精确的体系结构给出的。由于我们仍然使用与(a)中相同的10个裁剪视图,这些收益完全是由于多级池。值得注意的是,多级池的增益不仅仅是由于更多的参数;而是因为多级池对对象变形和空间布局的变化具有鲁棒性。为了证明这一点,我们训练另一个ZF-5网络,它有一个不同的4级金字塔:{4×4,3×3,2×2,1×1}(总共30个箱子)。由于fc6层的输入为30×256-d,而不是36×256-d,所以该网络的参数比无spp的网络要少。该网络的前1/ 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的top-1错误(overfeature -7)下降到29.68%,比无spp的同类错误高2.33%,比单粒度训练的同类错误高0.68%。除了使用180和224这两个离散尺寸外,我们还使用从[180,224]中均匀采样的随机尺寸进行了评估。SPP-net的top-1/top-5错误(overfeature -7)为30.06%/10.96%。top-1个错误比2个大小的版本略差,这可能是因为访问224(用于测试)的大小更少。但是单尺寸版本的效果更好。之前的CNN解决方案和可以处理各种规模和大小,但它们大多是基于测试的。在Overfeat和Howard’s method中,在测试阶段将单个网络应用于多个尺度,并取平均分数。Howard进一步在低/高分辨率图像区域训练了两种不同的网络,并对其进行平均。据我们所知,我们的方法是第一个用多个大小的输入图像训练单个网络的方法。

3.1.4、整图表示精度提升

接下来我们研究全图视图的准确性。我们调整了图像的大小,使min(w,h)=256,同时保持其宽高比。将SPP-net应用于这幅全图,计算全图的分数。为了公平比较,我们还评估了224×224作物中心单视图的准确性(在上述评估中使用)。单视图测试精度比较如表3所示。这里我们评估ZF-5/ overfeature -7。top-1位的错误率都通过全视图表示得到了降低。这显示了维护完整内容的重要性。即使我们的网络只使用正方形图像进行训练,它也能很好地推广到其他纵横比。对比表2和表3,我们发现多视图的组合比单一全图视图要好得多。然而,全图像表示仍然具有很好的优点。首先,我们根据经验发现(在下一小节中讨论),即使是几十个视图的组合,添加的两个全图视图(带有翻转)仍然可以将精度提高约0.2%。其次,全图视图在方法上与传统]方法一致,其中将整幅图像的编码SIFT向量汇集在一起。第三,在图像检索等其他应用中,相似性排序需要图像表示而不是分类分数。可以首选全图像表示。

3.1.5、在特征图上多视角测试

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

我们进一步应用该方法从多个尺度中提取多个视图。我们将图像的大小调整为6个scales∈{224,256,300,360,448,560},并为每个scale计算整个图像上的特征映射。我们使用224×224作为任何比例的视图大小,因此这些视图对于不同比例的原始图像具有不同的相对大小。我们为每个比例使用18个视图:一个在中心,四个在角落,四个在每一边的中间,有/没有翻转(当s = 224时,有6个不同的视图)。这96个视图的组合将top-5个错误从10.95%减少到9.36%。将两个全图视图(加上翻转)结合起来,可以进一步将top-5个错误降低到9.14%。在Overfeat论文中,视图也是从卷积特征图中提取的,而不是图像裁剪。但是,它们的视图不能有任意大小;相反,窗口是那些汇集的特性匹配所需维度的窗口。我们从经验上发现,这些受限窗口不如我们灵活的位置/大小窗口有益。

3.1.6、ILSVRC 2014上的总结和结果

在表4中,我们将与以前最先进的方法进行比较。Krizhevsky等人的是ILSVRC 2012的获奖方法;Overfeat、Howard、Zeiler和Fergus是ILSVRC 2013年的主要方法。对于可管理的比较,我们只考虑单网络性能。我们最好的单网络在验证集上获得了9.14%的top-5错误,这正是我们提交给ILSVRC 2014的单模型条目。测试集top-5位误差为9.08% (ILSVRC 2014与ILSVRC 2012的训练/验证/测试数据相同)。结合11个模型,我们团队的成绩(8.06%)在参加ILSVRC 2014的38个团队中排名第三(表5)。由于SPP-net的优势应该是总体上独立于架构的,我们希望它能进一步完善更深更大的卷积架构。

3.2、在VOC 2007分类上的实验

我们的方法可以生成全视图图像表示。利用上述网络在ImageNet上的预训练,从目标数据集中提取这些表示,并对SVM分类器进行再训练。在SVM训练中,我们故意不使用任何数据增强(flip/multi-view)。我们对SVM训练的特征进行l2正规化。Pascal VOC 2007中的分类任务涉及20个类别的9963幅图像。5011张图片用于培训,其余的用于测试。通过平均平均精度(mAP)来评估性能。表6总结了结果。

我们从表6 (a)中的基线开始,模型为ZF-5,没有SPP,为了应用这个模型,我们调整了图像的尺寸,使其更小的尺寸为224,裁剪中心224×224区域。支持向量机是通过一个层的特征来训练的。在这个数据集中,层越深,结果越好。在表6 (b)中,我们将无spp网替换为我们的spp网。作为第一步的比较,我们仍然在中心224×224分辨率上应用了SPP-net。改进了fc层的计算结果。这种增长主要是由于多层次的统筹。表6 (c)显示了我们对完整图像的结果,其中图像的大小进行了调整,使较短的边为224。我们发现结果有了很大的改善(78.39%对76.45%)。这是由于维护完整内容的全图像表示。由于网络的使用不依赖于规模,所以我们调整图像的大小,使较小的维度为s,并使用相同的网络提取特征。我们发现,基于验证集,s = 392得到了最好的结果(表6 (d))。这主要是因为在VOC 2007中,目标占据较小的区域,而在ImageNet中,目标占据较大的区域,因此两组相对目标尺度不同。这些结果说明了分类任务中的规模问题,而SPP-net可以部分解决这种“规模不匹配”问题。在表6 (e)中,网络架构被我们最好的模型所替代(overfeature -7, multi-size training), mAP增加到82.44%。表8总结了我们的结果,并与最先进的方法进行了比较。其中VQ、LCC、FK均基于空间金字塔匹配。在这些结果中,Oquab等(77.7%)和Chatfield等(82.42%)通过网络微调和多视图测试得到。我们的结果与目前的技术水平相当,只使用了一个完整的图像表示,并且没有进行微调。

3.3、在Caltech 101上的实验

Caltech101数据集包含102个类别(一个背景)中的9144张图像。我们随机抽取每个类别30幅图像进行训练,每个类别多达50幅图像进行测试。我们重复10次随机分割,并平均精度。表7总结了我们的结果。Pascal VOC 2007和Caltech101结果中有一些常见的观察结果:SPP-net优于无spp net(表7 (b) vs. (a)),全视图表示优于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用来进行目标检测

深度网络已被用于目标检测。简要回顾最近最先进的R-CNN方法。R-CNN首先通过选择性搜索从每张图像中提取大约2000个候选窗口。然后将每个窗口中的图像区域扭曲为固定大小(227×227)。利用预先训练好的深度网络提取每个窗口的特征。然后根据这些特征训练二值SVM分类器进行检测。R-CNN生成的结果具有令人信服的质量,并大大优于以前的方法。然而,由于R-CNN反复将深度卷积网络应用于每张图像的约2000个窗口,这非常耗时。特征提取是测试中的主要时间瓶颈。我们的SPP-net也可以用于目标检测。我们只从整个图像中提取一次特征映射(可能在多个尺度上)。然后,我们将空间金字塔池应用于特征映射的每个候选窗口,以池的固定长度表示该窗口(见图5)。我们的方法从特征图的区域中提取窗口方向的特征,而R-CNN直接从图像区域中提取。在之前的工作中,Deformable Part Model (DPM)从HOG feature map中提取windows的特征,而Selective Search (SS)方法从编码SIFT feature map中提取windows的特征。超专长检测方法也提取了深度卷积特征图的窗口,但需要预先定义窗口大小。相反,我们的方法能够从深度卷积特征映射中提取任意窗口中的特征。

4.1、检测算法

我们使用“快速”模式的选择性搜索每幅图像生成约2000个候选窗口。然后我们调整图像的大小使min(w,h) = s,并从整个图像中提取feature map。我们目前使用的是单尺寸训练的ZF-5 SPP-net模型。在每个候选窗口中,我们使用一个4级的空间金字塔(1×1,2×2,3×3,6×6,共50个箱子)来汇集特征。这将为每个窗口生成12,800-d(256×50)表示。这些表示形式提供给网络的全连接层。然后根据这些特征训练每个类别的二叉线性SVM分类器。我们的SVM训练的实现遵循。我们使用ground-truth窗口生成阳性样本。负样本是那些与正窗口重叠最多30%的样本(由相交-过并集(IoU)比值测量)。如果与另一个负样本重叠超过70%,则删除任何负样本。我们采用标准的难负挖掘来训练支持向量机。此步骤迭代一次。训练所有20个类别的支持向量机需要不到1小时的时间。在测试中,使用分类器对候选窗口进行评分。然后,我们使用非最大抑制(阈值为30%)对得分的窗口。

我们的方法可以通过多尺度特征提取来改进。我们将图像的大小调整为min(w,h) =s∈s ={480, 576, 688, 864, 1200},并对每个尺度计算conv5的特征映射。将这些尺度的特性组合起来的一种策略是逐通道地汇集它们。但我们从经验上发现,另一种策略能提供更好的结果。对于每个候选窗口,我们选择一个scale s∈S,使得所缩放的候选窗口的像素数最接近224×224。然后我们只使用从这个比例中提取的特征图来计算这个窗口的特征。如果预定义的尺度足够密集,窗口近似为正方形,我们的方法大致相当于将窗口大小调整为224×224,然后从中提取特征。然而,我们的方法只需要从整个图像中(在每个尺度上)计算一次特征映射,而不考虑候选窗口的数量。我们还对我们预先训练过的网络进行了微调。由于我们的功能是从任何大小的windows的conv5功能映射汇集而来的,为了简单起见,我们只微调了完全连接的层。在本例中,数据层接受conv5之后的固定长度池功能,然后是fc6、7层和一个新的21路(一个额外的负类别)fc8层。fc8权重初始化的高斯分布σ= 0.01。我们将所有的学习率固定为1e-4,然后针对所有三个层调整为1e-5。在微调过程中,正样本与ground-truth窗口重叠[0.5,1],负样本与ground-truth窗口重叠[0.1,0.5]。在每一小批样品中,25%的样品呈阳性。我们使用1e-4的学习率训练250k个小批,然后使用1e-5的学习率训练50k个小批。因为我们只微调了fc层,所以训练非常快,在GPU上大约需要2个小时(不包括缓存前的feature map,它大约需要1个小时)。同样,我们使用边界框回归对预测窗口进行后处理。用于回归的特性是来自conv5的合并特性。用于回归训练的窗口是那些与地面真实窗口重叠至少50%的窗口。

4.2、检测结果

对Pascal VOC 2007数据集的检测任务进行了评价。表9显示了我们使用1-scale (s=688)或5-scale在不同层上的结果。在这里,R-CNN的结果是报告在[7]使用AlexNet与5 conv层。使用pool5层(在我们的例子中是池功能),我们的结果(44.9%)与R-CNN的结果(44.2%)相当。但是使用非微调的fc6层,我们的结果较差。一种解释是,我们的fc层是使用图像区域进行预训练的,而在检测情况下,它们用于特征映射区域。feature map区域可以在窗口边界附近有强激活,而图像区域可能没有。这种用法的差异可以通过微调来解决。使用微调的fc层,我们的结果可以与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的多级池(如果使用no-SPP ZF-5, R-CNN的结果会下降)。表11显示了每个类别的结果。表11还包括其他方法。选择性搜索(SS)在SIFT特征图上应用空间金字塔匹配。DPM和Regionlet基于HOG特征。该方法结合了包括conv5在内的多种特征,将区域化方法提高到46.1%。DetectorNet训练一个深度网络,输出像素级对象掩码。这种方法只需要对整个图像应用一次深度网络,就像我们的方法一样。但该方法具有较低的mAP(30.5%)。

4.3、复杂度和运行时间

虽然我们的方法具有相当的精度,而且比R-CNN快得多。R-CNN中卷积特征计算的复杂度为O\left(n \cdot 227^{2}\right) ,窗口号为n(∼2000)。我们的方法的复杂度是O\left(r \cdot s^{2}\right) ,在s的范围内,r是宽高比。假设r是4/3。在单尺度版本中,当s = 688时,这个复杂度大约是R-CNN的1/160;在5维的版本中,这个复杂度大约是R-CNN的1/24。在表10中,我们使用相同的SPP (ZF-5)模型对特征计算的运行时间进行了比较。在表10中,我们使用GPU评估了100幅随机VOC图像的平均时间。R-CNN每幅图像卷积需要14.37秒,而单尺度每幅图像只需要0.053秒。所以我们的速度比R-CNN快270倍。我们的5-scale版本的卷积每张图像需要0.293秒,因此比R-CNN快49倍。我们的卷积特征计算速度非常快,fc层的计算时间占了相当大的比例。表10显示,计算4096-d fc7特征的GPU时间为每张图像0.089s。考虑到卷积和全连接特性,我们的1-scale版本比R-CNN快102倍,比R-CNN慢1.2%;我们的5倍的版本是38×更快,并有可比的结果。我们还比较了表9中R-CNN使用与原始论文[7]相同的AlexNet[3]的运行时间。我们的方法是24×64×更快。注意,AlexNet在每个conv层上具有与ZF-5相同数量的滤波器。AlexNet速度更快,因为它在某些层上使用了分裂,这是为两个gpu设计的。选择性搜索(SS)方案在CPU上每幅图像花费大约1-2秒。EdgeBoxes的方法只需要∼0.2s。注意,只在测试期间使用快速建议方法就足够了。使用与上面训练的相同的模型(使用SS),我们只测试由edgebox生成的提案。没有边界盒回归的地图为52.8。考虑到边框不用于培训,这是合理的。然后我们在培训阶段同时使用SS和EdgeBox作为提案,在测试阶段只使用EdgeBox。没有边界盒回归的mAP为56.3,由于增加了训练样本,所以优于55.2(表10)。在本例中,每个图像的总体测试时间为∼0.5s,包括所有步骤(建议和识别)。这使得我们的方法在实际应用中很实用。

4.4、检测的模型合并

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

4.5、ILSVRC 2014上的检测

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 baseline,我们考虑了pool5特性(表9中的mAP 43.0%)。一个499类的预训练网络将结果提高到35.9%。有趣的是,即使训练数据量没有增加,训练更多类别的网络也可以提高特性质量。最后,min(w,h) = 400而不是256的训练将mAP进一步提高到37.8%。尽管如此,我们仍然看到与pre-training的结果有相当大的差距。这说明了大数据对深度学习的重要性。为ILSVRC 2014,我们训练了一个499类Overfeat-7 SPP-net。余下的步骤与VOC 2007相似。我们使用验证集生成正/负样本,使用windows提出的选择性搜索快速模式。训练集仅使用ground truth窗口提供正样本。我们对fc层进行微调,然后使用验证集和训练集中的示例来训练支持向量机。在验证集上进行边界盒回归训练,我们的单一模型在ILSVRC 2014测试集中得到31.84%的mAP。我们使用本文介绍的策略将六个相似的模型结合起来。在测试集中,mAP值为35.11%。这一结果在ILSVRC 2014的纯数据跟踪中排名第二(表13)。新加坡国立大学使用上下文信息,最终获得37.21%的成绩。我们的系统在速度上仍有很大的优势。在GPU上从所有5个尺度中提取卷积特征,每测试一张图像需要0.6秒(conv 0.5秒,fc 0.1秒,不包括建议)。使用相同的模型,以RCNN的方式,每张图像需要32秒。对于40k测试图像,我们的方法需要8个GPU·小时来计算卷积特征,而RCNN需要15天GPU天。

5、结论

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年08月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 1、简介
  • 2、带有空间金子塔池化的深度网络
    • 2.1、卷积层和特征图
      • 2.2、空间金字塔池化层
        • 2.3、训练网络
        • 3、SPP-net用来进行图像分类
          • 3.1、在ImageNet 2012图像分类上的实验
            • 3.1.1、baseline网络结构
            • 3.1.2、多层池化来提升精度
            • 3.1.3、多尺寸训练来提升精度
            • 3.1.4、整图表示精度提升
            • 3.1.5、在特征图上多视角测试
            • 3.1.6、ILSVRC 2014上的总结和结果
          • 3.2、在VOC 2007分类上的实验
            • 3.3、在Caltech 101上的实验
            • 4、SPP-net用来进行目标检测
              • 4.1、检测算法
                • 4.2、检测结果
                  • 4.3、复杂度和运行时间
                    • 4.4、检测的模型合并
                      • 4.5、ILSVRC 2014上的检测
                      • 5、结论
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档