论文阅读

文章地址

Rich feature hierarchies for accurate object detection and semantic segmentation

目标检测之R-CNN

这篇文章提出了一种简单且可扩展的检测算法,相对于先前在VOC 2012上的最佳结果,平均精度(mAP)提高了30%以上,达到了53.3%的mAP


一、Object detection with R-CNN

  这篇文章的目标检测系统由三个模块组成。第一个生成与类别无关的Region proposals。这些建议定义了我们的检测器可用的候选检测集。第二个模块是一个大型卷积神经网络,它从每个区域提取固定长度的特征向量。第三个模块是一组特定类别的线性支持向量机。

1.1 模块设计

Region proposals最近各种论文提供了生成与类别无关的Region proposals的方法。
分别有:对象性、选择性搜索、与类别无关的对象建议、约束参数最小割(CPMC)、多尺度组合分组,这篇文章使用选择性搜索
特征提取
  使用克里哲夫斯基等人描述的CNN的Caffe实现从每个区域建议中提取4096维特征向量。通过五个卷积层和两个完全连接的层向前传播减去平均值的227×227 RGB图像来计算特征。
  为了计算区域建议的特征,我们必须首先将该区域的图像数据转换成与CNN兼容的形式(其架构要求输入固定的227 × 227像素大小)。在我们任意形状区域的许多可能的变换中,我们选择最简单的。不管候选区域的大小或纵横比如何,我们都将它周围的一个紧密包围框中的所有像素扭曲到所需的大小。在扭曲之前,我们扩张紧密的边界框,这样在扭曲的大小上,原始框周围正好有p个像素的扭曲图像上下文(我们使用p = 16)。图2显示了扭曲训练区域的随机抽样。
在这里插入图片描述

1.2.测试时间检测

  在测试时,对测试图像进行选择性搜索,以提取大约2000个区域建议(我们在所有实验中使用选择性搜索的“快速模式”)。我们扭曲每个提议,并通过RNN向前传播,以计算特征。然后,对于每个类别,我们使用为该类别训练的SVM对每个提取的特征向量进行评分。给定图像中的所有已评分区域,我们应用贪婪的非最大值抑制(独立于每个类别),如果一个区域与大于学习阈值的较高评分选定区域有交叉-重叠(IoU)重叠,则拒绝该区域。

1.3 训练

  监督预训练。我们仅使用图像级注释在大型辅助数据集(ILSVRC2012分类)上有区别地预训练CNN(边界框标签不适用于该数据)。使用开源的Caffe CNN library进行预培训[24]。简而言之,我们的CNN的性能几乎与Krizhevsky等人的[25]相当,在ILSVRC2012分类验证集上获得了高出2.2个百分点的前1名错误率。这种差异是由于训练过程的简化。
  特定领域的微调。为了使我们的神经网络适应新的任务(检测)和新的领域(扭曲的建议窗口),我们只使用扭曲的区域建议继续随机梯度下降(SGD)训练神经网络参数。除了将CNN的ImageNetspecific 1000路分类层替换为随机初始化的(N + 1)路分类层(其中N是对象类的数量,加1表示背景),CNN的架构没有改变。对于VOC,N = 20,对于ILSVRC2013,N = 200。我们对待所有地区提案的态度是≥ 0.5的IoU与一个基本事实框重叠,作为该框类别的肯定,其余的作为否定。我们以0.001的学习率(初始预训练率的1/10)开始SGD,这允许微调在不破坏初始化的情况下取得进展。在每个SGD迭代中,我们统一采样32个正窗口(在所有类上)和96个背景窗口来构建一个大小为128的小批量。我们将采样偏向于正窗口,因为与背景相比,它们极其罕见。
  

二、R-CNN训练过程

2.1 选出潜在目标候选框(ROI)

  objectness、 selective search、 category-independent object proposalslt 等很多论文都讲述了候选框提取的方法,R-CNN使用selective search 的方法选出了 2000 个潜在物体候选框。

2.2 训练一个好的特征提取器

  R-CNN的提出者使用卷积神经网络 AlexNet 提取 4096 维的特征向量,实际上使用 VGGNet、GoogLeNet 或 ResNet 等也可以。我们可以发现,AlexNet等网络要求输人的图片尺寸是固定的,而2.1中的ROI尺寸大小不定这就需要将每个ROI调整到指定尺寸。
  接下来,为了获得一个好的特征提取器,一般会在ImageNet预训练好的模型基础上做调整(因为 ImageNet 预测的种类较多,特征学习相对比较完善),唯一的改动就是将ImageNet 中的1000个类别的输出改为(C+1)个输出,其中C是真实需要预测的类别个数,1是背景类。新特征的训练方法是使用随机梯度下降(SGD)。
  提到训练,就一定要有正样本和负样本。这里先抛出一个用于衡量两个矩形交登情况的指标:IOU(Intersection Over Union)。IOU其实就是两个矩形面积的交集除以并集。图9-8所示。一般情况下,当IOU>-0.5时,可以认为两个矩形基本相交,所以在这个任务中,假定在两个矩形框中,1个矩形代表ROI,另一个代表真实的矩形框,那么当ROL和真实矩形框的1OU>=0.5时则认为是正样本,其余为负样本。
emsp; 至此,R-CNN的第二步特征提取器就可以开始训练了,不过在训练过程中应注意,需要对负样本进行采样,因为训练数据中正样本太少会导致正负样本极度不平衡。最终在该步得到的是一个卷积神经网络的特征提取器,其特征是一个4096维特征向量。

2.3 训练最终的分类器

  为每个类别单独训练一个SVM分类器。这里有一个小技巧,SVM 的训练也需要选择正负样本,R-CNN的提出者做了一个实验来选择最优IOU 阈值,最终仅仅选择真实值的矩形框作为正样本。
  正负样本的选择比较有讲究,Fast R-CNN 和 Faster R-CNN 是根据 IOU 的大小选取正负样本

2.4 训练回归模型

  为每个类训练一个回归模型,用来微调ROI与真实矩形框位置和大小的偏差。

三、预测

预测阶段可分为如下几个步骤:
  1)使用 selective search 方法先选出 2000个 ROI
  2)L2)所有ROI调整为特征提取网络所需的输人大小并进行特征提取,得到与2000个 ROI对应的2000 个 4096 维的特征向量。
  3)将2000 个特征向量分别输人到SVM 中,得到每个 ROI 预测的类别。
  4)通过回归网络微调 ROI 的位置
  5)最终使用非极大值抑制(Non-MaximumSuppression,NMS)方法对同一个类别的 ROI进行合并得到最终检测结果。NMS 的原理是得到每个矩形框的分数(置信度),如果两个矩形框的IOU 超过指定阈值,则仅仅保留分数大的那个矩形框。

四、R-CNN存在的问题

  1.不论是训练还是预测,都需要对 selective search 出来的 2000 个 ROI 全部通过 CNN的 Forward 过程来获取特征,这个过程花费的时间会非常长。

  2.卷积神经网络的特征提取器和用来预分类的SVM是分开的,也就是特征提取的过程不会因 SVM 和回归的调整而更新。
  3.RCNN具有非常复杂的操作流程,而且每一步都是分裂的,如特往提取器通过 Softmax分类获得,最终的分类结果由SVM获得,矩形框的位置则是通过回归方式获得。

总结

之前的看的论文有些就是翻译太多,太冗长,现在我挑出精细部分做工作,能够让人们更快找到重点,更快理解论文的精髓!
期待大家和我交流,留言或者私信,一起学习,一起进步!