目标检测经典工作发展(超详细对比):R-CNN vs SPPNet vs Fast R-CNN vs Faster R-CNN

news2024/10/7 20:35:38

网上关于两阶段目标检测(two-stage object detection)的几个经典工作R-CNN,SPPNet,Fast R-CNN,Faster R-CNN的发展,各自的优缺点缺乏一个比较清楚的描述,大部分文章讲的比较细节,虽然有助于更为详细地了解文章,但是让读者在短时间内对各个文章有一个详细的理解。本文主要对网上的资料进行整合,希望让读者能较快地理解几篇文章的优劣。

R-CNN

本节会介绍R-CNN基本流程以及文章的缺点。最后对其中几个重要步骤进行补充说明

基本流程

R-CNN的基本流程如下,主要的步骤如下:
:

  1. 提取区域候选(extract region proposals):使用selective search方法提取2000个候选目标

  2. 对每个候选目标warp到一个固定的大小(例如224x224),主要包括直接对图像进行resize,或者是进行crop,然后对空白部分进行填充。

CNN本身实际上是能适应不同大小的图片输入,但是特征最后要过fc,因此需要固定的大小。这一点之后在SPPNet中进行解决

  1. 计算CNN特征(compute CNN features):用神经网络计算经过warp的区域候选的特征图
  2. 分类(classify regions):对提取到的特征输入到SVM中进行分类

可能会产生疑问:直接在网络最后接softmax输出分类概率不行吗?为什么需要重新训练一个SVM进行分类呢?回答:论文中说加SVM效果好!(但是实际上在Fast-RCNN之后都用不上嘞!啊哈哈)

  1. 非极大值抑制(NMS,non-maximum suppression):删除重复的候选框

  2. 位置精修(bounding box regression):使用一个回归器(几层fc)来修正候选框的位置

为什么直接使用selective search得到的region proposals的结果作为最终的bounding box呢?当然是因为结果不准确啦,拿个网络来精细调整一下位置肯定不亏,嘿嘿

以上就讲完了RCNN整体的流程,最后用一张更直观的图来展示:
在这里插入图片描述

补充内容

选择性搜索

这部分介绍第一个步骤中使用的提取region proposals的方法——selective search,其属于传统算法,速度很慢,这一个部分在Faster-RCNN中被替换成神经网络。下面是其具体步骤:

  1. 对图像进行oversegmented 的图像分割
  2. 计算邻近区域的相似性,包括颜色、纹理等等
  3. 合并相似性高的区域,得到更大的区域并假如到区域集合中
  4. 重复2、3过程直到图片变成一个区域。至此得到的区域集合就是我们要的region proposals

详细过程可以参考: https://www.jianshu.com/p/99e121c3beb8在这里插入图片描述

非极大值抑制

这一部分介绍第五步用到的非极大值抑制方法。selective search之后得到的候选框有2000多个!可以上一张图看出很多框圈着同一个物体,而NMS的思想就是想保留置信度最高的框,把周围重叠度高(交并比IoU高)的其他框给删除,从而大大减少候选数量
详细过程参考:https://blog.csdn.net/zouxiaolv/article/details/107400193在这里插入图片描述

缺点

观察RCNN的整体流程我们可以看出其具有以下几个缺点:

  1. 提取proposals用的selective search,速度慢且很多无用的proposals
  2. 重复计算特征:每一个proposals都需要通过CNN提取特征,速度会大大减慢
  3. 需要resize操作:proposals在输入的时候需要经过warp操作,可能会丢失原有的结构信息
  4. 串行结构:先对特征进行分类,然后再对bounding box位置进行回归。这个问题本质上是因为分类的时候需要重新训练一个SVM,而回归bounding box坐标是使用fc,二者不能共用,导致速度比较慢

SPPNet(修改CNN特征提取过程)

RCNN最主要的时间开销实际上都花在了对2000个proposals进行特征提取的地方。而SPPNet主要解决这个问题。

主要流程

SPPNet的主要流程如下:
在这里插入图片描述

可以看到相较于RCNN,其主要的修改部分有两个:

  1. 从原来需要多次特征提取变成一次特征提取
  2. 为了解决上一点带来的“不同感兴趣区域(RoI,region of interest)对应特征的维度不同,而不能使用同一个fc”的问题,提出了spatial pyramid pooling(SPP)

具体的流程从下图中第二行(RCNN)变成了第三行(SPPNet),也就是从“warp→特征提取”变成了“特征提取→SPP”。
在这里插入图片描述

SPP

上述主要修改的两点中,第一点将多次CNN提取特征变为一次这个过程比较直观,不再详述。因此主要对第二点:SPP层进行讲解。SPP层的目标是为了将不同分辨率的特征都能映射到相同的维度上以供后续fc进行分类。它的思路如下图:
在这里插入图片描述
提出了多个尺度的池化层,来提取不同粒度的特征。对于任意分辨率的特征,会将它们划分成相同数目的小块进行max pooling。例如图中所示,不管特征图大小怎样,都会划分成16、4、1个小块,于是输出是恒定为(16+4+1)*256维的特征,并将其送到fc中进行分类。

下图展示了一个例子:
在这里插入图片描述
左图是输入图片和对应的经过selective search选择出来的一个region proposal,右图是将这个proposal映射到特征图上的位置。
在这里插入图片描述
上图就是对其按照不同的区域划分进行spp的结果,得到特征之后会把这些特征concat之后送到最后的fc中(最后这一步图中没画出来)。

优点

SSPNet有以下两个优点:

  1. 让最后的分类器能适应任何尺寸的proposals:避免裁剪导致的信息丢失,或者是变形导致的位置信息扭曲
  2. 只需要对图像特征提取一次,大大加速
  3. 提出spp,将不同分辨率的特征都映射到相同维度

缺点

缺点实际上就是针对RCNN未解决的部分:

  1. 提取proposals速度慢
  2. 串行结构:先对特征进行分类,然后再对bounding box位置进行回归。

Fast-RCNN(改版spp+分类与回归二合一)

Fast-RCNN主要整合了proposals的分类和bounding box的回归这两个过程,整体进行了加速。

主要流程

论文中给出的图如下:
在这里插入图片描述
这个图其实把前面提取region proposals的过程给省略了。要主要的是Fast RCNN仍然使用的是selective search来生成proposals的。如果光看上面的图可能不好看出来和之前工作的区别,可以将它展示成我们都比较熟悉的样子:
在这里插入图片描述
在转化之后,我们可以很明显看出Fast-RCNN和SPPNet的区别。Fast_RCNN主要的修改有以下两点:

  1. 将SPP层变成了RoI pooling层
  2. 取消了SVM,这样将分类和回归两个过程合并,只是最后的linear层有所区别

RoI pooling

我们主要介绍第一点修改,第二点修改比较直观,不做详述。RoI pooling听着是新提出的网络层,实际上就是spp的简化版(经典改一张就是原创卡组) !本质上是取了一个尺度的spp,见下图应该就很清楚了
在这里插入图片描述
下面这个过程给出了一个具体计算的例子(其实这也是spp中其中一个尺度的计算过程):
请添加图片描述

优点

Fast-RCNN有以下两个优点:

  1. 最后分类和回归两个步骤变成multi-task
  2. 提出RoI pooling,解决proposals分辨率不同影响最后fc求解的问题(感觉SPPNet已经解决过了捏?科研人的辛酸是这样的)

缺点

缺点实际上就是针对RCNN未解决的部分(又能少一个了):

  1. 提取proposals速度慢

Faster-RCNN(修改提取区域候选的过程)

Faster-RCNN就是解决最后一个问题:提取proposals速度慢的问题了!前面的网络使用的都是seletive search作为候选提取算法,而这个地方就是想采用神经网络来代替这个过程

主要流程

Faster-RCNN和之前方法的对比如下图:在这里插入图片描述

因为之前的方法画图的时候实际上没有把提取region proposals的过程画出来,他们都是在使用selective search之后将proposals映射到特征图上(也就是左图的RoI区域),而右图是Faster-RCNN完整的过程。可以看到和之前方法相比的改变的地方就只有一点:

  1. 用RPN代替传统的selective search方法来进行候选区域提取

RPN

RPN是为了从图像中提取多个候选区域,其基本思想是模式匹配的方法。对每种模式去回归这个模式下是否包含物体的概率以及对bounding box的修正。下图是一个概览图。
在这里插入图片描述
下面来举一个例子会更加清楚一点:对每一个像素,以这个像素为中心,预先设定九种候选框(在这里叫anchor)。这样在经过特征提取之后,特征图上的一个点可以理解成对应原图中一个像素位置的9种anchor
在这里插入图片描述
下面这个图展示地更清楚一点,上图中灰色的特征图上每一个点会对应下图上红色点的位置(每个位置会有9个anchor)。
在这里插入图片描述

假设特征提取之后的特征图维度为40x60x512,分成两个分支,分别得到

  • 分类分数,维度为40x60x9x2,代表原图上40x60个点上,这9个anchor分类为前背景的概率(下分支)
  • 对bounding box的坐标进行修正的参数。维度为,40x60x9x4,代表原图上40x60个点上,这9个anchor的bounding box的偏移量(上分支)
    在这里插入图片描述

之后用bounding box修正参数进行修正就能得到region proposals啦!以上就是RPN的全过程

优点

Faster-RCNN的优点就主要体现在用RPN替代了传统提取区域候选算法,大大加速!

缺点

虽然看来已经解决了RCNN的四个缺点。但是这不代表Faster-RCNN就是完美的了,后续也有很多工作在这上面进行改进,这些就超出本文的范围啦!

最后感谢各位看到最后!

参考资料

  • https://jhui.github.io/2017/03/15/Fast-R-CNN-and-Faster-R-CNN/
  • https://analyticsindiamag.com/r-cnn-vs-fast-r-cnn-vs-faster-r-cnn-a-comparative-guide/
  • https://zhuanlan.zhihu.com/p/370407951
  • https://blog.csdn.net/weixin_43624538/article/details/87966601
  • https://blog.csdn.net/qq_35586657/article/details/97885290
  • https://www.cnblogs.com/kk17/p/9748378.html#25-%E5%AF%B9%E6%96%87%E7%AB%A0%E7%9A%84%E4%B8%80%E4%BA%9B%E6%80%9D%E8%80%83
  • https://blog.csdn.net/fenglepeng/article/details/117898968

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第四十一天| 背包问题

标准背包问题 有n件物品和一个最多能背重量为w 的背包。 第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 举一个例子: 背包最大重量为4。 物品为: 重量价…

c++之qt学习 基本介绍 界面设计 串口

这里写目录标题 qt基类介绍qt不同版本qt下载打开qt creater制作简单qt界面ui界面点击forms,双击ui文件,就可以进入ui编辑器 qt信号和槽给界面增加图片界面布局布局不会影响代码 界面切换更改代码验证账号密码 qt的三驾马车串口助手为下拉框加入属性信息串…

力扣动态规划专题(四)劫舍问题与股票问题 打家劫舍Ⅰ Ⅱ Ⅲ 买卖股票最佳时机Ⅰ Ⅱ Ⅲ IV 步骤及C++实现

文章目录 198. 打家劫舍213. 打家劫舍 II337. 打家劫舍 III121. 买卖股票的最佳时机动态规划贪心算法 122. 买卖股票的最佳时机 II动态规划贪心算法 123.买卖股票的最佳时机III188.买卖股票的最佳时机IV309.最佳买卖股票时机含冷冻期714.买卖股票的最佳时机含手续费 198. 打家劫…

为摸鱼助力:一份Vue3的生成式ElementPlus表单组件

目录 一、实现背景 二、简介 三、组织架构设计 四、实现方式 五、代码示例 六、示例代码效果预览 七、项目预览地址 & 项目源码地址 目前项目还有诸多待完善的地方,大家有好的想法、建议、意见等欢迎再次评论,或于github提交Issues 一、实现…

杭州市等级保护测评机构名录-2023年

等级保护测评机构并不是一成不变的,因为有年审不符合条件被撤销的,也有符合条件新增的,所以需要不定时查看的。这里小编就给大家汇总了2023年杭州市等级保护测评机构名录。 杭州市等级保护测评机构名录-2023年 序号:1 机构名称…

开源SCRM营销平台MarketGo-营销通道

一、概述 互联网逐步由蓝海市场往红海市场走,互联网增量的红利基本到顶了。营销层面过去要获取新用户,现在需要考虑用户的留存、活跃、复购等,重心从拉新向留存用户的精细化运营转移;当人口红利慢慢消失,成本也在逐渐…

零基础学会Python编程——开发环境的搭建

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 学习目标 一.python 介绍 1.Python 的历史 2.Python 的应用领域 二.Pytho…

电源开关这个丨和0哪个在上方?

开关这个丨和0哪个在上方? 开关的I或O的位置,根据安装的方向不同而不同。一般情况下上下方向安装时,都是O在上面。而水平安装时则是左O右I。 开关图片 在这种类型的开关中,是将“|”和“O”作为一个电源开闭循环的标示&#xff0…

PtaPython练习

一、3位水仙花数计算 1、题目 3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 ABC。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬…

《面试1v1》Spring循环依赖

🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结&#xf…

Web前端 3D开发入门规划 3D效果将不再是桌面应用的专利

随着 WEB领域的快速发展 3D技术开始不再是桌面应用的专利 WEB3D技术的应用 实现了启用网址的3维呈现 让界面更直观 立体的展示 他打破了传统平面的展示形式 那么 目前的话 政府也有大量的新基建的项目 如 数字孪生 智慧城市 智慧园区 智慧工厂 智慧消费等等项目都涉及到了 3D…

系统磁盘从MBR格式转换成GPT格式来升级win11

之前的《用移动硬盘当系统盘,即插即用》中说到,需要把磁盘格式转化为MBR格式才能执行下去。问题是,win10升级win11要求启动方式为UEFI的话,磁盘格式不能为MBR。其实不升级也不影响啥,但是就是想好看点。所以花了点时间…

推荐系统学习

推荐系统 系统职能:头条/抖音/快手,都是以推荐系统作为流量的分发的主要手段; 职业发展:大数据处理/流式计算/数据挖掘/机器学习/高并发服务等领域。 更具用户的离十信息和行为,向用户推荐他感兴趣的内容 基于行为的…

Modbus TCP 协议详解及C语言示例

Modbus TCP 是一种应用于以太网的通讯协议,基于Modbus RTU协议。Modbus协议是一种应用于串行数据通信的协议,广泛应用于工业控制系统。Modbus TCP 将传统的 Modbus RTU 消息封装在 TCP/IP 报文中,使其能够在现代的以太网环境中进行通信。本文…

VUE 2X MVVM模型 ③

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs M V V M MVVM MVVM模型Data与El的2种写法总结 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ ⡖⠒⠒⠒…

【数据分享】1929-2022年全球站点的逐年平均风速(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 对于具体到监测站点的气象数据,之前我们分享过1929-2022年全球气象…

linux-7 awk

目录 1.awk默认规则 2.处理方式 3.格式 4.运算 5.getline 6. 文件内容匹配过滤打印 7.begin . end模式 8.awk条件判断打印 9.awk三元表达 10.awk精准筛选 11.awk数组 1.awk默认规则 当以多空格为分隔符时 自动压缩成一个 默认操作就是打印 默认分隔符时空格 2.处理…

解锁Gradio Interface的便捷与扩展性:load、from_pipeline、integrate和queue方法的魔力

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Day25 实战篇 ——Jmeter实现Java测试实战

Day25 实战篇 ——Jmeter实现Java测试实战 文章目录 Day25 实战篇 ——Jmeter实现Java测试实战一、新建Maven项目二、编写输入参数类、测试类三、编译、打包四、验证开发的函数是否正常1、性能测试过程中,有时候开发想对JAVA代码进行性能测试,Jmeter是支持对Java请求进行性能…

论文解读In-Depth Mouse: Integrating Desktop Mouse into Virtual Reality

In-Depth Mouse: Integrating Desktop Mouse into Virtual Reality HCI2022 honorable ❤️ 将2d的鼠标应用到3d的虚拟空间中,对可选对象进行选择 Challenge 1、如果单纯利用3d虚拟鼠标的3d位置对可选物体进行选择,有可能出现距离更近的物体将虚拟鼠标…