SPP-Net翻译理解

SPP-Net

参考链接:https://blog.csdn.net/u011534057/article/details/51219959

Title

Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition

Link

https://arxiv.org/pdf/1406.4729.pdf

Abstract

现有的卷积神经网络都需要固定尺寸的输入图像,这种需求是人工制定的,强制的图像大小或许会降低识别准确率。在研究中,我们为网络配备了另一种池化策略,“spatial pyramid pooling”—空间金字塔池化,为了消除上述需求。这种新型网络结构,我们称之为“SPP-Net”,它能够在不管输入图像大小、缩放的情况下,将图像池化为固定长度的表示。空间金字塔池化对目标变形也有很好的鲁棒性。

SPP-Net对目标检测领域同样有着重大意义,使用SPP-Net,我们可以一次计算得到整张图像的特征图,然后对特征的任意区域进行池化生成固定长度表示,并训练目标探测器。这种方法避免了重复卷积计算提取特征。

Introduction

现有技术要求,输入图像尺寸固定,对于尺寸不同的图像,通常采取crop(裁剪)、wrap(拉伸)等操作处理。

1559117888546

裁剪得到的图像,可能不包含整个目标;而拉伸,会改变目标的形状特征。

对于分类问题,都会导致分类效果不好。

而空间金字塔池化就可以消除这一问题。

为什么卷积神经网络要固定输入尺寸呢?

有两个原因:

  1. 卷积层,卷积层本身不需要固定尺寸,但是在设计整体网络结构时,需要对其尺寸进行定义。
  2. 全连接层,全连接层的输入必须是固定大小,这是从定义上给予的约束。

在本文,我们介绍了空间金字塔池化结构,移除了网络对于固定尺寸输入图像的约束。我们在最后一层卷积层的后面加入SPP层,由SPP层池化特征图并生成固定长度的输出,给予全连接层。

SPP可以通俗的理解为(spatial pyramid matching or SPM),是一个由BOW(Bag-of-Words)扩展而来的模型。

SPP-Net没有考虑到CNN的上下文内容。

SPP有几个闪光点:

  1. SPP能够不管输入图像尺寸如何,生成固定长度的输出。
  2. SPP使用多尺度空间序列,提高了对于变形目标的鲁棒性。而普通滑窗池化只有一个尺寸。
  3. SPP能够对任意尺度提取的特征进行池化。

DEEP NETWORKS WITH SPATIAL PYRAMID POOLING

Convolutional Layer and Feature Maps

考虑流行的七层架构,前五层为卷积层,其中一部分会连接一般的池化层。这些池化层也可以看做是“卷积”。最后两层是全连接层,以及一个N维的Softmax作为输出,N是类别总数。

The Spatial Pyramid Pooling Layer

卷积层接受任意尺寸的输入,但是分类器(SVM/Softmax)或全连接层都需要固定长度的向量作为输入。这些向量都可以通过BoW思想生成。空间金字塔池化改进了BoW,通过池化当前空间序列,保留了一定的空间信息。这些空间序列与图像尺寸成比例,所以序列数量就是固定的,而不管实际图像尺寸如何。与一般的池化层形成对比,池化层输出的尺寸依赖于输入尺寸。

为了适配到深度神经网络,我们替换了卷积层的最后一个池化层,Figure 3说明了我们的方法。

在这里插入图片描述

SPP的输出是一个km维的向量

k是最后一层卷积层的卷积核个数,在上图就是256

m是序列的总数,在上图就是16+4+1=21

事实上,SPP是一个全局池化的操作。

[31], [32]全局平均池化用于减小模型尺寸,降低过拟合。

[33], 全局平均池化在测试阶段连接到全连接层后,用于改进准确率。

[34], 全局最大池化用于弱监督的目标识别。

全局池化操作对应传统算法中的BoW方法。

Training the Network

理论上,在上述网络架构中,都能用标准的反向传播算法进行训练。但是在GPU上实现,最好还是选用固定尺寸的输入图像。下一步我们将描述我们的训练方法以及如何在GPU上进行实现。

Single-size training

假设最后一个卷积层输出为a×a(13×13),金字塔等级n×n的序列

池化的窗口尺寸win=1559124291641,步长str=1559124314933

单一尺度训练的主要目的是让多尺度训练成为可能,实验表明,这是提升准确率的原因之一。

Multi-size training

1559124098092

对于[pool3×3]

a=13,n=3,sizeX=13/3(向上取整)=5,stride=13/3(向下取整)=4

考虑两种尺寸,180×180、224×224。

我们将上述224 x224区域缩放为180x180,而不是裁剪更小的180x18(区域)。

因此,这两种尺度下的区域仅在分辨率上不同,而在内容/布局上完全相同。为了接受180x180的输入,我们实现了固定输入尺寸为 (180x180)的网络。

在本例中,最后一个卷积层输出的feature map大小为axa=10x10。

180网络的SPP层的输出与224网络的输出具有相同的固定长度。

因此,这个180网络在每一层都具有与224网络完全相同的参数。换句话说,在训练过程中,我们用两个共享参数的固定大小网络实现了可变输入大小的SPP-Net。

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

多尺度训练的主要目的是模拟不同的输入大小,同时仍然利用现有的固定大小的优化器实现。除了上述两种尺度的实现外,我们还测试了一个变量,使用s x s作为输入,其中s在[180,224]中,对于每个epoch中随机、均匀地采样。

可以这么说,pool level就是池化后产生的向量长度是多少,然后整个feature map根据这个pool level(比如3×3),等比例的将feature map分为9份,执行最大池化操作。公式只是在控制池化结果数的基础上,计算了每个池化窗口的大小而已。

Conclusion

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

提出了一种利用空间金字塔池化层训练深度网络的方法。结果表明,SPP-net在分类/检测任务中具有较高的精度,大大加快了基于dnn的检测速度。

我们的研究还表明,在基于深度网络的识别中,许多经过时间检验的计算机视觉技术/见解仍然可以发挥重要作用。

REFERENCES

[31] M. Lin, Q. Chen, and S. Yan, “Network in network,” arXiv:1312.4400, 2013.

[32] C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich, “Going deeper with convolutions,” arXiv:1409.4842, 2014.

[33] K. Simonyan and A. Zisserman, “Very deep convolutional networks for large-scale image recognition,” arXiv:1409.1556, 2014.

[34] M. Oquab, L. Bottou, I. Laptev, J. Sivic et al., “Learning and transferring mid-level image representations using convolutional neural networks,” in CVPR, 2014.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章