SPPNet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)

SPPNet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)_第1张图片
图一 SPPNet示意图

一般的网络(如AlexNet),由于全连接层的存在,要求输入图片的尺寸是固定大小的(如224 * 224),这就需要将原始图片裁剪或形变。但是裁剪出的区域可能不包含整个物体以及形变可能导致我们不想看到的几何失(如图一所示),识别准确率就可能因此下降。文中提出的SPP就是为了解决输入尺度固定的问题。

SPP

SPPNet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)_第2张图片
图二 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)。

图像识别实验


SPPNet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)_第3张图片
图三 ImageNet 2012 验证集在标准10-views下的错误率


可以看到SPP和多尺度训练是有助于提高识别准确率的。

SPPNet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)_第4张图片
图四 单视角下的ImageNet 2012 验证集错误率,crop用的是图片中心区域

结合图三、图四,可以看到多视角的结果比单视角的结果好。单视角下,全图比局部好。

目标检测实验

RCNN测试的时候对每个RP都提取特征,重复计算很多。使用SPPNet的话一次提取整张图片特征,将RP投影到pool5,提取对应的RP特征,极大地减少了计算量。

文中写到,为简化训练,只fine-tune全链接层。训练方式和RCNN一样。

SPPNet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)_第5张图片
图五 mAP on PASCAL VOC 2007


SPPNet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)_第6张图片
图六 mAP on PASCAL VOC 2007using the same pre-trained modelof SPP (ZF-5)

参考文献

1. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

你可能感兴趣的:(SPPNet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition))