Rich feature hierarchies for accurate object detection and semantic segmentation
Abstract
过去几年,在数据集PASCAL上,物体检测的效果已经达到了瓶颈,效果最好的方法是融合了多种低维图像特征和高维上下文环境的复杂融合系统。在这篇论文里,我们提出了一种简单并且可扩展的检测算法,可以将mAP在VOC2012最好结果的基础上提高30%以上——达到了53.3%。我们的方法结合了两个关键的因素:
- 在候选区域上自下而上使用大型卷积神经网络(CNNs),用以定位和分割物体。
- 监督训练样本数紧缺时,在额外的数据上预训练的模型经过fine-tuning可以取得很好的效果
因为我们把region proposal和CNNs结合起来,所以该方法被称为R-CNN:Regions with CNN features。我们也把R-CNN效果跟OverFeat比较了下(OverFeat是最近提出的在与我们相似的CNN特征下采用滑动窗口进行目标检测的一种方法),结果发现RCNN在200类ILSVRC2013检测数据集上的性能明显优于OVerFeat。
Introduction
传统方法:基于特征,如SIFT和HOG,是比较初级的特征,但我们知道识别的过程发生在多个下游阶段,(我们是先看到了一些特征,然后才意识到这是什么东西)也就是说对于视觉识别来说,更有价值的信息,是层次化的,多个阶段的特征。
SIFT, 尺度不变特征变换(Scale-invariant feature transform),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。
HOG, 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特征通过计算和统计图像局部区域的梯度方向直方图来构成特征。
本论文是第一个说明在PASCAL VOC的物体检测任务上CNN比基于简单类HOG特征的系统有大幅的性能提升。我们主要关注了两个问题:
- 利用深度网络定位目标
- 在小规模的标注数据集上训练大型网络
与图像分类不同的是检测需要定位一个图像内的许多物体。一个方法是将框定位看做是回归问题,但Szegedy等人的工作说明这种策略并不work。另一个可替代的方法是使用滑动窗口,但是由于输入图片有非常大的感受野(195×195)and 步长(32×32),同时网络层次更深,这使得采用滑动窗口的方法充满挑战。
我们通过操作”recognition using regions”,解决了CNN的定位问题。
- 候选区域生成: 一张图像生成1K~2K个候选区域 (采用Selective Search 方法)
- 特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN)
- 类别判断: 特征送入每一类的SVM 分类器,判别是否属于该类
2. Object detection with R-CNN
三个模块:
- 类别无关的region proposal
- 大型的卷积神经网络,从region中抽取特定长度的特征向量
- 指定类别的线性SVM
2.1 Module Desion
Region proposals
采用 selective search, 方便与之前的工作进行比较
Feature extraction
采用CNN对每个region抽取4096维的特征向量
为了计算region proposal的特征,我们首先要对图像进行转换,使得它符合CNNC的输入(架构中的CNNC只能接受固定大小:277*277)。这个变换有很多办法,我们使用了最简单的一种。无论候选区域是什么尺寸和宽高比,我们都把候选框变形成想要的尺寸。具体的,变形之前,我们先在候选框周围加上16的padding,再进行各向异性缩放。 这种形变使得mAp提高了3到5个百分点。
2.2 Test-time detection
测试阶段,在测试图像上使用selective search抽取2000个推荐区域,然后变形每一个推荐区域,再通过CNN前向传播计算出特征。然后我们使用对每个类别训练出的SVM给整个特征向量中的每个类别单独打分。然后给出一张图像中所有的打分区域,然后使用NMS(每个类别是独立进行的),拒绝掉一些和高分区域的IOU大于阈值的候选框。
抑制的过程是一个迭代-遍历-消除的过程。(1)将所有框的得分排序,选中最高分及其对应的框.(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。(3)从未处理的框中继续选一个得分最高的,重复上述过程。
两个高效的特性:
- CNN参数跨类别共享,计算推荐区域特征的耗时可以分摊到所有类别
- 通过CNN计算的特征向量相比其他通用方法数量级更低
2.3 Training
Supervised pre-training
我们在大型辅助训练集ILSVRC2012分类数据集(没有约束框数据)上预训练了CNN。
Domain-specific fine-tuning
为了让我们的CNN适应新的任务(即检测任务)和新的领域(变形后的推荐窗口)。我们只使用变形后的推荐区域对CNN参数进行SGD训练。我们替换掉了ImageNet专用的1000-way分类层,换成了一个随机初始化的21-way分类层,(其中20是VOC的类别数,1代表背景)而卷积部分都没有改变。我们对待所有的推荐区域,如果其和真实标注的框的IoU>= 0.5就认为是正例,否则就是负例。SGD开始的learning_rate为0.001(是初始化预训练时的十分之一),这使得调优得以有效进行而不会破坏初始化的成果。每轮SGD迭代,我们统一使用32个正例窗口(跨所有类别)和96个背景窗口,即每个mini-batch的大小是128。另外我们倾向于采样正例窗口,因为和背景相比他们很稀少。
Object category classifiers
思考一下检测汽车的二分类器。很显然,一个图像区域紧紧包裹着一辆汽车应该就是正例。同样的,没有汽车的就是背景区域,也就是负例。较为不明确的是怎样标注哪些只和汽车部分重叠的区域。我们使用IoU重叠阈值来解决这个问题,低于这个阈值的就是负例。这个阈值我们选择了0.3,是在验证集上基于{0, 0.1, … 0.5}通过网格搜索得到的。
一旦特征提取出来,并应用标签数据,我们优化了每个类的线性SVM。由于训练数据太大,难以装进内存,我们选择了标准的hard negative mining method。高难负例挖掘算法收敛很快,实践中只要在所有图像上经过一轮训练,mAP就可以基本停止增加了。
【难负例挖掘算法,用途就是正负例数量不均衡,而负例分散代表性又不够的问题,hard negative就是每次把那些顽固的棘手的错误,再送回去继续练,练到你的成绩不再提升为止.这一个过程就叫做’hard negative mining‘】
我们也会讨论为什么训练一个分类器是必要的,而不只是简单地使用来自调优后的CNN的最终全连接层的输出。
CNN训练的时候,需要比较多的样本,所以将重叠IOU大于0.5的标记为了正样本,小于0.5标记为负样本。这样的标注导致直接使用CNN分类效果并不好,mAP从54.2%降到了50.9%,而使用SVM分类就不需要这么多样本了,所以就可以对训练数据有更加严格的标注,分类效果更好一点。另外,softmax是在随机采样的背景样本上进行训练,而SVM采用的则是hard-negative mining,这提高了分类准确度。
补充一些基础知识
Selective Search
- 使用一种过分割手段,将图像分割成小区域 (1k~2k 个)
- 查看现有小区域,按照合并规则合并可能性最高的相邻两个区域。重复直到整张图像合并成一个区域位置
- 输出所有曾经存在过的区域,所谓候选区域
IOU
对于bounding box的定位精度,有一个很重要的概念: 因为我们算法不可能百分百跟人工标注的数据完全匹配,因此就存在一个定位精度评价公式:IOU。 它定义了两个bounding box的重叠度,如下图所示:
非极大值抑制NMS:
非极大值抑制(NMS)顾名思义就是抑制不是极大值的元素,搜索局部的极大值。
RCNN会从一张图片中找出n个可能是物体的矩形框,然后为每个矩形框为做类别分类概率:
就像上面的图片一样,定位一个车辆,最后算法就找出了一堆的方框,我们需要判别哪些矩形框是没用的。非极大值抑制的方法是:先假设有6个矩形框,根据分类器的类别分类概率做排序,假设从小到大属于车辆的概率 分别为A、B、C、D、E、F。
(1)从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;
(2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
(3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
就这样一直重复,找到所有被保留下来的矩形框。
bounding-box regression
Bounding Boxregression是 RCNN中使用的边框回归方法,在RCNN的论文中,作者指出:主要的错误是源于mislocalization。为了解决这个问题,作者使用了bounding box regression。
这个方法使得mAp提高了3到4个点。
对于上图,绿色的框表示Ground Truth, 红色的框为Selective Search提取的Region Proposal。那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU<0.5), 那么这张图相当于没有正确的检测出飞机。 如果我们能对红色的框进行微调, 使得经过微调后的窗口跟Ground Truth 更接近, 这样岂不是定位会更准确。 确实,Bounding-box regression 就是用来微调这个窗口的。