当前位置: 首页 > news >正文

目标检测算法对比_目标检测算法Fast RCNN详解

前面我们一起学了SPP-NetR-CNN的相关知识,如下:
目标检测算法SPP-Net详解
目标检测R-CNN通俗详解
由于每期都是逐步改进,重复的不在赘述,所以建议先阅读前面的,这期我们继续改进,学习一下Fast-RCNN都做了哪些改进?

上期,我们知道SPP-Net主要对R-CNN做了两点改进:

  • 特征映射,只需要做一次卷积池化操作。

  • 金字塔池化层,可以适应任意尺寸的输入。

但是由于SPP-Net仍采用SVM训练分类器和边框回归的方式,无法实现端到端的操作。那么Fast RCNN借鉴了SPP-Net算法的思想,改进了这3点:

  • 利用softmax代替了svm进行分类器训练

  • 利用神经网络代替了边框回归

  • 简化了SPP-Net的金字塔池化层

我们先来直接看看Fast RCNN的总体框架。

Fast RCNN框架

Fast RCNN借鉴了SPP-Net的思想,保留了SPP-Net的特征映射和简化了金字塔池化层,如下图:7fd54713be9ca3784af2ee18b47ce85f.png
我们一起看一下Fast RCNN的流程:

  1. 对输入图像利用SS算法进行候选框选取,记录下来候选框的位置。

  2. 将原始输入图像输入到卷积网络进行特征提取,得到特征图。

  3. 利用SPP-Net中学的特征映射的方法将候选框的位置映射到特征图相应位置,并提取特征。

  4. 将提取的特征经过ROI Pooling层来固定特征数量。

  5. 将经过ROI Pooling的的特征输入到共享全连接层。

  6. 最后将共享全连接层的输出分别经过各自的全连接层利用softmax进行分类以及进行边框回  归。

从上面的步骤,我们可以看出,Fast RCNN算法通过将softmax分类器替换掉svm,以及利用神经网络代替之前的边框回归,实现了目标检测端到端的操作。至于softmax分类器和这里的边框回归,这里不再赘述,可公众号回复【深度学习】进行学习。

这里我们看一下ROI Pooling是如何实现的。

ROI Pooling

我们知道前面学的SPP-Net中关于金字塔池化的原理,是经过3个级别的金字塔网格池化。这里Fast RCNN将其简化为只用一个3x3的网格,如下图:350783c3b407272e5a101f7351cb4c8d.png
这里将候选区域对应的特征图区域经过一个3x3的网格进行最大值池化,每张候选框对应的特征图区域得到9个特征,这样讲特征数量固定之后,就可送到全连接层进行分类和回归训练。

总的来说,Fast RCNN最大的改进就是将svm分类器和边框回归都集成到了一起,实现了端到端操作。那么Fast RCNN的性能怎么样呢?

性能分析

这里,通过对比前面我们学过的R-CNNSPP-Net来看下Fast RCNN的性能如何,如下表:3ac8120aa05d818bbcf9dae528cf954d.png
上表中的S,M,L分别表示网络的大小,以大的网络为例,可以看到R-CNNtraining时间为84小时,SPP-Net25小时,而Fast RCNN训练时间为9.5小时,总体速度与R-CNN相比提高了8.8倍。
而测试阶段,在大网络情况下,R-CNN单张图像测试用时为47.0秒,SPP-Net用时为2.3秒,而Fast RCNN用时为0.32秒。测试速度在利用SVD降维的情况下与R-CNN相比更是提高了213倍。而在mAP指标上Fast RCNNR-CNN相差不大。来看一下R-CNNFast RCNN在不同分类器上的性能比较,如下表:

24d3764c42cc1a4f56baf54f90326173.png
从上表中可以看到R-CNNFast RCNNSVM分类器上,在小网络和中网络情况下R-CNN稍好一些,在大网络情况下,则Fast RCNN要高一些;而Fast RCNNSVMSoftmax之间发现三种网络下Softmax都要比SVM稍高一些。

总体来说,Fast RCNNR-CNN相比在mAP指标上相差不大,但是在检测速度和训练速度上都有了大幅度的提升。虽然速度提升了不少,但是还是无法达到实时检测的需求,那么要如何改进?我们下期一起学习Faster RCNN.4c5404d534d0c514e3f9d54f92699239.png

好文章,我在看♥

相关文章:

  • 格式化字符串漏洞_二进制各种漏洞原理实战分析总结
  • python文件的建立方法_python 读写、创建 文件的方法(必看)
  • jdbc代码_JDBC详细整理(二)
  • python查看系统信息_python获取linux系统信息
  • 旋转数组中的最小元素 java_漫画:“旋转数组”中的二分查找
  • python面试自我介绍_2020马上到来,面试时如何自我介绍,备着呗
  • python导入鸢尾花数据集_决策树分类鸢尾花数据集python实现
  • 正向代理获取原始ip_Nginx的学习,反向代理和负载均衡
  • python打开excel执行vba代码_xlwings:操作Excel,通过宏调用Pyhton(VBA调Python)-Go语言中文社区...
  • 编写python程序的步骤_python socket通信程序编写步骤
  • postgresql 查询序列_PostgreSQL的Tuple内幕探索
  • 前端 post 提交时 数据量大 性能 ie很慢_前端面试题整理
  • python中各操作符的优先级_讲解Python中运算符使用时的优先级
  • 分别求两个整数的最大公约数和最小公倍数。_GRE数学公倍数和公因数混合问题(经典题目讲解与分析)...
  • java websocket客户端 心跳_WebSocket 通信过程与实现
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【node学习】协程
  • canvas 五子棋游戏
  • ES2017异步函数现已正式可用
  • GitUp, 你不可错过的秀外慧中的git工具
  • Go 语言编译器的 //go: 详解
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Sass Day-01
  • 闭包--闭包作用之保存(一)
  • 如何胜任知名企业的商业数据分析师?
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 阿里云服务器如何修改远程端口?
  • #图像处理
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (九)c52学习之旅-定时器
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (五)网络优化与超参数选择--九五小庞
  • .bat批处理(一):@echo off
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET 常见的偏门问题
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET中GET与SET的用法
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • :“Failed to access IIS metabase”解决方法
  • :如何用SQL脚本保存存储过程返回的结果集
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @Valid和@NotNull字段校验使用
  • [BZOJ] 2006: [NOI2010]超级钢琴