Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition原文链接
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition阅读笔记
一、解决问题
现有的深度卷积神经网络(CNN)需要固定大小(例如,224×224)的输入图像。这种要求是“人为的”并且可能损害任意尺寸/比例的图像或子图像的识别精度。
二、解决方法
(一)基础原理
涉及了一种空间金字塔池化结构(Spatial Pyramid Pooling),可以将任何尺寸的特征图池化为固定尺寸。将这个结构置于卷积模块和全连接模块之间,用于将卷积模块在各种尺寸图像上抽取的各种尺寸的特征图池化为统一维度的向量,就满足了全连接模块对于固定维度输入的要求。SPP原理图如下。SPP在3个尺度(4x4,2x2,1x1)上进行了池化(最大池化),使特征的表征性更加饱满。与传统结构流程对比图如下。这种改进后的流程允许了各种尺寸的图像作为输入,为通过图像拉伸等尺寸变换的数据增加方法提供了前提。
(二)在R-CNN上的应用
原始R-CNN反复将深度卷积网络应用于每个图像中提取的约2,000个窗口,因此非常耗时,特征提取是测试中的主要时间瓶颈。
而将SPP-net用于目标检测,只需从整个图像中提取一次特征图(可能是多个尺度)。然后,使用空间金字塔池化层对特征图上的每个候选窗口分别进行池化,以汇集该窗口的固定长度表示(参见下图)。因为耗时的卷积网络只应用一次,可以更快地运行。
那么特征图上的候选窗口是怎么得到的呢?
在原图像上进行SS算法可以得到很多候选区域,这些个候选区域都可以通过映射在特征图上找到相同位置对应的窗口。
在检测的后面模块,仍然和R-CNN一样,使用SVM和边框回归。SVM的特征输入是最后的全连接层,边框回归特征使用SPP层。
三、效果
比R-CNN快10-100倍,精度也有所提高。
不足:卷积部分无法微调,因此无法使用较深层的卷积。