【目标检测】RCNN算法详解R-CNN

RCNN是第一个可以真正工业级应用的解决方案,Fast-RCNN,Faster-RCNN沿袭RCNN,
把region proposal和CNN结合起来,所以该方法被称为R-CNN:Regions with CNN features。

1.1.介绍

与图像分类不同的是检测需要定位一个图像内的许多物体。

一个方法是将框定位看做是回归问题。但是这种策略效果不好。

另一个可替代的方法是使用滑动窗口探测器,通过这种方法使用CNN至少已经有20年的时间了,通常用于一些特定的种类如人脸,行人等。为了获取较高的空间分辨率,这些CNNs都采用了两个卷积层和两个池化层。但是由于网络层次更深,输入图片有非常大的感受野和步长,这使得采用滑动窗口的方法充满挑战。

cnn和rnn结合的经典网络 cnn与rcnn_特征向量


采用候选框来检测解决CNN的定位问题。对这每张图片,产生接近2000个与类别无关的region proposal,对每个CNN抽取一个固定长度的特征向量,然后借助线性SVM对每个区域进行分类。我们不考虑region的大小,使用放射图像变形的方法来对每个不同形状的region proposal产生一个固定长度的作为CNN输入的特征向量(也就是把不同大小的proposal放到同一个大小)。

1.2.用RCNN做物体检测
物体检测系统有三个模块构成。

  • 产生类别无关的region proposal。这些推荐定义了一个候选检测区域的集合
  • 一个大型卷积神经网络,用于对每个区域抽取特定大小的特征向量
  • 一个指定类别的线性SVM

2.1模块设计

  • 区域推荐:
    有很多研究都提出了产生类别无关区域推荐的方法。比如:objectness(物体性),selective search(选择性搜索),category-independent object proposals(类别无关物体推荐),constrained parametric min-cuts(受限参最小剪切,CPMC),multi-scale combinatorial grouping(多尺度联合分组),以及Ciresan等人的方法,将CNN用在规律空间块裁剪上以检测有丝分裂细胞,也算是一种特殊的区域推荐类型。由于R-CNN对特定区域算法是不关心的,所以我们采用了选择性搜索以方便和前面的工作进行可控的比较。
  • 特征提取:
    对每个推荐区域抽取一个特征向量。

2.2测试阶段的物体检测
测试阶段在测试图像上使用selective search抽取2000个推荐区域。然后变形每一个推荐区域,再通过CNN前向传播计算出特征。然后我们使用对每个类别训练出的SVM给整个特征向量中的每个类别单独打分。
然后给出一张图像中所有的打分区域,然后使用NMS(每个类别是独立进行的),拒绝掉一些和高分区域的IOU大于阈值的候选框。
运行时的分析:
两个特性让检测变得很高效。首先,所有的CNN参数都是跨类别共享的。其次通过CNN计算的特征向量相比其他通用方法维度是很低的。