He, K.; Zhang, X.; Ren, S. & Sun, J.
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
Computer Vision – ECCV 2014
前情提要
动机
想说的很多其实已经在 Notes on CVPR-06-Spatial Pyramid Matching 里面说过了,所以这篇简短一些。
引入 Spatial Pyramid Pooling 的 Motivation 是为了解决图像分类问题中网络要求固定大小输入的问题。而之所以要求固定大小是由于全连接层的存在,全连接层要求输入固定。在不能取消掉全连接层的情况下,迫于全连接层的淫威,喂给全连接层固定大小的输入要么只能网络一开始的输入就是固定的,要么在喂给全连接层之前加一个操作是的不同大小的 feature map 都转化成了一样大小的 feature。这个问题其实在上一个 CV 流行范式 SIFT + SPM + SVM 里面也存在,因为对于整幅图像 SIFT 抽的是特征集合,不同图像的集合元素个数不同,而 SVM 要的是固定输入。所以 Kaiming 大神 borrow 了 Spatial Pyramid Matching 中 Spatial Pyramid 的概念到 CNN 中,解决了 fixed-size input 的问题。具体请见 Notes on CVPR-06-Spatial Pyramid Matching。
在解决了 Image Classification 的 Fixed Size Input 问题后,给 Object Detection 带来了一个直接的好处,就是可以 Share Computation 了,也就是 Forward 只需要计算一次。先来看之前 R-CNN 是怎么做的(具体请看 Notes on CVPR-14-R-CNN),对于每一个 Proposal 都要 resize 到固定大小然后再输入,之所以 Proposal Input 要 resize 到同样的大小是因为 R-CNN 用的 AlexNet 对输入的要求就必须是 fixed-size 的。有了 SPP 后,我们可以计算出 Proposal 在 最终 convnet 抽取的 Feature Map 上的映射区域然后做 SPP 得到固定大小的向量输入到全连接层。这个想法很直接,既然是全连接层要求固定输入,那么只要喂给全连接层固定输入就好了,不用管这个固定输入是一开始就固定的还是在全连接层前面刚刚变换成固定长度的。
如果您觉得我的文章对您有所帮助,不妨小额捐助一下,您的鼓励是我长期坚持的动力。