空间金字塔变换层
(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