神经网络的认识(八)SPP-NET

SSP-Net: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

先看一下 R-CNN 为什么检测速度这么慢, 一张图都需要 47s! 仔细看下 R-CNN 框架发现, 对图像提完 Region Proposal(2000 个左右) 之后将每个 Proposal 当成一张图像进行后续处理(CNN 提特征+SVM 分类), 实际上对一张图像进行了 2000 次提特征和分类的过程! 这 2000 个 Region Proposal 不都是图像的一部分吗, 那么我们完全可以对图像提一次卷积层特征, 然后只需要将 Region Proposal 在原图的位置映射到卷积层特征图上, 这样对于一张图像我们只需要提一次卷积层特征, 然后将每个 Region Proposal 的卷积层特征输入到全连接层做后续操作。 (对于 CNN 来说,大部分运算都耗在卷积操作上,这样做可以节省大量时间)。
现在的问题是每个 Region Proposal 的尺度不一样,直接这样输入全连接层肯定是不行的,因为全连接层输入必须是固定的长度。 SPP-NET 恰好可以解决这个问题。

传统的下的处理图片标准化如下
在这里插入图片描述
由于传统的 CNN 限制了输入必须固定大小(比如 AlexNet 是 224x224),所以在实际使用中往往需要对原图片进行 crop 或者 warp 的操作:

  1. crop: 截取原图片的一个固定大小的 patch
  2. warp: 将原图片的 ROI 缩放到一个固定大小的 patch

无论是 crop 还是 warp,都无法保证在不失真的情况下将图片传入到 CNN 当中:

  1. crop:物体可能会产生截断,尤其是长宽比大的图片。
  2. warp:物体被拉伸,失去“原形”,尤其是长宽比大的图片

SPP 为的就是解决上述的问题,做到的效果为:不管输入的图片是什么尺度,都能够正确的传入网络。
在这里插入图片描述
SPP-Net 在 RCNN 的基础上做了实质性的改进(提取整体特征, 仅在分类之前做一次Region 截取):

  1. 取消了 crop/warp 图像归一化过程,解决图像变形导致的信息丢失以及存储问题;
  2. 采用空间金字塔池化(SpatialPyramid Pooling ) 替换了 全连接层之前的最后一个池化层

具体思路为:CNN 的卷积层是可以处理任意尺度的输入的,只是在全连接层处有限制尺度——换句话说,如果找到一个方法,在全连接层之前将其输入限制到等长,那么就解决了这个问题。
在这里插入图片描述
如果原图输入是 224x224, 对于 conv5 出来后的输出, 是 13x13x256 的,可以理解成有256个这样的 filter, 每个 filter 对应一张 13x13 的 activation map。如果像上图那样将activationmap pooling 成 4x4 2x2 1x1 三张子图,做 max pooling 后,出来的特征就是固定长度的(16+4+1)x256 那么多的维度了。如果原图的输入不是 224x224,出来的特征依然是(16+4+1)x256;直觉地说,可以理解成将原来固定大小为(3x3)窗口的 pool5 改成了自适应窗口大小,窗口的大小和 activation map 成比例,保证了经过 pooling 后出来的 feature的长度是一致的。
为了适应不同分辨率的特征图,定义一种可伸缩的池化层,不管输入分辨率是多大,都可以划分成 m*n 个部分。这是 SPP-net 的第一个显著特征,它的输入是 conv5 特征图以及特征图候选框(原图候选框 通过 stride 映射得到),输出是固定尺寸(m*n)特征;

金字塔:通过多尺度增加所提取特征的鲁棒性,这并不关键,在后面的 Fast-RCNN 改进中该特征已经被舍弃;最关键的是 SPP 的位置,它放在所有的卷积层之后,有效解决了卷积层的重复计算问题(测试速度提高了 24~102 倍),这是论文的核心贡献。

使用 SPP-NET 相比于 R-CNN 可以大大加快目标检测的速度,但是依然存在着很多问题:

  1. 和 RCNN 一样,训练过程仍然是隔离的,提取候选框 | 计算 CNN 特征| SVM 分类 |Bounding Box 回归独立训练,大量的中间结果需要转存,无法整体训练参数; 训练分为多个阶段,步骤繁琐: 微调网络+训练 SVM+训练训练边框回归器
  2. SPP-NET 在微调网络的时候固定了卷积层,只对全连接层进行微调,而对于一个新的任务,有必要对卷积层也进行微调。(分类的模型提取的特征更注重高层语义,而目标检测任务除了语义信息还需要目标的位置信息) SPP-Net 在无法同时 Tuning 在 SPP-Layer 两边的卷积层和全连接层,很大程度上限制了深度 CNN 的效果;
  3. 在整个过程中, Proposal Region 仍然很耗时针对以上问题, RBG(http://www.rossgirshick.info) 又提出 Fast R-CNN, 一个精简而快速的目标检测框架。
发布了163 篇原创文章 · 获赞 117 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/u010095372/article/details/91294611