论文笔记--Fast RCNN

很久之前试着写一篇深度学习的基础知识,无奈下笔之后发现这个话题确实太大,今天发一篇最近看的论文Fast RCNN。这篇文章是微软研究院的Ross Girshick大神的一篇作品,主要是对RCNN的一些改进,但是效果十分明显,paper和项目的地址都能从Ross Girshick的主页找到:http://people.eecs.berkeley.edu/~rbg/

刚刚接触深度学习,难免纰漏很多,还请大神指教。

自己的百度云里也有一些相关内容http://pan.baidu.com/s/1o79NZ2E

文字内容大多是自己讲解时的PPT的内容。


背景介绍

Fast rcnn是针对RCNN+SPP-NET的改进,改进的原因是:

1.RCNN在训练时是一个多阶段,各个pipeline是隔离的。
2.RCNN在训练时很消耗时间和空间。
3.物体检测很慢。

1.RCNN

RCNN的结构示意图

首先看一下RCNN的框架图,大概的工作过程是:

  1. takes an input image,
  2. extracts around 2000 bottom-up region proposals,
  3. computes features for each proposal using a large convolutional neural network (CNN)
  4.  classifies each region using class-specific linear SVMs.

详细的说一下就是:首先输入一张图片,通过selective search获得约2K个proposal(也就是candidate object locations),之后对图像进行伸缩变换,把图像变为固定尺寸的照片,之后把固定尺寸之后的图片传入CNN网络中进行提取特征等操作,之后使用SVM分类器进行分类。

由此可以看出RCNN有这样的缺点:

  1. 训练的时候,pipeline是隔离的,先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做bbox regression。
  2. 训练时间和空间开销大。RCNN中ROI-centric的运算开销大,所以FRCN用了image-centric的训练方式来通过卷积的share特性来降低运算开销;RCNN提取特征给SVM训练时候需要中间要大量的磁盘空间存放特征,FRCN去掉了SVM这一步,所有的特征都暂存在显存中,就不需要额外的磁盘空间了。

由此看一看出RCNN的问题所在,首先在提取完proposal之后,整个网络对提取到的RCNN中的所有的proposal都进行了整套的提取特征这些操作,这些操作是非常耗时,耗费空间的。事实上我们并不需要对每个proposal都进行CNN操作,只需要对原始的整张图片进行CNN操作即可,因为我们所提取到的proposal属于整张图片,因此对整张图片提取出feature map之后,再找出对应proposal在feature map中对应的区域,进行对比分类即可。第二个问题所在就是在框架中2-3过程中的对提取到的区域进行变形,我们知道CNN提取特征的过程对图像的大小并无要求,只是在提取完特征,进行全连接的时候才需要固定尺寸的特征,然后使用SVM等分类器进行分类操作,当然这两个问题在SPP -NET中得到了很好的解决。

2.SPP NET

引入原因:在RCNN中,使用完ss提取proposal之后,对每个proposal都进行了CNN提取特征+SVM分类。
解决方法:因为region proposal都是图像的一部分,我们只需要对图像提一次卷积层特征,然后将region proposal在原图的位置映射到卷积层特征图上,这样对于一张图像我们只需要提一次卷积层特征,然后将每个region proposal的卷积层特征输入到全连接层做后续操作。

更直白的讲就是SPP-NET代替卷积网络中最后一个pooling层,而且这pooling层是多scale的。

接下来看一下SPPNET的框架图

SPPNET框架图

图中叠在一起的四个黑色方框是输入图像经过卷积层得到的特征图(feature maps of conv5),图中叫window的方框就是我们proposal在feature map中的对应位置,之后我们使用空间金字塔pooling层对这块区域进行池化,得到一个固定尺寸的向量,之后再加入到全连接层中。

(这一篇论文正在看,先写一部分大概内容,以后进行系统点补充)

关于Fast RCNN

FRCNN针对RCNN在训练时是multi-stage pipeline和训练的过程中很耗费时间空间的问题进行改进。

  1. 最后一个卷积层后加了一个ROI pooling layer。ROI pooling layer首先可以将image中的ROI定位到feature map,然后是用一个单层的SPP layer将这个feature map patch池化为固定大小的feature之后再传入全连接层。
  2. 损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练。

接下来看一下FRCNN的框架图

FRCNN的框架图

图中省略了通过ss获得proposal的过程,第一张图中红框里的内容即为通过ss提取到的proposal,中间的一块是经过深度卷积之后得到的conv feature map,图中灰色的部分就是我们红框中的proposal对应于conv feature map中的位置,之后对这个特征经过ROI pooling layer处理,之后进行全连接。在这里得到的ROI feature vector最终被分享,一个进行全连接之后用来做softmax回归,用来进行分类,另一个经过全连接之后用来做bbox回归。

