《目标检测:技术演进与多元应用》

news/2024/10/18 7:51:04/

目标检测:技术演进与多元应用》

  • 一、目标检测的发展历程
  • 二、目标检测的主流方案
    • (一)深度学习算法
      • Two-Stage 算法(如 Faster R-CNN)
      • One-Stage 算法(如 YOLO、SSD)
    • (二)传统算法
      • Viola Jones 检测器
      • HOG 检测器
      • 基于可变形部件的模型(DPM)
  • 三、目标检测方案的优缺点
  • 四、目标检测的应用场景
    • (一)行人检测
    • (二)人脸检测
    • (三)文本检测
    • (四)交通信号检测
    • (五)遥感目标检测
  • 五、目标检测的最新方案
    • (一)热门开源方案
      • 1、YOLOv4&YOLOv5:
      • 2、DETR:
      • 3、EfficientDet:
      • 4、CenterNet2:
      • 5、DetectoRS:
    • (二)低算力方案
    • (三)开放世界目标检测竞赛方案

一、目标检测的发展历程

(一)传统目标检测方法

传统目标检测算法主要分为三个阶段:区域选择、特征提取和分类器。在区域选择阶段,通常采用滑动窗口的策略对整幅图像进行遍历,时间复杂度极高且产生大量冗余窗口。特征提取方面,常用的方法有 HOG、SIFT 等,HOG 检测器通过在均匀间隔单元的密集网格上计算重叠的局部对比度归一化来提高检测准确性,主要用于行人检测等问题;SIFT 则在尺度不变特征变换方面有一定优势。分类器主要有 SVM、Adaboost 等。然而,传统目标检测算法存在识别效果不够好、准确率不高、计算量大、可能产生多个正确识别结果等缺点。

(二)基于深度学习的目标检测方法

基于深度学习的目标检测算法主要分为单阶段和两阶段检测算法。单阶段算法如 YOLO 系列,其特点是检测速度快、精度较高,能够实现实时目标检测。以 YOLOv1 为例,它是单阶段 one stage 体系开创者,输入图像到卷积神经网络,经过全连接网络后分类和回归,直接输出最终结果,包括框和框内物体的名称及 score。两阶段算法通常先产生候选框,再对候选框进行分类和回归。例如 R-CNN 系列,R-CNN 首先通过选择性搜索算法从一组对象候选框中选择可能出现的对象框,然后将其 resize 到固定尺寸并喂入 CNN 模型提取特征,最后送入分类器预测。两阶段目标检测算法精度高,但速度较慢。随着深度学习的发展,目标检测算法不断演进,在精度和速度上都有了显著提升。

二、目标检测的主流方案

(一)深度学习算法

Two-Stage 算法(如 Faster R-CNN)

网络模型:Faster R-CNN 由两部分组成,即区域候选网络(RPN)和 Fast R-CNN 检测模块。RPN 用于生成候选框,Fast R-CNN 基于 RPN 提取的 proposal 检测并识别 proposal 中的目标。
生成候选目标框的方式:RPN 通过在特征图上添加卷积层和全连接层,在每个位置上标定回归目标边界框和预测目标分数,提升边界框的生成速度。具体来说,在特征图上使用一个滑动窗口,每滑动到一个位置上,就生成一个一维的向量,在这个向量的基础上再通过两个全连接层分别去输出目标概率以及它的边界框回归参数。
优点:检测精度高,通过共享 RPN 和 Fast R-CNN 的卷积特征,进一步将 RPN 和 Fast R-CNN 合并成一个单独的网络,提高了效率。
缺点:速度相对较慢,计算量较大。

One-Stage 算法(如 YOLO、SSD)

直接预测目标的方式:YOLO 系列算法将目标检测问题转化为回归问题,直接预测目标的类别和位置。以 YOLOv8 为例,采用基于 Anchor-Free 的检测方式,直接预测目标的中心点和宽高比例,而不是预测 Anchor 框的位置和大小。
速度优势:只需读取一次图像,就可进行端对端优化,速度极快,可满足实时需求。
计算效率:由于不需要生成候选框的过程,计算效率较高。
精度和定位方面的不足:相比于两阶段算法,精度相对较低,尤其是对小目标的定位不够准确。

(二)传统算法

Viola Jones 检测器

