深度学习的目标检测算法综述

信息记录材料 2022年10月 第23卷第10期

【摘要】目标检测是深度学习的一个重要应用,目前在智能驾驶工业检测相关领域都获得应用,具有重要的现实意义。本文对基于深度学习目标检测算法原理和应用情况进行简述,首先介绍结合区域提取和卷积神经网络,以区域 R-CNN 为代表的分类目标检测框架的研究现状和相关模型;然后介绍与此相关的目标检测框架,YOLO 和 SSD;最后对这种目标检测领域的两种主流算法进行比较和总结,展望分析其未来的研究方向。

目标检测,主要是根据目标的相关特征对图像进行分割,从而实现目标识别目的。基于深度学习的目标检测算法在步骤上包括==双阶段(two-stage)和单阶(one-stage)==两种目标检测框架。

  • 前一种框架在处理过程中先确定出样本的候选框接着对样本通过 CNN网络分类
  • 后一种框架在处理时不产生候选框,直接在一定回归分析基础上实现目标检测

对比分析可知这两种方法的特性明显不同,前者所得结果更准确,不过实时性差,后者速度上占优。各经典算法及主流特征提取网络出现的时间 ,如图 1 所示。
在这里插入图片描述

基于区域提取目标检测框架

区域提取算法的核心框架是卷积神经网络 CNN,对这种网络的研究可追溯至神经认知机,神经认知机的主要特征表现为具有深度结构,属于一种研究相对深入的深度学习算法。根据相关资料可知这种网络中,隐含层是 S 层和C 层组合形成的,在运行过程中二者分别用于提取和接收图像特征的功能。20 世纪 80 年代 LECUN等对这种模型进行改进和优化,建立起功能更强大的 LeNet-5 网络,然后通过其识别手写数字,结果发现其可以很好地满足应用要求。LeNet-5 的主要特征为引入了池化层来筛选输入特征,这样可以显著提高网络的性能。LeNet-5 对 CNN 网络发展起到很大促进作用,并决定了其基本结构,通过这种网络进行图像处理时,可获得其平移不变特征。卷积神经网络主要由两部分组成,一部分是特征提取(卷积、激活函数、池化),另一部分是分类识别(全连接层)。

1.1 R-CNN

采用滑动窗口策略对图片进行反复特征提取,虽然能够尽量提取图片信息,但是穷举法导致识别结果多了很多其他信息,效率太低。GIRSHICK 等提出区域卷积神经网络 R-CNN(Region CNN),如图 3 所示。R-CNN 算法和改进前网络相比取得了 50% 的性能提升,但其也有缺陷存在:基于传统方法确定出候选区,这样降低了其处理实时性;卷积神经网络需要分别对各候选区来特征提取处理,实际存在大量的重复运算,也显著降低算法效率。
在这里插入图片描述
1.2 Fast R-CNN

GIRSHICK等在研究过程中提出一种优化的 Fast R-CNN 模型,如图 4 所示。Fast R-CNN 和 R-CNN 相比,训练时间从 84 h减少到 9.5 h,测试时间从 47 s减少到 0.32 s,并且在 PASCAL平台上测试的准确率提高到 66%~ 67%之间。且在学习训练过程中,综合了分类损失和回归损失,这样可显著改善学习效果。然后根据要求输出相关分类和定位信息,对中间层信息不需要特定性的保存,有利于节约存储资源。梯度可利用池化层来高效的传播。Fast R-CNN 使人意识到了候选区域 + 卷积神经网络在提高检测实时性方面的优势,对比分析可知多类检测可在改善处理实时性基础上,也提高了处理准确性,不过其依然存在局限性,如处理过程中基于传统方法生成候选区
在这里插入图片描述
1.3 Faster R-CNN

为了解决上述算法的问题,2015 年微软研究院的REN等以及 Ross 团队推出快速 R-CNN,如图 5 所示,在处理过程中简单网络目标识别速度为 17 fps,在 PASCAL VOC上准确率为 59.9%,复杂网络的为 5 f p s,准确率也达到78.8%。在这种模型中加入边缘提取网络,这样使得生成候选区域,特征提取,分类以及定位相关的环节被纳入到整体框架中,有利于提高模型的标准性水平。在对此网络进行改进时,应用区域生成网络(RPN)取代其中的搜索方法。设计辅助生成样本的 RPN 网络,算法在目标检测时的流程为,先由 RPN 对候选框进行判断,确定出其是否为目标,接着判断目标的类型。在各环节都可以共享提取的特征信息,因而有利于提高处理效率,同时占据的空间减小,可以更快地生成候选框,而算法的精度并不受到影响。不过进一步分析可知 RPN 网在处理时可获得多尺寸的候选框,这样在处理时感受野和目标尺寸会产生不匹配问题,在目标平移变化情况下无法实现检测目的
在这里插入图片描述
1.4 Mask R-CNN

