【目标跟踪】一图看懂DeepSORT大流程

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 【目标跟踪】一图看懂DeepSORT大流程

简介

       多目标跟踪,在DeepSORT提出之前是SORT算法(SORT论文链接),但是它对身份变换的问题,仅仅采取框和框之间距离的匹配方式,没有考虑框内的内容,所以容易发生ID-switch,不过这个问题已经在2017年的论文中进行了解决,即我们今天要介绍的 DeepSORT

       本文前提是需要对卡尔曼滤波器比较了解,如果不了解建议跳转:

DeepSORT流程图

名词解释

       Detections:目标检测器得出的结果,有bboxs和分类、置信度。

       Tracks:在整个跟踪流程中用于流转的一个对象,有这些重要属性:

              mean:八个值的均值,这八个值是center_x,center_y,aspect_ratio,h,v_center_x,v_center_y,v_aspect_ratio,v_h

              covariance:协方差矩阵

              track_id:跟踪目标的id

              n_init:在track状态被设置为“Deleted”之前,连续错过的最大次数。

              max_age:最大寿命,一个跟踪目标出现max_age次,会被删除。

              feature:bbox中改对象的特征向量,每次update时这个list会增加一个元素。

              hits:观测更新的总次数。

              age:自第一次出现以来的总帧数。

              time_since_update:自上次测量更新以来的总帧数。

              state:1-Tentative创建的Track标为暂定 2-Confirmed已经确认过 3-Deleted

       Unmatched Detections:未匹配的Detections

       Unmatched Tracks:未匹配的Tracks

       Matched Tracks:已匹配的Tracks,匹配次数在3以下的是未确认状态-Unconfirmed,匹配超过3次变成已确认状态-Confirmed。

       Confirmed:已经确认匹配的Tracks。

       Unconfirmed:未确认匹配的的Tracks。

整体流程

步骤1-预测状态:

       上一轮迭代产生的Tracks经过卡尔曼滤波的预测,计算出本轮的mean和covariance,数据的状态(Confirmed和Unconfirmed)是不变的。路径①②

步骤2-第一次匹配:

       将步骤1中的Tracks和本轮目标检测器检测出Detections一起送入Cascade进行匹配,产生三种状态的结果Unmatched Tracks,Unmatched Detections,Matched Tracks。路径③④

步骤3-第二次匹配:

       但是步骤2的检测会有遗漏,将其与步骤1中未确定的Tracks合并,用IOU Match再匹配一遍得出比较靠谱的Unmatched Tracks,Unmatched Detections,Matched Tracks。路径⑤⑥

步骤4-处理失效对象:

       未匹配的Tracks中还没确认的(Unconfirmed)和已确认(Confirmed)但是age超过阈值的state设为Delete。路径⑦⑧⑨⑩

步骤5-输出结果并为下一轮准备数据,其中合并了下面三个来源的Tracks:

       (1)步骤3和步骤4中的已匹配的Tracks合并,进行卡尔曼滤波的update,同时age+1,输出Tracks。路径⑪⑫⑬

       (2)步骤3中的未匹配的Detections新建出Tracks。⑭

       (3)步骤4中已确认而且未超龄的Track⑮

       这三个来源的Tracks合在一起作为本轮的输出同时也是下一次迭代的输入,继续步骤1。

重点节点解释

【1】KF预测  

       1.执行KF.predict,计算mean和covariance

       2.寿命age+=1  

       3.time_since_update+=1,这个值执行KF.predict时+1,执行KF.update时设置成0

       4.上一轮迭代传过来的Confirmed和Unconfirmed状态不变,Confirmed已经确定是被跟踪对象的送入【1】去跟新的Detections去匹配,没确认的Unconfirmed送入【3】去做IOU匹配。


【2】Cascade匹配,匹配tracks和detections

       1.循环迭代max_age次,直到没有Unmatched Detections

       2.利用每个bbox的特征向量计算cos距离

       3.匈牙利算法做匹配,会得到三种结果unmatched_detections  unmatched_tracks matched_tracks


