Title: Rich feature hierarchies for accurate object detection and semantic segmentation(2014)
Link: http://arxiv.org/abs/1311.2524
Tips:
- R-CNN 的创新点,要解决的问题(1)
- R-CNN 框架,训练流程(2)
- 如何可视化神经层学到的特征 (3.1)
- 不同的 CNN 框架对性能的影响 (3.3)
- 消融学习 (3.2 ,4.5)
- 从检测到分割的扩展 (5)
Summary:
问题 / 背景:
- 传统视觉特征 SIFT 和 HOG 用于检测系统,性能提升缓慢
- CNN 用于分类效果好,能否提升检测性能
R-CNN 相比传统方式有两个创新点:
- 把 CNN 用于生成 region proposal,用 CNN 提取的特征代替 SIFT 和 HOG 这些传统特征;
- 采用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合等问题。
R-CNN 包括:
- 生成候选区模块
- 提取特征的 CNN 模块
- 用于分类的 SVM 模块
- 修正边界框模块
训练流程:
- 有监督的预训练:在大型辅助数据集(ILSVRC2012 classification)上进行 CNN 预训练,得到一个分类器(CNN)
- 特定领域的微调:根据检测任务微调 CNN,把最后 1000 维的分类层替换成 N+1 维的分类层(N 是检测数据集的类别数,1 是背景)
- SVM 分类器训练:由于SVM是二分类器,需要为每个类别训练单独的SVM。对于某一类,一片区域包含该类物体为正样本,不包含为负样本。如何判断是否为正?设定 IOU 阈值,低于阈值的为负样本
- 边界框回归训练:提高定位精度
框架检测流程:
- 输入一张多目标图像
- 采用 selective search 算法提取约 2000 个建议框,对区域 / 框变形
- 处理后的区域/框输入 CNN 提取特征
- 对区域进行分类,用非极大抑制提取分数最高(最可能的类)的框
- 对框进行回归修正,选择分数最高的框
论文目录
Abstract
近几年(2014),PASCAL VOC上测得的目标检测性能一直停滞不前。所以,这篇文章提出一个简单易扩展的检测算法。
作者的方法结合了两个关键的见解:
(1)CNN可应用于自下而上的区域建议(region proposals),以便对对象进行定位和分割;
(2)当标记的训练数据稀少,把有监督的预训练模型进行特定于域的微调(fine-tuning),可以显着提高性能。
因为把 region proposals 和 CNN 结合,所以该算法叫 R-CNN。
1. Introduction
(1)视觉特征
首先介绍目标检测的状况:当时大多视觉任务基于 SIFT 和 HOG 两个视觉特征构建集成系统,但是目标检测在 PASCAL VOC 上的性能进步缓慢。
SIFT 和 HOG是块状方向直方图,与灵长类动物视觉通路第一部分关联,而识别发生在后面,所以猜想视觉特征计算是一个多阶段的过程。
(2)CNN
2012年,CNN 在 ILSVRC 比赛上取得了很好的成绩,CNN再次引起大家的关注。ILSVRC 2012研讨会曾讨论:ImageNet 上 CNN 分类 结果在多大程度上可以归纳为 PASCAL VOC Challenge 上的物体检测结果?
本文通过弥合图像分类和物体检测之间的差距来回答这个问题。 本文首次证明,与基于简单HOG类功能的系统相比,CNN可以在PASCAL VOC上显着提高对象检测性能。
(3)问题
要想把 CNN 应用于目标检查,需要解决两个问题:对目标定位,标注数据稀少的情况下训练模型。
把定位问题看作回归问题,我们通过在“使用区域识别”(recognition using regions)范式中进行操作来解决 CNN 定位问题,该方法已成功地用于目标检测和语义分割。
对于标注数据少的问题,解决此问题的常规方法是使用无监督的预训练,然后进行有监督的微调。
但本文的第二个贡献表明,在大型辅助数据集(ILSVRC)上进行有监督的预训练,然后在小型数据集(PASCAL)上进行特定于领域的微调,是学习高级算法的有效范例。
2. Object detection with R-CNN
介绍模型设计,用时分析,训练策略以及检测结果
目标检测系统包含三个模块(Figure 1 输入图片后的三个部分)
- 生成与类别无关的区域建议(region proposals)
- 一个CNN,用于从每个区域提取固定长度的特征向量(feature extraction)
- 一组特定于类别的线性SVM
2.1. Module design
Region proposals
近期有论文提出一些生成与类别无关的区域建议的方法。如:objectness , selective search, category-independent object proposals, constrained parametric min-cuts (CPMC), multi-scale combinatorial grouping 等。
R-CNN 采用了 selective search 用于与之前的检测方法做一个可控制的比较。
Feature extraction
R-CNN 提取特征使用的 CNN 是 Caffe 实现的 AlexNet,从每个 region proposal 提取 4096 维的特征。
输入 227×227 RGB image,经过 5 个卷积层和两个全连接层提取特征。
2.2. Test-time detection
在测试时,我们对测试图像进行选择性搜索,以提取大约2000个区域建议(region proposals)。 我们对每个 proposal 进行变形,然后依次通过CNN进行传播以计算特征(feature extraction)。 然后,对于每个类别,我们使用针对该类别训练的SVM对每个提取的特征向量进行评分(score)。
Run-time analysis
使检测有效的策略:
- CNN 参数共享
- CNN 计算的特征是低维的
这种共享的结果是,计算 region proposal 和 feature 所花费的时间将在所有类别上分摊。将图像的所有点积都批处理为单个矩阵矩阵积。
有以上对时间的分析可知,R-CNN可以扩展到数千个对象类,而无需求助于诸如哈希之类的近似技术。
2.3. Training
Supervised pre-training
我们仅使用图像级注释在大型辅助数据集(ILSVRC2012 classification)上进行 CNN 预训练(使用开源Caffe CNN库进行预训练)。
Domain-specific fine-tuning
微调 CNN 使之适应新任务和新域,训练 CNN 时仍然采用 SGD。
除了将CNN的 ImageNet 特定于1000路分类层替换为随机初始化的(N + 1)路分类层(其中N是对象类别的数量,再加上1作为背景)之外,CNN的体系结构保持不变。
Object category classifier
提取特征并应用训练标签后,我们将为每个类优化一个线性SVM。
例如训练一个二值分类器(前景和背景两类),可以设置IoU重叠阈值。如果取值为{0,0.1,0.2,…,0.5},阈值为 0.3,则 0.3 以上为 positive,其余为 negative。
2.4. Results on PASCAL VOC 2010-12
表1 展示了 R-CNN 在VOC 2010 上的完整结果,以及与 baseline 的比较。
因为 R-CNN 和 UVA 系统的采取相同的的 region proposal,它们的比较最直接。与他们的多功能,非线性内核SVM方法相比,我们在mAP方面实现了较大的提高,从35.1%提高到了53.7%。
2.5. Results on ILSVRC2013 detection
图3将 R-CNN 与 ILSVRC 2013 竞赛中的参赛作品以及竞赛后的OverFeat结果进行了比较。R-CNN的mAP达到31.4%,大大超过了OverFeat的第二佳结果24.3%。
3. Visualization, ablation, and modes of error
3.1. Visualizing learned features
如何可视化学习到的特征?第一层过滤器可以直接可视化并且易于理解,它们捕获定向的边缘和相反的颜色。 了解后续层更具挑战性。
作者的想法是挑选出网络中的特定单元(功能),并像使用它本身就是对象检测器一样使用它。 就是说,我们根据一大批保留 region proposals(大约1000万)计算单位的激活,将 proposal 从最高激活排序到最低激活,执行非最大抑制(non- maximum suppression),然后显示得分最高的区域。 我们的方法通过确切显示触发的输入,让选定的单元“为自己说话”。 我们避免求平均值,以便看到不同的视觉模式并深入了解由设备计算出的不变性。
以上是翻译,我的理解是CNN有好几层,看哪一层学到的特征,就把这一层当作检测器的最后一层,然后输出检测框( region proposals)。检测框有很多,给它们打分排序,只选择最高分显示出来,我们就能从图像中看到,这一层学到的是框住的这部分内容。
图 4 中的每一行显示了CNN的 pool5 单元的前16个 activations。选择6个单元(6行)以显示网络学习内容的代表性示例。比如第二行,学习到的特征是狗和点阵。
3.2. Ablation studies
Ablation studies 是模型简化测试,看看取消掉一些模块后性能有没有影响。
表 2 是实验结果,以下是实验分析。
Performance layer-by-layer, without fine-tuning——
为了了解哪些层对于检测性能至关重要,我们在VOC 2007数据集上分析了CNN的最后三层中的每一层。
逐层分析性能(表2第1-3行)显示,fc7的功能比fc6的功能更差。这意味着可以删除29%的CNN参数(约1,680万)而不会降低mAP。更令人惊讶的是,即使仅使用CNN参数的6%计算pool5功能,删除fc7和fc6也会产生很好的结果。
CNN的大部分表示能力来自其卷积层,而不是更大的密集连接层。这一发现表明,仅通过使用CNN的卷积层,就可以在计算HOG任意尺寸图像的密集特征图时发挥潜在的作用。
Performance layer-by-layer, with fine-tuning——
在VOC 2007 trainval上对其参数进行微调之后,我们现在来看CNN的结果。
改善是惊人的(表2第4-6行):微调使mAP增加8.0个百分点至54.2%。对于fc6和fc7,微调所带来的收益要比pool5大得多,这表明从ImageNet获悉的pool5功能是通用的,并且大多数改进是通过在它们之上学习特定于领域的非线性分类器而获得的。
Comparison to recent feature learning methods
在PASCAL VOC检测中尝试了相对较少的特征学习方法。我们看一下基于 deformable part models 的两种最新方法。
所有 R-CNN 变体都大大胜过三个 DPM baselines(表2第8-10行),包括使用特征学习的两个 baselines。与仅使用HOG功能的DPM最新版本相比,我们的mAP高出20个百分点。
3.3. Network architectures
这篇文章大部分结果采取的是 AlexNet 的网络框架,作者也发现框架选择对 R-CNN 检测的性能影响很大,所以也比较了采用 VGGNet 的网络性能。
表三是采用两个 CNN 框架的实验结果, T-Net 指 AlexNet,O-Net 指 VGGNet。
表3中的结果表明,带有O-Net的R-CNN明显优于带有T-Net的R-CNN,mAP从58.5%增加到66.0%。但是,在计算时间方面存在很大的缺陷,O-Net的前向传递比T-Net花费大约7倍的时间。
3.4. Detection error analysis
由于分析最好在相关图的上下文中进行,因此我们在图5和图6的标题内进行讨论。
图5:排名最高的假阳性(FP)类型的分布。每个图都显示了FP类型的演变分布,因为按照得分递减的顺序考虑了更多FP。
每个FP分为以下4种类型中的1种:Loc-定位不良(IoU重叠的检测物的正确类别介于0.1和0.5之间,或重复); Sim-与类似类别的混淆; Oth-混淆了不同的对象类别; BG-在背景上触发的FP。
与DPM相比,我们的错误明显更多是由于定位不良所致,而不是与背景或其他对象类别相混淆,这表明CNN功能比HOG具有更大的判别力。松散的本地化很可能是由于我们使用了自下而上的区域建议,以及通过对CNN进行全图像分类的预训练而获得的位置不变性。第三列显示了我们的简单边界框回归方法如何解决许多本地化错误。
图 6:对对象特征的敏感性。每个图都显示了六个不同对象特征(遮挡,截断,边界框区域,纵横比,视点,零件可见性)内性能最高和最低的子集的均值(分类)平均AP。我们显示了带有和不带有微调(FT)和边界框回归(BB)以及DPM voc-release5的方法(R-CNN)的图。
总体而言,微调不会降低灵敏度(最大值和最小值之间的差),但会显着改善几乎所有特性的最高和最低性能子集。这表明,微调不仅可以改善纵横比和边框区域的性能最低的子集,还可以根据我们扭曲网络输入的方式来推测。相反,微调可提高所有特性的鲁棒性,包括遮挡,截断,观察点和零件可见性。
3.5. Bounding-box regression
受DPM中使用的 bounding-box regression 的启发,我们针对给定选择性搜索区域建议(selective search region proposal)的pool5特征,训练了线性回归模型来预测新的检测窗口。
3.6. Qualitative results
检测质量分析,主要从图中体现。
4. The ILSVRC2013 detection dataset
4.1. Dataset overview
ILSVRC2013检测数据集分为三组:train(395,918),val(20,121)和test(40,152),其中每组中的图像数都用括号括起来。
与val和test不同,train图像(由于数量众多)没有详尽注释。 在任何给定的火车图像中,可以标记200个类别的实例,也可以不标记。 除了这些图像集之外,每个类别还具有一组负图像。
负样本怎么来(训练集没有详尽标注)?作者的总体策略是使用验证集和一部分训练集作为示例的辅助来源。 为了将验证集用于训练和验证,需要将其分为大小大致相等的“ val1”和“ val2”集。
4.2. Region proposals
我们采用了与以前相同的 region proposal 方法用于在PASCAL上进行检测。 选择性搜索(Selective search)在“快速模式”下对val1,val2和test中的每个图像进行了运行。
在验证集上,选择性搜索平均每幅图像产生2403个 region proposal ,所有 ground-truth bounding boxes 的召回率达到91.6%(阈值为0.5 IuU)。 召回率明显低于PASCAL,后者约为98%,这表明在区域提案阶段仍有很大的改进空间。
4.3. Training data
对于训练数据,我们形成了一组 image 和 box 。包括val1中的所有选择性搜索框和 ground-truth boxes,以及训练集每个类的前N个最多的 ground-truth boxes。
R-CNN中的三个过程需要训练集:
(1)CNN微调,(2)检测器SVM训练(3)边界框回归器训练
4.4. Validation and evaluation
在将结果提交给评估服务器之前,我们使用上述训练数据验证了数据使用选择以及val2集上的微调和边界框回归的影响。
毫无疑问,对于ILSVRC,这些超参数选择中的某些选择次优,但是,这项工作的目标是在ILSVRC上产生初步的R-CNN结果,而无需进行大量的数据集调整。
4.5. Ablation study
表4显示了对不同数量的训练数据,微调和边界框回归的影响的消融研究。可以看出,把这些策略都加上性能最好。
4.6. Relationship to OverFeat
可以将 OverFeat 粗略地视为 R-CNN 的特例。
5. Semantic segmentation
区域分类(region classification)是语义分割的一种标准技术,使我们能够轻松地将R-CNN应用于PASCAL VOC分割挑战。
CNN features for segmentation
我们评估了CPMC区域上计算特征的三种策略:
第一种策略(full)忽略区域的形状,并直接在扭曲的窗口上计算 CNN 特征;
第二种策略(fg)仅在区域的前景蒙版上计算 CNN 特征;
第三种策略(full + fg)简单地连接了 full 和 fg 功能。
Results on VOC 2011
表5总结了我们与V2P相比在VOC 2011验证集中的结果。在每种特征计算策略中,fc6层始终胜过fc7,下面的讨论涉及fc6功能。
fg策略略胜于full策略,表明被遮罩的区域形状提供了更强的信号,与我们的直觉相符。 但是,full + fg的平均准确度为47.9%,这表明即使使用fg功能,full 功能所提供的上下文也非常有用。
6. Conclusion
与 abstract 部分基本相同,介绍了现状,贡献及两个关键方法。
作者得出结论,把计算机视觉和深度学习结合((bottom- up region proposals and convolutional neural networks)才取得了本文的成果。