关于multi-task loss

参数含义:

p = (p0; : : : ; pK), over K + 1 categories.P是通过k+1个全连接层输出使用softmax计算得到的。

v=

未完待续....

时间: 2024-07-28 15:51:50

论文笔记--Fast RCNN的相关文章

论文笔记:Fast(er) RCNN

在 RCNN 初步试水取得成功后,研究人员又迅速跟进,针对 RCNN 中的几点不足提出改进,接连推出了 fast-rcnn 和 faster-rcnn.关于这两篇论文,网上相关的文章实在是多如牛毛,因此,本篇博文不打算深入讲解,只是不落俗套地介绍一下它们改进的痛点,基本流程,以及我自己对一些小问题的理解. RCNN 的问题 我们先回忆一下 RCNN 做了哪些事情: Selective Search 选出候选区域(region proposal): CNN 对这些区域提取特征: SVM 对 CNN

【CV论文阅读】 Fast RCNN

Fast RCNN的结构: 先从这幅图解释FAST RCNN的结构.首先,FAST RCNN的输入是包含两部分,image以及region proposal(在论文中叫做region of interest,ROI).Image经过深度网络(deep network)之后得到feature map,然后可以从feature map中找到ROI在其中的投射projection得到每个patch,但论文没有提及怎么在map中寻找对应的patch,估计可以通过位置关系找到(猜想,因为deep Conv

论文笔记:Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks

文章: http://arxiv.org/abs/1506.01497 源码:坐等.... 目录: Region Proposal Networks Translation-Invariant Anchors A Loss Function for Learning Region Proposals Optimization Sharing Convolutional Features for Region Proposal and Object Detection Implementation

RCNN学习笔记(4):fast rcnn

reference link: http://zhangliliang.com/2015/05/17/paper-note-fast-rcnn/ http://blog.csdn.net/shenxiaolu1984/article/details/51036677 http://blog.csdn.net/qq_26898461/article/details/50906926 论文出处见:http://arxiv.org/abs/1504.08083 项目见:https://github.c

【论文笔记】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

写在前面: 我看的paper大多为Computer Vision.Deep Learning相关的paper,现在基本也处于入门阶段,一些理解可能不太正确.说到底,小女子才疏学浅,如果有错误及理解不透彻的地方,欢迎各位大神批评指正! E-mail:[email protected]. ------------------------------------------------ <Faster R-CNN: Towards Real-Time Object Detection with Reg

论文笔记(2):A fast learning algorithm for deep belief nets.

论文笔记(2):A fast learning algorithm for deep belief nets. 这几天继续学习一篇论文,Hinton的A Fast Learning Algorithm for Deep Belief Nets.这篇论文一开始读起来是相当费劲的,学习了好几天才了解了相关的背景,慢慢的思路也开始清晰起来.DBN算法就是Wake-Sleep算法+RBM,但是论文对Wake-Sleep算法解释特别少.可能还要学习Wake-Sleep和RBM相关的的知识才能慢慢理解,今天

RCNN--对象检测的又一伟大跨越 2(包括SPPnet、Fast RCNN)

继续上次的学习笔记,在RCNN之后是Fast RCNN,但是在Fast RCNN之前,我们先来看一个叫做SPPnet的网络架构. 一,SPP简介: 有一个事实需要说清楚:CNN的卷积层不需要固定尺寸的图像,全连接层是需要固定大小输入的,因此提出了SPP层放到卷积层的后面.SPPNet将任意大小的图像池化生成固定长度的图像表示,如下图所示: SPP的优点:1)任意尺寸输入,固定大小输出,2)层多,3)可对任意尺度提取的特征进行池化. 池化示意图: SPP层的结构如下,将紧跟最后一个卷积层的池化层使

检测算法简介及其原理——fast R-CNN,faster R-CNN,YOLO,SSD,YOLOv2,YOLOv3

1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物体识别和物体定位的综合,不仅仅要识别出物体属于哪个分类,更重要的是得到物体在图片中的具体位置. 为了完成这两个任务,目标检测模型分为两类.一类是two-stage,将物体识别和物体定位分为两个步骤,分别完成,这一类的典型代表是R-CNN, fast R-CNN, faster-RCNN家族.他们识别

【转】Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

原作者:zouxy09 原文链接:http://blog.csdn.net/zouxy09/article/details/9993371 Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 [email protected] http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己