ByteTrack
ByteTrack
算法是将t帧检测出来的检测框集合 D t {\mathcal{D}_{t}} Dt 和t-1帧预测轨迹集合 T ~ t − 1 {\tilde{T}_{t-1}} T~t−1 进行匹配关联得到t帧的轨迹集合 T t {T_{t}} Tt。
首先使用检测器检测t帧的图像得到检测框集合 D t {\mathcal{D}_{t}} Dt,再根据置信度阈值将检测框集合划分为高置信度检测框集合 D t h {\mathcal{D}^{h}_{t}} Dth 和低置信度检测框集合 D t l {\mathcal{D}^{l}_{t}} Dtl。
然后ByteTrack
使用卡尔曼滤波,根据t-1帧的轨迹集合 T t − 1 {T_{t-1}} Tt−1 预测轨迹在t帧的位置;得到t帧的预测轨迹集合 T ~ t − 1 {\tilde{T}_{t-1}} T~t−1。
在ByteTrack
第一阶段,先将高置信度检测框和预测轨迹相匹配;匹配结果有三种情况:
- 高置信度检测框和预测轨迹匹配成功,则更新到t帧的轨迹集合中。
- 高置信度检测框没能和预测轨迹匹配,也更新到t帧的轨迹集合中。
- 预测轨迹没有高置信度检测框与它匹配,则放入到未匹配的预测轨迹 T ~ t − 1 u \tilde{T}^{u}_{t-1} T~t−1u。
在ByteTrack
第二阶段,先将未匹配的预测轨迹集合 T ~ t − 1 u \tilde{T}^{u}_{t-1} T~t−1u划分为活跃轨迹 T ~ t − 1 u , a \tilde{T}^{u,a}_{t-1} T~t−1u,a和非活跃轨迹 T ~ t − 1 u , i \tilde{T}^{u,i}_{t-1} T~t−1u,i;非活跃的预测轨迹直接放入到t帧的轨迹集合中,活跃的预测轨迹用于和低置信度检测框进行匹配关联。同样,匹配结果有三种情况:
- 低置信度检测框和预测轨迹匹配成功,则更新到t帧的轨迹集合中。
- 低置信度检测框没能和预测轨迹匹配,则删除。
- 预测轨迹没能和低置信度检测框匹配,也跟新到t帧的轨迹集合中。
到此,t帧的处理结束,视频后续也是如此流程。
活跃轨迹:前一帧中匹配得到检测框;非活跃轨迹:前一帧中没有匹配得到检测框。