【目标检测(二)】SPP Net——让卷积计算共享

1,912 阅读5分钟

【目标检测(一)】RCNN详解——深度学习目标检测的开山之作
【目标检测(二)】SPP Net——让卷积计算共享
【目标检测(三)】Fast RCNN——让RCNN模型能端到端训练
【目标检测(四)】Faster RCNN——RPN网络替代selective search
【目标检测(五)】YOLOv1——开启one-stage目标检测的篇章
【目标检测(六)】YOLOv2——引入anchor, Better, Faster, Stronger
【目标检测(七)】YOLOv3——准确率的全面提升
【目标检测(八)】一文吃透目标检测回归框损失函数——IoU、GIoU、DIoU、CIoU原理及Python代码
【目标检测(九)】FPN详解——通过特征金字塔网络进行多尺度特征融合
【目标检测(十)】RetinaNet详解——Focal Loss将one-stage算法推向巅峰
【目标检测(十一)】CenterNet——Anchor Free, NMS Free
【目标检测(十二)】FCOS——用实例分割的思想做Anchor Free的目标检测

1. Motivation:共享卷积的计算结果

上一篇RCNN的介绍中,详细介绍了RCNN算法的原理,同时RCNN也有非常明显的缺陷:训练时间和推理时间耗时太长,造成这个致命性缺陷的主要原因是存在大量重复性的卷积计算。在RCNN中,使用selective search方法在原始图像上生成近2000个Region Proposal,然后resize到固定尺寸,输入到CNN网络中,也就是说一张原始图片要进行2000次前向推理计算,存在着大量的重复冗余计算。SPP Net的主要贡献在于:共享卷积计算和Spatial Pyramid Pooling(空间金字塔池化),使得每张图片只需要进行一次CNN网络的前向推理计算。如下图所示,第一行表示RCNN中需要图像块resize到固定大小,难免会有变形和失真,第二行是RCNN的流程,需要将每一个图像块输入到网络中,第三行是SPP方法,大大减小了计算量。具体实现方法和过程下面将进行详细阐述。

image.png

2. SPP Net原理

2.1 Pipeline

SPP Net主要由这几个部分组成:

  • Selective Search
  • CNN网络 + FC全连接层
  • SVM分类器
  • Bounding Box的LR回归

看起来和RCNN没什么不同,其实主要区别在于SPP Net的selective search虽然在原图上生成候选框,但是却是在CNN网络的conv5后提取的。这里会有两个问题:原图尺寸和特征图尺寸不同,需要如何处理呢?每个候选框的特征图尺寸也是不一样的,如何处理成一致的维度呢?

针对第一个问题,由于尺寸不同,需要依赖于卷积后得到的feature map和原图像素的对应关系,可以将原图上的候选框映射到conv5得到的特征图对应位置上,也就是原图上的每个候选框区域,都可以得到与之对应的feature map小块。针对第二个问题,空间金字塔池化模块作用于特征图小块,使得任意尺寸的特征图块都能生成固定维度的tensor。

2.2 共享卷积计算中的坐标变换(映射)

左上:x'=(x/S)+1
右下:x'=(x/S)-1

其中x'为特征图坐标,x为原图坐标,S为stride,这里左上和右下加一减一的原因与padding有关,会使坐标更靠近中心点。详细推导可参考这篇技术博客:blog.csdn.net/michaelshar…

2.3 Spatial Pyramid Pooling

经过左边映射变换之后,在原图上候选框可以映射到conv5特征图上,但是这样一来由于候选框尺寸不固定,导致映射到conv5上特征图尺寸也不固定,就无法输入到全连接层了。SPP就是解决这个问题的:

image.png

对于任意尺寸的特征图块,都可以平均分为4*4、2*2和1*1的小块,在每个小块上做max pooking操作,同时channel数量保持不变,最后将这些特征concat起来作为候选框的特征,它的维度是固定的,即(16 + 4 + 1) * 256维,输入到FC全连接层中。

2.4 训练过程和推理过程

image.png

训练过程:使用ImageNet预训练的AlexNet模型,输入图片进行前向推理,获得conv5特征,同时使用selective search算法在原图上获得候选框,然后将这些候选框映射在conv5特征图上提取到相应的SPP特征,接着将SPP特征fine-tune全连接层(卷积层不fine-tune),得到全连接层的特征。之后和RCNN一致了,将全连接层的特征输入到SVM分类器中进行分类,用SPP特征训练Bounding Box的LR模型来修正候选框的位置。

推理过程:与训练过程一致,原始图片输入到CNN网络中,经过selective search后映射获取到SPP特征,然后经过全连接层获取到分类特征,输入到SVM分类器中,同时SPP特征输入到Bounding Box的LR模型中。

3. SPP Net效果和优劣分析

3.1 SPP Net效果和主要贡献

image.png

  • 从mAP准确率角度来讲单scale方式评测SPP的精度为54.5%,而RCNN的精度为55.1%,还降低了0.6%,这里论文将主要是因为RCNN是卷积层和全连接层都参与了fine-tune,而SPP只fine-tune了全连接层。
  • 从速度角度来讲,在相同的GPU硬件条件下,推理SPP比RCNN快了102倍,这也是SPP的主要贡献。

3.2 SPP Net缺点

  • 无法fine-tune卷积层参数,导致影响准确率。(在后面Fast RCNN中使用多任务损失函数和ROI Pooling得以解决)
  • 依然是多阶段的训练过程,selective search + CNN + FC + SVM + Bounding Box LR,没有改进。
  • 特征依然需要存储在硬盘中,消耗大量的空间。

Reference:

  1. arxiv.org/pdf/1406.47…
  2. zhuanlan.zhihu.com/p/68027807
  3. blog.csdn.net/chaipp0607/…