RCNN、FastRCnn总结

RCNN的缺点:重复计算

Fast-RCNN:RCNN的加速版本,在我看来,这不仅仅是一个加速版本,其优点还包括:

(1) 首先,它提供了在caffe的框架下,如何定义自己的层/参数/结构的范例,这个范例的一个重要的应用是python layer的应用

(2) training and testing end-to-end为了达到这一点其定义了ROIPooling层,因为有了这个,使得训练效果提升不少

(3)速度上的提升

先截个图,这就是RCNN的原理图。

RCNN <wbr>& <wbr>SPP-net <wbr>& <wbr>Fast-RCNN <wbr>& <wbr>Faster-RCNN

 该文是由UC-Berkeley(加利福尼亚大学伯克利分校)发表的。说明下RCNN的意思。CNN也就是众多周知的convolutional neural network, Rregion的缩写,意为对图像进行局部区域的处理。 该文的主要亮点在于:,一是利用的region proposals对物体探测中位置信息的精确处理,二是利用监督式预训练和主域特殊化的微调方法,代替了传统的非监督式预训练和监督式微调,使得MAPmean average precision )得到大幅提升。现在来介绍原理图的具体实现。

 由于在深度CNN中,FC(full-connected)层的输入是需要定的size的,所以对输入图像的大小需要做预处理以满足这一要求。本文中采取的是wrap方案。生成类别独立的region proposals 有许多可选方法,该文采取了selective search方案。在image中取出大约有2000个region proposals, 他们的维数都是4096维。之前提到的wrap接着对region proposals进行固定size的处理。接着通过CNN进行特征提取,然后再用这些特征训练SVM分类/预测器。在原理图实现中需要注意有以下几点:

1)selective search提取region proposals时,由于它对scale是敏感的,所以选取出来的region proposals的个数就会发生变化,为了使得region proposals的个数一定,在selective search之前还需要进行resize的处理。

2)原始图像进行wrap处理时,固定大小的选择,一般是227*227;

3)由于训练集庞大,分类器优化开销很大,该文采用了标准的hard negative mining method方法提高了存储利用率;

4)分类器采用的是非线性核的SV;

5)为了强化定位,引入Bounding-Box;

该文算是诸多文章优势的集成体现。它达到的MAP也再次刷新了记录:在PASCAL VOC 2010上,其MAP达到了53.7%;在ILSVRC2013 detection dataset达到了31.4%

但一如文章中提到的,该方法的主要缺陷在于计算的时间成本很大,根本达不到real-time的要求。原因也在于region proposals处理中所固有的缺陷:CNN需要对每个region proposals进行单独的特征提取,这是十分耗时的。同时在进入CNN之前的wrap处理也是存在问题的,这种预处理会使得图像失真,部分信息丢失。

 于是MSRA(微软亚洲研究院)的何凯明等人提出了SPP-net

 SPP-net

还是先贴上图。首先需要声明的是这篇paper仍有些地方没搞明白(上边的RCNN虽然算是吧啦完了,但难免存在理解偏差,望大牛们多多指教。)

 

RCNN <wbr>& <wbr>SPP-net <wbr>& <wbr>Fast-RCNN <wbr>& <wbr>Faster-RCNN

 RCNN <wbr>& <wbr>SPP-net <wbr>& <wbr>Fast-RCNN <wbr>& <wbr>Faster-RCNN

首先,我们看看截图二,很清楚的看到该文将crop/wrap这一预处理方法去掉了,同时在卷积层后加上了SPP。那我们就从这里开始谈起。

Crop/wrap,顾名思义就是对图像进行分割和变形。这两种方法都存在着丢失或者扭曲原始图像信息的缺陷。这样CNN获取的特征也就受到了限制,从而导致后续分类/预测的泛化能力不够。需要略作解释的是crop/wrap处理的充分性是由于FC层固有特性决定的,即FC层的输入必须固定大小。该文亮点在于,将这一固定大小的处理放在特征提取之后。这样原始图像得到保护,特征提取更加的充分,然后再利用该文中提出的SPP代替最后一个卷积层的max-pooling层,完成大小固定的处理。该文主要亮点如下:

1)对输入图像尺度无限制,同时输出的是定长特征,但运用滑动窗口的pooling技术就不能;

2)SPP可运用不同大小的pooling窗口,但CNN只能是单一的窗口;

3)SPP可以从尺度变化中提取特征;

4)大大提高了图像处理速度,24-102*faster than the R-CNN method;

