成就
- 相比于深度卷积神经网络,可以不管图像的大小而生成固定长度的表示
- 对变形的物体也很有效
- 在准确性相当的前提下,速度比R-CNN更快(24-64× faster overall)
做法
在R-CNN实现思路的基础上,在最后一个卷积层和全连接层之间添加一个SPP层,由SPP层生成固定长度的输出,并将其输入到全连接层中。
SPP的特性
- 无论输入的大小,SPP都能生成固定长度的输出
- SPP使用多级spatial bins(多个尺寸的pooling)
- SPP能够对以任意比例提取的特征进行池化
SPP-net工作原理
在对图片提取特征时,使用的是如上图所示的多级bin块(),就是将一张图片分别用的方式分割提取特征,然后对每个区域做Max pooling,这样就可以获得1+4+16中特征向量。由于conv5层filter的数目是256,所以每个特征向量的维度是256。再将这的特征向量拼接起来,得到的特征向量。
即不论图片的尺寸和大小,只要固定了spatial bins,最后得到的特征向量的维度都是相同的。
使用SPP层训练网络
单一规格训练
首先使用固定输入()。
对于一个给定了大小的图像,需要先计算SPP所需的bin的大小。假如之后feature maps的大小为,并且pyramid的等级为的bins,那么window size=,stride=.
这一步的目的是为了实现多级池化的行为。(Ps:不理解)
多规格训练
本文使用了两种规格(和),本文是将原来的调整到,而且这两个网络在每一层的参数是相同的,即在训练过程中,利用共享参数的两个输入大小固定的网络来实现输入大小可变的SPP-net.
(无法体会到下面步骤的独特意义不写了)
SPP-net应用于目标识别
- R-CNN的弊端:对于每张图片提取出来的2000个窗口,R-CNN都要在每个窗口上重复的应用深度神经网络,时间耗费很大。
- SPP-net实现:本文在整张图片上只提取一次feature maps,然后在每个feature map的每个候选窗口上应用SPP,对这个候选窗口池化一个固定长度的表示。在此过程中,由于神经网络只应用了一次,所以时间耗费大大减少。
需要学习
- 实验部分没有看(之后)
- SPP-net的ROI映射
如有问题 请多多指正