一、R-CNN

1.1 架构图

R-CNN系列

1.2 流程

  1. 图片输入,通过Selective Search算法获取region proposal(生成约2000-3000个候选区域)。
  2. 由于全连接层的原因,把region proposal调整成固定大小。
  3. 然后把这些区域分别输入到CNN中,得到区域的feature。
  4. 再在feature上加上分类器,判断feature对应的区域是属于具体某类object还是背景。

1.3 不足

  1. 存在着重复计算的问题:proposal的region有几千个,多数都是互相重叠,重叠部分会被多次重复提取feature,是导致时间效率不高的最重要的原因。
  2. 过程复杂:multi-stage pipeline,训练分为多个阶段;步骤繁琐,region proposal、CNN特征提取、SVM分类、边框回归。
  3. 训练耗时,占用磁盘空间大:卷积出来的特征数据还需要单独保存。

二、SPP-Net

2.1 引言

R-CNN在当时取得了很大的成果,但是他还是有一些问题,最突出的就是效率问题,SPP-Net主要就是解决R-CNN的几个问题:

  1. 对于每张图片的每个proposal跑一边CNN,SVM分类器,做了很多冗余的操作。
  2. proposal在送进网络之前都要进行拉伸(warp),这样会影响图片的质量以及内容,同时也比较费时费力。

2.2 架构

R-CNN系列

2.3 流程

  1. 首先通过Selective Search算法搜索,对待检测的图片进行搜索出2000个候选窗口(这一步和R-CNN一样)。
  2. 特征提取阶段。区别!! 这一步骤的具体操作如下:把整张待检测的图片,输入CNN中,进行一次性特征提取,得到特征图,然后在特征图中找到各个候选框的区域,再对各个候选框采用空间金字塔池化,提取出固定长度的特征向量。而R-CNN输入的是每个候选框,然后在进入CNN,因为SPP-Net只需要一次对整张图片进行特征提取,速度会大大提升。
  3. 最后一步,采用SVM算法进行特征向量分类识别。

2.4 不足

  1. 虽然解决了R-CNN许多大量冗余计算的问题,但是还是沿用了R-CNN的训练结构,也训练了SVM分类器, 单独进行BBox regression。总体过程任然复杂。
  2. SPP-Net 很难通过fine-tuning对SPP-layer之前的网络进行参数微调,效率会很低,原因具体是(Fast-RCNN中的解释): SPP做fine-tuning时输入是多个不同的图片,这样对于每一个图片都要重新产出新的feature map,效率很低,而Fast-RCNN对其进行了改进。

三、Fast R-CNN

3.1 概述

Fast-RCNN在RCNN的基础上又做了一些改进:

  1. 与SPP类似,它只对整幅图像做一次CNN特征提取,在后面加了一个类似于SPP的ROI pooling layer(可以看做单层sppnet的网络层),其实就是下采样。不过因为不是固定尺寸输入,因此每次的pooling网格大小需要动态调整,从而实现区域归一化。
  2. 用softmax替代SVM分类,同时利用Multi-task Loss(多任务损失函数)将边框回归和分类一起进行。

3.2 总体框架

R-CNN系列

3.3 重要流程

  1. 特征提取:以整张图片为输入利用CNN得到图片的特征层;
  2. region proposal:通过Selective Search等方法从原始图片提取区域候选框,并把这些候选框一一投影到最后的特征层;
  3. 区域归一化:针对特征层上的每个区域候选框进行RoI Pooling操作,得到固定大小的特征表示; ROI pooling可以 speed up both train and test time
  4. 分类与回归:然后再通过两个全连接层,分别用softmax做多目标分类,用回归模型进行边框位置与大小微调。

四、Faster R-CNN

4.1 概述

Fast R-CNN存在的问题:

  1. 存在瓶颈:使用Selective Search,找出候选框,这个非常耗时。

4.2 总体框架

R-CNN系列

4.3 流程

  1. 特征提取:同Fast R-CNN;
  2. region proposal:在最终的卷积特征层上利用k个不同的矩形框(Anchor Box)进行region proposal;即对每个Anchor Box对应的区域进行object/non-object二分类,并用k个回归模型(各自对应不同的Anchor Box)微调候选框位置与大小 ;
  3. 区域归一化:同fast R-CNN;RoI pooling层;
  4. 分类与回归:进行目标分类,并做边框回归。

相关文章: