现存的深度卷积网络需要固定大小的输入图片(例如,224×224)。这个要求可能降低任意大小/尺度图片/子图的识别精度。在SPPnet中,作者提出了另一个共享策略,即“空间金字塔池”,以消除上述需求。
SPPNet可以不管图片的大小都可以生成固定长度的表示。
图1 上面一行是一般的深度卷积网络的结构,下面一行是SPPNet的网络结构。
卷积层接受任意的输入大小,但是它们产生可变大小的输出。分类器(svm/softmax)或全连通层需要固定长度的向量。这样的向量可以词袋(BoW)方法生成。空间金字塔池14、15改进了词袋,它可以通过在局部空间bin的池化保持空间信息。这些空间bin的大小与图像大小成比例,所以不管图像大小,bin的数量都是固定的。这与之前的深度网络中的滑动窗口池形成了对比,在这里,滑动窗口的数量取决于输入的大小。
为了对任意大小的图像采用深度网络,我们将最后一个池层(例如,在最后一个卷积层之后的pool5)替换为空间金字塔池层。图3说明了我们的方法。在每个空间bin中,我们对每个过滤器的响应池化(在本文中我们使用max池)。空间金字塔池的输出是kM-维度向量,bin的数目是M(k是最后一个卷积层中过滤器的数量)。固定维度的向量被输入到全连接层。有了空间金字塔池,输入图像可以是任意大小的。这不仅允许任意的长宽比,而且允许任意的尺度。我们可以将输入图像的大小调整到任何规模(例如,min(w,h)=180,224,…)并应用到相同的深度网络中。当输入图像处于不同的尺度时,网络(具有相同的过滤器大小)将在不同的尺度上提取特性。在传统的方法中,这些尺度扮演着重要的角色,例如,SIFT向量通常是在多个尺度[29], [27] (由补丁和高斯滤波器的大小决定)中提取的。我们将证明,这些尺度对于深度网络的准确性也很重要。
有趣的是,最粗糙的金字塔层有一个单独的bin,覆盖整个图像。这实际上是一个“全局池”操作,它也在几个并发的工作中进行了调查。在 [31], [32]中,一个全局平均池用于减少模型的大小,并减少过度拟合;在[33],在所有fc层之后,在测试阶段使用全局平均池来提高准确性;在[34]中,一个全局最大值池用于弱监督对象识别。全局池操作对应于传统的词袋方法。
总结:
1、能对任意尺度的图像进行处理
2、通过在整张图像上计算特征图,提高了速度
SPP-net也有明显的缺点,像R-CNN,训练是一个多阶段的过程,它涉及特征提取,通过log损失微调网络,训练SVMs,最后拟合bounding-box回归其。特征也会被写入硬盘。但是不像R-CNN,SPP-net提出的微调算法不能更新超过空间金字塔池化的层。这就限制了深度网络的精度。