滑动窗口检测方法:查看图像中所有可能的位置和比例,看看是否有窗口包含人脸。
结合的重要技术:积分图像、特征选择和检测级联。积分图像使得计算复杂度与窗口大小无关;特征选择使用 Adaboost 算法从巨大的随机特征池中选择对人脸检测最有帮助的小特征;检测级联通过减少对背景窗口的计算,增加对人脸目标的计算,降低计算开销。
在当时的优势和贡献:在同等检测精度下,速度是其他算法的数十倍甚至数百倍,标志着人脸检测进入实际应用阶段,深刻影响了目标检测领域的发展。

HOG 检测器

特征描述器的改进之处:对当时的尺度不变特征变换和形状上下文做出重要改进,在密集的均匀间隔单元网格上计算,并使用重叠局部对比度归一化来提高精度。
检测流程:首先进行色彩和伽马归一化(此步骤对结果影响不大可省略),然后计算梯度,接着为图像的每个细胞单元构建梯度方向直方图,最后把细胞单元组合成大的区间进行对比度归一化。
在行人检测等方面的应用基础:多年来,HOG 检测器一直是许多目标检测器和各种计算机视觉应用的重要基础,主要用于行人检测问题,通过保持检测窗口大小不变,多次对输入图像进行重新标度来检测不同大小的对象。

基于可变形部件的模型(DPM)

检测思想:遵循 “分而治之” 的检测思想,训练可以看作是学习一种正确的分解对象的方法,推理可以看作是对不同对象部件的检测的集合。
作为传统目标检测方法巅峰的成就:作为 voco - 07、- 08、- 09 届检测挑战赛的优胜者,DPM 对目标的形变具有很强的鲁棒性,其典型的 DPM 检测器由一个根过滤器和一些零件滤波器组成,所有零件滤波器的配置都可以作为潜在变量自动学习。
后续的改进:应用了 “困难负样本挖掘”、“边界框回归”、“语境启动” 等重要技术以提高检测精度,还开发了一种技术将检测模型 “编译” 成一个更快的模型,实现了级联结构,在不牺牲任何精度的情况下实现了超过 10 倍的加速。

三、目标检测方案的优缺点

(一)传统目标检测算法的优缺点

模型简单性:传统目标检测算法通常基于手工设计的特征和分类器,模型相对简单,易于理解和实现。例如 Viola Jones 检测器通过积分图像、特征选择和检测级联等相对直观的技术实现人脸检测。
计算效率:由于模型简单,计算效率通常较高,适用于实时性要求较高的场景。如 HOG 检测器在计算过程中,通过一些优化措施,如色彩和伽马归一化可省略等,提高了计算效率。
泛化能力:泛化能力较差。手工设计的特征往往只针对特定类型或场景的目标有效,对于其他类型或场景的目标检测效果不佳。例如 DPM 模型虽然在特定的目标检测挑战赛中表现出色,但对于不同类型的目标检测,需要人工设计激励模板,工作量大且不具有普适性。
精度:精度有限。由于特征表达能力和分类器能力的限制,传统目标检测算法的精度通常低于基于深度学习的算法。
速度:在某些场景下,传统算法具有一定的速度优势。例如 Viola Jones 检测器在同等检测精度下,速度是其他算法的数十倍甚至数百倍。
资源消耗:相对深度学习算法,传统目标检测算法对计算资源和内存的要求较低。

(二)基于深度学习的目标检测算法的优缺点

模型简单性:深度学习算法的模型结构相对复杂,尤其是两阶段算法,涉及多个网络模块的组合。但随着技术的发展,一些单阶段算法如 YOLO 系列在模型结构上逐渐简化,提高了易用性。
计算效率:One-Stage 算法如 YOLO、SSD 计算效率较高,由于模型结构相对简单,无需区域提议阶段,可以在保证一定精度的同时实现快速检测。而 Two-Stage 算法由于需要进行区域提议和分类两个阶段的处理,计算量较大,计算效率相对较低。
泛化能力:深度学习模型可以通过大量数据训练来学习不同目标的特征,具有较强的泛化能力。可以适应各种复杂的场景和目标类型。
精度:Two-Stage 算法如 Faster R-CNN 具有较高的检测精度,通过深度卷积神经网络提取特征,结合区域提议网络和分类器,可以实现对目标的准确检测。One-Stage 算法的精度稍低,尤其对于小目标和密集场景的检测效果较差。
速度:One-Stage 算法速度快,适用于实时性要求较高的场景。Two-Stage 算法速度较慢,不适合对实时性要求极高的场景。
资源消耗:深度学习模型通常需要大量的计算资源和内存,对硬件要求较高。训练和运行深度学习模型需要强大的 GPU 等硬件支持。

