一般的网络(如AlexNet),由于全连接层的存在,要求输入图片的尺寸是固定大小的(如224 * 224),这就需要将原始图片裁剪或形变。但是裁剪出的区域可能不包含整个物体以及形变可能导致我们不想看到的几何失(如图一所示),识别准确率就可能因此下降。文中提出的SPP就是为了解决输入尺度固定的问题。
SPP
如图二所示,设特征映射m的尺度是a * a,将m分成单金字塔层次的n * n组, 则window = ceil(a / n),stride = floor(a / n)。对于多金字塔层次同理(如图二就是3层次金字塔—— 1 * 1, 2 * 2, 4* 4)。这样就能生成固定长度的表征。
多层次池化(multi-level pooling)对物体形变更鲁棒。
多尺度训练
文中多尺度训练采用的是在一个epoch内采用同一尺度(如224),在另一个epoch使用另外一个尺度(如180)。
图像识别实验
可以看到SPP和多尺度训练是有助于提高识别准确率的。
结合图三、图四,可以看到多视角的结果比单视角的结果好。单视角下,全图比局部好。
目标检测实验
RCNN测试的时候对每个RP都提取特征,重复计算很多。使用SPPNet的话一次提取整张图片特征,将RP投影到pool5,提取对应的RP特征,极大地减少了计算量。
文中写到,为简化训练,只fine-tune全链接层。训练方式和RCNN一样。
参考文献
1. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition