Fork me on GitHub

论文笔记《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》

0. 摘要


  1. 现有的卷积神经网络要求输入图片为固定尺寸,也就是说做用CNN图像识别时要对输入图像进行尺寸归一化,这样做可能会影响识别准确率。

  2. 在图像物体检测任务中,一般来说先需要对图像进行窗口扫描生成候选窗口,然后以窗口图像为输入逐个判断。这个过程中有很多重复计算:提取卷积特征(即全连接层之前的所有层)并不要求输入图像尺寸固定,所以单张图像实际上只需计算一遍卷积特征即可。

本文要介绍的SPP-net便解决了上述两个问题,并在2014年ImageNet的物体检测比赛中取得第二名,图像分类比赛中取得第三名。

1. DEEP NETWORKS WITH SPATIAL PYRAMID POOLING


1.1 Convolutional Layers and Feature Maps

常规的DeepCNN都要求输入图像尺寸固定,这是因为在全连接层中要求输入固定长度的特征向量,而全连接层之前的卷积pooling层并不严格要求输入图像的尺寸固定。卷积pooling层的输出尺寸比例基本和输入图像的尺寸比例一致,这些输出就是所谓的特征图(feature map)。特征图不仅仅反映输入图像对特征响应的强度信息,还反映出空间位置信息,如图1所示,图(a)中箭头位置对应图(b)filter中响应最强烈位置,图(c)中的绿色矩形区域对图(b)的filter有强响应。

feature-map

图1 可视化特征图

1.2 The Spatial Pyramid Pooling Layer

由于卷积层接受任意尺寸的输入,对应的输出也是变化的尺寸,本文中使用Spatial Pyramid Pooling Layer代替最后一层pooling层,使任意尺寸的卷积层输出经过SPP层之后,输出固定大小特征向量。如图2所示,在每一个空间块(如图中蓝色矩形中有4x4个空间块)中做pooling,每一个空间块的大小因feature map的大小而定,最后输出为k * M维向量(k为最后一层卷积层的filter数目,如图中为256,M为空间块的数目)。最后输出的固定长度向量作为全连接层的输入。

spp-net

图2 SPP layer

1.3 Training the Network

给定一张输入图像后,我们可以预先计算出SPP层的相关参数。假设经过前面的卷积层之后feature map尺寸为$a * a$,对于一个有$n * n$个空间块级别的pooling,它的pooling窗口大小$win = ceiling(a/n)$,它的步长$stride = floor(a/n)$。最后将所有级别的pooling的输出连接起来作为全连接层的输入(如图2种有三个级别:4x4, 2x2, 1x1)。

论文中提到了single-size训练和multi-size训练,single-size训练中输入尺寸只有一种(224 x 224), 而multi-size训练中有两种size:(180 x 180,224 x 224)。

2. SPP-NET FOR IMAGE CLASSIFICATION


根据作者在ImageNet2010数据集上的图片分类实验,得到如下结论:

  1. multi-size训练有助于提升准确率。

  2. 全图有助于提升准确率。

  3. 多级别的pooling有助于提升准确率。

  4. 在feature map上取multi-view(multi-window),然后平均化softmax的预测分数,进一步地再加入多尺寸,同样有助于提升准确率。

3. SPP-NET FOR OBJECT DETECTION


首先采用selective search方法产生候选窗口,将窗口映射到feature map上,在每一个候选窗口上将会产生固定大小的特征维度,以此为特征变可用于训练物体检测的二分类器。

window

转载请注明出处:BackNode

My zhiFuBao

Buy me a cup of coffee

blogroll

social