目标检测算法之Faster R-CNN算法详解
Fast R-CNN存在的问题:选择性搜索,非常耗时。
解决:加入一个提取边缘的神经网络,将候选框的选取交给神经网络。
在Fast R-CNN中引入Region Proposal Network(RPN)替代Selective Search,同时引入anchor box应对目标形状的变换问题(anchor就是位置和大小固定的box,可以理解成事先设置好的固定的proposal)
具体做法:
1、将RPN放在最后一个卷积层的后面
2、RPN直接训练得到的候选区域

RPN简介:
1. 在feature map上滑动窗口
2. 建一个神经网络用于物体分类 + 框位置回归
3. 滑动窗口的位置提供了物体的大体位置信息
4. 框的回归提供了框更精确的位置

一种网络,四个损失函数:
1. RPN classification(anchor good.bad)
2. RPN regression(anchor-->proposal)
3. Fast R-CNN classification(over classes)
4. Fast R-CNN regression(proposal-->box)

测试过程:
Faster R-CNN统一的网络结构如下图所示,可以简单看做RPN + Fast R-CNN

注意在RPN网络中的那两个全连接层是并联的,不是串联的,图有点小问题
注意:上图Fast R-CNN中含有特有卷积层,并不是所有卷积层都参与共享
1. 首先向CNN网络(ZF或VGG-16)输入任意大小图片
2. 经过CNN网络前向传播至最后共享的卷积层,一方面得到供RPN网络输入的特征图,另一方面继续前向传播至特有卷积层,产生更高维特征图
3. 供RPN网络输入的特征图经过RPN网络得到区域建议和区域得分,并对区域得分采用非极大值抑制(阈值为0.7),输出其Top-N得分的区域建议给ROI池化层
4. 第2步得到的高维特征图和第3步输出的区域建议同时输入RoI池化层,提取对应区域建议的特征
5. 第4步得到的区域建议特征通过全连接层后,输出该区域的分类得分以及回归后的bounding-box
速度对比:

