感知问题-目标追踪

此处提供了一个针对“感知问题-目标追踪任务”的上手示例,示例采用Bytetrack模型实现机动车与行人的二维目标跟踪。

以下给出了模型介绍代码解读

模型介绍

1. 模型概述:

Bytetrack是一种用于多目标跟踪(MOT, Multi Object Tracking)任务的算法,在论文《ByteTrack: Multi-Object Tracking by Associating Every Detection Box》中主要通过处理检测器产生的目标框来实现高效的多目标跟踪。它解决了传统MOT算法在处理低置信度目标时的问题,提高了跟踪精度。Bytetrack的核心思想是追踪所有检测框,包括高置信度和低置信度目标,这避免了漏掉低置信度的目标,从而提升整体跟踪性能。

在多目标跟踪任务中,输入为交通流视频,输出为被检测出的各个目标的标号ID。

2. 模型架构:

  • 目标检测和分配:输入视频帧首先要经过目标检测器,得到检测框,这些检测框可以按照置信度进行排序。
  • 初步关联:通过卡尔曼滤波器(Kalman Filter)和匈牙利算法(Hungarian Algorithm)进行初步的跟踪匹配。首先,高置信度的目标框要先与历史跟踪目标进行匹配,分配给现有的跟踪目标。
  • 处理低置信度目标:Bytetrack没有简单丢弃低置信度目标框。对于没有匹配到的跟踪目标,算法进一步检查低置信度的目标,尝试与这些低置信度框进行匹配。这样可以捕捉到之前被检测器忽略的目标,提高跟踪的全面性。
  • 状态更新:匹配成功的目标更新其状态,未匹配成功的目标则进入潜在目标列表。在后续帧中,潜在目标如果持续未被匹配,最终将被丢弃,被标记为丢失目标。

3. 具体实现:

  • 数据预处理:将视频序列按照一定的帧率拆分成下标有序的图像序列,或者直接用opencv库进行读取。
  • 选择模型:选择合适的目标跟踪模型,并提供相应的配置文件。
  • 可视化:目标跟踪整体推理速度较快,所以可以做到实时显示,同时也可以离线进行处理,生成离线视频。

代码解读

0. 准备工作:

  • 设备要求:Windows/Linux下均可运行,预装Anaconda/Miniconda;
  • 需要配有Nvidia独立显卡、并安装Cuda、Cudnn、Pytorch。如果是Windows系统,建议在安装Cuda前,先安装Visual Studio。
  • 采用的是Youtube上下载的某段Traffic Footage的视频截图,代码中已经给出demo文件夹,不需要额外下载。

1. 环境配置:

Copy to Clipboard

2. 数据预处理:

Copy to Clipboard
  • video_path:交通流视频文件的存放路径

3. 选择模型:

Copy to Clipboard
  • model_name:采用模型的名称,如果本地搜索不到,会联网自动下载,可能需要执行两次。

4. 结果可视化:

Copy to Clipboard
  • window_name:可视化窗口名称
  • thickness:轨迹可视化的线条粗细度

完整DEMO

Copy to Clipboard
Copy to Clipboard