四、目标检测的应用场景

(一)行人检测

应用挑战:
复杂背景下的行人检测困难,人群拥挤、背景杂乱、遮挡等情况会导致行人目标的形态变化和边界模糊。
行人目标的尺度变化和姿态变化大,拍摄距离、视角等因素会使行人在图像中的大小和角度改变,增加了检测难度。
实时性要求和计算资源限制,行人检测需要在较短时间内完成目标检测和识别任务,但传统算法通常需要大量计算资源和时间。
遮挡和多目标检测问题,行人在现实场景中往往存在遮挡和相互重叠的情况,同时要同时检测和定位多个行人目标也具有挑战。
实际需求:在汽车无人驾驶系统、智能视频监控、人体行为分析等领域有着广泛应用,准确地检测和跟踪行人可以提高交通安全性和监控效率。

(二)人脸检测

应用挑战:
人脸姿态和饰物问题,由于非配合型监控,人脸会出现侧脸、低头、抬头等各种姿态,以及佩戴帽子、黑框眼镜、口罩等饰物现象。
光照问题,环境光源的影响可能出现侧光、顶光、背光和高光等现象。
人脸相似性问题,不同个体之间特别是同一民族的区别不大,所有人脸的结构都相似。
人脸易变性,人可以通过脸部的变化产生很多表情,而在不同观察角度,人脸的视觉图像也相差很大。
人脸表情复杂,脸上分布着五十多块面部肌肉,肌肉运动导致不同面部表情出现,会造成人脸特征的显著改变。
人脸随年龄而改变,皱纹出现和面部肌肉松弛使得人脸的结构和纹理都将发生改变。
人脸有易变化的附加物,例如改变发型,蓄留胡须或者佩戴帽子和眼镜等饰物。
人脸特征遮掩,人脸全部、部分遮掩将会造成错误识别。
人脸图像畸变,光照、视角、摄取角度不同,可能会造成图像的灰度畸变、角度旋转等,降低了图像质量,增大了识别难度。
实际需求:广泛应用于安全监控、人脸识别解锁、人脸支付等领域,保障安全和提高用户体验。

(三)文本检测

应用挑战:
文本具有多样性,包括文字颜色、大小、字体、形状、方向、语言、以及文本长度的影响。
文本形状复杂多样,文本可以以各种不同的形式出现在图像或视频中,包括单个字符的位置或者整个文本行的位置。
缺乏通用方法,当前自然场景文本检测缺乏一个通用的方法来解决所有问题。
背景复杂,文本可能会出现在各种不同的背景中,增加了检测的难度。
光照条件不定,光照的变化也会对文本检测造成很大的影响。
文本大小不一,文本的大小会因图像或视频的分辨率不同而变化。
字符粘连和断字,在某些情况下,文本中的字符可能会相互粘连,或者字符可能会断开,增加检测的难度。
字体和字库大小有限,不同的字体和字库大小也会影响文本检测的结果。
文本倾斜,文本可能会以不同的角度倾斜出现在图像或视频中,增加检测的难度。
遮挡和背景扰动,文本可能会被其他物体遮挡,或者背景中存在扰动因素,影响文本检测的结果。
实际需求:在图像识别、文档自动化处理、广告识别等领域有重要作用,提高信息提取和处理效率。

(四)交通信号检测

应用挑战:
复杂的背景环境,实际城市自动驾驶场景中采集的交通信号灯图像具有复杂的背景,如四面八方的信号灯以及其他各类发光源。
遮挡问题,例如前面行驶的大货车或是交通指示牌等,都可能导致交通信号灯被遮挡。
多态性的问题,交通信号灯不仅有颜色、形状和位置的变化,一些交通灯还包括箭头来指示方向和标记,比如人或自行车。
成像条件的影响,包括天气、低分辨率、模糊等因素的影响,这些因素都可能降低交通信号灯检测的准确性。
特征提取和分类问题,对交通信号灯进行识别通常分为两个过程,第一步是对图像的候选区域进行特征提取,第二步就是根据特征对识别的特征进行分类。
实际需求:在智能交通系统中,准确检测交通信号可以提高交通效率和安全性,为自动驾驶提供重要的信号指示。

(五)遥感目标检测