接下来就来看看SPP到底是什么。上边已经谈到,SPP是代替了传统CNN中的pool5层,所以它也是一种pooling方法。同时,传统CNN中pooling层的滑动窗口是一定的,但在SPP中可以看到,它的pooling层是分层的,正如SPP自身的含义——金字塔式池化一样,它每层pooling  bins的大小是可变的,它的大小是个输入图像的大小成比例的;同时pooling bins的个数是确定的,这就相当于多尺度的pooling,相较于传统CNN中单尺度的pooling,肯定存在更多的优势。

SPP-net在物体探测中的效果也非常好。在RCNN中是对上千个region proposals分别进行CNN特征提取,而在SPP-net中则是对原始图像进行CNN特征提取,然后再对region 所对应的window利用SPP。这里需要理解的是,对图像的分割操作仍然是需要的,只是SPP中并不是立即对每个region直接特征抽取,而是将“对每个region的操作”放在了SPP这一过程中,即RCNN是多个regions+多次CNN+单个pooling,而SPP则是单个图像+单次CNN+多个region+多个pooling。

尽管如此,SPP-net仍存在缺陷:一是SPP-net虽然极大的提高了RCNN的速度,但和RCNN一样,他们的训练过程都是一个多阶段过程:即包含着特征抽取,网络微调,分类器SVM的训练以及最后的对BB回归器的匹配。二是SPP-net中用到的微调技术只能更新FC层,这无疑限制了深度CNN的潜力。

Fast-RCNN

在此基础上,MSRA又提出了Fast-RCNN。相较与RCNN和SPP-net,它的亮点在于:

1)MAP相较于RCNN也有很大的提高;

2)训练过程通过运用多任务损失,实现单步骤完成;

3)在训练过程中所有层都可以得到更新;

4)不再需要磁盘存储器作为特征缓存;

5)比RCNN的训练时间快9倍,测试时间快213倍,在 PASCAL VOC 2012上获得MAP也更高.。和SPPnet相比,训练时间快3倍,测试时间快10倍,MAP也有提升。

从下图可以看到如下变化:一是输入从单输入变为双输入;二是引入ROI pooling层(region of interest,它是只含一层的SPP);三是在FC层后有两个输入。接下看看这些变化的具体实现和影响。

 

RCNN <wbr>& <wbr>SPP-net <wbr>& <wbr>Fast-RCNN <wbr>& <wbr>Faster-RCNN
 上述的变化都是在训练过程做的改变,在微调阶段曾谈及SPP-net只能更新FC层,这是因为卷积特征是线下计算的,从而无法再微调阶段反向传播误差。而在fast-RCNN中则是通过image-centric sampling提高了卷积层特征抽取的速度,从而保证了梯度可以通过SPP层(即ROI pooling层)反向传播。
     上述的变化都是在训练过程做的改变,在微调阶段曾谈及SPP-net只能更新FC层,这是因为卷积特征是线下计算的,从而无法再微调阶段反向传播误差。而在fast-RCNN中则是通过image-centric sampling提高了卷积层特征抽取的速度,从而保证了梯度可以通过SPP层(即ROI pooling层)反向传播。

输入除了batch大小为N的图像外,还有R大小的ROI序列。这种多任务训练机制避免了对顺序训练任务的pipeline的管理,同时也对MAP的提高起到了一定的作用。输出也因为变成两个输出而存在着两个loss function。一个输出对k个物体类别的可能性的softmax型预测,一个输出针对每个类的四位实数。

该文在随后还探讨了SVM和softmax两类分类器在VOC07上MAP的大小,发现softmax表现更为突出;同时发现region proposals并不是越多越好,这些都可作为一些trick指导自己的工作。

RCNNSPP-net,再到Fast-RCNN,在MAP不断得到提升的同时,速度也不断的提升,但我们也注意到在proposals的计算中仍然存在的计算瓶颈,而最近MSRA提出的Faster-RCNN正是这一问题的解决方案。由于这篇文章才出来不久,还没来得及读,暂时写到这里。 

PS:文章完全来自个人理解,肯定很多漏洞或者理解过于表面的问题,此文后续会不断更新,以求更全面更简单的诠释。

参考文献:

[1] R. Girshick, J. Donahue, T. Darrell, and J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation,”in CVPR, 2014

[2] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV, 2014.

[3] R. Girshick. Fast R-CNN. arXiv:1504.08083, 2015.

[4] Shaoqing Ren Kaiming He Ross Girshick Jian Sun. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks.arXiv:1506.01497,2015


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值