SPP-Net
引言
该方法由Kaiming He提出,主要目的是解决RBG提出的R-CNN网络的几个缺点。
与R-CNN的对比
R-CNN的问题
- R-CNN需要保证所有的图片尺寸是相同的。主要原因在于:R-CNN在全连接层的输入要求是固定尺寸,这就要求保证CNN网络的输入尺寸相同才能满足。R-CNN为了保证图片尺度相同,对图片进行裁剪/扭曲操作,但是这样的变型操作会丢失信息。如图1左侧,由于裁剪,导致关注的目标不完整。
- R-CNN首先对输入的图像进行ROI提取,然后对每一个ROI进行CNN特征提取。显然,这是十分耗时的!!!
主要贡献
本文提出了Spatial Pyramid Pooling(SPP)Layer,如下图所示。该结构在R-CNN的基础上,在Conv5之后,FC层之前增加了SPP层。具体做法是:
1. 取3个框框对Feature Map进行采样。大小分别是1*1,2*2,4*4,按照这样的规格对Feature Map进行划分,在每一个小格格里进行MaxPooling。
2. 假设Feature Map是13*13*256,那么通过SPP下采样得到的尺度是(16+4+1)*256。
3. 通过这样的方式,不管输入图像的大小是多大,即便Feature Map的尺度不一样(主要是W*H不同,feature map的深度由filter的个数决定,因此深度相同),这样就能保证SPP采样之后的尺度相同,进一步送入FC层。
SPP-Net目标检测算法
利用Selective Search方法对原始输入图像提取2000个ROI。对于每一个候选窗口,使用4级空间金字塔(1*1,2*2,3*3,6*6),共50个bins,然后每一个窗口输出一个265*50的向量送入FC层。
数据的标注
- 正例:ground truth;
- 反例:和ground truth IOU超过30%的窗口。
ROI窗口到Feature Map的映射
可以参考原文以及下面的博文链接,暂时还没有理解透彻。
检测窗口到Feature Map的映射