RCNN、SPP-net、Fast-RCNN和Faster-RCNN
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的更多相关文章
- 论文笔记:目标检测算法(R-CNN,Fast R-CNN,Faster R-CNN,FPN,YOLOv1-v3)
R-CNN(Region-based CNN) motivation:之前的视觉任务大多数考虑使用SIFT和HOG特征,而近年来CNN和ImageNet的出现使得图像分类问题取得重大突破,那么这方面的 ...
- Object Detection(RCNN, SPPNet, Fast RCNN, Faster RCNN, YOLO v1)
RCNN -> SPPNet -> Fast-RCNN -> Faster-RCNN -> FPN YOLO v1-v3 Reference RCNN: Rich featur ...
- 检测算法简介及其原理——fast R-CNN,faster R-CNN,YOLO,SSD,YOLOv2,YOLOv3
1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...
- 目标检测(四)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等目标检测算法已经大幅降低了目标检测网络的运行时间. ...
- AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3
1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...
- 第三十一节,目标检测算法之 Faster R-CNN算法详解
Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...
- faster rcnn 详解
转自:https://zhuanlan.zhihu.com/p/31426458 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在2016年提出了新的Faster RCNN ...
- 【目标检测】Faster RCNN算法详解
Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...
- 目标检测-Faster R-CNN
[目标检测]Faster RCNN算法详解 Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with r ...
- Paper Reading:Faster RCNN
Faster R-CNN 论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 发表时间: ...
随机推荐
- 通过gevent实现【单线程】下的多socket并发
server import sys import socket import time import gevent from gevent import socket,monkey monkey.pa ...
- jekins 插件离线安装
官网插件地址:http://updates.jenkins-ci.org/download/plugins/ 系统管理->插件管理->高级 选择一个下载好的插件,然后点击上传即可 然后就会 ...
- S3 对象
在 R 中,S3 对象系统是一个简单且宽松的面向对象系统.每个基本对象的类型都有一个 S3 类名称.例如:integer.numeric.character.logical.list 和 data.f ...
- zookeeper篇-如何修改源码
提一个问题先 zxid有64位,分成两部分: 高32位是Leader的epoch:选举时钟,每次选出新的Leader,epoch累加1 低32位是在这轮epoch内的事务id:对于用户的每一次更新操作 ...
- Socket入门之前的知识点
Socket难点 数据粘包 心跳维持 数据丢包 性能问题 7层网络模型-OSI 基础层:物理层(Physical).数据链路层(Datalink).网络层(Network) 传输层(Transport ...
- Android ListView常见配置说明
ListView是我们经常使用的控件,但是使用中却因为各种原因无法设置出我们需要的效果,现将常用的设置记录下来方便以后查询. 1.拖动时背景变黑 android:cacheColorHint=&quo ...
- php7-soap调用wsdl接口报错:Could not connect to host
由php5.6升级到php7.1以上版本,在用soap调用wsdl接口是报错:Could not connect to host 后来经过排查是centos服务器上装有2个版本的openssl造成的. ...
- Phalcon框架数据库读写分离的实现方法
Phalcon框架和Yaf类似,是一款用C实现的拓展级别的框架,不过其功能实现更加丰富,设计思路基于依赖注入.容器等方式,更符合现代框架思想.本文主要针对Phalcon框架数据库层的读写分离进行说明, ...
- Mac搭建个人服务器开发微信公众号
个人电脑搭建小型服务器面临的一个重要问题就是网络问题,我把解决的过程简单记录一下,准备以后参考. 1. 内网穿透 由于个人所在网络是一个局域网,没有公网的IP,因此在公网是不能直接访问个人电脑的服务器 ...
- ORACLE常见方法使用(转)
1.DBMS_LOB包的使用 2.如何释放DBMS_LOB.CREATETEMPORARY的空间 3.oracle数组