最近学习deepsort,卡尔曼滤波预测图像目标的下一帧位置和速度等一系列状态信息,然后和这一帧的检测目标进行级联匹配(即考虑了马氏距离即运动数据和自身形状特征信息,这里把考虑形状信息和速度信息的匹配叫级联匹配,也就是第一个匹配),这里得到信息后匈牙利算法匹配得到阈值内匹配者,得到确实一致的目标框,以及多出来未匹配的检测框和跟踪框存储起来,再进行匈牙利算法进行IOU匹配,那么这时候匹配的对象是什么呢,看有的文章里写是前后两帧的目标框,但是包含了检测框和跟踪框,是匹配检测框还是跟踪框不得知,而跟踪算法其实就是匹配检测目标和跟踪目标的。(其实这里匹配的是unconfirmed和剩下的track和detection的匹配,下面会说)
注意,其实匹配算法是前后两帧意思是t-1和t时刻两帧,也就是卡尔曼上一帧预测的框和这一帧的检测框进行匹配,但是还有一个confirmed和unconfirmed的区别,说的是考虑刚被检测出来就认为是新的目标但是是前三帧的track,三帧都匹配成为确认态,。这些unconfirmed的track和第一次匹配失败的track,detection等进入匈牙利算法的IOU匹配进行第二轮匹配。
根据上面描述,
第二次匈牙利算法匹配的是unconfirmed的track,以及第一次级联匹配时候剩下来的部分。
刚刚看了一下,级联匹配(第一个匹配)包含了确认态从missing age0到70的匹配,并且按照丢失时间来确定谁优先匹配。
unconfirmed和tentative(试探性)表示出现新的检测框而没有对应跟踪框,则视为新目标,前三帧视作试探性的,前三帧不能全部检测到就会删除这个track。
confirmed指的是刚开始检测三帧内持续监测到的,虽然不一定后来七十帧内都匹配到的track,这部分和detection进行了级联匹配,时间优先给短期丢失的目标匹配,防止遮挡,不给unconfirmed进行级联匹配是认为确认态匹配成功的概率会大一点。然后再对unconfirmed和剩下的未匹配track的进行IOU匹配,得到相似矩阵后进行匈牙利算法分配。
并且未匹配成功的track也不能被卡尔曼滤波预测,只能一次次的进行匹配了。
其实并不复杂,但是容易混淆,仅做自学用。