应用挑战:
数据规模问题,遥感图像的数据规模相对较小,可能会对模型的训练产生影响。
目标尺寸问题,遥感图像中包含了大量小尺寸的目标,这些小目标在经过神经网络的多层处理后,细节信息可能会丢失过多,导致检测准确率下降。
旋转目标的检测问题,遥感图像目标检测中的一个重要难题,一般的检测算法往往假设目标在图像中是固定方向和姿态的,而旋转目标的出现会大大增加检测的难度。
大中小目标分布不均,遥感场景下进行旋转目标检测时,大、中、小目标的分布通常是不均匀的,这种分布的不均衡性也增加了检测的难度。
计算资源限制,相比于自然图像数据集,航拍图像一般分辨率较高,受计算资源限制,一些在自然图像中有效的检测小目标的方法如 FPN 直接应用到航拍图像就无能为力了。
遥感图像分辨率巨大,如何快速准确地检测出遥感目标仍然是一个挑战性的问题。
目标遮挡问题,超过 50% 的目标被云雾所遮挡,目标遮挡问题也是遥感图像目标检测所面临的一个挑战。
域适应问题,由不同传感器所捕获的遥感图像仍然存在很大差异。
实际需求:在国土资源监测、环境监测、城市规划等领域有重要应用,可以快速准确地识别和定位遥感图像中的目标物体。

五、目标检测的最新方案

(一)热门开源方案

1、YOLOv4&YOLOv5:

特点:YOLOv4 试验对比了大量的近几年来最新的深度学习技巧,如 Swish、Mish 激活函数,CutOut 和 CutMix 数据增强方法,DropPath 和 DropBlock 正则化方法等,还提出了自己的创新,如 Mosaic(马赛克)和自对抗训练数据增强方法,以及修改版本的 SAM 和 PAN,跨 Batch 的批归一化(BN)。YOLOv5 的工作与 YOLOv4 十分相近。
优势:检测精度较高,适用于多类目标检测,实时性能好,速度快,但召回率较低,对小目标的检测能力有限,训练需要大量标注数据。

2、DETR:

特点:将检测视为集合预测问题,采用 Transformer 的编解码结构,没有现在主流的目标检测器中的 anchor、label assign、nms 等操作,做到了真正的 end-to-end。
优势:简化了目标检测的整体流程,对目标的尺度、姿态、光照变化具有较强的鲁棒性,但计算复杂度高,实时性能较差,训练需要大量标注数据。

3、EfficientDet:

特点:改进了 FPN 中的多尺度特征融合方式,提出了加权双向特征金字塔网络 BiFPN,引入了 EfficientNet 中模型缩放的思想,考虑 Input size、backbone Network、BiFPN 侧向级联层数、Box/class 层深度作为搜索空间,通过统一的系数缩放得到了不同计算量和参数量的模型。
优势:检测精度较高,适用于多类目标检测,对不同尺度的目标具有较好的检测能力,实时性能好,速度快,但与 YOLO 类似,训练需要大量标注数据,精度略低于 R-CNN 和 YOLO。

4、CenterNet2:

特点:在目前最先进的 One-Stage 检测器的基础上建立了一个概率 Two-Stage 检测器,对于每一阶段的检测,CenterNet2 模型都会提取区域级特征并进行分类,在第 2 阶段使用更快的 R-CNN 或级联分类器,这两个阶段一起训练,以最大限度地提高预测的概率准确度。
优势:检测精度高,以 56.4mAP 超越当前所有检测模型,但训练需要大量标注数据。

5、DetectoRS:

特点:在宏观上提出了递归特征金字塔 RFN(Recursive Feature Pyramid),把 FPN 的输出先连接到 bottom up 那儿进行再次输入,然后再输出时候与原 FPN 的输出再进行结合一起输出;在微观上提出了可切换空洞卷积 SAC(Switchable Atrous Convolution)。
优势:在 COCO test-dev 中取得了 SOTA 的结果,目标检测 box mAP 达到 54.7,实例分割 mask mAP 达到 47.1,全景分割 PQ 达到 49.6,但训练需要大量标注数据。

(二)低算力方案

