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. Qt5_程序发布

    ZC: deploy ==> 部署 1.文件夹platforms 该文件夹 来自 Qt安装目录:F:\ZC_software_installDir\Qt5.3.2_vs2010\5.3\msvc ...

  2. 《剑指offer》第六题(重要!从尾到头打印链表)

    文件main.cpp // 从尾到头打印链表 // 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. #include <iostream> #include <sta ...

  3. scss 覆盖 原有变量

    在scss的variables.scss 中会有很多的变量 $color: red !default; $body-color: $color !default; 这些!default 和我们理解的! ...

  4. Unity另外一套简单日志控制系统

    using UnityEngine; public class LogPrintf { static LogLevel logLevel = LogLevel.LOG_LEVEL_ERROR; pub ...

  5. C#匿名对象序列化

    //匿名对象序列化 }; Console.WriteLine(JsonConvert.SerializeObject(obj)); //匿名集合序列化 List<object> list ...

  6. 关于controller中调用多个service方法的问题

    一般service方法是有事务的,把所有操作封装在一个service方法中是比较安全的. 如果在controller中调用多个service方法,只有查询的情况下是可以这样的.

  7. bzoj 1267 Kth Number I (点分治,堆)

    超级钢琴的树上版本, 类似做法即可, 只不过区间转为dfs序了, 用点分求一下, 复杂度$O(nlog^2n)$ #include <iostream> #include <algo ...

  8. STL_string

    将string对象利用c风格的形式输出函数:  c_str() 栗子:      string s;      printf("%s\n",s.c_str());

  9. ajax中文乱码问题的总结

    ajax中文乱码问题的总结 2010-12-11 22:00 5268人阅读 评论(1) 收藏 举报 ajaxurljavascriptservletcallback服务器 本章解决在AJAX中常见的 ...

  10. win10激活工具---KMSAutoNet

    win10激活工具---KMSAutoNet 1> 2> 3> 4> 5> 6> 8>