RCNN

RCNN (Regions with CNN features) 的核心思想是把图像划分成N(2000)个独立的区域,分别提取每个区域的CNN特征,然后把这些特征使用SVM等分类器进行结果预测,把目标检测任务转换成了分类任务。RCNN由Ross Girshick在2013年提出。

RCNN算法的4个步骤:

1.  候选区域选择

选择候选区域就是进行区域提名(Region Proposal)操作,找出潜在的感兴趣区域。区域提名会提取到很多有重合区域的ROI,所以一般还会进行合并操作,综合考虑如色彩,灰度,轮廓等因素,既要保证不会漏掉有用的区域,又不至于重叠太多。Ross Girshick的RCNN论文中取了2000个区域候选狂。

2. 区域大小归一化

把第一步提取到的候选区域执行大小归一化,论文中是归一化到227×227。

3. CNN特征提取

对每一个归一化后的候选框区域执行标准的CNN过程,通过一系列卷积和池化操作,最后再通过2个全连接层,得到每个候选区域的固定维度的特征向量。

4. 分类与边界回归

把步骤3中得到的特征向量使用SVM分类器(需要训练好基于CNN特征的SVM分类器)进行分类,用边界回归(Bounding-box regression)算法调整目标区域的位置,合并重叠区域,完成精确定位。

RCNN存在的主要问题:

  • 1. 重复计算,RCNN中的2000个候选框都要进行CNN操作,重复计算量很大。
  • 2. 训练的空间和时间代价很高,RCNN中的区域提名、特征提取、分类和回归没能在一个流程中统一起来,有的需要单独离线进行,候选区域需要单独保存,占用磁盘空间较大。
  • 3. 检测速度慢,在GPU上检测约需要13S,CPU上约需要53S。

SSP-net

2014年,何恺明等对RCNN进行了改进,提出SPP-net(Spatial Pyramid Pooling net),SPP-net相比RCNN的改进主要有两点:

一,使用空间金字塔方法实现维度归一化

去掉了RCNN中对原始图像进行的剪裁,拉伸缩放等归一化操作(这些warp操作导致物体的畸变,或几何失真),转而采用空间金字塔的方式,支持数据的多尺度输入。
SPP-net的金字塔方法通过一个SPP层实现,加在最后一个卷积层后,第一个全连接层之前,实现了不同尺度的特征送入全连接层之前的维度归一化,

二, 只对原图提取一次卷积特征,不再对每个候选区域单独执行CNN操作,在后边做一个候选区域的映射,对应到候选区域的特征上,减少了大量重复计算。

Fast-RCNN

2015年,Ross Girshick提出了 Fast-RCNN,Fast-RCNN结合了SPP-net的优点,主要为了解决2000个候选框带来的重复计算问题,提高训练和检测效率,主要思想是使用一个叫做 ROI Pooling的结构,可以看做是单层的SPP-net层,可以把不同维度的CNN特征归一化到统一维度,之后经过全连接层再softmax分类。梯度也可以通过这个ROI池化层直接传播,训练不再需要多步进行。

实验结果表明,Fast RCNN的测试速度比RCNN快213倍,比SPP-net快10倍。

Faster RCNN

Faster RCNN利用 RPN(Region Proposal Network)网络来完成候选框的选取,取代了传统的区域提名方法。

RPN网络以任意大小的图片作为输入,输出一系列矩形区域提名,每个区域对应一个目标类别分数以及对应的位置信息。

Faster RCNN的主要步骤:

  • 1. 提取CNN特征,以整张图作为输入,只计算一次CNN
  • 2. 区域提名,在最终的CNN特征上,为每个点利用9个不同的矩形框,提名候选区域
  • 3. 区域判定和边界回归:先对每个候选矩形框进行目标物体和非目标物体的二分类,排除掉非目标物体的矩形框,再用9个回归模型(对应9个矩形框)微调候选框位置和大小。
  • 4. 分类和边界回归,对步骤3中提供的候选框结果进行筛选,目标分类和边界回归。

RCNN、SPP-net、Fast-RCNN和Faster-RCNN的更多相关文章

  1. 论文笔记:目标检测算法(R-CNN,Fast R-CNN,Faster R-CNN,FPN,YOLOv1-v3)

    R-CNN(Region-based CNN) motivation:之前的视觉任务大多数考虑使用SIFT和HOG特征,而近年来CNN和ImageNet的出现使得图像分类问题取得重大突破,那么这方面的 ...

  2. Object Detection(RCNN, SPPNet, Fast RCNN, Faster RCNN, YOLO v1)

    RCNN -> SPPNet -> Fast-RCNN -> Faster-RCNN -> FPN YOLO v1-v3 Reference RCNN: Rich featur ...

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

    1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...

  4. 目标检测(四)Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    作者:Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun SPPnet.Fast R-CNN等目标检测算法已经大幅降低了目标检测网络的运行时间. ...

  5. AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3

    1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...

  6. 第三十一节,目标检测算法之 Faster R-CNN算法详解

    Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...

  7. faster rcnn 详解

    转自:https://zhuanlan.zhihu.com/p/31426458 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在2016年提出了新的Faster RCNN ...

  8. 【目标检测】Faster RCNN算法详解

    Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...

  9. 目标检测-Faster R-CNN

    [目标检测]Faster RCNN算法详解 Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with r ...

  10. Paper Reading:Faster RCNN

    Faster R-CNN 论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 发表时间: ...

随机推荐

  1. Codeforces Round #303 (Div. 2)E. Paths and Trees 最短路

    E. Paths and Trees time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  2. Goroutines和Channels(三)

    clock服务器每一个连接都会起一个goroutine.在本节中我们会创建一个echo服务器,这个服务在每个连接中会有多个goroutine.大多数echo服务仅仅会返回他们读取到的内容,就像下面这个 ...

  3. c++ 指定长度容器元素的拷贝(copy_n)

    #include <iostream>     // cout #include <algorithm>    // copy #include <vector> ...

  4. np.linspace

    来自:有一种宿命叫无能为力 在指定的间隔内返回均匀间隔的数字.(返回num个样本数据,在[start, stop]). 函数形式: linspace(start, stop, num = 50, en ...

  5. 数据库使用SSIS进行数据清洗教程

    OLTP系统的后端关系数据库用于存储不同种类的数据,理论上来讲,数据库中每一列的值都有其所代表的特定含义,数据也应该在存入数据库之前进行规范化处理,比如说“age”列,用于存储人的年龄,设置的数据类型 ...

  6. 算法笔记--STL中的各种遍历及查找(待增)

    算法笔记 map: map<string,int> m; map<string,int>::iterator it;//auto it it = m.begin(); whil ...

  7. Java 源代码和 C 源代码的运行区别

    与其他程序的执行方式和编译方式不同. Java 源代码需要进行编译成字节码后在 Java 虚拟机上运行,这样 Java 程序能够保持独立性和跨平台功特性. 请参考下图. https://www.cwi ...

  8. Strip CodeForces - 487B (单调队列)

    题面: Alexandra has a paper strip with n numbers on it. Let's call them ai from left to right. Now Ale ...

  9. php-fpm.conf配置文件中文说明详解及重要参数说明

    摘自:https://www.jb51.net/article/148550.htm 感谢分享 php-fpm工作流程 php-fpm全名是PHP FastCGI进程管理器 php-fpm启动后会先读 ...

  10. Cron\CronExpression::setPart("24")

    利用laravle实现定时器的功能的时候,报错说:Cron\CronExpression::setPart("24"). 后来发现是时间设置的问题,他不能设置("24:0 ...