矽典微基于毫米波雷达的目标检测方案,在确保检测精度的前提下,使用对算力需求较低的算法来实现。该方案无需配置摄像头等硬件设施,且私密性也较好。具体来说,首先对当前时刻接收的毫米波雷达回波数据进行预处理,包括校验和提取单帧数据进行快速傅里叶变化。然后将预处理后的雷达回波数据与历史雷达回波数据进行背景对消,获得快时间数据,提高信噪比。接着对快时间数据进行 MTI 对消,确定是否存在动态目标,如果不存在,则计算动态目标最近一次在快时间出现后的第一预设时长内,对应距离门限信号中相位信号的均方差。最后根据计算得到的均方差确定当前时刻是否存在微动目标。该方案可以应用于低成本、低内存以及低主频的处理器上,例如在带宽为 1GHz 时,对应的距离分辨率为 15cm,通过对采样点持续第一预设时长的采样,可以根据这段时长内距离门限信号的相位信号的波动情况判断是否有微动目标的存在。

(三)开放世界目标检测竞赛方案

Open Vocabulary Detection 开放世界目标检测竞赛 2023 获胜团队方案为多模态提示实现了零样本异常分割,以及级联现代基础模型的正则化。首先,通过将基础模型如 “Segment Anything” 进行组合(SAA),利用多模态先前知识实现异常定位。随后,引入多模态提示(SAA+),这些提示来自领域专家知识和目标图像上下文,从而使基础模型在异常分割中能够进行非参数适应。SAA + 融合了多模态提示,除了利用预训练基础模型所获取的知识外,还利用领域专家知识和目标图像上下文生成更准确的异常区域掩码。具体包括异常语言提示和异常属性提示,细化了 “异常” 提示,考虑了异常的位置和面积信息。同时,从目标图像上下文中衍生的提示,如异常显著性提示利用显著性图来校准基础模型的置信度分数,异常置信度提示通过选择最高置信度的候选区域来提供最终的异常区域检测。该方案在零样本设置下,在多个异常分割基准数据集上取得了最先进的性能。


http://www.ppmy.cn/news/1539937.html

相关文章

黑龙江网络安全等级保护办理机制

黑龙江的网络安全等级保护机制根据《网络安全法》和相关法规要求,信息系统按照安全等级从低到高分为五级,分别为一般、重要、非常重要、特别重要和特别敏感。不同等级的信息系统必须实施相应的安全措施,以确保系统免受内外部威胁,…

ref标签、style的scope

ref标签 作用&#xff1a;用于注册模板引用。 用在普通DOM标签上&#xff0c;获取的是DOM节点。用在组件标签上&#xff0c;获取的是组件实例对象。 DOM&#xff1a; <template><div class"person"><h2 ref"title2">上海</h2>&l…

NIO(Non-blocking I/O)处理机制

典型的 NIO 事件处理流程 在 Java NIO (Non-blocking I/O) 中&#xff0c;事件驱动模型使得应用程序能够高效地管理多个并发的 I/O 操作。通过 Selector&#xff0c;NIO 使得单个线程可以监听多个通道的事件&#xff08;如连接请求、读写数据&#xff09;。以下是对典型 NIO 事…

selenium案例——爬取哔哩哔哩排行榜

案例需求&#xff1a; 1.使用selenium自动化爬虫爬取哔哩哔哩排行榜中舞蹈类的数据&#xff08;包括视频标题、up主、播放量和评论量&#xff09; 2.利用bs4进行数据解析和提取 3.将爬取的数据保存在本地json文件中 4.保存在excel文件中 分析&#xff1a; 1.请求url地址&…

ts 中 namespace 作用

一、组织代码和避免命名冲突 1. 代码组织 命名空间允许你将相关的代码分组在一起&#xff0c;使代码结构更加清晰和易于理解。 namespace MathUtils {export function add(a: number, b: number): number {return a b;}export function subtract(a: number, b: number): nu…

根据json转HttpClient脚本

String json “{\n” " “paths”: {\n" " “/dev-api/system/subjectResult/exportUserList”: {\n" " “post”: {\n" " “tags”: [\n" " “bd-subject-result-controller”\n" " ],\n" " “summ…

【数据结构与算法】栈和队列(下)

记录自己所学&#xff0c;无详细讲解 队列的实现--使用动态链表 1.项目目录文件 、 2.头文件 queue.h #pragma once #include <stdio.h> #include <assert.h> #include <stdlib.h> #include <stdbool.h> struct QueueNode {int data;struct Queue…

软件框架和软件架构的概念

软件框架&#xff08;Software Framework&#xff09; 和 软件架构&#xff08;Software Architecture&#xff09; 的关系在于它们分别处于系统设计和实现的不同层次&#xff0c;互为补充。架构决定了系统的整体结构和设计&#xff0c;而框架则是实现这些设计的工具和技术。下…