SPP-Net(Spatial Pyramid Pooling Net)
RCNN的进化中SPP Net的思想对其贡献很大,这里也简单介绍一下SPP-Net。
SPP-Net的作者是何凯明。R-CNN的最大瓶颈是2k个候选区域都要经过一次CNN,速度非常慢。SPP-net最大的改进是只需要将原图做一次卷积操作,就可以得到每个候选区域的特征。
上图中的第1行是RCNN,第2行是SPP-Net
SPP-Net是先做一次卷积,然后是金字塔池化层,在fc,最后得到结果。重点是金字塔池化层
特征映射
先介绍下特征映射,对卷积层可视化发现:输入图片的某个位置的特征反应在特征图上也是在相同位置。
我们将ss算法提供的2000个候选区域的位置记录下来,通过比例映射到conv5输出的feature map上,提取出候选区域的特征图m,然后将m送入到金字塔池化层中进行计算。
上面最左边第1张图片的右下角有1辆出租车,对特征图作可视化发现
特征图右下角颜色比较亮,说明数值比较大,说明有比较重要的特征,很有可能就是出租车的特征。
一张图片同样的用ss算法得到2000个候选区域;
这张图片做1次卷积,得到很多的特征图;
就可以用特征映射的方法将2000个候选区域映射到特征图上
候选区域大的,其特征图也会大;候选区域小的,其特征图也会小,
但是后面要训练回归器和分类器,这2000个候选区域提取出来的特征必须是相同的维度。这个问题需要金字塔池化层来解决。
金字塔池化
把不同大小的特征图变成相同的数据
有3种池化方法,最右边的是对整张特征图做池化,提取到特征图上最大的值;
中间的是把特征图划分成4个区域,分别提取每个区域里面的最大值,得到4个值;
最左边的把特征图划分成16个区域,分别提取每个区域里面的最大值,得到16个值;
通过上面的操作,任何尺寸的特征图都会得到1+4+16=21个值。
SPP-Net的图像检测速度大约比RCNN提升了100倍。