YOLOV5+Deepsort行人跟踪初探

文章目录

  • 1. YOLOV5+Deepsort 实现多目标跟踪
  • 2. sort 目标跟踪
  • 3. Deepsort 目标跟踪
  • 3. Deepsort 代码讲解

1. YOLOV5+Deepsort 实现多目标跟踪

在这里插入图片描述
其中检测器用YOLOV5训练好的权重;跟踪器用Deepsort训练的Reid权重;最终给出视频中每个目标行人的ID

result


sort = 卡尔曼(预测当前位置)+ 匈牙利 (关联预测框和目标)

Deepsort = ReID(提取特征)+ track(轨迹)+ 卡尔曼(预测当前位置)+ 匈牙利 (关联预测框和目标)

改进点 :Deepsort是sort多目标跟踪算法的改进版本,设计了一种新的关联方式,提高了对长时间遮挡的对象追踪的准确率,减少了Id频繁切换的现象。 DeepSort中最大的特点是加入外观信息,借用了ReID领域模型来提取特征,减少了ID switch的次数。

2. sort 目标跟踪

sort论文解读
YOLOV5+Deepsort行人跟踪初探_第1张图片

首先,第一帧检测到的框会变成Tracks轨迹。

  1. 对获取到的Tracks 用卡尔曼滤波器进行轨迹预测
  2. 与第二帧获取到的检测框,用匈牙利算法进行IOU匹配,然后会得到3种结果,如图中所示,此时分为三种情况:
    2.1 Unmatched tracks 预测的轨迹和第二帧检测到的框,用匈牙利算法配对后,没有匹配上,那么就删除这个轨迹。(说明这个目标从第二帧中消失了)
    2.2 Unmatched detctions 检测到的框和预测的轨迹,用匈牙利算法匹配后,没有找到这个框的轨迹,那么为其分配新的轨迹(说明第二帧中出现了新的目标) 然后就是“2.2”路线 回到Tracks 去重复执行“1” “2”。
    2.3 matched tracks 卡尔曼预测的框和检测的框匹配上了,则执行“2.3”,去进行卡尔曼滤波器的轨迹更新。 ,然后回到Tracks 去重复执行“1” “2”。

3. Deepsort 目标跟踪

deepsort论文解读
  Deepsort运用的Tracking-by-Detecton策略,即基于目标检测的结果来进行目标跟踪。上面的视频是DeepSORT对人群进行跟踪的结果,每个bbox上方的数字是用来标识某人的唯一ID号。
YOLOV5+Deepsort行人跟踪初探_第2张图片
注意不确认态的Tracks和Detections连续匹配一定的次数后才可以转化成确认态。(3次) 确认态的Tracks必须和Detections连续失配一定次数(默认30次),才会被删除。

首先,初始化第一帧检测到的框为tracks。
3. 第一帧(不确认态)的tracks经过卡尔曼滤波器预测后,只有不确定态轨迹(因为是初始化的tracks);
4. 与第二帧检测获取到的检测框进行用匈牙利算法进行匹配(IOU match),可以得到三种情况:
  Unmatched tracks 预测的轨迹和第二帧检测到的框,用匈牙利算法配对后,没有匹配上,(是不确认态 ,直接删除。确定态的话则要连续达到一定的次数(默认30次)才可以删除)
   Unmatched detctions 检测到的框和预测的轨迹,用匈牙利算法匹配后,没有找到这个框的轨迹,那么为其分配新的轨迹(说明第二帧中出现了新的目标) 回到Tracks。
   matched tracks 卡尔曼预测的框和检测的框匹配上了, 就会去进行卡尔曼滤波器的轨迹更新。 [ 虽然匹配上了,但是其回到Tracks去进行卡尔曼滤波器更新时还是不确定态,因为不确认态的Tracks和Detections连续匹配一定的次数后才可以转化成确认态。(3次)]
5. 反复循环 2 步骤,直到出现确认态的Tracks或者视频帧结束。
出现确认态后:
6. 通过卡尔曼滤波预测其确认态的Tracks和不确认态的Tracks对应的框。
7. 将确认态的Tracks的框框和是Detections进行级联匹配,可以得到三种情况:
   matched tracks 匹配上了, 就会去进行卡尔曼滤波器的轨迹更新。
  Unmatched tracks预测的轨迹和第二帧检测到的框,用匈牙利算法配对后,没有匹配上, Unmatched detctions 检测到的框和预测的轨迹,用匈牙利算法匹配后,没有找到这个框的轨迹,这时将之前的不确认状态的Tracks和失配的Tracks一起和Unmatched Detections一一进行IOU匹配
8. 将 7 中得到的所有的代价矩阵作为匈牙利算法的输入,这时候我们得到三种情况:
   matched tracks 卡尔曼预测的框和检测的框匹配上了, 就会去进行卡尔曼滤波器的轨迹更新。
  Unmatched tracks预测的轨迹和第二帧检测到的框,用匈牙利算法配对后,没有匹配上,(是不确认态 ,直接删除。确定态的话则要连续达到一定的次数(默认30次)才可以删除)
   Unmatched detctions 检测到的框和预测的轨迹,用匈牙利算法匹配后,没有找到这个框的轨迹,那么为其分配新的轨迹
反复循环,直到视频帧结束。

3. Deepsort 代码讲解

你可能感兴趣的:(目标跟踪,python,深度学习)