【目标检测】3、SPPNet

SPPNet

Spatial Pyramid Pooling(空间金字塔池化)

一般的CNN结构中,对输入大小要求固定,但在现实中通常会使用crop和warp来将大小统一,这样做会破坏图像的纵横比,何凯明提出了SPP,连接在最后一层卷积层。

下图中左边为裁剪(crop),右边为拉伸(crop)
在这里插入图片描述
【目标检测】3、SPPNet_第1张图片
SPP特点:

  • SPP可以产生固定大小的输出
  • 使用多个pooling窗口
  • SPP可以使用同一图像不同尺寸作为输入,得到同样长度的池化特征
  • 提高了尺度不变性,降低了过拟合
  • 使用不同尺寸的图像进行网络训练更容易使得网络收敛
  • SPP对于特定的CNN网络设计和结构是独立的,只是替换了原来的pooling层
  • 不仅可以用于图像分类,也可以用于目标检测

1、结合空间金字塔方法实现CNNs对尺度输入

一般CNN后连接全连接层或分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或warp,这些预处理会造成数据的丢失或几何失真。

SPP Net的第一个贡献就是将金字塔思想加入CNN,实现了数据的多尺度输入。

如下图所示,卷积层和全连接层中间加入了SPP layer,此时网络的输入可以是任意尺度的,在SPP layer 中每一个pooling的滤波器会根据输入调整大小,使得SPP的输出尺度始终是固定的。图中的pooling窗口有多种(图中蓝色、绿色、灰色窗口),分别对feature maps进行pooling,将分别得到的结果进行合并就得到固定长度的输出。
【目标检测】3、SPPNet_第2张图片
作者证明:

  • 多个窗口的pooling会提高准确率
  • 输入同一图像的不同尺寸,会提高实验准确率,也就是提高了网络的尺度不变性
  • 多view会提高准确率
  • SPP替换了pooling层,对网络结构没有影响,可以正常训练

2、只对原图提取一次卷积特征

在R-CNN中,每个候选框先resize到同一大小,然后分别作为CNN的输入,这样是低效的,所以SPP对此作了优化,只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框在feature map上的映射patch,将次patch作为每个候选框的卷积特征输入到SPP layer后的层,节省了大量的计算时间,比R-CNN有100倍左右的提速。

【目标检测】3、SPPNet_第3张图片

你可能感兴趣的:(目标检测,目标检测,深度学习,计算机视觉)