论文翻译与解读:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

本文介绍了一种名为SPP-net的新型深度网络结构,通过在卷积层后加入空间金字塔池化层,使得网络能够处理任意大小的输入图像,提高了物体识别的准确性。在物体检测任务中,SPP-net只需对整张图像计算一次特征图,即可高效提取各区域特征,相比R-CNN方法大幅提升了处理速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文中若有翻译错误,还望多多指正。

摘要

       现有的深度卷积神经网络(CNN)需要固定大小(例如,224×224)的输入图像。该要求是“人为的”并且可能降低任意尺寸/比例的图像或子图像的识别精度。在这项工作中,我们为网络配备了另一种池化(Pooling)策略,即“空间金字塔池”,以消除上述要求。无论图像大小/规模如何,这个新网络结构,也可以叫做SPP-net,都可以生成固定长度的表示。金字塔池对物体形变也很稳健。有了这些优点,SPP-net通常应该改进所有基于CNN的图像分类方法。在ImageNet 2012数据集中,我们证明了SPP-net提高了各种CNN架构的准确性,尽管它们的设计不同。在Pascal VOC 2007和Caltech101数据集上,SPP-net使用单个全图像表示并且没有微调,实现最好的分类结果。
     SPP-net的强大功能在物体检测中也很重要。使用SPP-net,我们仅从整个图像计算一次特征图,然后在任意区域(子图像)中池化特征以生成用于训练检测器的固定长度表示。该方法避免重复计算卷积特征。在处理测试图像时,我们的方法比R-CNN方法快24-102倍,同时在Pascal VOC 2007上实现更好或相当的准确度。

      在ILSVRC2014上,我们的方法在38支队伍中,物体检测上排名第二,物体分类排名第三。这篇文章也介绍了在比赛中的提升。

 

