其他分享
首页 > 其他分享> > 目标检测(一)R-CNN--Rich feature hierarchies for accurate object detection and semantic segmentation(V5)

目标检测(一)R-CNN--Rich feature hierarchies for accurate object detection and semantic segmentation(V5)

作者:互联网

作者:Ross Girshick,Jeff Donahue,Trevor Darrell,Jitendra Malik

该论文提出了一种简单且可扩展的检测算法,在VOC2012数据集上取得的mAP比当时性能最好的算法高30%。算法主要结合了两个key insights:

(1)可以将高容量的卷积神经网络应用到自底向上的Region proposals(候选区域)上,以定位和分割目标

(2)当带标签的训练数据稀少时,可以先使用辅助数据集进行有监督的预训练,然后再使用训练集对网络的特定范围进行微调,这样可以显著提升性能

该算法之所以被称为R-CNN,是因为结合了region proposal和CNNs,下图为目标检测系统的概述:

1535595955(1)

论文研究的是如何将CNN在ImageNet数据集上的分类(Classification)模型应用到PASCAL VOC数据集上的目标检测(Object Detection)任务中。

为此,论文首先说明了CNN可以将PASCAL VOC数据集上的目标检测性能大幅提升,并提供了方案。这主要是因为作者解决了两个问题:

后来。作者在经过分析后证明,一个简单的边界框回归(Bounding-box regression method)可以极大地提升定位的精度。同时,作者也提醒读者因为R-CNN在区域上进行操作,所以它也可以被拓展到语义分割任务中。


接下来这部分内容介绍的是用于目标检测任务中的R-CNN

总的来说,作者实现的目标检测系统分为三部分:

2.1 模型设计:

      另外,为了从候选框中计算出特征,需要将候选框转换成与CNN(网络结构需要输入为固定尺寸227*227)兼容的形式。在众多将任意形状的图像进行转换的方法中,作者推荐最简单的。

      论文中给出了三种object proposal转换为合法CNN输入的方法:

     此外,作者还尝试在上述三种转换过程中先在原始object proposals周围pad额外的Image context,再进行转换。填充的image context 的数量被定义为原始proposals的边框宽度(border size)。比如,作者在论文中选择的填充宽度p=16,并且实验证实p=16时对mAP的提升很大。

      论文中作者经过尝试最终采用wrap转换方式,且P取值为16

1535702738(1)

2.2 测试时间检测:

     线性SVMs会利用CNN提取到的特征给相应的候选框打分。在给一幅图像中的所有候选框打分完成后,会对每一类单独使用贪婪非极大值抑制以筛除一个区域(如果IoU超过设定的阈值)。关于贪婪非极大值抑制可以参考这里


2.3 训练:

      除了将原先CNN中ImageNet指定的1000-way分类层替换为(N+1)-way分类层以外,CNN结构的其它地方并没有被改变。

      注:此处与下面介绍的SVMs训练中提到的IoU阈值不同

      在对CNN进行微调时,进行的必然是有监督学习,所以首先需要的就是对提取到的region proposals分类(N+1 classes)。数据集中的训练图片已经被人工标记出边界框和类别,这些人工标记的bounding-box被称为ground-truth boxes。分类根据的是提取到的候选框与ground_truth boxes的IoU值,如果>=0.5 IoU,那么该候选框被视为该ground-truth box所在类的正窗口,其余的被视为负窗口(negative windows),即判断是否属于同类。至于那些不属于任何ground-truth box的负窗口会被划分为背景窗口(background windows)。

      SGD训练时,学习率初值选取为0.001,是预训练时的1/10。在迭代时,在所有类别上选择32个正窗口、96个背景窗口一共128个窗口作为一个mini-batch。将采样偏向正窗口,因为与背景相比它们非常稀少。


      一旦通过CNN提取到特征并且得知训练标签,我们就开始优化每一类的linear SVM。因为训练数据太大,计算得到的特征太多,无法装入内存, 作者采用 standard hard negative mining method解决,该方法能使收敛更快。关于hard negative mining method,解释如下:

             Bootstrapping methods train a model with an initial subset of negative examples, and then collect negative examples that are incorrectly classified by this initial model to form a set of hard negatives. A new model is trained with the hard negative examples, and the process may be repeated a few times.

             在进行目标检测时得到的训练样本中一般正例(positive examples)较少。这样在训练时一个batch中的正负样例比例不协调,导致分类结果出现很多fasle positive examples。这时为了加强分类器的判别能力可以把这些false positive examples(Hard negative examples)放进下一轮的训练中继续训练,直到满足停止条件。

             作者在 Appendix B中讨论了为何在CNN微调和SVMs训练时正负定义不同,同时也讨论了为何不直接使用微调后的CNN的softmax而是使用SVMs。大致如下:

              


