机器学习和人工智能入门程序员大数据,机器学习,人工智能

菜鸟实习日记~day8(rcnn+fast-rcnn+faste

2017-09-07  本文已影响0人  飞翔的小瓜瓜

RCNN解决的是,“为什么不用CNN做classification呢?”

Fast R-CNN解决的是,“为什么不一起输出bounding box和label呢?”

Faster R-CNN解决的是,“为什么还要用selective search呢?”

科研:

一、RCNN:Regions with CNN features.(以下引用来自 shenxiaolu1984的专栏 )

1.本文解决了目标检测中的两个关键问题。

 问题一:速度

经典的目标检测算法使用滑动窗法依次判断所有可能的区域。本文则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上提取特征,进行判断。

问题二:训练集

经典的目标检测算法在区域中提取人工设定的特征(Haar,HOG)。本文则需要训练深度网络进行特征提取。可供使用的有两个数据库:

一个较大的识别库(ImageNet ILSVC 2012):标定每张图片中物体的类别。一千万图像,1000类。

一个较小的检测库(PASCAL VOC 2007):标定每张图片中,物体的类别和位置。一万图像,20类。

本文使用识别库进行预训练,而后用检测库调优参数。最后在检测库上评测。

2.RCNN算法分为4个步骤

- 一张图像生成1K~2K个候选区域(应用了Selective Search方法)

- 对每个候选区域,使用深度网络提取特征

- 特征送入每一类的SVM分类器,判别是否属于该类

- 使用回归器精细修正候选框位置

Selective Search

- 使用一种过分割手段,将图像分割成小区域

- 查看现有小区域,合并可能性最高的两个区域。重复直到整张图像合并成一个区域位置

- 输出所有曾经存在过的区域,所谓候选区域

3.位置精修

目标检测问题的衡量标准是重叠面积:许多看似准确的检测结果,往往因为候选框不够准确,重叠面积很小。故需要一个位置精修步骤。

回归器

对每一类目标,使用一个线性脊回归器进行精修。正则项λ=10000。

输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。

训练样本

判定为本类的候选框中,和真值重叠面积大于0.6的候选框。




二.SPPnet

一张图图片会有~2k个候选框,每一个都要单独输入CNN做卷积等操作很费时。SPP-net提出:能否在feature map上提取ROI特征,这样就只需要在整幅图像上做一次卷积。

虽然总体流程还是 Selective Search得到候选区域->CNN提取ROI特征->类别判断->位置精修,但是由于所有ROI的特征直接在feature map上提取,大大减少了卷积操作,提高了效率

如何提取这样的小feature?来自于论文《Selective Search for Object Recognition》

RCNN,SPPnet,fast-rcnn都用了这种方法~

一句话概括,用了segmentation和grouping的方法来进行object proposal,然后用了一个SVM进行物体识别。

由于物体之间存在层级关系,所以Selective Search用到了Multiscale的思想。从上图看出,Select Search在不同尺度下能够找到不同的物体。

注意,这里说的不同尺度,不是指通过对原图片进行缩放,或者改变窗口大小的意思,而是,通过分割的方法将图片分成很多个region,并且用合并(grouping)的方法将region聚合成大的region,重复该过程直到整张图片变成一个最大的region。这个过程就能够生成multiscale的region了,而且,也符合了上面“物体之间可能具有层级关系”的假设。

具体步骤:

@使用Efficient GraphBased Image Segmentation中的方法来得到region

@得到所有region之间两两的相似度

@合并最像的两个region

@重新计算新合并region与其他region的相似度

@重复上述过程直到整张图片都聚合成一个大的region

@使用一种随机的计分方式给每个region打分,按照分数进行ranking,取出top k的子集,就是selective search的结果

论文作者给出了两个方面的多样化策略:颜色空间多样化,相似多样化。

作者采用了8中不同的颜色方式,主要是为了考虑场景以及光照条件等

在区域合并的时候有说道计算区域之间的相似度,论文章介绍了四种相似度的计算方法:颜色、纹理、大小、吻合




三.Fast R-CNN

一篇论文的作者只有一个人,就问你服不服~

与图片分类相比,目标检测有更大的难度

1.First, numerous candidate object locations (often called “proposals”) must be processed.首先,必须处理许多候选对象位置(通常称为“提案”)。

2.these candidates provide only rough localization that must be refined to achieve precise localization.这些提案只提供粗略的定位,对于需要实现精确的定位。

主要步骤

@经过多层的卷积和pooling得到一组feature map

@通过SPP net中的ROI projection在这层feature map上找到原图的proposal对应的区域(ROI)

@利用spatial pooling的思路,对每个ROI做pooling。具体来说就是把h×w的ROI划分为H×W个grid/sub-window,每个grid大小是h/H × w/W,在每个grid内取max。

@把ROI pooling layer对每个ROI(对应回原图就是每个proposal)输出的H×W长的max pooling feature vector接全连接层

@全连接层之后有两个输出层,一个softmax分类器,输出该ROI对应的proposal的object类别,一个是bounding box回归层,输出category specific bounding box

contribute:

1. Higher detection quality (mAP) than R-CNN, SPPnet

2. Training is single-stage, using a multi-task loss

3. Training can update all network layers

4. No disk storage is required for feature caching

四.《Faster R-CNN: Towards real-time object detection with region proposal networks》

Faster R-CNN可以简单地看做“区域生成网络RPNs + Fast R-CNN”的系统,用区域生成网络代替FastR-CNN中的Selective Search方法。

RCNN解决的是,“为什么不用CNN做classification呢?”

Fast R-CNN解决的是,“为什么不一起输出bounding box和label呢?”

Faster R-CNN解决的是,“为什么还要用selective search呢?”


1.RPN:

@RPN的核心思想:

使用CNN卷积神经网络直接产生Region Proposal,使用的方法本质上就是滑动窗口(只需在最后的卷积层上滑动一遍),因为anchor机制和边框回归可以得到多尺度多长宽比的Region Proposal。

@RPN的具体流程

使用一个小网络在最后卷积得到的特征图上进行滑动扫描,这个滑动网络每次与特征图上n*n(论文中n=3)的窗口全连接(图像的有效感受野很大,ZF是171像素,VGG是228像素),然后映射到一个低维向量(256d for ZF / 512d for VGG),最后将这个低维向量送入到两个全连接层,即bbox回归层(reg)和box分类层(cls)。sliding window的处理方式保证reg-layer和cls-layer关联了conv5-3的全部特征空间。

reg层:预测proposal的anchor对应的proposal的(x,y,w,h)

cls层:判断该proposal是前景(object)还是背景(non-object)分类是不是目标。

注意:3*3卷积核的中心点对应原图(re-scale,源代码设置re-scale为600*1000)上的位置(点),将该点作为anchor的中心点,在原图中框出多尺度、多种长宽比的anchors。

2.特征共享:

区域生成网络(RPN)和fast RCNN都需要一个原始特征提取网络(下图灰色方框)。这个网络使用ImageNet的分类库得到初始参数W0,但要如何精调参数,使其同时满足两方的需求呢?本文讲解了三种方法。

轮流训练

a. 从W0开始,训练RPN。用RPN提取训练集上的候选区域

b. 从W0开始,用候选区域训练Fast RCNN,参数记为W1

c. 从W1开始,训练RPN…

具体操作时,仅执行两次迭代,并在训练时冻结了部分层。论文中的实验使用此方法。

如Ross Girshick在ICCV 15年的讲座Training R-CNNs of various velocities中所述,采用此方法没有什么根本原因,主要是因为”实现问题,以及截稿日期“。~hhhhhhhhhhhh~

上一篇下一篇

猜你喜欢

热点阅读