目标检测之物体跟踪

标签: 无 分类: 未分类 创建时间:2024-10-25 03:21:53 更新时间:2024-11-15 10:49:45

1.前言

在视频识别中,如果在识别到物体后需要发送一个消息给管理员,因为帧比较多,不可能每一个帧都发送消息,需要在多个帧之间进行筛选。多个帧之间可能识别出的是同一个物体,这样会导致重复,如何避免重复呢?后来我发现了一个叫目标追踪的技术。卡尔曼滤波和匈牙利算法。

  • IOU
    最简单的追踪器便是IOU追踪器。 定义追踪器,并设置要追踪的类别以及IOU阈值。这种方法并没有涉及追踪器的预测,只是将检测结果存储在追踪器中,由此来判断两者是否匹配,即保证上一帧的检测结果与下一帧的检测结果匹配 成功即可。

  • Sort
    Sort算法相较于IOU算法,其主要区别在于前者在轨迹跟踪器中使用了卡尔曼滤波来预测下一帧的目标,同时在匹配时使用了匈牙利算法来计算一个全局的IOU匹配结果,这比起直接使用IOU遍历匹配拥有更好的匹配结果。

  • BoT-SORT
    BoT-SORT(Boosted Object Tracking using SORT)是基于SORT(Simple Online and Realtime Tracking)算法的一个改进版本,它结合了SORT的简单性和鲁棒性,增强了目标丢失时的追踪能力。BoT-SORT 通常结合了多种技术,如全局运动补偿、外观匹配和接近度匹配等,来提高追踪的稳定性和准确性。更适合于场景中有中断或遮挡的情况,能够在目标丢失后再次出现时继续追踪。

  • DeepSport
    Deep SORT(具有深度关联度量的简单在线和实时跟踪)通过引入深度关联度量来改进原始 SORT(简单实时跟踪器)算法,该深度关联度量使用深度学习技术来更好地处理遮挡和不同视点。

  • ByteTrack
    ByteTrack 是一种高效的多目标追踪算法,特别强调在实时性和准确性之间的平衡。它在保持较高的追踪精度的同时,能够实现非常快的处理速度。ByteTrack 利用了强大的目标检测模型来生成高质量的检测框,并使用一种有效的关联策略来建立和维护目标的追踪。特别适用于需要高速处理和实时性能的应用,如监控视频分析、交通监控等。

参考文章:
【1】.图像识别同一物体只触发一次 1.使用目标检测算法识别物体。2.使用目标检测算法识别物体。3.使用目标检测算法识别物体。4.更新位置信息。
【2】.深度学习应用篇-计算机视觉-目标检测[4]涉及技术详解 1.目标检测综述:应用场景、目标检测发展历程、常用数据集。2.边界框(bounding box)。3.锚框(Anchor box)。4.交并比。
【3】.多目标跟踪Ultralytics YOLO 这里是官方的说明,如何使用 model.track 进行目标追踪,还提供了相关的代码。为什么选择Ultralytics YOLO 进行目标跟踪:Efficiency、灵活性、易用性、可定制性。功能概览:实时跟踪、支持多种跟踪器、可定制的跟踪器配置。可用跟踪器:BoT-SORT、字节跟踪。
【4】.YOLO在目标检测与视频轨迹追踪中的应用
【6】.使用 YOLO 和计算机视觉进行目标跟踪 | 附完整代码 这里只实现了预测,没有实现跟踪。1.我们将加载模型。2.我们将加载视频。3.我们将逐帧提取视频。4.对每一帧进行预测并使用 OpenCV 显示结果。这里还提供了一些目标追踪的代码。
【5】.超详细概述YOLOV8实现目标追踪任务全解析 这篇文章其实是官方的文档的翻译,展示了如何使用追踪,并获取追踪id号的问题,提供了详细的代码。
【6】.基于YOLOv8的目标跟踪——汽车跟踪和计数 这里提供了部分的代码,主要就是获取了帧的各个id,然后进行了计数操作。
【7】.Ultralytics YOLOv8 用于计算机视觉项目中的速度估算 通过 yolov8 估算速度。
【8】.【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】 这里就包括了各个任务的代码。
【9】.基于YOLOv8的车辆跟踪与车速计算应用 这里用了 yolo 进行了车速的实时计算。

2.Sort

参考文章:
【1】.YOLO+Sort实现目标追踪 这里有个哥算法的实现代码。目标跟踪:目标跟踪任务更关注对象在帧与帧之间的连续性,通常更注重对象的运动特征,而不要求进行目标的分类。 目标跟踪可以不涉及目标的类别,它的主要目标是维护对象的位置和轨迹,以实现在视频序列中的跟踪。1.IOU追踪器;2.Sort目标追踪算法;3.匈牙利算法;4.卡尔曼滤波。

2.DeepSort

参考文章:
【1】.掌握多目标跟踪:DeepSORT算法的核心原理与实现
【2】.Mastering Deep Sort: The Future of Object Tracking Explained 这是外文的说明
【3】.sunnykumar1516 /YOLO 这是一个代码仓库,写了多个使用 DeepSport 进行目标跟踪的绘制方法。
【4】.基于YOLOv8-deepsort算法的智能车辆目标检测 这是一篇论文说明,可以作为参考项目。该项目基于Ultralytics YOLOv8与DeepSORT跟踪算法,旨在实现目标检测与多目标跟踪的集成。YOLOv8是Ultralytics推出的最新YOLO系列模型,以其快速、准确的目标检测能力而著称,适用于实时视频流处理和复杂场景中的目标识别。项目主要应用场景包括自动驾驶、智能监控以及无人机导航等。通过将YOLOv8与DeepSORT相结合,系统能够在检测到物体后对目标进行实时跟踪,并为每个物体分配唯一的ID,从而实现多目标追踪功能。这种方法不仅可以跟踪静止和移动物体,还能在目标遮挡和重叠时保持良好的跟踪效果。项目的核心是将YOLOv8检测模型与DeepSORT追踪器进行融合,并通过使用自定义数据集来提升检测和跟踪的整体性能。技术创新点摘要:模型集成与扩展、自定义数据集与迁移学习、增强的追踪策略与外观信息融合、模块化设计与易用性。

3.IOU

使用 IOU 方法,也可以实现目标的追踪。

参考文章:
【1】.AI项目十九:YOLOV8实现目标追踪 这里使用了 IOU 实现目标追踪,记录了:跟踪目标的矩形框、跟踪目标的最大score、目标出现的 帧id、目标出现的所有帧id、跟踪标号、跟踪标号、跟踪标号
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。