常用目标检测算法介绍

目录

1. 常用目标检测算法

2. R-CNN 模型

3. Fast R-CNN 模型

4. Faster R-CNN 模型

5. SSD 模型


1. 常用目标检测算法

        在深度学习框架下,目标检测方法通常涉及图像定位和分类两个关键方面。有两种主要的解决方法:一种是一阶(one-stage)回归型目标检测算法,其中以YOLO系列算法为代表,它主要通过对输入图像进行定位回归和目标检测,最终输出目标的类别信息。另一种是二阶(two-stage)目标检测算法,以Faster R-CNN系列为代表,该方法分为两个步骤:目标候选框提取和目标识别,最终生成目标检测结果。

2. R-CNN 模型

        传统的目标检测方法采用滑动窗口的方式逐一扫描图像中的各个区域进行检测,然而这种方法导致了检测速度的显著下降,并可能出现因多次扫描同一目标区域而降低检测准确性,甚至导致检测失败。因此,实现有效、快速和准确的目标检测是改进目标检测算法的首要任务。

        J.R.R.Uijlings 在2012年提出的selective search方法实际上是建立在基于图像分割原理的图像分割算法基础上的。该方法首先将原始输入图像分割成多个区域,经过一系列结果筛选和分类的步骤,确定目标对象在原始图像中的位置,并收缩候选的目标区域。同时,神经网络会对这些缩小后的2000个候选区域进行逐一评估,选择匹配度最高的两个区域并将它们合并为同一集合。这个过程不断迭代,直到筛选完所有区域,最终得到图像的分割结果,用以确定目标对象的位置。这种方法大大降低了计算复杂度,为早期的深度学习目标检测算法的发展铺平了道路,尤其是R-CNN算法的应用,将初始框和卷积神经网络结合在一起,标志着目标检测领域取得了重大突破。 R-CNN 算法的流程图如图1所示。

                         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         1 R-CNN 流程图

        CNN算法的流程首先将输入图像分割成多个不同的区域,将每个区域视为独立的子图像。随后,根据目标特征将具有相关特征的子图像进行匹配和合并,这一过程不断迭代,直到组合成更大的候选框。这种方法解决了传统目标检测算法使用滑动窗口进行重复扫描的问题,极大地提高了检测速度和准确性。实验证明,R-CNN在不同场景下表现出出色的适应性和鲁棒性。此外,该算法中的线性回归模型用于校准目标的候选框,从而减少了其他无关因素对检测结果的影响,进一步提高了目标检测的准确性。

3. Fast R-CNN 模型

        Fast R-CNN算法在处理候选区域的特征提取方面采用卷积网络,与R-CNN不同的是,Fast R-CNN利用SPP算法的原理,只需一次特征提取,从而解决了繁琐的计算步骤和冗余计算问题。Fast R-CNN模型如下图2所示:

                                                        图 2 Fast R-CNN 模型 

        Fast R-CNN使用卷积神经网络模型来提取图像特征,并在筛选和合并后生成各类别的多个候选框。然后,所有这些目标候选框被传递到池化层,以进行特征筛选,最终经过全连接层输出分类结果。与R-CNN不同,Fast R-CNN的RoI(感兴趣区域)池化层是一个简化的SPP(空间金字塔池化)层。卷积后得到的特征图上的每个像素点实际上与原始图像的相应区域一一对应。对于图像中的不同候选区域,我们可以通过确定其左上角和右下角的坐标位置,将其映射到特征图上,以获取与该候选区域相关的特征。

        Fast R-CNN相较于R-CNN有效缩短了训练时间,实现了更加统一和规范化的网络训练,提高了训练速度和准确性,整体性能优于R-CNN。实验结果分析表明,Fast R-CNN在不同光照条件下表现出良好的识别准确性和鲁棒性。然而,Fast R-CNN仍然使用Selective Search方法来提取候选区域的特征,这会导致较长的计算时间。例如,生成整个框架需要大约两秒的时间,这对于需要实时性目标检测的应用,如道路检测或空中飞行物检测,可能不是最佳选择。