为了处理 two stage 算法应用中存在的问题,HE 等 对上述问题进行分析,建立了Mask R-CNN 模型,取得了很好地识别效果。处理时面临的任务为 3 个,包括分类 +
回归 + 分割,如图 6 所示。基于全卷积网络预测候选框的掩膜,可使得目标空间结构相关的信息都很好的保留,实现目标像素级分割定位。
在这里插入图片描述

基于回归的目标检测框架

为了进一步提高目标检测的实时性,出现了 YOLO(you only look once)和 SSD(single shot multibox detector)等基于回归的目标检测框架这样不仅可以确保算法的可靠性,还能最大程度上提高其运算速度

2.1 YOLO

2015 年美国计算机研究者 REDMON 等 建立 YOLO 算法,通过这种算法进行处理时,对应的流程情况如图 ,其在预测过程中主要运用到图形全局信息,因而相应的处理过程显著简化。将输入图像尺寸进行还原,设置了7×7 网格单元。通过 CNN提取的特征进行学习训练,输出结果为目标的类别信息。然而该方法也存在一定的局限性,具体体现在定位不准、召回率不甚理想,尤其是在近距离的物体检测中不十分适用,从总体来看此方法的泛化能力相对弱
在这里插入图片描述
2.2 YOLOv2 和 YOLO9000

基于 YOLO 有 2 个改进版,YOLOv2 和 YOLO9000,它们有效弥补了以往方法的不足,可以减小召回率和定位误差。前者(如图 8 所示)主要是运用了 Faster R-CNN 的思想,在具体应用过程中采用锚框机制,同时还使用了典型的K-Means 聚类方式获得更为理想的锚框模板。这种算法的特殊性还体现在通过增加候选框的预测,引入更为科学的定位方法,=从而有效弥补了以往算法召回率低的问题,现阶段这种方法已经在实践中得到大量应用。YOLO9000 是基于 Y OLO v2 形成的一种算法,该算法的最大优势体现在能够检测超过 9 000 个类别的模型,其主要贡献点在于提出了一种分类和检测的联合训练策略。
在这里插入图片描述
2.3 YOLOv4

YOLOv4(如图 9 所示)算法是也是基于 YOLO 形成的一种新方法,相对来说,前者更具先进性。其采用了近些年卷积神经网络领域中最优秀的优化策略,因此在很多场合中都非常适用,比如在数据处理、主干网络等场合中均有不同程度的优化。在 YOLOv4 中,借鉴了跨阶段局部网络 CSPNet(cross stage partial networks),对Darknet53 做了一点改进。CSPNet 解决了其他大型神经网络框架梯度信息重复这一瓶颈,其采用特殊的方式将梯度完全集成到特征图中,故而采用这种方法能够有效减少模型的参数量和 FLOPS 数值。因此与其他的算法相比,其有更高可靠性,推理速度也非常理想;同时显著减小了模型尺寸。
在这里插入图片描述
2.4 SSD

LIU等 建立此算法,如图所示。S S D 的主要特征表现为融合了以上两种算法的回归和锚盒机制,在各卷积层的特征图上进行定位预测,输出的为统一的 boxes 坐标,对对应的类别置信度主要是通过小卷积核进行预测分析。进行整体多尺度的边框回归分析,这样可以提高算法的处理速度,而定位准确性不受到明显影响。然而其利用多层次特征分类,因此在应用中也存在一定不足,比如对于小目标检测困难。
在这里插入图片描述
深度学习目标检测有多方面性能优势和很广阔的应用场景,同时也面临着很多困难与挑战。本文以具有代表性的目标检测算法为主线,综述了这种检测技术的进展和思考。参考上下文特征的多特征融合,在此基础上,结合R N N 展开更为深入的探讨。当前这种目标检测算法虽然应用非常广泛,然而同样存在诸多局限性,如何减少复杂背景干扰以提高检测的准确性,基于深度学习目标检测技术的研究值得更深层次的研究。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker部署Nacos集群并用nginx反向代理负载均衡

首先找到Nacos官网给的Github仓库,里面有docker compose可以快速启动Nacos集群。 文章目录 一. 脚本概况二. 自定义修改1. example/cluster-hostname.yaml2. example/.env3. env/mysql.env4. env/nacos-hostname.env 三、运行四、nginx反向代理,负载均衡…

【C语言】RDMACM、Verbs API与epoll一起使用的示例

一、epoll介绍 epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。 以下是epoll的主要使用方法和优点: epo…

fuxploide,一款针对文件上传的Fuzz检测工具

fuxploide,一款针对文件上传的Fuzz检测工具 1.工具概述2.安装3.参数解析4.使用案例1.工具概述 Fuxploider 是一种开源渗透测试工具,可自动检测和利用文件上传表单缺陷。该工具能够检测允许上传的文件类型,并能够检测哪种技术最适合在所需的 Web 服务器上上传 Web Shell 或任…

Postswigger 靶场 XSS 通关

文章目录 PostSwigger靶场XSS通关学徒:第一关学徒:第二关学徒:第三关学徒:第四关学徒:第五关学徒:第六关学徒:第七关学徒:第八关学徒:第九关 PostSwigger靶场XSS通关 靶…

三、Shell 环境

