目标跟踪——Deep Sort算法原理浅析

目标跟踪文章目录

目标跟踪——SORT算法原理浅析
目标跟踪——Deep Sort算法原理浅析
基于yolov5与Deep Sort的流量统计与轨迹跟踪



前言

背景:Deep Sort是基于Sort目标跟踪进行的改进,它引入深度学习模型,在实时目标跟踪过程中,提取目标的外观特征进行最近邻近匹配。

目的:改善有遮挡情况下的目标追踪效果;同时,也减少了目标ID跳变的问题。

核心思想:使用递归的卡尔曼滤波和逐帧的匈牙利数据关联。


多目标跟踪主要流程

在这里插入图片描述

  1. 给定视频原始帧。
  2. 运行目标检测器如Faster R-CNN、SSD、YOLOv5等进行检测,获取目标检测框。
  3. 将所有目标框中对应的目标抠出来,进行特征提取(包括表观特征或者运动特征)。
  4. 进行相似度计算,计算前后两帧目标之间的匹配程度(前后属于同一个目标的之间的距离比较小,不同目标的距离比较大)
  5. 数据关联,为每个对象分配目标的ID。

因此绝大多数MOT算法无外乎就这四个步骤:①检测 ②特征提取、运动预测 ③相似度计算 ④数据关联

其中影响最大的部分在于检测,检测结果的好坏对于最后指标的影响是最大的。

Deep Sort

DeepSort中最大的特点是加入外观信息,借用了ReID领域模型来提取特征,减少了ID switch的次数。整体流程图如下:
在这里插入图片描述
从上图可以看出,Deep SORT算法在SORT算法的基础上增加了级联匹配(Matching Cascade)+新轨迹的确认(confirmed)。总体流程为:

  • 卡尔曼滤波器预测轨迹Tracks
  • 使用匈牙利算法将预测得到的轨迹Tracks和当前帧中的detections进行匹配(级联匹配和IOU匹配)
  • 卡尔曼滤波更新

其中上图中的级联匹配展开如下:

在这里插入图片描述
上图非常清晰地解释了如何进行级联匹配,上图由虚线划分为两部分:

上半部分中计算相似度矩阵的方法使用到了外观模型(ReID)和运动模型(马氏距离)来计算相似度,得到代价矩阵,另外一个则是门控矩阵,用于限制代价矩阵中过大的值。

下半部分中是是级联匹配的数据关联步骤,匹配过程是一个循环(max age个迭代,默认为70),也就是从missing age=0到missing age=70的轨迹和Detections进行匹配。也就是说,对于没有丢失过的轨迹赋予优先匹配的权利,而丢失的最久的轨迹最后匹配。通过这部分处理,可以重新将被遮挡目标找回,降低被遮挡然后再出现的目标发生的ID Switch次数。

将Detection和Track进行匹配,所以出现几种情况:

  1. Detection和Track匹配,也就是Matched Tracks。普通连续跟踪的目标都属于这种情况,前后两帧都有目标,能够匹配上。
  2. Detection没有找到匹配的Track,也就是Unmatched Detections。图像中突然出现新的目标的时候,Detection无法在之前的Track找到匹配的目标。
  3. Track没有找到匹配的Detection,也就是Unmatched Tracks。连续追踪的目标超出图像区域,Track无法与当前任意一个Detection匹配。
  4. 以上没有涉及一种特殊的情况,就是两个目标遮挡的情况。刚刚被遮挡的目标的Track也无法匹配Detection,目标暂时从图像中消失。之后被遮挡目标再次出现的时候,应该尽量让被遮挡目标分配的ID不发生变动,减少ID Switch出现的次数,这就需要用到级联匹配了。

总结

Deep Sort是基于Sort目标跟踪进行的改进,它引入深度学习模型,在实时目标跟踪过程中,提取目标的外观特征进行最近邻近匹配。其可以达到实时跟踪效果,可被应用于工业开发。
下一篇文章计划讲解下Deep Sort的实际应用(基于yolov5的目标实时计数与轨迹展示)

参考文档:
https://zhuanlan.zhihu.com/p/97449724
https://www.cnblogs.com/pprp/articles/12736831.html
https://guo-pu.blog.csdn.net/article/details/122827312?spm=1001.2014.3001.5502

如果阅读本文对你有用,欢迎一键三连呀!!!
2022年4月7日11:48:38
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/JulyLi2019/article/details/123992423
今日推荐