【论文笔记】RCNN

介绍

    CNNs在90年代曾大量使用,但后来由于支持向量机(SVM)的兴起而衰落。2012年,由于Krizhevsky等人将CNNs应用于ILSVRC在图像分类上表现出了更高的精确率从而重新燃起了对它的兴趣。他们的成功源自于在120万标注了的图像数据集上训练出一个大规模的CNN,并结合了LeCunn的CNN的一些变体。ImageNet上的比赛结果在ILSVRC 2012峰会上引起了热烈的讨论,核心的议题是:CNN在ImageNet上的分类结果能在多大程度上推广到目标检测在PASCAL VOC挑战上的结果?

    我们通过在图像分类和目标检测之间搭建桥梁来回答这一问题。这篇文章首次展现了CNN和传统的基于HOG类的系统相比在PASCAL VOC目标检测上巨大的性能提升。为达到这一效果,我们专注于两个问题:用一个深层的网络来定位图像,用少量带标注的检测数据训练一个大容量的模型。

Object detection with R-CNN

    我们的目标检测系统由三大模块构成。第一个模块用来生成独立类别(category-independent)的候选区域。第二个模块是一个大的卷积神经网络,由它从每个候选区域提取一个固定长度的特征向量。第三个模块是一组特定类型的线性SVM。

【论文笔记】RCNN_第1张图片

  • 模块设计

候选区域,有大量论文提出了如何生成独立类别的候选区域,比如:objectness、selective search、CPMC等。R-CNN使用的是selective search。

特征提取,我们使用由Caffe实现的CNN从每个候选区域中提取出一个4096维的特征向量。候选区域的大小并不一致,为了计算每个候选区域的特征向量,我们首先需要将候选区域的图像数据转换成和CNN匹配的格式(它的结构要求输入图像的尺寸为227x227像素)。压缩后的候选区域(227 x 227 RGB图像)经5个卷积层和2个全连接层进行前向传播进行特征提取。

"""通过selective search为每幅图像选择2000个候选区域,这一过程在CPU内完成,占用了大量的计算。对2000个候选框进行卷积计算,做特征提取的过程是独立的,存在大量的重复计算,进一步增加了计算量。这两个缺点在Fast R-CNN和Faster R-CNN中得以改进。"""

  • Test-time检测

    测试时,我们使用selective search从每张图像上提取2000个候选区域(ROI:region of interest),对候选区域进行调整后送入CNN进行前向传播以提取特征向量。然后,对每个特征向量使用专门为訪区域所对应类别而训练的SVM进行评分。对于所有评分的候选区域,对每个特定的类别采用贪婪的非最大化抑制算法(non-maximum suppression)排除和评分更高的区域其IoU大于阈值的区域。

Run-time analysis,两个特点使得训练变得高效。首先,所有分类共享所有CNN参数。其次,由CNN计算出的特征向量是低维的。

  • 训练

有监督的预训练,我们使用CNN在一个大的辅助数据集(ILSVRC 2012)上进行图像级别(也就是说没有边框标注信息)的预训练,由开源的Caffe CNN实现。

Domain-specific fine-tuning,为了将我们的CNN应用到新的任务(检测)和新的域上,我们继续使用SGD训练CNN在候选区域上的参数。除了将ImageNet特定的1000路分类层替换为随机初始化的21路分类层,CNN的结构并没有变化。我们将和ground-truth相比IoU大于等于0.5的候选区域作为訪候选区域对应分类的正例,剩下的则作为负例。每一轮SGD迭代过程中,我们采集32个正窗口(over all classes)和96个负窗口构成大小为128的mini-batch。

对象类别分类器,假设要训练一个二分类器来检测汽车,如果图像区域和汽车重叠度很高显然要作为正例,同样如果只是一个背景区域,它和汽车就同什么关系,当然也就作为负例。难以鉴定的就是假如图像区域只有部分和汽车是重合的这一情况。我们使用IoU重叠阈值来解决这一问题。使用网格搜索来选择这一阈值。

你可能感兴趣的:(深度学习,论文)