【3】IOU匹配

       IOU匹配沿用了SORT的做法,是将Cascade匹配中的判断距离的算法变成了IOU。

       在Cascade匹配后加一个IOU匹配在为了处理剩下的没有匹配的Detections和Tracks,Cascade匹配可能发生漏检,某时刻,预测的轨迹tracks还在,但是检测器没有检测到与之对应的目标。

       为什么会有detection匹配失败的情况呢?

       可能某一时刻有一个物体是新进入的镜头(比如,之前一直只有三个物体,某时刻突然镜头中出现了第四个新物体),就会发生detection匹配不到tracks的情况,因为这个物体是新来的,在这之前并没有它的轨迹用于预测;还有一种情况就是物体长时间被遮挡,导致检测到的物体没有可以与之匹配的轨迹。

       针对上述匹配失败问题,处理方法就是对匹配失败的tracks和匹配失败的detection进行IOU匹配。如果能匹配成功,则再进行更新,然后继续进行预测–观测–更新的追踪流程。


【5】KF Update

       1.执行kf.update

       2.将特征向量存入feature

       3.hits += 1

       4.time_since_update = 0

       5.if hits>3:state=Confirmed

————————————————

相关文章
|
算法 计算机视觉
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
|
4月前
|
机器学习/深度学习 监控 自动驾驶
7种交通场景目标检测数据集分享(适用于YOLO系列深度学习检测任务)
7种交通场景目标检测数据集分享(适用于YOLO系列深度学习检测任务) 源码下载 在智能交通与自动驾驶技术快速发展的今天,如何高效、准确地感知道路环境已经成为研究与应用的核心问题。车辆、行人和交通信号灯
1070 0
|
6月前
|
机器学习/深度学习 算法 自动驾驶
基于YOLOv8模型的行人车辆多目标检测计数与跟踪系统
本研究基于YOLOv8模型,针对智能交通与公共安全需求,开展行人车辆多目标检测、计数与跟踪技术研究。通过融合YOLOv8高精度检测与DeepSORT稳定跟踪,实现复杂场景下目标的实时定位、统计与轨迹追踪,提升交通管理效率与公共安全保障能力,推动智慧城市发展。
|
4月前
|
传感器 自动驾驶 算法
基于MPC模型预测车辆轨迹跟踪控制(横向+纵向MPC_双PID)联合仿真
🔥 内容介绍 一、车辆轨迹跟踪控制的背景与挑战 随着智能交通技术的发展,车辆轨迹跟踪控制成为自动驾驶领域的关键技术之一。精确的轨迹跟踪对于保障行车安全、提高交通效率至关重要。然而,车辆在实际行驶过程中面临诸多挑战: 复杂行驶环境:道路条件复杂多变,包括弯道、坡度、路面摩擦系数变化等,同时还可能受到其他车辆、行人等交通参与者的影响。这些因素增加了车辆准确跟踪预定轨迹的难度。 车辆动力学复杂性:车辆是一个复杂的动力学系统,其运动受到多个因素的耦合影响,如车辆质量、惯性、轮胎特性等。车辆的横向和纵向运动相互关联,传统的简单控制方法难以全面考虑这些复杂因素,实现精确的轨迹跟踪。 实时性要求高:
|
机器学习/深度学习 机器人 网络架构
YOLOv11改进策略【模型轻量化】| 替换轻量化骨干网络:ShuffleNet V1
YOLOv11改进策略【模型轻量化】| 替换轻量化骨干网络:ShuffleNet V1
1643 11
YOLOv11改进策略【模型轻量化】| 替换轻量化骨干网络:ShuffleNet V1
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
5618 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
人工智能 监控 算法
AI计算机视觉笔记二十 八:基于YOLOv8实例分割的DeepSORT多目标跟踪
本文介绍了YOLOv8实例分割与DeepSORT视觉跟踪算法的结合应用,通过YOLOv8进行目标检测分割,并利用DeepSORT实现特征跟踪,在复杂环境中保持目标跟踪的准确性与稳定性。该技术广泛应用于安全监控、无人驾驶等领域。文章提供了环境搭建、代码下载及测试步骤,并附有详细代码示例。
2250 1
|
机器学习/深度学习 算法 自动驾驶
【计算机视觉】Deep SORT多目标跟踪算法讲解(图文解释 超详细)
【计算机视觉】Deep SORT多目标跟踪算法讲解(图文解释 超详细)
2436 0
|
机器学习/深度学习 人工智能 算法
AI计算机视觉笔记十一:yolo5+Deepsort实现目标检测与跟踪(CPU版)
DeepSORT是一种基于深度学习的计算机视觉跟踪算法,扩展了SORT算法,通过添加外观描述符减少身份切换,提高跟踪效率。本文档提供了DeepSORT环境搭建步骤,包括创建虚拟环境、安装依赖及解决常见错误等,最终实现人员和车辆的跟踪计数功能。适合无GPU设备的学习者参考。
1574 1