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. [Kubernetes]CentOS7下Etcd集群搭建

    Etcd简要介绍 Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息 Etcd构建自身高可用集群主要有三种形式: ①静态发现: 预先已知 Etcd 集 ...

  2. np.nonzero()函数用法

    返回数组中不为0的元素的下标. 数组中元素可为布尔.整型和浮点型,返回值为元祖 一.一维数组 1.数组元素为布尔类型 a=np.array([True,False,True,False]) b=np. ...

  3. Fusebox 类似WEBPACK 的工具,React Studio

    Fusebox  类似WEBPACK 的工具,  http://fuse-box.org/ React Studio:  https://hackernoon.com/@reactstudio

  4. Python3学习笔记29-发送邮件

    email模块用来构造邮件,smtplib模块用来发送邮件. 以QQ邮箱为例 想要在代码中使用QQ邮箱发送邮件,需要先在QQ邮箱-设置-账户中,开启SMTP服务,然后生成授权码.在进行验证账号时,用生 ...

  5. telnetlib 中各种 read 函数的意义

    基本原理 要明白 telnetlib 中各个 read 函数的意义,首先要了解 telnetlib 的工作原理. telnetlib 首先通过 socket 连接从网络接收数据,把数据存储到自己的 r ...

  6. CentOS6.5 上crontab每天自动备份mysql数据库

    步骤: 1. sudo vi /etc/crontab  #编辑crontab任务 2.输入01 12 * * * root /usr/local/mysql/backup/backup.sh > ...

  7. Nginx负载均衡实例

    upstream MyServers{ server 192.168.63.137; server 192.168.63.138; server 192.168.63.140; } server{ l ...

  8. 通过python统计nginx日志定位php网站响应慢的问题

    # 公司网站反映很慢,可能是一些页面的访问方法或者页面引起,通过程序统计nginx访问日志的页面和具体的action方法访问次数以及平均响应时间可以为程序开发的同事提供参考定位具体的代码 # 默认的n ...

  9. 【原创】大数据基础之Kerberos(1)简介、安装、使用

    kerberos5-1.17 官方:https://kerberos.org/ 一 简介 The Kerberos protocol is designed to provide reliable a ...

  10. IDEA中Git更新合并代码后,本地修改丢失

    IDEA中,使用Git下载了远程服务器的代码,发现自己修改的代码不在了,此时并没有提交,所以在show history中查看不到,慌死了. 因为有冲突的地方,没有办法合并,所以直接使用了远程的代码 无 ...