SPP-net 解读:用 SPP 解决 CNN 的 fixed-size input 问题

Title: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(2015)
Link: Paper
Tips:

  1. 理解现有 CNN 的局限性,为什么 CNN 需要 fixed-size input(1 introduction)
  2. 用 SPP 解决 CNN 限制的具体方法(1 introduction)
  3. 怎么利用 GPU 训练网络(2.3)
  4. SPP-net 用于分类和检测(3,4)
  5. 模型融合用于提高准确率的策略(4.4)

Summary:

这篇文章结构清晰,比较容易阅读。

文章介绍的SPP-net 解决了 CNN 方法需要固定尺寸输入的问题,后面做了一系列实验验证网络的哪些部分提升了性能。

空间金字塔是传统的机器视觉方法,说明深度学习遇到的一些瓶颈可以借鉴底层的方法。

要注意这个网络不是专门做检测的,而是分类检测都能用的,我也是读到后面才看到。

读每一篇论文都要学习实验结果的分析方法,这篇文章提到的模型结合的方法值得学习。


Abstract

现有的CNN网络需要固定尺寸的输入,这个设置显得很“人为”并且会减少识别准确率。为解决这个问题,我们为网络配备了另一种 pooling 策略——spatial pyramid pooling(空间金字塔池)。新的网络叫做 SPP-net,可以生成定长的表示,而与图像大小/比例无关。

优势:

  • 金字塔池对图像形变鲁棒,则该网络课改善基于CNN的分类方法。
  • 使用 SPP-net,可以避免重复计算特征图。

1 INTRODUCTION

现有的CNN方法的技术局限性:输入图像必须是固定尺寸的,不符合尺寸的需要通过 crop(修剪,可能不包含整个物体)或 warp(扭曲,导致意外的集合变形)来处理,内容丢失和变形会影响准确率。

为什么CNN需要 fixed input size :CNN 包括卷积层和全连接层,卷积层对输入尺寸没要求,全连接层需要接受固定尺寸的输入。

本文通过 spatial-pyramid-pooling(SPP) 移除网络的固定尺寸限制(fixed-size constraint)。

具体方法:在 cov 层后 fc 层前插入一个 SPP 层,SPP 层可以处理特征并生成固定长度的输出。换句话说,我们在网络层次结构的较深阶段(在卷积层和全连接层之间)执行一些信息“聚合”,以避免一开始就需要裁剪或扭曲(如图 1 所示)。
在这里插入图片描述
在 CNN 出现之前,SPP 一直是分类和检测领域领先和赢得比赛的系统的关键组成部分。但是,在CNN的背景下尚未考虑过SPP。

SPP对于深度CNN具有几个非凡的特性

  1. SPP能够生成固定长度的输出,而与输入大小无关,而以前的深度网络中使用的滑动窗口池;
  2. SPP使用 multi-level spatial bins,而滑动窗口池仅使用单窗口大小。多层池已经显示出对对象变形的鲁棒性。
  3. 由于输入比例尺的灵活性,SPP可以合并以可变比例尺提取的要素。

通过实验,我们表明所有这些因素都提高了深度网络的识别精度。

SPP-net 不仅可以从任意大小的图像/窗口生成表示以进行测试,还可以让我们在训练过程中提供具有不同大小或比例的图像。

2 DEEP NETWORKS WITH SPATIAL PYRA- MID POOLING

2.1 和 2.2 就是对 introduction 部分的详细解释。

2.1 Convolutional Layers and Feature Maps

这一部分解释为什么要使用 SPP。

CNN 由卷积层和全连接层,其中全连接层的输入必须是定长向量。卷积层的输出称为特征图(feature map)。

生成特征图时并没有固定输入大小

由深度卷积层生成的这些特征图类似于传统方法中的特征图。在那些方法中,密集地提取SIFT矢量或图像斑块,然后例如通过矢量量化稀疏编码或Fisher核来编码。这些编码的要素由特征图组成,然后由词袋(BoW)或空间金字塔合并(pool)。类似的,深度卷积特征可以以类似方式合并

2.2 The Spatial Pyramid Pooling Layer

这一部分解释如何使用 SPP。

卷积层接受任意尺寸的输入,输出的尺寸也是变化的。分类器(SVM/softmax)或全连接层接受固定尺寸的向量,这种向量可以通过 BoW 方法生成,SPP 是 BoW 的提升版。

为构造任意尺寸图像的深度网络,把池化层的最后一层(卷积层后的一层)替换为 spatial pyramid pooling layer(如图 3 所示,框住的部分)。有了空间金字塔池化,输入图像的尺寸就可以是任意的,这不仅允许任意的纵横比,而且允许任意的比例。

在这里插入图片描述

2.3 Training the Network

这一部分解释如何利用 GPU 训练。

理论上,SPP-net 可以使用反向传播训练,不用考虑输入图像尺寸,但实际中,GPU实现最好在固定的输入图像上运行。

下面是训练解决方案,利用GPU实现,同时保留空间金字塔池行为。

Single-size training
首先考虑一个采用从图像中裁剪出的固定尺寸输入(224×224)的网络,裁剪是为了数据增广。

给定一个图像尺寸,我们可以提前算出SPP需要的 bin 尺寸。

单尺寸训练的主要目的是实现多级合并行为。实验表明,这是获得准确性的原因之一。

Multi-size training
考虑两个尺寸 180×180 和 224×224。与其裁剪一个较小的180×180区域,不如将上述224×224区域的大小调整为180×180。因此,两个尺度上的区域仅在分辨率上有所不同,而在内容/布局上没有差异。为了使网络接受180×180输入,我们实现了另一个固定大小输入(180×180)网络。

