一、背景

R-CNN,即Region-based Convolutional Neural Networks,是一种结合区域提名(Region Proposal) 和卷积神经网络(CNN)的目标检测方法。Ross Girshick在2013年的开山之作《Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation》奠定了这个子领域的基础,后来相继出现SPPNet,FastRCNN,FasterRCNN, Mask RCNN 等优秀区域检测模型。

RCNN的论文在此:https://arxiv.org/pdf/1311.2524v3.pdf

目标检测包括 = 物体检测 + 物体识别

目标检测(一)RCNN

目标检测(一)RCNN

二、名词解释

Selective Search

  1. 使用一种过分割手段,将图像分割成小区域 (1k~2k 个)
  2. 查看现有小区域,按照合并规则合并可能性最高的相邻两个区域。重复直到整张图像合并成一个区域位置
  3. 输出所有曾经存在过的区域,所谓候选区域

其中合并规则如下: 优先合并以下四种区域:
- 颜色(颜色直方图)相近的;
- 纹理(梯度直方图)相近的 ;
- 合并后总面积小的: 保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域 (例:设有区域a-b-c-d-e-f-g-h。较好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。 不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh);
- 合并后,总面积在其BBOX中所占比例大的: 保证合并后形状规则。

上述四条规则只涉及区域的颜色直方图、梯度直方图、面积和位置。合并后的区域特征可以直接由子区域特征计算而来,速度较快。

IOU (重叠度)

物体检测需要定位出物体的bounding box,就像下面的图片一样,我们不仅要定位出车辆的bounding box 我们还要识别出bounding box 里面的物体就是车辆。

目标检测(一)RCNN

对于bounding box的定位精度,有一个很重要的概念: 因为我们算法不可能百分百跟人工标注的数据完全匹配,因此就存在一个定位精度评价公式:IOU。 它定义了两个bounding box的重叠度,如下图所示

目标检测(一)RCNN

就是矩形框A、B的重叠面积占A、B并集的面积比例。

NMS (非极大值抑制)

RCNN会从一张图片中找出n个可能是物体的矩形框,然后为每个矩形框为做类别分类概率:

目标检测(一)RCNN

就像上面的图片一样,定位一个车辆,最后算法就找出了一堆的方框,我们需要判别哪些矩形框是没用的。非极大值抑制的方法是:先假设有6个矩形框,根据分类器的类别分类概率做排序,假设从小到大属于车辆的概率 分别为A、B、C、D、E、F。

(1)从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;

(2)假设B、D与F的重叠度超过阈值,说明有重叠且重叠面积过大,否则没有重叠,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。