Faster R-CNN的主要贡献就是设计了提供候选区域的网络RPN,代替了费时的选择性搜索Selective Search,使得检测速度大幅提高。
总结各个算法的步骤:
RCNN
1. 在图像中确定约1000-2000个候选框(使用选择性搜索Selective Search)
2. 每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取
3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4. 对于属于某一类别的候选框,用回归器进一步调整器位置
Fast R-CNN
1. 在图像中确定约1000-2000个候选框(使用选择性搜索Selective Search)
2. 对整张图片输入CNN,得到feature map
3. 找到每个候选框在feature map中的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层
4. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
5. 对于属于某一类别的候选框,用回归器进一步调整器位置
Faster R-CNN
1. 对整张图片输入CNN,得到feature map
2. 卷积特征输入到RPN,得到候选框的特征信息
3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4. 对于属于某一类别的候选框,用回归器进一步调整器位置
简言之,
R-CNN(Selective Search + CNN + SVM)
SPP-net(ROI Pooling)
Fast R-CNN(Selective Search + CNN + ROI)
Faster R-CNN(RPN + CNN + ROI)
目标检测算法之Faster R-CNN算法详解的更多相关文章
- 【目标检测】SSD+Tensorflow 300&512 配置详解
SSD_300_vgg和SSD_512_vgg weights下载链接[需要科学上网~]: Model Training data Testing data mAP FPS SSD-300 VGG-b ...
- Python聚类算法之基本K均值实例详解
Python聚类算法之基本K均值实例详解 本文实例讲述了Python聚类算法之基本K均值运算技巧.分享给大家供大家参考,具体如下: 基本K均值 :选择 K 个初始质心,其中 K 是用户指定的参数,即所 ...
- [转]EM算法(Expectation Maximization Algorithm)详解
https://blog.csdn.net/zhihua_oba/article/details/73776553 EM算法(Expectation Maximization Algorithm)详解 ...
- 搜索引擎算法研究专题五:TF-IDF详解
搜索引擎算法研究专题五:TF-IDF详解 2017年12月19日 ⁄ 搜索技术 ⁄ 共 1396字 ⁄ 字号 小 中 大 ⁄ 评论关闭 TF-IDF(term frequency–inverse ...
- 目标检测算法(一):R-CNN详解
参考博文:https://blog.csdn.net/hjimce/article/details/50187029 R-CNN(Regions with CNN features)--2014年提出 ...
- R-CNN目标检测的selective search(SS算法)
候选框确定算法 对于候选框的位置确定问题,简单粗暴的方法就是穷举或者说滑动窗口法,但是这必然是不科学的,因为时间和计算成本太高,直观的优化就是假设同一种物体其在图像邻域内有比较近似的特征(例如颜色.纹 ...
- 目标检测复习之Faster RCNN系列
目标检测之faster rcnn系列 paper blogs1: 一文读懂Faster RCNN Faster RCNN理论合集 code: mmdetection Faster rcnn总结: 网络 ...
- DPLL 算法(求解k-SAT问题)详解(C++实现)
\(\text{By}\ \mathsf{Chesium}\) DPLL 算法,全称为 Davis-Putnam-Logemann-Loveland(戴维斯-普特南-洛吉曼-洛夫兰德)算法,是一种完备 ...
- 二分算法题目训练(四)——Robin Hood详解
codeforces672D——Robin Hood详解 Robin Hood 问题描述(google翻译) 我们都知道罗宾汉令人印象深刻的故事.罗宾汉利用他的射箭技巧和他的智慧从富人那里偷钱,然后把 ...
- Canny边缘检测算法原理及C语言实现详解
Canny算子是John Canny在1986年提出的,那年老大爷才28岁,该文章发表在PAMI顶级期刊上的(1986. A computational approach to edge detect ...
随机推荐
- C++如何禁止对象的复制操作
最容易想到的是将拷贝构造函数与赋值函数声明为private.但是,private只是说外部不能直接调用,但是可以间接通过类的成员函数与友元函数对其访问.那么怎么办呢? ---->在类中,允许声明 ...
- 20165231 实验一 Java开发环境的熟悉
实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:王杨鸿永 学号:20165231 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 ...
- codevs 1081 线段树练习2 (线段树)
题目: 题目描述 Description 给你N个数,有两种操作 1:给区间[a,b]的所有数都增加X 2:询问第i个数是什么? 输入描述 Input Description 第一行一个正整数n,接下 ...
- JavaScript-DOM(重点)
解析过程 DOM树(一切皆是节点) DOM可以做什么 清楚DOM的结构 获取其它DOM(事件源)的三种方式 事件 事件的三要素 绑定事件的方式 JavaScript入口函数 window.onload ...
- Xamarin AVD x86 问题
inspired by https://stackoverflow.com/questions/34282243/error-while-starting-emulator/34282302#3428 ...
- $Django 模板层(模板导入,继承)、 单表*详(增删改查,基于双下划线的查询)、static之静态文件配置
0在python脚本中使用django环境 import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETT ...
- Centos7.3_x86_64通过systemctl控制tomcat8.0.46启动和停止
Centos7.3_x86_64通过systemctl控制tomcat8..46启动和停止 之前在centos 6上通过脚本控制tomcat 启动和停止的脚本,虽然在centos 7也可以使用,但ce ...
- codis3.2安装报错dashboard.go:369: [PANIC] call rpc create-proxy to dashboard 127.0.0.1:18080 failed的处理
codis3.2安装报错dashboard.go:369: [PANIC] call rpc create-proxy to dashboard 127.0.0.1:18080 failed的处理 执 ...
- Find Lines
(Uva 6955可以直接随机,湖大OJ 13348 要优化) 题意:给出 n个点的坐标, 一个 百分数p, 求是否有一条直线上有 n * p /100个点… 随机化算法,但也要优化下……(TLE, ...
- 学习promise
总概括 promise是js异步编程的一种解决方案 我对promise的认识(通俗):给一个承诺promise,如果未来发生的事情(异步操作)是符合满足相应条件,则接受resolve,否则失败reje ...