一、Linux 系统分类 在 Linux 中,常见的 Shell 有以下几种: Bourne Shell(sh):最早的 Shell,由 Stephen Bourne 开发。它是大多数其他 Shell 的基础。Bourne Again Shell(bash)&am…

前端 Web Workers 简介

简介 以前我们总说,JS 是单线程没有多线程,当 JS 在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验,从而需要设置把任务放在任务队列中;执行任务队列中的任务也并非多线程进行的,然而现在 HTML5 提供了…

遥感深度学习:如何读取TIFF文件和切片成256*256?

博客已同步微信公众号:GIS不要炒茄子 01 前言 最近打算认真从头开始学习深度学习和遥感结合的相关内容,主要通过Python进行处理。此前用深度学习进行遥感相关的学习一直都是用 tensorflow3.0 框架,但是考虑很多因素我后面打算换用 Pytorch…

使用HTTP协议在Linux上进行API调用

在Linux系统上使用HTTP协议进行API调用是一种常见的操作,有时候我们需要调用一些外部API来获取数据或者进行自动化操作。下面是一个使用HTTP协议在Linux上进行API调用的代码示例,希望能够帮助你更好地理解这个过程。 首先,我们需要使用curl命…

单臂路由与三层交换机

单臂路由 划分VLAN后同一VLAN的计算机属于同一个广播域,同一VLAN的计算机之间的通信是不成问题的。然而,处于不同VLAN的计算机即使是在同一交换机上,它们之间的通信也必须使用路由器。 图(a)是一种实现VLAN间路由的方…

人工智能学习8(集成学习之xgboost)

编译工具:PyCharm 文章目录 编译工具:PyCharm 集成学习XGBoost(Extreme Gradient Boosting)极端梯度提升树1.最优模型的构建方法XGBoost目标函数案例1:泰坦尼克号案例2:对奥拓集团差评进行正确分类。数据准备:1.第一种…

Redis和MySQL双写一致性实用解析

1、背景 先阐明一下Mysql和Redis的关系:Mysql是数据库,用来持久化数据,一定程度上保证数据的可靠性;Redis是用来当缓存,用来提升数据访问的性能。 关于如何保证Mysql和Redis中的数据一致(即缓存一致性问题…

36V/48V转12V 10A直流降压DC-DC芯片-AH1007

AH1007是一款36V/48V转12V 10A直流降压(DC-DC)芯片,它是一种高性能的降压变换器,常用于工业、汽车和电子设备等领域。 AH1007采用了先进的PWM调制技术和开关电源控制算法,能够高效地将输入电压从36V/48V降低到12V&…

【Anaconda】Ubuntu anaconda使用(新建环境、最小化安装Tensorflow)

Ubuntu anaconda使用(新建环境、最小化安装Tensorflow) 清华源地址: https://pypi.tuna.tsinghua.edu.cn/simplepip安装使用的时候, pip install xxx(库名) -i https://pypi.tuna.tsinghua.edu.cn/simple请先安装好anaconda&am…

无论您用selenium、appium还是playwright都必须使用PO设计模式

随着UI自动化测试工具可选性越来越多,工具也越来越稳定,前几年关于自动化测试架构设计的概念逐渐淡化,但是自动化架构设计中最有用的PO设计模式思想依然需要刚入门自动化测试领域的小白深刻掌握,本文就带大家理解什么是PO设置模式…

fastapi.templating与HTMLResponse

要声明一个模板对象,应将存储html模板的文件夹作为参数提供。在当前工作目录中,我们将创建一个 “templates “目录。 templates Jinja2Templates(directory“templates”) 我们现在要把这个页面的HTML代码渲染成HTMLResponse。让我们修改一下hello()函…

LeetCode:1631. 最小体力消耗路径(SPFA Java)

目录 1631. 最小体力消耗路径 题目描述: 实现代码与解析: BFSDP 原理思路: 1631. 最小体力消耗路径 题目描述: 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表…

electron命令下载失败,手动安装教程

现象:pnpm i electron, 一直卡在提示错误node install.js 一 、下载需要的electron版本 地址 二、下载完毕,解压压缩包, 进入项目的node_modules/electron文件夹,创建dist文件夹,将下载的zip包里的文件复制到dist…

【详解优先级队列(堆)】

目录 堆的概念 堆的性质 堆的存储方式 堆的创建 堆的向下调整 向下过程(以小堆为例) 向下过程(以大堆为例) 建堆的时间复杂度O(n) 堆的插入与删除 堆的插入 向上调整建堆的时间复杂度O(nlogn) 堆的删除 常见习题 常用接口介绍 PriorityQueue的特性 Pri…

16:00的面试,16:07就出来了,问的问题过于变态了。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到六月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40…

【IDEA】IntelliJ IDEA创建一个Maven项目

在IDEA中创建Maven项目,前提是已经安装配置好Maven环境 。 本文主要使用的是IntelliJ IDEA 2022.2.1 (Community Edition) 1.创建一个新project:File>Project 2.修改Maven配置:File>Settings>搜索maven 创建好的工程如下: src/main…