SPP全称为Spatial Pyramid Pooling,即空间金字塔池化,听名字就知道是对RCNN的一种变形,目的是为了解决RCNN输入图像的大小固定(224*224)的问题,因为真实照片中的物体的大小并不都一样,对图像就行wrap或者切割,不可避免会造成图像的失真,从而增大运算结果的误差。
SPP与RCNN最大的不同就是SPP使用了一个全连接层,而不进行微调,并且计算region propsal时使用了多个region,从而只计算一次,避免了RCNN中的重复计算。
1、结构比较:
2、RCNN固定输入的原因:
理论上说conv layers(卷积层)可以接受任意大小的输入,RCNN固定输入的限制来源于fc layers(全连接层)
3、SPP的来源
SPP其实很早就应用在CV领域,通过或粗或细的
4、SPP的迭代训练
SPP训练的时候,不是一次输入多个尺寸的图片,而是采用了一个近似的方法,SPP进行多次迭代,每次迭代的时候输入不同的尺寸,但是参数保持一致,从而获得近似结果。
5、extract features
RCNN通过深度卷积网络提取每个候选区域的特征,但是因为一张图片要计算几千个(RCNN是2000)候选区域的特征,每区域的像素是224*224,因此当图片数据比较多时,计算量会特别大。
而SPP每个Window只进行一次卷积计算,从而速度相对于RCNN来说,可以提高几百倍。具体实现流程如下:
文章来源: SPP笔记