(3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。

就这样一直重复,找到所有被保留下来的矩形框。

非极大值抑制(NMS)顾名思义就是抑制不是极大值的元素,搜索局部的极大值。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。这里不讨论通用的NMS算法,而是用于在目标检测中用于提取分数最高的窗口的。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口。

Wrap (Objcect proposal 转换)

将各个Redion的大小变换到CNN的输入尺寸

(1)各向异性缩放

这种方法很简单,就是不管图片的长宽比例,管它是否扭曲,进行缩放就是了,全部缩放到CNN输入的大小227*227,如下图(D)所示;

目标检测(一)RCNN

(2)各向同性缩放

因为图片扭曲后,估计会对后续CNN的训练精度有影响,于是作者也测试了“各向同性缩放”方案。有两种办法

A、先扩充后裁剪: 直接在原始图片中,把bounding box的边界进行扩展延伸成正方形,然后再进行裁剪;如果已经延伸到了原始图片的外边界,那么就用bounding box中的颜色均值填充;如上图(B)所示;

B、先裁剪后扩充:先把bounding box图片裁剪出来,然后用固定的背景颜色填充成正方形图片(背景颜色也是采用bounding box的像素颜色均值),如上图©所示;

对于上面的异性、同性缩放,文献还有个padding处理,上面的示意图中第1、3行就是结合了padding=0,第2、4行结果图采用padding=16的结果。经过最后的试验,作者发现采用各向异性缩放、padding=16的精度最高。

(备注:候选框的搜索策略作者也考虑过使用一个滑动窗口的方法,然而由于更深的网络,更大的输入图片和滑动步长,使得使用滑动窗口来定位的方法充满了挑战。)

三、预测流程

在计算机中,传统目标检测方法大致分为如下三步:

目标检测(一)RCNN

RCNN 预测过程

目标检测(一)RCNN

RCNN训练流程:

(1) 输入测试图像

(2) 利用selective search算法在图像中提取2000个左右的region proposal(候选区)。

(3) 将每个region proposal缩放(warp)成227×227的大小并输入到CNN,将CNN的fc7层的输出作为特征。

(4) 将每个region proposal提取到的CNN特征输入到SVM进行分类。

在RCNN中有三个互相独立的部分:CNN分类器,SVM分类器,位置回归器。

详细解释:

CNN分类器(主要用于提取特征)

第一步: 运用Selective Search得出每张图片2K个候选区域,然后根据人工标注的图片结合IOU得出每个区域的标签。
第二步: 将众多图片的候选区域经过Wrap转换成相同的尺寸,输入到Alexnet或VGG 进行训练。

RCNN使用了2次迁移学习。

第1次迁移学习就是先使用通用的分类数据集ImageNet对完整的CNN分类器进行训练,使它具有识别1000种物体的能力:

目标检测(一)RCNN

然后开始第1次迁移。即从第5个池化层后截断(保留了这之前的训练好的网络参数), 接上一个4096*21(类的物体)的全连接,再次训练这个新的21类分类网络。

目标检测(一)RCNN

然后进行第2次迁移。这里训练出来的21类分类器仍然没有被用到最后的预测网络中,因为我们要的不是它的21类预测能力,而是它在进行21类预测前所训练出来的提取特征的能力。所以我们再次截断21分类器的输出部分,使用提取出来的特征(每个框是4096个特征),接上SVM进行21类分类。这么做是因为RCNN的作者通过实验得出的结论是:SVM的识别率高于全连接加softmax的输出。

SVM分类器(主要用于物体分类)

SVM训练样本:

正向样本:CNN分类器第一步得到的符合正向样本的区域图片输入到CNN分类器所得到的特征向量(例如AlexNet 4096为特征向量)

负向样本:符合负向样本的区域图片输入到CNN分类器所得到的特征向量(例如AlexNet 4096为特征向量)

训练完成后,将N个类别的SVM训练器接在CNN 的后面代替softmax层

位置回归器的训练

位置回归器的训练完全独立于物体识别和分类而存在,可以并行。它的输入是目标检测训练数据集的图片在selective search之后的且与标注好的框的IOU大于0.6的proposal框,而它的label就是已经标注好的框。

四、R-CNN总结

(1)重复计算:R-CNN虽然不再是穷举,但依然有2000个左右的候选框,这些候选框都需要进行CNN操作,计算量依然很大,其中有不少其实是重复计算;

(2)SVM模型:而且还是线性模型,在标注数据不缺的时候显然不是最好的选择;

(3)训练测试分为多步,训练的空间和时间代价很高:区域提名、特征提取、分类、回归都是断开的训练的过程,中间数据还需要单独保存,卷积出来的特征需要先存在硬盘上,这些特征需要几百G的存储空间;

(4)速度慢:前面的缺点最终导致R-CNN出奇的慢,GPU上处理一张图片需要13秒,CPU上则需要53秒。

五、附录:

RCNN- 将CNN引入目标检测的开山之作

目标检测算法之RCNN

RCNN- github代码

机器视觉目标检测补习贴之R-CNN系列 — R-CNN, Fast R-CNN, Faster R-CNN

相关文章:

  • 2022-01-13
  • 2021-11-06
  • 2021-12-13
  • 2021-05-22
  • 2021-04-21
  • 2021-08-24
  • 2021-11-01
  • 2021-11-21
猜你喜欢
  • 2021-11-23
  • 2021-10-14
  • 2021-08-22
  • 2021-06-28
  • 2021-12-29
  • 2021-10-12
  • 2021-06-18
相关资源
相似解决方案