SPP-Net

0. 参考

https://zhuanlan.zhihu.com/p/34053764

1. 论文概况

1. Motivation

当前的CNNs,fc需要固定大小的输入,因此需要输入图像尺寸固定,于是crop/warp,但这样可能会产生物体截断或拉伸,会导致输入CNN的图像信息丢失,降低了识别的精度。

提速:只做一次CNN特征提取,然后将每个region proposal的卷积层特征输入到全连接层做后续操作;现在的问题是每个region proposal的尺度不一样,直接这样输入全连接层肯定是不行的,因为全连接层输入必须是固定的长度,于是提出了SPP-Net。

2. 解决什么问题?

  • R-CNN需要对图片的每个proposals都提取特征,速度慢、且占用大量资源。

3. 提出了什么方法?

  1. 采用空间金字塔池化(Spatial Pyramid Pooling )替换了全连接层之前的最后一个池化层,于是没必要进行crop/warp图像归一化过程,且仅需做一次CNN特征提取即可(卷积共享)

4. 效果如何?

  • 分类任务:在各CNN结构模型上的表现均有提升;
  • 物体检测任务:大幅度提高的训练、测试速度,精度也有显著提升(ImageNet2014 排名第二),为后续的Fast R-CNN提供了思路。

5. 还存在什么问题?

  • 因为SPP融合了多个不同的maxpooling,训练时BP比较麻烦,无法将梯度回传到backbone进行参数更新,因此在微调网络的时候固定了卷积层,只对全连接层进行微调,而对于一个新的任务,有必要对卷积层也进行微调。(分类的模型提取的特征更注重高层语义,而目标检测任务除了语义信息还需要目标的位置信息)。
  • 和RCNN一样,训练过程仍然是隔离的,提取候选框、计算CNN特征、SVM分类、Bounding Box回归独立训练,所以大量的中间结果需要转存,无法整体训练参数;
  • SPP-Net在无法同时Tuning在SPP-Layer两边的卷积层和全连接层,很大程度上限制了深度CNN的效果;
  • selective search产生proposals仍然很耗时;

2. 核心思想

2.1 空间金字塔池化——SPP

当输入的feature map尺寸不一致时(这里指的是feature map的长、宽不一致,但通道数保持一致),输出的特征向量纬度保持一致。

SPP代替原有的maxpool,作为卷积层与全连接层之间的桥梁,使得全连接层的输入尺寸固定,网络输入图像尺寸不固定。

image

image