4. Faster R-CNN 模型

        尽管Fast R-CNN模型在目标检测性能方面取得显著进展,但其存在选择性搜索问题,这导致目标检测效率较低,需要花费时间在许多目标特征不明显的区域上,可能出现遗漏和误检。此外,Fast R-CNN需要在训练过程中不断调整参数以提高性能,这些限制了其实际应用。因此,Faster R-CNN方法由任少卿等人提出来解决这些问题。

        Faster R-CNN算法在Fast R-CNN算法的基础上创新性地引入了区域生成网络(RPN),以替代传统的选择性搜索方法,从而提高了神经网络的特征训练效率。Faster R-CNN采用了端到端的两阶段方法,充分利用了卷积神经网络的共享计算,从而在一定程度上提高了目标特征的训练效率,大大提升了整个算法模型的检测效率。该算法的结构如图3所示:

         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​            3 Faster R-CNN 算法结构

        由于特征图经过池化层后的尺寸大幅减小,RPN网络在特征图上的计算量和移动次数都大幅降低。此外,RPN网络与RoI Pooling模块共享了基础网络,这简化了计算过程中的各种参数,减少了不必要的计算,因此网络的计算速度有了显著提升。由于RPN网络能够在高维空间中生成候选框,因此网络能够获得更高维度的特征信息,使生成的候选区域更接近真实值,从而提高了Faster R-CNN算法的检测效率。RPN的结构如下图4所示:

   图 4 RPN 结构

5. SSD 模型

        2016年,Wei Liu等研究人员提出了一种名为SSD的目标检测算法,通常用于检测目标物体。SSD算法对VGG16进行了改进,将网络的FC6和FC7层替换成两个卷积层,并在其后添加了三个逐渐减小尺寸的卷积层和一个平均池化层。最终,该算法将特征提取的结果传递到损失层。SSD算法利用多个卷积层的特征图进行偏移和置信度的预测,从而增加了检测过程中的语义信息。这使得它在不同尺度的物体检测方面表现出良好的效果。下图显示了该算法的网络结构(如图5所示)。

         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​           5 SSD 网络结构

        SSD算法的网络结构对VGG进行了改进,它引入了辅助网络层,用于融合多尺度卷积网络的预测结果。采用了与默认边界框(Anchor)类似的方法,对不同尺寸的目标对象进行处理,以提高训练和预测的准确性。SSD算法提供了一个完整的端到端训练网络,相比Faster R-CNN模型,更便于数据传输和网络计算。此外,对于尺寸较小的输入图像,SSD算法在目标检测方面表现更出色。然而,它在小目标和相邻目标的检测上存在一些不足,甚至在复杂背景下的目标检测结果可能不如人意。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

去除快捷方式的箭头图标

文章目录 取消箭头显示恢复箭头显示结果展示 添加快捷方式之后,会有箭头图标,部分场景下看着较为难受: 可以通过如下方式取消/显示箭头: 取消箭头显示 新建一个.bat文件,内部加入如下命令: reg add "…

2024北京市人工智能大模型行业应用分析报告

来源:北京市科学技术委员会 方向一为基于AIGC技术的智能审计合规研究,由北京银行提出,以 提高审计工作效率和准确性为核心目标,需要参赛企业针对检查内容, 利用大模型技术寻找并给出相关现象涉及的制度名称及相关原文…

element ui的确认提示框按钮样式修改

