Spatial Pyramid Pooling

《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》
可能GoogLenet和Oxford VGG太过于出名了,掩盖了这篇论文介绍的SPP-net,至今才读到这篇论文。
SPP-net在ILSVRC2014比赛中,排名第三,单个模型精度排名第二(仅次于VGG)。
这篇论文的贡献不是提出了新的网络结构,而是引入了新的池化层,将多尺度操作以及crop操作放到最后一个卷积层的特征图上,后来的R-MAC(regional maximum activation of convolutions)可能就借鉴了这种思想。

发现问题

一般的,由于CNN要求固定大小的输入,因此需要对输入图片进行预处理,比如先将最短边缩放到预定大小s(常见的为256),然后从图片中间裁剪出s×s的图片块作为输入;或者在目标检测中,需要将boundingbox中的内容warp到s×s。这样会带来两个问题:

  1. crop操作可能包含不了这个对象,warp操作会带来形变。

    这里写图片描述

  2. 固定的输入大小本身就忽略了对象的尺度问题。

为什么CNN要求固定输入?
卷积层和最大池化层是滑动窗操作,可以接受任意大小的图片输入。而全连接层是向量(输入)与矩阵(参数)乘操作,因此需要固定大小的输入。

如何更改?
只要保证全连接层的输入维度不变即可。也就是保证最后一个池化层的输出维度不变,图示如下:
这里写图片描述

SPP-Layer

这里写图片描述

图中256表示特征图通道数目,16(4×4),4(2×2),1表示池化后输出特征图的空间大小。
如果输入特征图大小为a×a,输出大小为n×n,spp层需要动态计算池化窗的大小以及步长。 win=a/n str=a/n
这里论文还是以正方形为例,其实可以输入特征图可以是矩形,比如a×b,那么池化窗也就是矩形了。
这里写图片描述

Multi-size training

论文中使用了两个size:180×180和224×224。我们知道224×224是从256×256的输入图像上crop得到的,180×180不是重新crop的,而是将224×224缩放得到。尽管输入大小不同,但是两个网络的参数个数完全相同(spp层的动态调整,参考上图,180×180对应conv5特征图大小为10×10 ),因此可以通过权值共享来训练。

实验结论

1、Multi-level Pooling Improves Accuracy
  实验使用了4-level的金字塔:{4×4, 3×3, 2×2, 1×1},总共30个bins,相比常见的maxpooling成6×6,使用的参数少,效果却更好。
2、Multi-size Training Improves Accuracy
3、Full-image Representations Improve Accuracy
  只是将图片最短边缩放到256,保持纵横比,不裁剪,直接作为输入。
4、Multi-view Testing on Feature Maps
  在test阶段,常见的是10-view( one at the center, four at the corners,with/without flipping )。这样做需要forward 10次。如果直接在最后的卷积层上做multi-view,只需forward full-image一次。
  实验表明:10-view prediction on feature maps is within 0.1% around the error of the original 10-view prediction on image crops.

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值