SPPNet算法详解

1.RCNN的缺点

  •  CNN要求输入图片尺寸具有统一的尺寸
    • 不同尺度和长宽比的区域被变换到相同大小
    • 裁剪会导致信息丢失或引入过多背景),缩放会导致物体变形

SPPNet算法详解_第1张图片

 

2.SPPNet结构

应该是一目了然吧

SPPNet算法详解_第2张图片

 

3. 关于SPP的理解

SPPNet算法详解_第3张图片

由于论文中用的基础网络ZF-5中含有全连接层,这就要求全连接层输入的尺寸必须一致,如RCNN中将每个区域框送入CNN网络前,需要调整为227x227的大小就是这个道理

但是HeKaiming大神的想法就是不太一样。作者觉得每个区域框单独训练太麻烦了,最好是对整张图片做特征提取。但是映射后的区域框的大小不一样,全连接层的输入的尺寸不固定,怎么办呢?那就想办法让每个区域框输出固定的特征向量,所以就出现了SSP

原理:

将不同大小的ROI特征图,通过1x1,2x2,4x4的网格划分成不同尺度的共21个区域,每个区域用最大池化,获得一个值,最后就是固定输出21个特征值,然后将所有区域框的特征向量合并起来,送入全连接层。结合上图看

当然,这些网格的划分方式并不是固定的,根据具体问题来选择合适的划分方式


4. SPP与RCNN的异同

可以发现,SSP相对于RCNN的最主要改进就是特征提取方式不同。

不在对每个Selective Search获得区域框进行分别的提取特征,而是对整个图像提取特征,然后将原图中的区域框映射到最后一层卷积的feature map。在将这些ROI区域送给SPP,其他都差不多。
SPPNet算法详解_第4张图片

 

  • 首先,Selective Search,选出候选框,这一步相同
  • 然后,特征提取是不同的
    • RCNN->每个候选框调整成固定大小,输入CNN提取特征
    • SPPNet->将整个图片输入CNN,并将原图的ROI映射到,最后一个卷积层,并对每个ROI,作用一次SPP输出21个特征值,最后concat到一起
  • 最后都是用SVM进行分类

5.如何将原图的候选框映射到特征图上


假设(x’,y’)表示特征图上的坐标点,坐标点(x,y)表示原输入图片上的点,那么它们之间有如下转换关系:
                         (x,y)=(S*x',S*y')
其中S的就是CNN中所有的strides的乘积。比如paper所用的ZF-5:
S=2*2*2*2=16

你可能感兴趣的:(计算机视觉)