读DL论文心得之SPP

这篇论文是Kaiming He等发表在ECCV2014上面的Spatial pyramid pooling in deep convolutional networks for visual recognition。 
本篇论文的代码也是开源的,还有一个很棒的slides。

Introduction

读DL论文心得之SPP_第1张图片

传统CNN中,直接对图像剪切和变形来达到需要的尺寸。虽然卷积的过程不要求固定尺寸,但全连接层需要固定尺寸,因为从卷积层到全连接层间的参数维数必须是固定的。这样或多或少会影响分类与检测的效果,于是本文就针对这一事实,提出一种解决方案:在卷积层和全连接层之间加一层SPP层,即spatial pyramid pooling,用于池化特征,生成固定长度的输出,送入全连接层。 
这样的明显优点是速度非常快,准确率有提高(依然用了selective search来提取区域建议,因此整体检测速度并不是很快)。

SPP

流行的7层CNN由5个卷积层(有些带pooling层)、2个全连接层、1个softmax层组成。SPP是在卷积层后,用空间盒将卷积特征池化到一起,这张图中的256是conv5的滤波器数量,每个格子都是256维的。下面是详细的说明:

单一尺度的训练

在训练中,conv5有axa的输出,金字塔有nxn个盒(bins)。 
窗口  
步长  
金字塔有l 级,输入到fc6的是这l 级输出连接起来。 
eg. conv5是13x13的,有pool3x3、pool2x2、pool1x1这样3种size的盒,共有256个13x13的滤波器。 
读DL论文心得之SPP_第2张图片

多个尺度的训练

假设有224x224和180x180两种尺度的输入图像(其中180x180是由224x224缩放所得)。conv5的特征分别为224x224->13x13,180x180->10x10。 
相应的win和str都不同,但bin的数量是相同的都是(9+4+1)x256,后面连着全连接层。

detection

读DL论文心得之SPP_第3张图片

先在每张图上生成候选窗口,缩放图像,提取conv5特征,对每个候选窗口对应到conv5的特征用4层空间金字塔进行池化,生成12800-d(256x(1x1+2x2+3x3+6x6))特征表示,输入全连接层,再用这些特征对每个种类训练线性SVM分类器。即特征是从整张图上计算的,而池化是在候选窗口上执行的,可由下图看出SPP与RCNN的不同: 

一种多尺度特征提取的改进方法

简而言之,这种方法是将图片缩放到多个尺度(eg.{480, 576, 688, 864, 1200}),得到6组特征映射(还有一组是原本的尺度),对于每个候选窗口,选择让它最接近224x224的尺度对应的特征映射来进行提取。

results

\ SPP-net(1-scale) SPP-net(5-scale) R-CNN
mAP 58.0 59.2 58.5
GPU time/img 0.14s 0.38s 9s
speed-up 64x 24x -

你可能感兴趣的:(读DL论文心得之SPP)