1. 研究问题
流行的CNN由于全连接层的存在,需要固定尺寸的输入图像,这限制了输入图像的纵横比和尺度,当前方法主要通过裁剪或变形将输入图像变换到固定尺寸,这样会导致图像内容的丢失或失真,从而影响图像识别的准确性。
2. 研究方法
将空间金字塔池化(SPP)加入卷积网络中,生成固定长度的输出特征,而与输入图像的尺寸无关,然后将该特征馈入全连接层或分类器中,完成各种视觉任务。
空间金字塔池化层(The Spatial Pyramid Pooling Layer)
文章以AlexNet为例,讨论SPP layer。AlexNet包括五层卷积层和两层全连接层,在最后一层卷基层后面加上SPP层,如图所示,
上图解释如下图,
金字塔池化是分等级的,每一级的大小都用 n*n bins来描述,意思是经过该等级的池化操作后,输出特征图的大小就是 n*n。那么如何做到这一点呢,因为我们池化都是用滑动窗口来实现的,这涉及到滑动窗口大小和步长。金字塔池化的精髓就是滑动窗口的大小和步长是正比于输入图像的大小的,这样就能够产生大小(长度)的输出特征了。如下公式所示。
因此,Fig4中不管conv5特征图的尺寸是多少,经过SPP后都产生15*256的输出,然后送入全连接层中进行下一步的分类等操作。
卷积层的输出特征图的尺寸会根据输入图像的尺寸发生变化,因此,加入了SPP模块,SPPNet就可以处理任意尺寸输入的图像进行训练和测试了。
SPP模块有以下三个优点:
- 输出特征长度固定,与输入无关。
- 多级池化提取多尺度特征,使网络对对象变形更加鲁棒。
- 可以处理不同尺寸的输入图像,提升网络的性能。
3. 实验结果
4. 结论
SPP 模块使得SPP-Net能够输入不同尺寸的图像,并提取多尺度特征,极大的提升了网络的性能。