RCNN

论文:CVPR 2014 Open Access Repository (thecvf.com)

论文概述

RCNN算法4个步骤

  1. 候选区域生成: 一张图像生成1K~2K个候选区域 (采用Selective Search 方法)
  2. 特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN)
  3. 类别判断: 特征送入每一类的SVM 分类器,判别是否属于该类
  4. 位置精修: 使用回归器精细修正候选框位置

RCNN网络结构(三个模块)

  1. 第一模块提出独立类别的区域建议,定义可供检测器使用的候选测试集
  2. 第二模块大型卷积神经网络,从每个区域提取固定长度的特征向量
  3. 第三模块一组特定类别的线性支持向量机

区域建议(region proposals)

region proposals就是从图像中选取2k个候选区域的过程.

现有的生成策略独立的region proposals: objectness, selective search ,category-independent object proposals , constrained parametric min-cuts (CPMC), multiscale combinatorial grouping

在本篇论文中,作者使用selective search方法

主要思想

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

合并策略:优先合并以下四种区域:颜色(颜色直方图)相近的;纹理(梯度直方图)相近的;合并后总面积小的: 保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域;合并后,总面积在其BBOX中所占比例大的: 保证合并后形状规则。

在具体的测试中,对于图像中的所有得分区域,我们应用贪婪的非最大抑制(对每个类独立)。如果该区域与得分高于学习阈值的选定区域有交叉合并(IoU)重叠,则拒绝该区域。

由于所有CNN参数在所有类别中共享,并且与其他常见算法相比,CNN的特征向量是低维的。因此相比与诸如UVA检测系统,CNN网络计算区域建议和特征花费的时间与所耗内存都有极大的优化。并且RCNN可以扩展到数以千计的对象类,而无需借助近似技术。

特征提取

作者使用了Krizhevsky等人描述的CNN的Caffe实现,从每个区域提取一个4096维的特征向量,将一个图像去均值的227 × 227的RGB图像通过5个卷积层和2个完全连通层前向传播来计算特征。因此,必须先将该区域的图像数据转换为与CNN兼容的形式(无论候选区域大小或宽高比如何,直接转换为227*227大小,在warp前作者还会对box进行扩张,使得在wrap处的box中有p个像素)

在实验中,作者发现RCNN可以扩展到数以千计的对象,而无需使用近似技术.

有监督预训练

作者使用开源的Caffe CNN库来进行预训练.

特定领域微调fine-tuning

为了使RCNN适应新的任务和新的领域,作者的随机梯度下降SGD训练的CNN参数仅来自于VOC数据集。分类器是随机初始化的21路分类层(VOC中的20个类与背景),其他CNN架构没有改变。

分类器会将IoU大于等于0.5的 region proposals,视为积极的,其余则视为消极的。

SGD学习率为0.001,并且在每次SGD迭代中,使用32个正样本,与96个背景样本,组成一个128大小的batch。同时为了使结果更好预测正样本,采样也偏向正样本。

对象类别分类

作者在文章中用检测的汽车的例子,如果使用二分类器检测汽车,那么一个紧紧包围汽车的box是正例子,而与汽车无关的背景区域是反面例子。现在的问题在于,我们如何去标记一个部分包含汽车的例子。作者在此使用0.3的IoU阈值,只有大于0.3IoU的区域才是积极。作者同时强调,这个阈值的设置对整个算法结果的影响极大。

同时为了解决训练数据过大的问题,作者使用standard hard negative mining method技术,该技术在实验中,只需要遍历所有图像一次就可以使mAP停止增长。

standard hard negative mining method:

用hard negative的样本反复训练,初始的样本保证一定的正负样本比例。在每次训练中,将预测为positive的负样本(即hard negative样本)加入负样本训练集中。

作者在补充材料中说明了使用SVM作为分类器的原因,SVM与CNN对于正负样本的定义不同,导致CNN的分类效果不如SVM。

过滤器First-layerfilters

作者使用了一种简单的非参数的反卷积方法捕捉有方向的边缘和对立的颜色。

主要思想:在网络中挑选出一个特定的单元(特征),并将其作为自身的对象检测i器。也就是,我们在一个大规模的held-out region proposals上计算单元的激活情况,并按得分由高到低排序,通过执行非极大值抑制nonmaximum suppression,使得被选中的区域“不言自明”。

pool5层

pool5的 feature map是9216维(6×6×256)的,从实验结果来看仅使用pool5的效果不如加入fc6、fc7效果好。作者认为这是因为目标检测的过程中,一些经过分类调整的特征与形状、纹理、颜色等在全连接层处理过后会更好的将这些特征融合学习。

fc6是pool5的全连接层,为了计算特征,它将4096×9216的权重矩阵乘以pool5的feature map,再添加一个偏差向量。

而fc7则是将fc6的输出作为输入,乘以4096×4096的权重矩阵并添加一个偏差矩阵。

作者还进行了多组对照实验得到了许多令人感到意外的结论:

  1. 在不进行微调的情况下,fc7的结果反而不如fc6,这表明了在不降低mAP的情况下有29%的CNN参数可以被去除。并且去除了两个全连接层的结果也是可以接受的,需要注意的是,此时只使用pool5(即仅6%的参数)。说明对目标检测结果有效的参数大多数来源于卷积层,而不是全连接层。
  2. 进行微调的情况下,微调普遍使实验结果提高了8%,并且在全连接层上的微调要比在pool5上的微调更有效果。这说明pool5学习的特征是通用的,微调的大部分改进是通过学习特定领域的非线性分类器获得的。

边界框回归

作者通过训练一个线性回归模型来预测一个新的检测窗口,用于selective search的区域建议。

做出的贡献

这篇论文首次表明,与基于更简单的hog特征的系统相比,CNN可以在PASCAL VOC上带来更高的对象检测性能。并且主要解决一下两个问题

  1. 将高容量卷积神经网络(cnn)应用于自底向上的区域建议,以定位和分割对象

其中为了定位物体localizing onbject,传统方法一是使用回归方法(但是在实践中的表现并不好),二是构建滑动窗口检测器(但是由于网络中接受域与step过大,图像的精确定位存在困难)

因此作者使用“区域识别”模式解决CNN定位问题。在实验中,作者的方法会先将输入图像划分为2k个类别无关的区域,使用CNN从每个区域提取固定长度的特征向量,然后使用类别特定的线性支持向量机SVM对每个区域进行分类

  1. 当标注的训练数据稀缺时,对辅助任务进行有监督的预训练,然后进行领域特定的微调,可以产生显著的性能提升。
谢谢你请我吃糖果
0%