目标检测常用模型之R-CNN、Fast R-CNN、Faster R-CNN

news2024/11/22 1:08:17

文章目录

  • 一、模型分类
    • 1. 一阶段目标检测
    • 2. 二阶段目标检测
  • 二、常见模型
    • 1. R-CNN
    • 2. Fast R-CNN
    • 3. Faster R-CNN

一、模型分类

  2012年卷积神经网络(Convolutional Neural Networks, CNNs)的兴起将目标检测领域推向了新的台阶。基于CNNs的目标检测算法主要有两条技术发展路线:anchor-based和anchor-free(此文不涉及)方法,而anchor-based方法则包括一阶段和二阶段检测算法(二阶段目标检测算法一般比一阶段精度要高,但一阶段检测算法速度会更快)。

1. 一阶段目标检测

  一阶段目标检测不需要产生候选框,直接将目标框定位的问题转化为回归(Regression)问题,处理常见算法有YOLO、SSD等等。

2. 二阶段目标检测

  二阶段检测算法主要分为以下两个阶段:
  Stage1: 从图像中生成region proposals
  Stage2: 从region proposals生成最终的物体边框
  本文将重点介绍二阶段目标检测的算法模型。

二、常见模型

1. R-CNN

  R-CNN是由Ross Girshick于2014年提出,首先通过选择性搜索算法Selective Search从一组对象候选框中选择可能出现的对象框,然后将这些选择出来的对象框中的图像resize到某一固定尺寸,并喂入到CNN模型(如AlexNet等)提取特征,最后将提取出的特征送入到分类器来预测该对象框中的图像是否存在待检测目标,并进一步预测该检测目标具体属于哪一类。如下图:
在这里插入图片描述
  图中“Extract region proposals”(Selective Search算法)的步骤如下:
  1. 基于oversegmented(Felzenszwalb and Huttenlocher 算法)得到细分的区域,作为初始的region集合;
  2. 计算region两两之间的相似性,合并具有最大相似性的两个region,得到新的更大的 region,加入region集合中;
  3. 重复步骤2,直到整幅图只剩一个region,至此,得到的region集合就是算法的输出;
  “Region proposal”生成后,会经过“Compute CNN features”进行特征提取。此处,作者使用了AlexNet,该CNN包含5个卷积层和2个全连接层从每个“Region proposal”中提取固定长度的特征向量(4096-dimentional)。
  最后,提取的特征向量经过SVM分类模块对每张图像上的目标进行分类,并通过边界框回归对目标进行定位。
  R-CNN有如下缺点:
  1. 训练和推理时间较长:每个“Region proposal”都会经由CNN进行特征提取,消耗大量的计算资源;
  2. 检测精度较低;

2. Fast R-CNN

  Fast R-CNN网络是R-CNN和改进版。如下图:
在这里插入图片描述
  首先,与R-CNN不同,Fast R-CNN的输入是“图像”和“图像的Region proposal”,先将图像经过卷积网络提取特征图,再使用“Region proposal”对特征图提取特征框。这样做的好处是,原来建议框重合部分非常多,卷积重复计算严重,而这里每个位置都只计算了一次卷积,大大减少了计算量。
  其次,由于特征框大小不一,得到的特征框需要转化为相同大小,这一步是通过ROI Pooling层来实现的(ROI表示region of interest即目标)。
  最后,将大小相同的特征图输入全连接层做最终的预测。
  Fast R-CNN的不足:
  该模型依然使用Selective Search来寻找感兴趣的区域,这一过程通常较慢,速度仍然不够理想。

3. Faster R-CNN

  Faster RCNN是第一个端到端,接近于实时性能的深度学习检测算法,主要创新点就是提出了区域选择网络用于生成候选框,能极大提升检测框的生成速度。该网络首先输入图像到卷积网络中,生成该图像的特征映射。在特征映射上应用Region Proposal Network,返回object proposals和相应分数。应用Rol池化层,将所有proposals修正到同样尺寸。最后,将proposals传递到完全连接层,生成目标物体的边界框。如下图:
在这里插入图片描述
  由于Faster R-CNN设计更为复杂,后续会对其原理另做详细分析。

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

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

相关文章

国外顶尖高校、企业分享人工智能自学课程英文原课程分享

人工智能无疑已经是当下最火热的方向,在很多领域已经融入我们生活,ChatGPT,Midjourney只是其中一个细分热点。目前这个领域,虽说国内也有不少课程,但是大部分源头还得从英文资料中找。如何学到最新最强得人工智能技能,…

Mongodb——快速入门,2个小时足够了

目录 1、Mongodb概述 1.1、为何使用Mongodb? 1.2、业务应用场景 1.3、Mongodb和MySQL的区别 2、Mongodb安装 2.1、Windows系统中安装启动 3、Mongodb的操作 3.1、数据库操作 3.2、集合操作 3.2.1、集合显式创建 3.2.2、集合的隐式创建 3.2.3集合的删除 …

k8s进阶3——资源配额、资源限制

文章目录 一、基本了解1.1 资源计算1.2 调度机制1.3 服务质量等级 二、资源配额 ResourceQuota2.1 支持的限制资源2.2 配额作用域2.3 资源配额选型2.3.1 计算资源配额2.3.2 存储资源配额2.3.3 对象数量配额 三、资源限制 LimitRange3.1 限制资源大小值3.2 设置限制默认值3.3 限…

buu [NPUCTF2020]共 模 攻 击 1