1、介绍

      我们见证了我们视觉社区的快速革命性变化,主要是由深度卷积神经网络(CNN)和大规模训练数据的可用性引起的。最近。
      然而,在训练和测试CNN中存在技术问题:普遍的CNN需要固定的输入图像大小(例如,224×224),这限制了宽高比和输入图像的比例。当应用于任意大小的图像时,当前的方法通常通过裁剪(crop)或通过变形(warp)使输入图像适合固定大小。但是裁剪区域可能不包含整个对象,而扭曲的内容可能会导致不想要的几何失真。由于内容丢失或失真,可能会影响识别准确性。此外,当对象比例变化时,预定义的比例可能不合适。修复输入大小忽略了涉及比例的问题。
     那么为什么CNN需要固定的输入大小呢? CNN主要由两部分组成:卷积层和后面的完全连接层。卷积层以滑动窗口方式操作,输出特征图表示激活值的空间排列。实际上,卷积层不需要固定的图像大小,并且可以生成任何大小的特征映射。另一方面,完全连接的层需要通过其定义进行固定长度的输入。因此,固定长度的约束仅来自完全连接的层,其存在于网络的更深层阶段。
     在本文中,我们引入了空间金字塔池(SPP)层来移除网络的固定大小约束。具体来说,我们在最后一个卷积层的顶部添加一个SPP层。 SPP层池化特征并生成固定长度输出,然后将其输入全连接层(或其他分类器)。换句话说,我们在网络层次结构的更深层阶段(卷积层和完全连接层之间)执行一些信息“聚合”,以避免在开始时需要裁剪或变形。图1显示了通过引入SPP层来改变网络架构。我们称之为新的网络结构为SPP-net。

     空间金字塔池化(俗称空间金字塔匹配或SPM),作为Bag-of-Words(BoW)模型的扩展,是计算机视觉最成功的方法之一。它将图像划分为从精细空间到粗糙空间的划分,并聚合其中的局部特征到一起。在最近CNN流行之前,SPP长期以来一直是好的的分类和检测系统的关键组成部分。尽管如此,在CNN中从未尚未考虑SPP。我们注意到SPP对深度CNN有几个显着特性:

  1. 无论输入大小如何,SPP都能够生成固定长度输出,而以前的深度网络中使用的滑动窗口池化不能;
  2. SPP使用多级空间区间,而滑动窗口池化仅使用单个窗口大小。已经证明多层池化对物体变形是稳健的;
  3. 由于输入比例的灵活性,SPP可以以可变比例池化提取的特征。通过实验,我们发现所有这些因素都提高了深度网络的识别准确性。

     SPP-net不仅可以从任意大小的图像/窗口生成用于测试的表示,而且还允许我们在训练期间提供具有不同大小或比例的图像。使用可变尺寸图像进行训练可以增加尺度不变性并减少过拟合。我们开发了一种简单的多尺寸训练方法。对于单个网络接受可变输入大小,我们通过共享所有参数的多个网络来近似它,而这些网络中的每一个都使用固定输入大小训练。在每个epoch,我们使用给定的输入大小训练网络,然后切换到下一个epoch的另一个输入大小。实验表明,这种多尺寸训练与传统的单一训练融合,可以提高测试的准确性。
     SPP的优点与特定的CNN设计正交。在ImageNet 2012数据集的一系列对照实验中,我们证明了SPP改进了四种不同的CNN架构。这些架构具有各种数量/尺寸滤波器,步幅,深度或其他设计。因此,我们推测SPP应该改进更复杂(更深和更大)的卷积架构是合理的。SPP-net还显示了在Caltech101和Pascal VOC 2007 的最新分类结果,仅使用单个全图像表示而无需微调。

    SPP-net在物体检测方面也表现出很强的实力。在对象检测方法R-CNN 中,通过深度卷积网络提取候选窗口的特征。该方法在VOC和ImageNet数据集上都显示出显着的检测精度。但是RCNN中的特征计算是耗时的,因为它反复将深度卷积网络应用于每个图像的数千个warp区域。在本文中,我们展示了我们只能在整个图像上运行一次卷积层(无论窗口的数量),然后在特征图上通过SPP-net提取特征。该方法比R-CNN快了一百倍。请注意,在特征图(而不是图像区域)上训练/运行检测器实际上是一个更受欢迎的想法。但是SPP-net继承了深度CNN特征图的强大功能以及SPP在任意窗口大小上的灵活性,从而实现了出色的精度和效率。在我们的实验中,基于SPP-net的系统计算特征比R-CNN快24-102倍,同时具有更好或相当的精度。利用EdgeBoxes最近的快速建议方法,我们的系统处理图像需要0.5秒(包括所有步骤)。这使我们的方法适用于实际应用。
     该手稿的初步版本已在ECCV 2014中发布。基于这项工作,我们参加了ILSVRC 2014的竞赛,在目标检测方面排名第2,在图像分类方面排名第3。这里对ILSVRC 2014进行了一些修改。我们表明SPP网络可以提升越大越深的各种不含SPP的网络。此外,在我们的检测框架的驱动下,我们发现在具有灵活定位/大小的窗口的特征图上进行多视图测试可以提高分类准确性。本手稿还提供了这些修改的详细信息。我们已经发布了代码以促进未来的研究。(http://research.microsoft.com/en-us/um/people/kahe/)

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

2.1 卷积层和特征图

       考虑流行的七层架构。前五个层是卷积层,其中一些跟着池化层。在他们使用滑动窗口的意义上,这些池化层也可以被认为是“卷积”。最后两层是全连接层,带着N维softmax作为输出,其中N是类别数。
      上述描述的深度网络需要固定的图像大小。但是,我们注意到固定尺寸的要求仅仅是由于全连接层需要固定长度矢量作为输入。另一方面,卷积层接受任意大小的输入。卷积层使用滑动滤波器,它们的输出具有与输入大致相同的宽高比。这些输出称为特征图,它们不仅涉及响应的强度,还涉及它们的空间位置。

      在图2中,我们可视化一些特征图。它们由conv5层的一些卷积核生成。图2(c)显示了ImageNet数据集中这些卷积核的最强激活图像。我们看到过滤器可以被一些语义信息激活。例如,第55个过滤器(图2,左下)由圆形激活等。输入图像中的这些形状激活相应位置的特征图(图2中的箭头)。
     值得注意的是,我们在不修复输入大小的情况下生成图2中的特征图。由深度卷积层生成的这些特征图类似于传统方法中的特征图。在那些方法中,SIFT矢量或图像块被提取然后编码,例如,通过矢量量化,稀疏编码或Fisher内核。这些编码特征组成特征图,然后由Bag-of-Words或空间金字塔池化。类似地,深度卷积特征可以以类似的方式池化。

2.2、空间金字塔池化层

       卷积层接受任意输入大小,但它们也产生可变大小的输出。分类器(SVM / softmax)或全连接层需要固定长度的矢量。这些向量可以通过将特征汇集在一起​​的Bag-of-Words方法生成。空间金字塔池化改进了BoW,因为它可以通过在局部空间中pooling来维护空间信息。这些空间区间的大小与图像大小成比例,因此无论图像大小如何,区域的数量都是固定的。这与先前深度网络的滑动窗口池化相反,其中滑动窗口的数量取决于输入大小。
       为了对任意大小的图像采用深度网络,我们用空间金字塔池化层替换最后的池化层(例如,在最后一个卷积层之后pooling 5)。图3说明了我们的方法。在每个空间区间中,我们池化每个过滤器(图中最后一层卷积有256个滤波器)的响应(在本文中,我们使用最大池化)。空间金字塔池的输出是kM维向量,其中区域的数量表示为M(k是最后卷积层中的滤波器的数量)。固定维度的向量被输入到全连接层中。

         通过空间金字塔池化,输入图像可以是任何大小。这不仅允许任意宽高比,还允许任意比例。我们可以将输入图像的大小调整为任何比例并应用相同的深度网络。当输入图像处于不同比例时,网络(具有相同的滤波器大小)将提取不同比例的特征。尺度在传统方法中起着重要作用,例如,SIFT矢量通常在多个尺度上提取。我们将证明尺度对于深度网络的准确性也很重要。
         有趣的是,最粗略的金字塔会覆盖整个图像。这实际上是一个“全局池化”操作,也在几个其他研究中进行了调查。在[31],[32]中,全局平均池化用于减小模型大小并减少过度拟合;在[33]中,在所有fc层之后的测试阶段使用全局平均池化以提高准确性;在[34]中,全局最大池化用于弱监督对象识别。全局池操作对应于传统的Bag-of-Words方法。

2.3、训练网络

        从理论上讲,无论输入图像大小如何,上述网络结构都可以通过反向传播进行训练。但实际上,GPU实现最好在固定输入图像上运行。接下来,我们将描述我们的训练解决方案,该解决方案利用GPU实现,同时仍然保留空间金字塔池化。

单个输入大小训练

     与之前的工作一样,我们首先考虑从原始图像中裁剪固定大小的输入(224×224)的网络。裁剪是为了数据增强。对于给定大小的图像,我们可以预先计算空间金字塔池所需的bin尺寸。考虑在conv5之后具有a×a(例如,13×13)的大小的特征图。使用金字塔等级为n×n的bin,我们将此池化等级用滑动窗口实现。使用L级金字塔,我们实现L个这样的层。下一个全连接层(fc6)将连接L个输出。图4显示了3级金字塔(3×3,2×2,1×1)的配置示例。
      我们的单一大小训练的主要目的是启用多级池化。实验表明,这是获得准确性的一个原因。

多个输入大小训练

      我们的SPP网络希望应用于任何规模的图像。为了解决训练中不同图像尺寸的问题,我们考虑一组预定义的尺寸大小。我们考虑两种尺寸:除了224×224之外还有180×180。我们将上述224×224区域的大小resize为180×180,而不是裁剪较小的180×180区域。因此,两种尺度的区域仅在分辨率不同,而不体现在内容/布局。为了使网络接受180×180输入,我们实现了另一个固定大小输入(180×180)网络。在这种情况下,conv5之后的特征图大小是10×10。然后我们仍然使用win = a/n和str=a/n来实现金字塔池化每个级别。该180-网络的空间金字塔池化层的输出与224-网络长度相同。因此,该180-网络和224-网络每层都有完全相同的参数。换句话说,在训练期间,我们通过两个共享参数的固定大小的网络实现输入大小变化的SPP-net。

       为了减少从一个网络(例如224)切换到另一个网络(例如,180)的开销,我们在一个网络上训练每个完整的epoch,然后切换到下一个完整epoch,其间保持所有权重。这是迭代的。在实验中,我们发现这种多尺寸训练的收敛速度与上述单一尺寸训练类似。
       我们的多尺寸训练的主要目的是模拟不同的输入尺寸,同时仍然利用了存在的良好优化的固定尺寸的网络。除了上面的两种规模的实现,我们还测试了一个使用s×s作为输入的变体,其中s是随机从[180,224]中抽样。我们在实验部分报告了结果。
        请注意,上述单/多尺寸解决方案仅供训练使用。在测试阶段,可以直接在任何尺寸的图像上应用SPP-net

 

中间试验部分略过。本文在阅读是主要注重网络结构与算法。

4、用于目标检测的SPP-net

       深度网络已被用于对象检测。我们简要回顾一下最新的R-CNN方法。 R-CNN首先通过选择性搜索从每个图像中提取约2,000个候选窗口。然后将每个窗口中的图像区域warp成固定大小(227×227)。预训练的深度网络用于提取每个窗口的特征。然后,对这些特征进行SVM二分类器的训练以进行检测。 R-CNN产生令人信服的质量结果,并且大大优于以前的方法。但是,由于R-CNN每个图像都要将深度卷积网络应用于约2,000个窗口,因此非常耗时。特征提取是测试中的主要时间瓶颈。
       我们的SPP-net也可用于物体检测。我们只从整个图像中提取一次特征图(可能是多个尺度)。然后,我们在特征图上的每个候选窗口上应用空间金字塔池化,为了得到该窗口的固定长度表示(参见图5)。因为耗时的卷积仅应用一次,所以我们的方法快了几个数量级。


       我们的方法从特征图的区域中提取窗口特征,而R-CNN直接从图像区域中提取。在以前的工作中,DPM从HOG特征图中的窗口中提取特征,而选择性搜索(SS)方法从SIFT特征图中的窗口中提取。 Overfeat检测方法也从深度卷积特征图的窗口中提取,但需要预定义窗口大小。相反,我们的方法使得能够从深度卷积特征图中以任意窗口提取特征。

4.1、检测算法

       我们使用选择性搜索的“fast”模式来为每个图像生成大约2,000个候选窗口。然后我们调整图像大小以使min(w; h)= s,并从整个图像中提取特征图。我们暂时使用ZF-5(单一尺寸训练)的SPP-net模型。在每个候选窗口中,我们使用4级空间金字塔(1×1,2×2,3×3,6×6,共50个区域)来池化特征。这为每个窗口生成12,800维(256×50)表示。这些表示被提供给网络的全连接层。然后,我们为这些特征上的每个类别训练线性SVM二分类器。
      我们遵循[20],[7]对SVM训练。我们使用ground-truth窗口来生成正样本。负样品是与正样本重叠最多30%的样本。如果任何负样品与另一个负样品重叠超过70%,则将其除去。我们应用标准hard negative mining来训练SVM。此步骤迭代一次。所有20个类别的SVM训练时间不到1小时。在测试中,分类器用于对候选窗口进行打分。然后我们对评分窗口上使用非最大抑制(NMS)。

     我们的方法可以通过多尺度特征提取来改进。我们调整图像的大小,使得min(w,h)= s \inS = \left \{ 480,576,688,864,1200\right \},并为每个尺度计算conv5的特征图。结合这些尺度的特征的一种策略是逐个通道地池化它们。但我们凭经验发现另一种策略可以提供更好的结果。对于每个候选窗口,我们选择单个尺度s\inS,使得缩放的候选窗口最接近224×224(为何要最接近224?)。然后我们只使用从该尺度提取的特征图来计算该窗口的特征。如果预定义的尺度足够密集且窗口大致为方形,我们的方法大致相当于将窗口大小调整为224×224,然后从中提取特征。然而,我们的方法仅需要从整个图像计算一次特征图(对每个尺度来说),而不管候选窗口的数量。

      我们还根据[7]微调了我们预训练的网络。由于我们的特征是来自Conv5中任意大小的窗口池化而成,为简单起见,我们只对全连接层进行微调。在这种情况下,数据层在conv5之后接受固定长度的合并特征,并且随后是fc6,7层和新的21类(包括一类背景负样本)的fc8层。用高斯分布σ= 0.01初始化fc8权重。我们将所有学习率固定为1e-4,然后将所有三个层调整为1e-5。在微调期间,正样本是那些与ground-truth重叠0.5-1的样本,负样本是0-0.5。在每个batch中,25%的样品是正样本。我们使用学习率1e-4训练250k次batch,然后使用1e-5训练50k次bacth。因为我们只对fc层进行微调,所以训练速度非常快,在GPU上花费大约2个小时。在[7]之后,我们使用边界框回归来对预测窗口进行后处理。用于回归的特征是conv5的池化特征。用于回归训练的窗口是与ground-truth重叠至少50%的窗口。

SPP的一些总结:

  1. 提出了spp-net结构,可以对不同比例、尺度的输入图片进行训练,在conv5后使用空间金字塔池化层代替原始的最大池化层,生成了固定长度的特征向量输入到全连接层中,由于原始图片没有经过resize/warp操作,保留了一定的原始信息。
  2. 这种思想蛮值得学习的,尤其在SPP在检测中的应用,可以将原图中的ROI对应到卷积的Conv5层的区域,具体映射关系。还有论文中对多尺度训练的说明,凭经验对多个尺度中只取了224*224大小窗口的特征。

参考链接 : https://blog.youkuaiyun.com/u011534057/article/details/51219959#t1

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值