ByteTrack跟踪过程类似于deepsort也是double check后给出跟踪结果。不同之处在于前者没有特征匹配而是考虑了目标检测的低置信度,对低置信度框进行二次匹配。
下面记录一下两者的跟踪过程,以防忘记!

1. deep sort跟踪过程

参考:
https://blog.csdn.net/didiaopao
假设确定轨迹的参数是3帧,最长遗忘年纪为30

  • first frame:Detection results直接进入update函数初始化tracks
  • second frame:第一帧初始化后的tracks进入predict函数产生卡尔曼滤波的预测值;其中卡尔曼预测值分为confirmed、unconfirmed两类,由于第一帧都是uncomfirmed,第二帧的Detection results与第一帧预测值直接进入IOU匹配(iou匹配包括两个框计算代价矩阵与匈牙利匹配,代价矩阵是1-检测框与预测框的交并比);iou匹配后会出现3种结果,matched(确认的参数+1,进入kf update)、undetected(产生新的tracks)、untracked(如果同时还是unconfirmed就会被delete,否则会考虑max_age,小于max_age就保留并进入kf update,大于max_age就delete)
    上述过程的同时,每一个track都会被ReID模型同时提取feature
  • third frame:会继续重复第二帧动作
  • fourth frame:假设前面三帧存在连续matched的目标检测框,那么该框就会由确定轨迹的参数3确定为confirmed状态。此时处于confirmed状态的kf-predict track就会被优先于第四帧的Detection results进行nn_match,具体为对两者的特征进行余弦距离计算生成代价矩阵再进行匈牙利匹配,产生3种结果,matched(直接进入kf update)、undetected和untracked会和前一帧unconfirmed tracks进行iou匹配,再生成上面3种结果对应
    ….重复上面步骤直至视频帧结束。

    思考点

    1. 对于confirmed且小于max_age的track不应该再提取特征了,以便当遮挡结束目标重新出现时能够再次利用特征匹配上;
    2. 对于一个目标,形状各异,原始按照行人训练的ReID网络不再适用,如何训练更通俗的ReID网络?

2. Byte Track

参考:
https://blog.csdn.net/qq_44703886/article/details/127143898

  • first frame:高于置信度的detection results会被转化为stracks
  • second frame:上一帧的stracks会产生kf predict,当前帧的detection results会被分为高置信度、低置信度两类,其中高置信度检测框会与上一帧的kf predict进行IOU/ReID匹配, 产生matched(进入kf update)、unmatched(undetected会产生新track,untracked会成为remain tracks)两类结果;接下来,低置信度检测框会与remain tracks进行IOU匹配,产生matched(进入kf update)、re-remained(与max_age做比较后决定保留还是delete)两类结果;
    ….重复上面步骤直至视频帧结束。

    思考点

    1. 没有考虑目标特征,如何加入目标特征?
    2. 考虑低置信度目标检测框对检测算法的能力提出了要求,要求尽可能检测到才能保证尽可能跟踪到
最后修改日期: 2024年7月29日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。