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算法详解的更多相关文章

  1. 【目标检测】SSD+Tensorflow 300&512 配置详解

    SSD_300_vgg和SSD_512_vgg weights下载链接[需要科学上网~]: Model Training data Testing data mAP FPS SSD-300 VGG-b ...

  2. Python聚类算法之基本K均值实例详解

    Python聚类算法之基本K均值实例详解 本文实例讲述了Python聚类算法之基本K均值运算技巧.分享给大家供大家参考,具体如下: 基本K均值 :选择 K 个初始质心,其中 K 是用户指定的参数,即所 ...

  3. [转]EM算法(Expectation Maximization Algorithm)详解

    https://blog.csdn.net/zhihua_oba/article/details/73776553 EM算法(Expectation Maximization Algorithm)详解 ...

  4. 搜索引擎算法研究专题五:TF-IDF详解

    搜索引擎算法研究专题五:TF-IDF详解 2017年12月19日 ⁄ 搜索技术 ⁄ 共 1396字 ⁄ 字号 小 中 大 ⁄ 评论关闭   TF-IDF(term frequency–inverse ...

  5. 目标检测算法(一):R-CNN详解

    参考博文:https://blog.csdn.net/hjimce/article/details/50187029 R-CNN(Regions with CNN features)--2014年提出 ...

  6. R-CNN目标检测的selective search(SS算法)

    候选框确定算法 对于候选框的位置确定问题,简单粗暴的方法就是穷举或者说滑动窗口法,但是这必然是不科学的,因为时间和计算成本太高,直观的优化就是假设同一种物体其在图像邻域内有比较近似的特征(例如颜色.纹 ...

  7. 目标检测复习之Faster RCNN系列

    目标检测之faster rcnn系列 paper blogs1: 一文读懂Faster RCNN Faster RCNN理论合集 code: mmdetection Faster rcnn总结: 网络 ...

  8. DPLL 算法(求解k-SAT问题)详解(C++实现)

    \(\text{By}\ \mathsf{Chesium}\) DPLL 算法,全称为 Davis-Putnam-Logemann-Loveland(戴维斯-普特南-洛吉曼-洛夫兰德)算法,是一种完备 ...

  9. 二分算法题目训练(四)——Robin Hood详解

    codeforces672D——Robin Hood详解 Robin Hood 问题描述(google翻译) 我们都知道罗宾汉令人印象深刻的故事.罗宾汉利用他的射箭技巧和他的智慧从富人那里偷钱,然后把 ...

  10. Canny边缘检测算法原理及C语言实现详解

    Canny算子是John Canny在1986年提出的,那年老大爷才28岁,该文章发表在PAMI顶级期刊上的(1986. A computational approach to edge detect ...

随机推荐

  1. Kivy折腾笔记

    最近想用Python开发APP,选择kivy,记录过程 首先是源码安装,各种蛋疼的报错放弃了.cython高版本有问题. python3 -m pip install cython==0.23 pyt ...

  2. openGL之坐标变换

  3. bean shell之间传递参数

    BeanShell PostProcessor 向 BeanShell断言 传递参数 断言成功:

  4. ansible笔记(11):初识ansible playbook(二)

    ansible笔记():初识ansible playbook(二) 有前文作为基础,如下示例是非常容易理解的: --- - hosts: test211 remote_user: root tasks ...

  5. docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序

    一.在centos7.3上安装docker 前置条件 x86_64-bit 系统 kernel 3.10+ .检查内核版本,返回的值大于3.10即可 [root@node1 ~]# uname -r ...

  6. Ex 7_21 在一个流网络中,一条边被称为是临界的...第十三次作业

    如果原图中的一条边e(u,v)是临界边,则在求解最大流的过程中这条边的流量将会被占满,即在残量图中只存在反向边e(v,u),不存在正向边e(u,v).但是残量图中并不是所有的只存在反向边的顶点对之间的 ...

  7. dubbo常用网址

    https://dubbo.gitbooks.io/dubbo-user-book/content/references/protocol/dubbo.html http://dubbo.apache ...

  8. 彻底搞透OAuth 2.0

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R ...

  9. js---数组排序法(冒泡排序;快速排序)

    1.冒泡排序 原理:将数组的相邻两个元素进行比较,大的就往后移,小的往前,依次比较并且进行递减迭代. var arr =[54,36,89,1,3,5,2]; function sortArr(arr ...

  10. 一篇文章让你了解Android各个版本的历程

    2008年--至今 Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个性化:在线文件夹(Live Folder)快速浏览在线数据:视频录制和分享:图片上传: ...