SPP-Net理解

文章没有看完,先挑几个点谈一下。算法

1. 动机

在上一篇文章的末尾提到,RCNN作了不少重复计算,SPP就是为了解决这个问题而提出的的一个方法----空间金字塔池化。框架

感受这个问题本质上仍是全链接层对region-based目标检测算法形成的困难。全链接层要求其输入为固定尺寸,从而也就要求CNN的输入为固定尺寸,而region proposals每每大小不一。RCNN选择先在原图上截取region proposals截取下来,而后warp到要求的尺寸,再一个一个的送入CNN...,这就形成了测试时要执行不少次CNN,重复计算的问题;SPP-Net的目标是共享卷积计算,也就是在原图过一遍CNN,在生成的fearure map上截取region proposals(依然靠selective search生成),此时region proposals相比原图是特征密集语义丰富的,直接warp可能形成误差大的多,会影响效果(我的猜想,具体实验验证吧),做者提出用空间金字塔池化代替卷积层和全链接层之间的max pooling,无论是输入任何尺寸,输出老是某个固定尺寸。测试

2. 具体操做

SPP-Net沿用了RCNN的框架,只用空间金字塔池化代替卷积层和全链接层之间的max pooling。spa

而这个空间金字塔池化实际上就是把feature map(3维)用不一样的网格切分,而后对切分出来的每一个小方块作最大池化,左后重组成一个2维向量。这个2维向量尺寸依赖于网格设置,调整到符合全链接层输入尺寸便可。3d

如图,用4*4,2*2,1*1大小的三张网格放到下面这张特征图上,就能够获得16+4+1=21种不一样的切割方式,分别在每个区域取最大池化,那么就能够获得21组特征。这种以不一样的大小格子的组合方式来池化的过程就是空间金字塔池化(SPP)blog

3. 优势

实现了共享卷积计算,而且能够经过设置不一样的网格来获得多层尺度的特征(?用max pooling不仍是“点”特征?)io

4. 缺陷

使用多尺度池化,致使梯度回传很复杂;某些层不能更新...【待更】sed

相关文章
相关标签/搜索