目标检测系列(三)——SPPnet

SPPNet

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

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

下图中左边为裁剪(crop),右边为拉伸(crop)
在这里插入图片描述
在这里插入图片描述
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,将分别得到的结果进行合并就得到固定长度的输出。
在这里插入图片描述
作者证明:

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

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

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

在这里插入图片描述

发布了152 篇原创文章 · 获赞 716 · 访问量 69万+

猜你喜欢

转载自blog.csdn.net/jiaoyangwm/article/details/89004115