英文原文链接: link.
前言:2015年IEEE上的经典paper《Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition》
基本思想
为了解决R-CNN候选区域缩放后的畸变问题和提取特征时的重复计算导致了模型性能和速度的瓶颈,何凯明等人提出了SPP-net,在保证性能的同时,检测速度也有了较大的提升。
复制后分成4x4, 2x2, 1x1的块,然后Max-Pooling,这样无论window大小如何,经过SPP层之后都得到了一个固定长度为 (4x4+2x2+1)x512维的特征向量R -CNN需要对候选区域进行缩放的原因是全连接层的输入维度必须固定。
整个网络包含底部的卷积层和顶部的全连接层,卷积层能够适应任意尺寸的输入图像,产生相应维度的特征图,但是全连接层不同,全连接层的参数是神经元对于所有输入的连接权重,即如果输入维度不固定,全连接层的参数数量也无法确定,网络将无法训练。为了既能固定全连接层的输入维度又不让候选区域产生畸变,很自然的想法就是在卷积层和全连接层的衔接处加入一个新的网络层,使得通过该层后特征的维度可以固定,在SPP-net中引入的空间金字塔池化层(Spatial Pyramid Pooling Layer, SPP Layer)就是这样一种网络层,SPP-net也因此得名,另外也解决了R-CNN重复计算的问题。
检测流程
(1)输入一幅待检测图像;
(2)提取候选区域:利用Selective Search算法在输入图像中提取出约2000个最有可能包含目标实例的候选框;
(3)候选区域尺度缩放:候选区域长宽中的较短边长度进行统一,即min(w, h)=s, s∈{480, 576, 688, 864, 1200},s取值标准是使得统一后的候选区域尺寸与224*224最接近;
(4)特征提取:利用SPP-net网络结构提取特征;
(5)分类与回归:根据所提特征,利用SVM进行分类,用边框回归器微调候选框的位置。
优点 & 问题
1实现了任意尺寸输入,固定大小输出。
2大大降低了计算时间。【R-CNN遍历一个CNN 2000次,而SPP-net只遍历了1次,而两者最后都是采用SVM算法进行特征向量分类识别】。
但R-CNN的其它问题,如训练步骤繁琐、磁盘空间开销大等然有待解决。