这个180 网络的空间金字塔池化层的输出具有与224网络相同的固定长度。这样,此180网络的参数与每一层中224网络的参数完全相同。换句话说,在训练过程中,我们通过共享参数的两个固定大小的网络来实现输入大小可变的SPP网络。

多尺寸训练的主要目的是模拟变化的输入尺寸,同时仍然利用现有的优化良好的固定尺寸实施方案。

上述单一/多尺寸解决方案是仅用于训练。在测试阶段,将 SPP-net 应用于任何大小的图像都非常简单。

3 SPP-NET FOR IMAGE CLASSIFICATION

在三个数据集上做图像分类实验,探究影响分类性能的因素。

3.1 Experiments on ImageNet 2012 Classification

在 ImageNet 2012 上的图像分类,验证了 Multi-level Pooling,Multi-size Training,Full-image Representations 可以提升分类性能。

SPP的优点与所使用的卷积网络体系结构无关。研究了现有的四种不同的网络体系结构(或其修改),并且证明了SPP可以提高所有这些体系结构的准确性。

所选的 baseline 如表 1 所示:
在这里插入图片描述
表 2 和表 3 展示的是实验结果,这里的评估标准是错误率,也就是越低越好。a 是没有 SPP 的结果,b 是使用 SPP 进行单尺寸训练的结果,c 是使用 SPP 进行多尺寸训练的结果。

Multi-level Pooling Improves Accuracy
从表 2 可以看出,a 到 b 的错误率降低,这些提升完全是由于多级池化。

值得注意的是,多级池化的获得不仅仅是因为更多参数。而是因为多层池对对象变形和空间布局的变化具有鲁棒性。

Multi-size Training Improves Accuracy
从表 2 可以看出,b 到 c 的错误率降低,这些提升是由于多尺寸的训练。
在这里插入图片描述
Full-image Representations Improve Accuracy
表 3 比较的是 single view 和 full-image view 的影响,也就是输入裁剪图片还是整个图片,实验结果表明全图像表示可提高准确性。
在这里插入图片描述

3.2 Experiments on VOC 2007 Classification

网络如何扩展:我们的方法可以生成全视图图像表示。借助在ImageNet上预先训练的上述网络,我们从目标数据集中的图像中提取这些表示,然后重新训练SVM分类器。

本部分是在 VOC 2007 上的分类,通过平均精确率 mAP 评估性能,也就是结果越高越好。

表 6 是实验结果,最后一行是最后一层输出的评估。可以看出,添加 SPP,图像从裁剪到全图,尺寸的增加,网络的改变对 mAP 都有提升。
在这里插入图片描述

3.3 Experiments on Caltech101

Caltech101 dataset 上的分类实验,结果如表 7 所示。

在Pascal VOC 2007 和 Caltech101的结果中有一些相同的观察结果:SPP网优于非SPP网(表7(b)vs.(a)),并且全视角表示比剪裁的更好( (c)与(b))。

但是Caltech101中的结果与Pascal VOC有一些差异。完全连接的层精度较差,SPP层较好。这是可能的,因为Caltech101中的对象类别与ImageNet中的对象类别相关性较低,而更深的层则更具有类别专用性。
在这里插入图片描述

4 SPP-NET FOR OBJECT DETECTION

SPP-net 也可用于物体检测。

仅从整个图像中提取一次特征图(可能以多个比例)。然后在特征图的每个候选窗口上应用空间金字塔池,以池化此窗口的固定长度表示形式。因为费时的卷积仅应用一次,所以我们的方法可以运行几个数量级。

我们的方法从特征图的区域中提取窗口方向的特征,而R-CNN直接从图像区域中提取。

4.1 Detection Algorithm

这一部分讲检测的实验设置:使用 selective search 的 fast mode,然后我们调整图像的大小,使min(w,h)= s,并从整个图像中提取特征图。使用真实的窗口来生成正样本。负样本是那些与正窗口重叠最多30%的样本

我们的方法可以通过多尺度特征提取来改进,我们也微调了网络。

4.2 Detection Results

从准确性考虑。

在 Pascal VOC 2007 dataset 做检测实验了,表 9 显示了不同层的结果。表10中,使用相同的 SPPnet 预训练模型(ZF-5)与 R-CNN 进行了进一步比较。其中 sc 指1-scale (s=688) 或 5-scale。

使用微调的fc层(ftfc6,7),我们的结果与R-CNN的微调结果相当或稍好。在边界框回归之后,我们的5尺度结果(59.2%)比R-CNN(58.5%)好0.7%,而我们的1尺度结果(58.0%)差0.5%。
在这里插入图片描述
在这里插入图片描述

4.3 Complexity and Running Time

从时间复杂度考虑。

除了有相当的准确性,我们的方法比R-CNN快得多。从图 10 的最后一行就可以看出,SPP-net 比 R-CNN 加速了很多。

4.4 Model Combination for Detection Model

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

使用相同的结构但不同的随机初始化对ImageNet中的另一个网络进行预训练,然后重复上面的检测算法,结果如表 12 所示。合并后,mAP增至60.9%。
在这里插入图片描述

5 CONCLUSION

(结论简明扼要,直接翻译了)

SPP 是一种灵活的解决方案,可以处理不同的比例,大小和纵横比。这些问题在视觉识别中很重要,但在深度网络中却很少考虑。

我们提出了一种解决方案,可以训练带有空间金字塔池化层的深层网络。生成的SPP网络在分类/检测任务中显示出出色的准确性,并大大加速了基于DNN的检测。

我们的研究还表明,计算机视觉中许多久经考验的技术/洞察力仍然可以在基于深度网络的识别中发挥重要作用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值