Spp-Net阅读笔记

原文题目《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》

链接 https://arxiv.org/abs/1406.4729

一、摘要

    当时的CNN要求输入的图片是一个固定大小。相对于原图或任意大小的子图来说,这个要求降低了识别的准确率。他们运用了空间金字塔池化(Spatial Pyramid Pooling )策略,避免了需要固定大小输入的要求。同时他们提出了新的cnn结构,命名为SPP-Net,它能对任意大小的输入图片生成一个固定长度的特征表示(特征向量,也是为了满足全连接部分的需要)。测试表明,在不同设计的cnn中加入spp策略能提高他们识别的准确率。
    在目标检测中,SPP-Net能一次计算出一整张图像的特征图。然后在任意区域池化特征生成固定长度的特征表示。这样避免了重复的卷积计算特征图。

二、引言

    引言部分主要讲了当时的cnn需要固定大小的输入是因为全连接层部分的需要,而卷积层和池化层部分由于使用滑动窗口输入大小可以不固定。
    他们的spp-net是在一般的卷积神经网络最顶层的卷积层后面加一层SPP层。
    SPPnet作用(创新点):
        1、生成固定长度的的输出,用于全连接网络。
        2、SPP比一般的滑动窗口池化对于目标的形态更具有鲁棒性。

三、带有空间金字塔池化的深度网络

3.1卷积层和特征图

    特征图是卷积层的输出、特征图不仅于响应长度(我的理解是激活特征)有关、还与目标的空间位置有关。

3.2空间金字塔层

    空间金字塔层的输出是一个K*M维度的向量,k是最后一层卷积层输出的特征图的数量,M是空间箱子的数量,如下图,M=16+ 4+1=21,空间箱子就是一个个的小格子,对每个格子内的特征进行池化。格子大小是与输入图像(空间金字塔层的输入)大小成比例的。所以格子的数量是固定的,与输入图像大小无关。Spp-Net阅读笔记_第1张图片

3.3训练网络

    金字塔池化层的训练可以用三次滑动窗口来实现,如网络的最顶层卷积层输出的每张特征图的尺寸是13*13,那么要把每张特征图分别划分4*4、2*2、1*1大小来进行max池化。那么三次滑动窗口大小( w i n = ⌈ a / n ⌉ win=\lceil a/n \rceil win=a/n)分别是 4 = ⌈ 13 / 4 ⌉ 4=\lceil13/4\rceil 4=13/4 7 = ⌈ 13 / 2 ⌉ 7=\lceil13/2\rceil 7=13/2 12 = ⌈ 13 / 1 ⌉ 12=\lceil13/1\rceil 12=13/1,步长( s t r = ⌊ a / n ⌋ str=\lfloor a/n \rfloor str=a/n)分别是 3 = ⌊ 13 / 4 ⌋ 3=\lfloor13/4\rfloor 3=13/4 6 = ⌊ 13 / 2 ⌋ 6=\lfloor13/2\rfloor 6=13/2 12 = ⌊ 13 / 1 ⌋ 12=\lfloor13/1\rfloor 12=13/1

四、spp-net目标检测

步骤如下:
    1、先用选择搜索算法生成2000多个候选框。
    2、对于一整个图片提取一次特征图。
    3、找到每个候选框在特征图上的映射。
    4、对每个候选框的特征映射进行金子塔池化。
    5、把金字塔池化层输出的提供给全连接部分。
    6、全连接部分输出的表示(svm中叫特征向量)用于训练svm,正例是正确的目标框(即人工标记的边界框),负例是IOU值小于0.3的候选框。Spp-Net阅读笔记_第2张图片

你可能感兴趣的:(深度学习)