题目描述: task: hint: 题目分析: 先看hint(提示)这一部分,标题已经提示了是共模攻击,看到有e1,e2,c1,c2,n也可以想到是共模攻击,之后得到c,继续往下做 此时有点不知如何下手,e 256 并且 gcd(e // 4,p…

接口测试工具Postman接口测试图文教程(超详细)

目录 一、前言 二、Postman安装和使用 三、请求方式 四、资金记录接口实例演示 一、前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性。而这要求前端开发进度…

games103——作业4

实验四主要使用 Shallow Wave 模拟流体 完整项目已上传至github。 文章目录 Height Feild(高度场)更新高度场更新速度场 Shallow Wave EquationDiscretization(离散化)一阶导数二阶导数 Discretized Shallow Wave EquationSolution 1Solution 2Pressure(压强)Viscosity(粘滞) 算…

​性能测试基础——性能测试方案

前面所说的测试分析等准备工作实际上最终目的是制定测试方案,测试方案一般包括: 项目的简要说明、项目系统结构、项目的业务结构、以及项目的性能需求、测试环境数据以及测试策略方法、测试案例、测试人员进度安排以及测试风险预估等等。 下面是一个一般…

FreeRTOS创建静态任务教程及所遇到的问题解决方法

静态任务和动态任务的区别 相对于动态任务,静态任务不需要动态分配内存,而是手动指定一个静态内存缓冲区,并在任务生命周期中一直使用该缓冲区。这可以避免动态内存分配时可能出现的内存碎片和内存泄漏问题,提高了系统的稳定性。…

【Python lxml、BeautifulSoup和html.parser区别介绍】零基础也能轻松掌握的学习路线与参考资料

区别介绍 (1)lxml lxml是Python的一个XML解析库,它基于libxml2和libxslt库构建,可以读取、操作和输出XML文档。lxml具有很强的性能和稳定性,在处理较大的XML文件时表现尤佳,并且支持XPath、CSS选择器等高…

PHP复习资料(未完待续)

(未完待续,请持续关注此板块) 【计科三四】雪课堂PHP期末模拟题:https://ks.wjx.top/vm/tUAmjxq.aspx# 【计科一二】PHP第一章练习题 https://ks.wjx.top/vm/QnjHad4.aspx# 【计科一二】PHP第二章练习题 https://ks.wjx.top/vm/h2…

ggplot绘制带误差棒、置信区间的柱状图,并调整颜色为渐变

ggplot绘制带误差棒、置信区间的柱状图,并调整颜色为渐变 简单绘制柱状图控制柱状宽度,间距调整颜色渐变简单绘制柱状图 要在ggplot中绘制带有置信区间的柱状图,你可以使用geom_bar和geom_errorbar函数来完成。下面是一个示例代码: library(ggplot2)# 创建一个示例数据集…

【LeetCode热题100】打卡第1天:两数之和

文章目录 两数之和⛅前言🔒题目🔑题解 两数之和 ⛅前言 大家好,我是知识汲取者,欢迎来到我们的LeetCode热题100刷题专栏! 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与…

《操作系统》期末最全复习题及解释答案

文章目录 选择题填空题简答题程序题综合题1.银行家算法2.页面置换算法3.进程调度算法4.磁盘调度算法5.求物理/逻辑地址6.分页存储管理7.可变分区分配算法 选择题 若信号量S的初值为2,且有3个进程共享此信号量,则S的取值范围是(B )…

Downie 4 4.6.17 MAC上最新最好用的一款视频下载工具

Downie for Mac 简介 Downie是Mac下一个简单的下载管理器,可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们。 Downie 4 下载 Downie 4 for Mac Downie 4 for Mac软件特点 支持许多站点 -当前支持1000多个不同的…

Linux学习笔记 --- Linux基础命令

一. Linux的目录结构 目标:1. 掌握Linux系统的目录结构 2. 掌握Linux系统的路径表达形式 1.1 Linux系统的目录结构 我们知道,在操作系统中,文件系统的目录结构一般都是树形结构。Linux的目录结构是一个树型结构Windows 系统可以拥有多…

学习【菜鸟教程】【C++ 类 对象】【C++ 类的静态成员】

链接 1. 教程 可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。 静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时…

用Lua或c调用go的库

用Lua或c调用go编写的库或函数 背景思路操作golua代码汇总 参考文章 又好久没有更新了,这次肯定又是遇上了什么问题,但又解决了的,才跑过来更新的。我也是翻遍了全网都没找到lua去调go代码的,于是干脆自己写一个 背景 作为提供统…

堆结构与堆排序

二叉树的概念 满二叉树:二叉树的每一层的节点数都达到最大值 完全二叉树:满二叉树或是从左往右依次变满的树 二叉树的数组表示 01234567 堆结构(优先级队列结构) 完全二叉树 大根堆&#xff1…

图数据库评估难?一篇教你搞定图数据库产品评估

随着数字经济时代全面开启,数据作为重要的生产要素,赋能作用日渐凸显,企业逐渐开始关注自身数字化水平和数据资产价值。而当各企业数智水平提升,其业务环境和计算场景呈现数据间关系交错复杂的特点。在面对需要深度挖掘数据间复杂…

C语言——存储类型

目录 1. auto 自动型2. static 静态2.1 修饰变量要知道👇(数据在Linux内核中的分配图) 2.2 static 的特点⭐⭐⭐⭐⭐:2.2 修饰函数 3. extern4. register 寄存器类型 存储类型 存储类型有:auto static extern register…