Object Detection · RCNN

Object Detection,顾名思义就是从图像中检测出目标对象,具体而言是找到对象的位置,常见的数据集是PASCAL VOC系列。2010年-2012年,Object Detection进展缓慢,在DPM之后没有大的进展,直到CVPR2014,RBG大神(Ross Girshick)把当时爆火的CNN结合到Detection中,将PASCAL VOC上的准确率提高到53.7%,本文为你解读RBG的CVPR2014 paper:

Rich feature hierarchies for accurate object detection and semantic segmentation

Key insights

可以用CNN对图片局部区域做识别,从而判断这个局部是不是目标对象

在标记数据稀缺的情况下,可以用其他数据集预训练,再对模型进行fine tune

RCNN Overview

RCNN Overview

输入图片

通过selective search给出2k个推荐区域(region proposal)

检测问题的一个特点是,我们不仅需要知道一张图片中是否包含目标对象,而且需要知道目标对象所处位置,有几种方式,一种是回归图中检测框的位置[38],但是准确率很低,一种是用滑动窗口的方法将图片切割成很多小块,再对小块做分析,但是对于CNN来说,每经过一层pooling,感受野就会变小,RCNN采用了一个五层卷积的结构,要求输入至少是195x195的尺寸,用滑窗不能保证这个输入大小。

Weight learning on regions

Selective search是一种比较好的数据筛选方式,首先对图像进行过分割切成很多很多小块,然后根据小块之间的颜色直方图、梯度直方图、面积和位置等基本特征,把相近的相邻对象进行拼接,从而选出画面中有一定语义的区域。关于Selective Search的更多信息可以查阅这篇论文:Recognition using Regions(CVPR2009)

将每个推荐区域传入CNN提取特征

为每个类训练一个SVM,用SVM判断推荐区域属于哪个类

用NMS对同个类的region proposals进行合并

用bounding box regressor对预测位置进行精细的修正,进一步提高精度

> 非极大值抑制(NMS)顾名思义就是抑制不是极大值的元素,搜索局部的极大值。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。这里不讨论通用的NMS算法,而是用于在目标检测中用于提取分数最高的窗口的。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口。(转自知乎专栏:晓雷的机器学习笔记) 训练

从上面的Overview可以看出,需要训练的主要有两个部分,各个类共用的CNN和各个类单独的SVM。

Network Structure

RCNN试了两种CNN框架,一种是Hinton他们在NIPS2012上发表的AlexNet:ImageNet Classification with Deep Convolutional Neural Networks

AlexNet

这是一个五层卷积+三层全连接的结构,输入是224x224的图片,输出是1000维one-hot的类别,

一种是VGG16(Very Deep Convolu-
tional Networks for Large-Scale Image Recognition)

VGG16

这是两个网络的检测结果:

RCNN Result with AlexNet(T) and VGG16(O)

VGG16精度更高一些,但是计算量比较大,实时性不如AlexNet,方便起见我们下面都以AlexNet为基础进行分析。

Supervised Pretraining

首先用ImageNet预训练,输入图片,输出为这张图片包含的目标对象的类别,而不涉及具体位置,因为ImageNet中没有bounding box信息。训练到AlexNet能够在分类任务上达到Hinton他们的精度之后,开始用检测数据做Fine tune。

Domain Specific Fine Tuning

直接用ImageNet预训练得到的CNN在PASCAL VOC上表现肯定是不如人意的,接下来,用PASCAL VOC 的检测数据进行fine tune。 因为VOC有20个分类,在ILSVR2013的检测任务中,最后有200个分类,而ImageNet有1000个分类,首先要把最后的全连接分类层替换成目标任务输出个数+1(加一个背景类)的全连接层。输入数据用的是Selective Search得到的Region Proposals对应的bounding box,

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwyfxj.html