DeepSORT跟踪算法流程梳理

DeepSORT
背景:deepsort之前是sort算法,但是它对身份变换的问题,仅仅采取框和框之间距离的匹配方式,没有考虑框内的内容,所以容易发生身份变换,该问题在deepsort中得到了解决。

1、DeepSORT的核心流程:

预测(track)–》 观测(detection+数据关联)–》更新

1.1 预测:预测下一帧目标的bbox,即后文中的tracks;;
1.2 观测:对当前帧进行目标检测,仅仅检测出目标并不能与上一帧的目标对应起来,所以还要进行数据关联;
1.3 更新:预测Bbox和检测Bbox都会有误差,所以进行更新,更新后的跟踪结果通常比单独预测或单独检测的误差小很多。

核心流程示意图:
在这里插入图片描述
如图所示:
1)、在T1时刻track预测到一个行人的轨迹后;
2)、T2时刻detection对图中物体进行检测,检测出四个目标(图2黑框),通过数据关联,将代表ID1的物体跟踪的Bbox(图2紫框,其实就对应图1track的紫框)与对应的检测Bbox(图2黑框)关联;
3)、同样在T2时刻,确定关联关系后,更新track预测结果,用物体检测Bbox来代表T2时刻物体追踪的Bbox。

2、deepsort的大体流程:
在这里插入图片描述
2.1、首先核心流程:下图绿框部分
在这里插入图片描述
1)、从预测(Tracks)开始,由于每一时刻的track Bbox组在一起就相当于构成一组轨迹,所以写的是复数tracks,且后面会称跟踪的Bbox为轨迹;
2)、经过kalman滤波预测后,会对当前帧预测一个轨迹Bbox,先不看unconfirmed,假如预测出的是confirmed(对于unconfirmed(背景)和confirmed(目标),是用来区别跟踪的物体是不是目标);
3)、对当前帧进行detection,然后将detection Bbox结果和预测的confirmed track Bbox进行数据关联;
4)、匹配完成后,更新跟踪的bbox(卡尔曼滤波预测的Bbox)。此处需注意:更新和匹配不是在时刻顺延的(不是T2时刻匹配,T3时刻更新的关系),而是在下一帧时刻需要完成的两项流程(T2时刻匹配,继续在T2时刻更新)。
5)、更新后,对当前帧预测,下一帧观测并更新;再预测,下一帧观测,更新。。。

上面只讨论了跟踪目标是真实存在的物体且匹配成功的情况下流程,不过匹配过程中肯定有track是匹配不上detection的,也有detection匹配不到track的,如何处理?
匹配失败的情况下,对于匹配不上的tracks和detection再次进行匹配,此时会出现两种情况,匹配成功或失败。

2.2 再次匹配时匹配成功的流程:
在这里插入图片描述
依然从预测的tracks开始,经过卡尔曼滤波预测,与detection匹配

1) 发现此时的tracks匹配失败,为什么会有tracks匹配失败的情况呢?检测可能发生了漏检,某时刻,预测的轨迹tracks还在,但是检测器没有检测到与之对应的目标。
2) 为什么会有detection匹配失败的情况呢?可能某一时刻有一个物体是新进入的镜头(比如,之前一直只有三个物体,某时刻突然镜头中出现了第四个新物体),就会发生detection匹配不到tracks的情况,因为这个物体是新来的,在这之前并没有它的轨迹用于预测;还有一种情况就是物体长时间被遮挡,导致检测到的物体没有可以与之匹配的轨迹。针对上述匹配失败问题,处理方法就是对匹配失败的tracks和匹配失败的detection进行IOU匹配。如果能匹配成功,则再进行更新,然后继续进行预测–观测–更新的追踪流程。

2.3 再次匹配也匹配失败
此时处理流程如下图:
在这里插入图片描述
对于再次匹配依然失败的detections,前面讨论过detections匹配失败的原因可能是新出现的目标在之前没有它的轨迹tracks,或者长时遮挡的也没有轨迹tracks,所以对其建立一个new tracks,前面也提到,tracks都会设置confirmed/unconfirmed,对于新建立的tracks,尚未确定是否就是真切存在的,万一是检测错的杂七杂八呢,所以将其设置为unconfirmed,并对其进行三次考察,如果是实际目标修改为confirmed,再进行 预测-观测-更新。
在这里插入图片描述
对于再次匹配依然失败的tracks,前面讨论过可能是检测器漏检了目标,此时看其是否是confirmed,如果是unconfirmed,将其删除;反之,为其设置寿命,在寿命时间之内都没发生变化(>max_age)则将其delete,认为其已移出镜头;如果寿命之内(<max_age),同样对其进行三次考察,是否是跟踪的杂七杂八,再进行 预测-观测-更新。

这就是deepsort的具体流程,下一步会编写yolov5+deepsort+tensorrt的使用案例。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ghx3110

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值