目标检测算法之Fast R-CNN算法详解
在介绍Fast R-CNN之前我们先介绍一下SPP Net
一、SPP Net
SPP:Spatial Pyramid Pooling(空间金字塔池化)
众所周知,CNN一般都含有卷积部分和全连接部分,其中,卷积层不需要固定尺寸的图像,而全连接层是需要固定大小的输入。
所以当全连接层面对各种尺寸的输入数据时,就需要对输入数据进行crop(crop就是从一个大图扣出网络输入大小的patch,比如227×227),或warp(把一个边界框bounding box的内容resize成227×227)等一系列操作以统一图片的尺寸大小,比如224*224(ImageNet)、32*32(LenNet)、96*96等。
所以,在R-CNN中,才会将每个Region Proposal缩放成(wrap)成统一的227x227并输入到CNN。
但warp/crop这种预处理,导致问题要么被拉伸变形,要么物体不全,限制了识别精确度。换句话说,一张16:9的图片硬是被resize成1:1,你说图片失真不?
二、SPP Net的特点
1. SPP不在限制输入图像的尺度,在最后一个卷积层,接入了金字塔池化,保证传到下一层全连接层的输入固定。
简言之,CNN原本只能固定输入,固定输出,CNN加上SPP之后,便能任意输入、固定输出。
ROI池化层一般跟在卷积层后面,此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出是固定维数的向量,然后给到全连接FC层。
2. 只对原图提取一次卷积特征,得到整张图的卷积特征feature map,然后找到每个候选框在feature map上的映射patch,将次patch作为每个候选框的卷积特征输入到SPP layer和之后的层,完成特征提取工作。节省了大量的时间,比R-CNN有100倍左右的提速
三、Fast R-CNN
Fast R-CNN就是在R-CNN的基础上采纳了SPP Net的方法,使得性能进一步提高。
与R-CNN相比,Fast R-CNN主要有两点不同:一是最后一个卷积层加入了ROI pooling layer,二是损失函数使用了多任务损失函数(multi-task loss),将边框回归Bounding Box Regression直接加入到CNN网络中训练
(1)ROI pooling layer实际上是SPP Net的一个精简版,SPP Net对每个proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要采样到一个7x7的特征图。对于VGG16网络conv5_3有512个特征图,这样所有region proposal对应了一个7*7*512维度的特征向量作为全连接层的输入。也就是说,它可以把不同大小的输入映射到一个固定尺度的特征向量。
(2)R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用了softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到网络中,整个训练过程就是端到端的(region proposal提取除外)
也就是说,R-CNN的处理流程是先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做box regression。而在Fast R-CNN中,把box regression与region分类合并成multi-task模型,实际实验也证明,这两个任务能够共享卷积特征,并相互促进。
原来的方法:许多候选框(比如2k个)-->CNN-->得到每个候选框的特征-->分类 + 回归
现在的方法:一张完整的图片-->CNN-->得到每个候选框的特征-->分类 + 回归
容易看出,提速的原因在于,不像R-CNN把每个候选区域给深度网络提特征,而是整张图提一次特征,再把候选框映射到conv5上,而SPP只需要计算一次特征,剩下的只需要在conv5层上操作就可以了。
性能上的提升也是明显的:
参考地址:
https://cloud.tencent.com/developer/news/281788
目标检测算法之Fast R-CNN算法详解的更多相关文章
- [转]CNN目标检测(一):Faster RCNN详解
https://blog.csdn.net/a8039974/article/details/77592389 Faster RCNN github : https://github.com/rbgi ...
- 【目标检测】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算法)
候选框确定算法 对于候选框的位置确定问题,简单粗暴的方法就是穷举或者说滑动窗口法,但是这必然是不科学的,因为时间和计算成本太高,直观的优化就是假设同一种物体其在图像邻域内有比较近似的特征(例如颜色.纹 ...
- 【目标检测】用Fast R-CNN训练自己的数据集超详细全过程
目录: 一.环境准备 二.训练步骤 三.测试过程 四.计算mAP 寒假在家下载了Fast R-CNN的源码进行学习,于是使用自己的数据集对这个算法进行实验,下面介绍训练的全过程. 一.环境准备 我这里 ...
- DPLL 算法(求解k-SAT问题)详解(C++实现)
\(\text{By}\ \mathsf{Chesium}\) DPLL 算法,全称为 Davis-Putnam-Logemann-Loveland(戴维斯-普特南-洛吉曼-洛夫兰德)算法,是一种完备 ...
- 二分算法题目训练(四)——Robin Hood详解
codeforces672D——Robin Hood详解 Robin Hood 问题描述(google翻译) 我们都知道罗宾汉令人印象深刻的故事.罗宾汉利用他的射箭技巧和他的智慧从富人那里偷钱,然后把 ...
随机推荐
- java 八种基本数据类型
- linux下cmake安装mysql 源码
1.假设已经有mysql-5.6.21.tar.gz以及cmake-2.8.4.tar.gz两个源文件 (1)先安装cmake(mysql5.5以后是通过cmake来编译的) [root@ rhel5 ...
- 两个类似的ViewModel一个可以重写事件,另一个不能重写事件,是哪里出了错。
答:继承错了,BaseViewModel里面是事件.
- [转] python运行时内存分析工具meliae
转自:https://my.oschina.net/markco/blog/601773 利用meliae来监控python进程的内存占用情况 meliae是一个python进程内存占用监控.分析工具 ...
- 【转】Python基础-封装与扩展、静态方法和类方法
[转]Python基础-封装与扩展.静态方法和类方法 一.封装与扩展 封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码:而外部使用者只知道一个接口(函数),只要接口(函数 ...
- Nginx 测试环境配置,留作笔记使用
Nginx 测试环境配置,留做笔记 以下全是配置文件的配置,如果有疑问还请移步Nginx官网参考官方文档. 环境: [root@CentOS6-M01 conf]# cat /etc/redhat-r ...
- 029_shell编写工作常用工具类总结
一.检查命令的执行结果 function check_result() { result=$? flag=$1 if [[ "$result"x == "0"x ...
- bootstrap简单使用布局、栅格系统、modal标签页等常用组件入门
<!DOCTYPE html> <html> <head> <title>bootstrap</title> <!-- 引入boots ...
- Css样式压缩、美化、净化工具 源代码
主要功能如下: /* 美化:格式化代码,使之容易阅读 */ /* 净化:将代码单行化,并去除注释 */ /* 压缩:将代码最小化,加快加载速度 */ /* 以下是演示代码 */ /*reset beg ...
- HDU 4549
水题: 费马小定理+快速幂+矩阵快速幂 (第一次用到费马小定理) #include<bits/stdc++.h> using namespace std; typedef long lon ...