DeepLearning · 2019年11月20日 0

DL-002-SPP

空间金字塔变换层

(Spatial Pyramid Pooling)

 

直接说针对RCNN的改进点

SPP:

1.CNN网络后面接的全连接层(FC)层需要固定的输入大小,限制网络的输入大小。

2.候选区域一张图片有2000张,全部塞给CNN提取特征向量,大量的重复计算,造成效率低下。

关于输入限制的处理:

Crop和warp是RCNN对于候选区域的处理方式。

关于计算量过大的处理:

SPPNet提出了一种从候选区域到全图的特征映射(feature map)之间的对应关系,通过此种映射关系可以直接获取到候选区域的特征向量,不需要重复使用CNN提取特征,从而大幅度缩短训练时间。

再具体:SPP是直接将整张图给CNN输入,得到的feature map 再拿去映射给各个候选区域,映射过程不需要CNN,因此减少计算量。

映射出的未知大小的特征向量由SPP继续处理。

关于SPP层

将一张图片以三种方式切割并提取特征(如下图),这样我们可以得到一共1+4+16=21种特征,这就是以不同的大小的bin块来提取特征的过程就是空间金字塔变换。

 

在SPP中候选区域的映射处理:

分成的三张1*1,2*2,4*4子图,对每张子图的每个区域做max pooling ,再将所得到的特征向量连接在一起,所以经过SPP输出(1+4+16)*256 大小的特征向量。

 

一些总结:

1) 多窗口的pooling会提高实验的准确率

2) 输入同一图像的不同尺寸,会提高实验准确率(从尺度空间来看,提高了尺度不变性(scale invariance))

3) 用了多View(multi-view)来测试,也提高了测试结果

4)图像输入的尺寸对实验的结果是有影响的(因为目标特征区域有大有有小)

5)因为我们替代的是网络的Pooling层,对整个网络结构没有影响,所以可以使得整个网络可以正常训练。

更多详细内容可以参考:

【目标检测】SPP-Net (Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition) – SmileLing的专栏 – CSDN博客 https://blog.csdn.net/forever__1234/article/details/79910175