修改确认提示框的默认按钮样式,使用css强制修改 例: js代码: deleteUser(params){this.$confirm("您确定要删除吗?此操作无法撤销并且将永久删除所有数据。", "提示", { type: "warning", cancel…

新款锐科达SV-2402VP SIP广播音频模块18123651365支持RTP流音频广播

一、模块介绍 SV-2402VP网络音频模块是一款通用的独立SIP音频播放模块,其带2*15W功放音频输出,可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行解码播放。 该模块支持多种网络协议和音频解码协议,可用于VoIP和IP寻呼…

解决Tomcat日志乱码问题

1、 修改apache-tomcat-10.1.23/conf/server.xml URIEncoding"UTF-8"2、 修改apache-tomcat-10.1.23/conf/logging.properties # java.util.logging.ConsoleHandler.encoding UTF-8 java.util.logging.ConsoleHandler.encoding GBK参考 https://www.jb51.net/ar…

一键接入电商API数据接口京东API通过商品ID、URL采集商品详情页实时数据API接入指南

要一键接入京东电商API数据接口并采集商品详情页的实时数据,您需要按照以下步骤操作: 注册账号:您需要注册一个账号。完成注册后,您将获得用于API认证的ApiKey和ApiSecret。选择API:根据自己的需求选择合适的API服务。…

域控安全 ----> Ntds.dit文件抓取

大家还记得内网渗透的初衷吗??? 找到域馆,拿下域控!! 拿下了域控就是拿下了整个域!! 但是大家知道拿下域环境之后应该怎么操作吗(灵魂拷问)??? …

科研综述写作技巧:三大要领与实战应用

​在科研工作中,综述不仅是研究者对既有知识体系的梳理与整合,更是为接下来的研究提供方向与思路的重要工具。写好一篇综述,需要掌握三大要领。 要领一:明确目标与定位 在开始综述写作之前,首先要明确综述的目标与定位…

Spring 常用的注入方式有什么?

Spring 是一个非常流行的 Java 开发框架,它提供了多种依赖注入(Dependency Injection)的方式,使得开发者可以轻松地管理应用程序中的组件依赖关系。在 Spring 中,常用的注入方式主要包括构造器注入、Setter 方法注入、…

全网最全:一文入门最热的LLM应用开发框架LangChain

f#### 1. LangChain 简介 1.1. LangChain 发展史 LangChain 的作者是 Harrison Chase,最初是于 2022 年 10 月开源的一个项目,在 GitHub 上获得大量关注之后迅速转变为一家初创公司。2017 年 Harrison Chase 还在哈佛上大学,如今已是硅谷的…

【Django项目】 通过AI实现视频转文字

使用Django构建一个视频—>文字 转换器: 输入视频地址,通过OpenAI的接口分析视频,返回视频内容的文字。 视频 代码 运行此程序,需要OpenAI-key和设置Postgres数据库。 (吐槽一下,作者把这些信息都直接写…

【数据结构初阶】直接插入排序

最近浅学了直接插入排序,写个博客做笔记!笔记功能除外若能对读者老爷有所帮助最好不过了! 直接插入排序是插入排序的一种,那么介绍直接插入排序之前先介绍一下常见的排序算法! 目录 1.常见的排序算法 2.直接插入排…

WPF鼠标拖拽的最佳实现

WPF鼠标拖拽的最佳实现 在很多项目中都会遇到鼠标拖拽控件移动的需求,常见的有从在列表中拖拽列表项移动,拖拽控件移动等。 本文将介绍2种拖拽的简单的实现 列表项的拖拽 本文将使用 gong-wpf-dragdrop 这个github上的库来实现列表的拖拽的效果&…

Python从0到POC编写--SQL注入

SQL注入POC编写。 环境: win10 ,phpStudy ,python3.7 ,sqli-labs 虚拟域名: www.sql.com 简单的POC: 说起来也简单, 就是请求–>响应, 然后再判断返回信息是否存在注入。 本…

【高阶数据结构(二)】初识图论

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:高阶数据结构专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多Go语言知识   🔝🔝 高阶数据结构 1. 前言2. 图的基…

Spring底层入门(七)

1、异常处理 在DispatcherServlet中,doDispatch(HttpServletRequest request, HttpServletResponse response) 方法用于进行任务处理: 在捕获到异常后没有立刻进行处理,而是先用一个局部变量dispatchException进行记录,然后统一由…

[Cpp]类和对象 | 实现日期类

标题:[Cpp]类和对象 | 实现日期类 水墨不写bug 正文开始: 类和对象是Cpp面向对象编程区别于C的面向过程编程的重要的一部分,因此打好坚实的类和对象的基础对于深入学习Cpp语言是比较明智的。 本文通过实现简单的日期类来加深对类和对象的理解…

怎么用git在暂存区(stage)中移除不需要提交(commit)的文件?

2024年5月9日&#xff0c;周四上午 非常简单&#xff0c;用下面这条命令就可以了 git rm --cached <file>注&#xff1a;这条命令不会把文件从文件夹中删除&#xff0c;只会把文件从暂存区中移除出去 实战

Isaac Sim 5 Ros相关(学习笔记5.8.3)

一.RGB、Depth、bbox话题发送 1.新建一个二驱示例小车 路径为Robot-Jetbot&#xff08;如果找不到也可以直接搜索Jetbot&#xff09; 2.添加Action Graph 导航栏中&#xff1a;Window - Visual Scripting - Action Graph&#xff0c;建立一个工作区&#xff0c;这个工作区中…

【高阶数据结构】并查集

并查集 并查集1、概念2、根据人找编号 / 根据编号找人&#xff08;简单介绍一下并查集&#xff09;&#xff08;1&#xff09;代码展示&#xff08;2&#xff09;调试结果&#xff08;3&#xff09;优化1&#xff1a;小的往大的合并&#xff08;4&#xff09;优化2&#xff1a;…