目标检测之物体跟踪
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、跟踪标号、跟踪标号、跟踪标号
4.示例
1 | from ultralytics import YOLO |
参考文章:
【1】.How to obtain the bounding box information predicted by yolov8 这里上面的代码,可以获取 box、cls、conf 的内容。
5.MOT
在使用 VisDrone 的时候,发现了一个数据集,就是 MOT 类型,其中是包含了 sequences 和 annotations 两个文件夹,不知道这个怎么用。
目标跟踪分类
(1) 根据跟踪的目标数量,目标跟踪任务可分为单目标跟踪(SOT)和多目标跟踪(MOT);
(2) 根据背景状态,可分为静态背景下的目标跟踪和动态背景下的目标跟踪;
(3) 根据摄像头数量,可分为单摄像头跟踪和多摄像头跟踪;
(4) 根据任务计算类型,可分为在线跟踪、离线跟踪;方法步骤
(1) 对象初始化
(2) 检测与特征提取
(3) 相似度计算
(4) 数据关联任务难点
(1) 目标自身的变化
(2) 外界环境的变化数据集资源
(1) MOT15
(2) MOT16
(3) MOT17
(4) MOT20
(5) TAO
以行人追踪为代表的低速非刚体物体追踪: MOT17、MOT20、DanceTrack
以车辆追踪为代表的高速刚体追踪:BDD100k、KITT
- 评价指标
基础名词: GT、真阳性(TP)、真阴性(TN)、假阳性(FP)、 假阴性(FN)
经典指标:准确性、召回率、精度、HOTA、定位准确度(LocA)、检测准确度(DetA)、关联准确度(AssA)、 整体跟踪准确度(HOTA)
参考文章:
【1】.多目标跟踪-MOT16数据集格式介绍 有一段视频,视频是由 N 个 连续帧构成的。从第一帧到最后一帧,里面有多个目标,不断地有出有进,不断地运动。我们的目的是对每个目标,能跟其他目标区分开,维持他们的ID、记录他们的轨迹。所以MOTchallenge上的大多数算法直接使用数据集里标注的检测结果,而不是自己检测,他们的主要精力在:Occlusions,similar appearance,complex motion,false alarms方面。
【2】.多目标跟踪(MOT)数据集资源整理分享 1.MOT15;2.MOT16;3.MOT17;4.MOT20;5.TAO;
【3】.关于MOT常见数据集和评价指标的总结 1.基础名词;2.经典指标;3.准确性;4.精度;5.完整性;6.稳健性。MOT17、MOT20、DanceTrack、BDD100k、KITT
【4】.visdrone数据集转化为MOT数据集(用作MOTR模型训练) 这里提供了一个代码,进行格式转换。
【5】.多目标跟踪MOT(Multiple Object Tracking)最全综述 1.MOT概念:多目标跟踪,一般简称为MOT(Multiple Object Tracking),也有一些文献称作MTT(Multiple Target Tracking)。在事先不知道目标数量的情况下,对视频中的行人、汽车、动物等多个目标进行检测并赋予ID进行轨迹跟踪。
【6】.多目标跟踪(MOT)经典算法简介
