Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition视觉识别空间金字塔池化深度卷积网络
视觉识别空间金字塔池化深度卷积网络
本文解决的问题
① 已有的卷积神经网络的输入都要求大小固定(例如R-CNN等),因此需要对输入进行强行裁剪或者放缩,这会导致目标信息的损失以及额外的图像预处理时间。
原因:
因为卷积神经层后都添加了全连接层,而全连接层的神经元数量是固定的,即这对卷积层的输出的大小要求固定,因而要求网络的输入固定。
② R-CNN中需要对2000个region proposals 都逐一进行卷积运算得到特征,计算量过大且速度过于慢
解决方法
问题①
SPP-Net网络结构设计:
SPP(Spatial pyramid pooling,空间金字塔池化)也称为spatial pyramid matching,是Bag-of-Words模型的一个拓展,有以下特点:
① 对于任何尺寸大小的输入能够生成一个固定长度的输出
② SPP中使用了多尺度的运算窗口,相比于固定窗口更具有鲁棒性
③ 因为输入尺度比较灵活,SPP可以汇集不同尺度所提取的特征
因此在CNN中引入SPP,就可以有效地解决输入大小固定导致的问题。
问题②
SPP-Net中将SPP位置放置在卷积层后,仅对原始输入图片进行卷积处理,而后在卷积后的特征图上利用selective search提取出2000多个region proposals文中称为(window),再逐一各个proposal进行SPP池化提取对应的特征向量,再通过两层全连接层得到用于分类的特征向量,再利用SVM进行分类,这部分与R-CNN相似。
图中第一个为R-CNN结构,第二个结构为SPP-Net结构
直接在特征图上提取推荐区域,可以充分利用共同计算资源,避免重复运算,从而提高速度,其结构示意图如下图:
论文中的空间金字塔池化采用了三个尺度进行池化,分别为1×1,2×2,4×4,即将proposals划分为1、4、16个区域,对每个区域分别进行池化, 对于一个proposal,能够分别得到N×16,N×4,N×1的向量,即能够得到长度21×N长的特征向量。其中N为最后一层卷积层的维数。
训练策略
因为Caffe等GPU平台更适合固定尺寸的输入进行训练,所以本文在训练的时候还是固定尺寸输入的。
论文中首先使用固定输入尺寸224×224训练了一个SPP-Net网络并测试了其性能;而后为了达到在训练中使用不同尺寸的输入,作者又构建了一个输入尺寸为180×180的网络,网络结构与224×224输入的网络完全相同,并且180×180的图片是由224×224图片缩放得到的,因此两个网络除了输入尺寸,参数数量等等完全相同。在训练时作者使用交替训练的方法,在224×224网络上训练一个epoch,然后再到180×180网络上训练一个epoch,再到224×224上训练…。两个网络参数是共享的,这样就相当于使用尺寸不同的输入训练一个网络,这样交替训练完全是因为当时Caffe等框架的限制。
SVM等分类器的训练与R-CNN中无异。
实验结果
在VOC2007数据集上的检测结果:
检测时间方面对比R-CNN如上图,提升了将近100倍,达到了每张图片处理时间为0.142s:
其它分类等的实验结果详情请见论文原文:论文地址。