一、为什么提出SPP-net
- 传统的CNNs网络的不足:对输入图像要求固定尺寸,其原因是网络最后面的全连接层要求是固定长度的特征向量。
- R-CNN框架发现,对图像提完region proposal(2000个左右)之后将每个proposal当成一张图像进行后续处理(CNN提特征+SVM分类),实际上对一张图像进行了2000次提特征和分类的过程,速度很慢!
二、什么是SPP-net
在CNN网络中最后一个卷积层与全连接层之间,嵌入SPP层,对前一个conv层的子区域(对应于候选区域)进行空间金字塔池化(SPP),输出一个固定长度的特征表示。如下图所示,SPP将对应于候选区域的上一层特征图上的子区域提取固定长度特征,其方法是子区域划分为4×4、2×2、1×1的块,然后对每一个这样的块进行池化(pooling)(文章用的是max-pooling),最后将池化后的结果作为输出特征,这个特征的长度是固定的。像在下图中,256是特征图的数量,-d是dimension的意思,不是减d。
三、SPP-net的优点
- 而SPP-net的图像输入可以任意尺寸。
- 与R-CNN相比,SPP-net更快、更高效。SPP-net网络对一张图像只处理一次,直接在特征图(feature map)上用SPP提取固定长度的特征; 而R-CNN网络对每一个候选区域(一般有以千计的候选区域)都要经过CNN网络提取特征。
四、SPP-net的缺点
- 训练分为多个阶段,步骤繁琐: 微调网络+训练SVM+训练训练边框回归器
四、SPP-net的适用场合
- 图像分类(image classification)
- 目标检测(object detection)