Deepsort中匈牙利算法和卡尔曼滤波器的作用

DEEPSORT

关于deepsort源码以及原理的具体讲解,在知乎,CSDN上有很多优秀的回答,在这里主要是我在看完他们的理解之后,将他们的高见串联并加上自己的理解(对Deepsort中使用匈牙利算法以及卡尔曼滤波这两个模块的使用)

有些内容改自大佬们的解释,以方便对我自己的理解进行论证。

下面开始进入正题。

作用

视频中不同时刻的同一个人,位置发生了变化,那么是如何关联上的呢?答案就是匈牙利算法和卡尔曼滤波。

  • 匈牙利算法可以告诉我们当前帧的某个目标,是否与前一帧的某个目标相同。

  • 卡尔曼滤波可以基于目标前一时刻的位置,来预测当前时刻的位置,并且可以比传感器(在目标跟踪中即目标检测器,比如Yolo等)更准确的估计目标的位置。

匈牙利算法

该算法用于分配问题,举个栗子介绍一下什么是分配问题:

假设有N个人和N个任务,每个任务可以任意分配给不同的人,已知每个人完成每个任务要花费的代价不尽相同,那么如何分配可以使得总的代价最小。

举个例子,假设现在有3个任务,要分别分配给3个人,每个人完成各个任务所需代价矩阵(cost matrix)如下所示(这个代价可以是金钱、时间等等):

img

怎样才能找到一个最优分配,使得完成所有任务花费的代价最小呢?


而匈牙利算法就是计算任务花费的最小代价。

xdm,还记得Deepsort中的代价矩阵吗?

那个由马氏距离$d_1$以及余弦相识度$d_2$得到的代价矩阵:

$$
cost matrix=λd_{1}+(1-λ)d_2
$$

而马氏距离与余弦相似度都是由track与detection计算来的。

也就是track与detection都是对应上面例子中的person与task。

这时候有没有一种找到窗户纸的感觉。


实际上匈牙利算法可以理解成“尽量多”的一种思路(尽可能的配对出多对(检测器+跟踪器))。

比如说A检测器可以和a,c跟踪器完成匹配(与a匹配置信度更高),但是B检测器只能和a跟踪器完成匹配。

那在算法中,就会让A与c完成匹配,B与a完成匹配,而降低对于置信度的考虑。所以算法的根本目的并不是在于匹配的准不准,而是在于尽量多的匹配上,这也就是在Deepsort中作者添加级联匹配与马氏距离与余弦距离的根本目的

也就是说,匈牙利算法是为了计算检测器(人)分配跟踪器(任务)的最优情况‘,用于后续的缓解ID switch

卡尔曼滤波器

卡尔曼滤波器的用处很广,航空,汽车驾驶等等,它被用于从受误差影响的传感器测量中估算出系统状态,也可以用于优化估算一些无法直接测量但是可以间接测量的量。

这里只简单的提一点点卡尔曼滤波器。

我们要知道卡尔曼滤波讲的是正态分布的情况(世间的事物符合正态分布)。

这是一个由人工智能开车的例子,要知道GPS定位得到的行驶距离y_k会受到一些地形,气候等影响,所以它的预测会有一定的偏差,但是这个偏差距离符合正态分布。然后我们也会依据油量进行预测行驶的距离\hat x_k(而这个预测需要上个时间点\hat x_{k-1}的预测作为这次预测的依据),而这个也会受到发动机,不同地形的摩擦力等影响,存在一个正态分布的偏差。

如下图所示:

  • $\hat x_{k-1}$是依据油量预测的上一个时间点的距离

  • $\hat x_k$是依据油量预测的现在的距离

  • $y_k$是根据GPS定位得到的距离

image-20210826162208810

然后我们知道,由\hat x_k 与y_k 一起作用得到最终的特征\hat x(上图中灰色的那条曲线)作为行驶的距离更准确。


回到正题:

  • 目标检测网络:GPS定位得到的距离

  • track:根据油量得到的距离,并且由上一时间点预测

然后,我们根据目标检测网络(YOLO)与track算出更真实的结果\hat x

匈牙利算法计算:https://zhuanlan.zhihu.com/p/90835266

匈牙利算法作用:https://zhuanlan.zhihu.com/p/80764724

卡尔曼滤波器的详细解释视频:https://www.zhihu.com/question/23971601/answer/839664224

详细的代码与过程:https://www.cnblogs.com/pprp/articles/12736831.html

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值