3. 可视化、ablation和误差模式

3.1 可视化学习到的特征:作者采用的可视化方法并不是反卷积法,而是提出了一种简单的无参数方法,能够直接说明网络学到的内容

      具体是:先在网络中挑出一个特定的神经元并将其视为所在位置的object detector,然后我们在一个大的region proposals集合中计算该神经元的激活值(activations),接着按照激活值的高低对region proposals进行排序并运用非极大值抑制,最后显示若干个得分最高的region proposals。作者之所以采用这种可视化方法主要是因为传入CNN的是region proposals,而不是一般CNN那样传入整幅图像。region proposals已经对图像中的目标进行了分割,包含的特征种类也不多。下图为论文中提供的图,展示的是得分最高的前16个region proposals:

1535695543(1)


3.2 Ablation studies

1535697616(1)

      为了确定预训练后的CNN网络的哪一层对检测的性能影响最大,作者在VOC 2007数据集上对CNN最后三层的测试结果进行了分析。结果见Table 2中的rows 1-3

      实验发现CNN的表征能力大部分来自于卷积层,而不是来自于大得多的紧密连接层(Densely connected layer)。因此,仅使用CNN的卷积层,就可以计算任意大小图像的dense feature map.

      R-CNN结构中,CNN作为featrue extractor存在,SVMs作为分类器对提取到的特征进行分类。在一般的网络结构中也是如此,卷积层部分作为特征提取器,后面的全连接层等部分作为分类器对特征进

      行分类。

      比较发现,微调后CNN的性能提升显著,如Table 2中rows 4-6所示。微调给fc6,fc7层带来的提升比pool5大,说明pool5层从ImageNet学习到的特征更具有代表性,对网络更有益。

      作者将CNN与当时最近的其他特征提取方法进行对比,发现CNN都完胜、


3.3 网络结构

该论文使用的网络结构来自于Alex Krizhevsky的文章《ImageNet Classification with Deep Convolutional Neural Networks》(2012)。作者也发现CNN网络结构的选择对R-CNN的性能影响很大。在下面的Table 3中,作者就使用了另外一种深度网络(O-Net)进行了对比测试,效果见下表:

1535699624(1)

后面作者也指出,虽然更换CNN网络后R-CNN的性能得到大幅提升,不过随之而来的缺点是计算耗时太长。以表中的O-Net为例,它的前向传播时间大概比T-Net长7倍。


3.4 边界框回归(Bounding-box regression)

基于误差分析,作者使用了一种简单的方法来降低定位误差。受到DPM中bounding-box regression的启发,论文根据pool5输出的特征和对应的region proposal训练一个线性回归来预测一个新的

detection window。


5. Semantic segmentation

后面语义分割部分先不介绍,日后学习时再做补充。


下面是部分补充:

       简单说就是先把一幅图片分成很多小区域,然后通过计算小区域间的颜色相似度、纹理相似度、大小相似度和吻合相似度,最后综合四个相似度进行合并,合并的结果就是selective search的结果,算

       法如下:

       1535880253(1)

1540340381(1)


目标检测中会事先标记出ground-truth box,然后利用算法生成一系列region proposal,接着会根据ground-truth box和region proposals的重合度(IOU)对region proposals的正负进行判断,最后放进网络中训练。但是由于正样本的数量远远小于负样本,使得训练出来的分类器的效果比较差,会出现许多false positive examples。这时可以把得分较高的false positive examples当做所谓的Hard negative examples,然后把这些Hard negative examples放进网络再训练一次,从而加强分类器的判别能力.

具体参见论文:《Object Detection with Discriminatively Trained Part Based Models》

标签:segmentation,semantic,训练,accurate,proposals,作者,examples,CNN,region
来源: https://www.cnblogs.com/Lilu-1226/p/10587009.html