第三弹-yolov5模型 ByteTrack多目标跟踪
收藏回复举报
第三弹-yolov5模型 ByteTrack多目标跟踪
发表于2024-07-16 21:07:39
0 查看
  • 什么是多目标追踪? 
    • 在目标检测上,同一个目标在帧与帧之间并没有关联起来 
    • 要确定上一帧的A_1目标是不是下一帧的A_2目标,这里就要用到多目标跟踪。 
  •  多目标追踪传输的是一个视频流 
    • 对于每一帧,需要检测目标并分配一个“对象 ID”
    • 在下一帧中,如果检测到相同的对象,则需要分配相同的对象 ID。 
  • 有许多算法用于 MOT,如 SORT(简单在线实时跟踪)、DeepSort、StrongSort 等。 

  • 关于 ByteTrack 与 DeepSort,他们各有限制 
    • ByteTrack:跟踪效果非常依赖检测的效果。检测器的效果好,跟踪也会取得不错的效果。 
    • DeepSort:使用了外观描述符和复杂的匹配算法,在某些复杂场景下计算量较大,影响实时性能。 

  • 下面先展示使用香橙派aipro 的ByteTrack项目结果,后面再来解析具体算法
    • 因没做后处理独立进程处理,后处理时间可能较长,最终46fps左右

 1.gif

  • ByteTrack的核心有以下几点
    • 使用低置信度检测框避免漏检和减少轨迹断裂
    • 使用卡尔曼滤波预测轨迹的位置
    • 通过IoU 特征距离计算预测框和检测框之间的相似性
    • 通过高置信度,低置信度,IOU相似度数据来分化不同目标
      • 如匹配成功的矩阵matchs,未匹配成功的跟踪目标u_track,未匹配成功的检测目标u_detection

cke_47486.png

  • 卡尔曼滤波
    • 用预测的和观测的去更新 成为更新数据 
    • 用更新数据去预测 成为预测数据

cke_229638.png

  • ​要实现上述目标,需要做下列工作
    • 安装Eigen,C++中可以用来调用并进行矩阵计算的一个库
    • 移植ByteTrack 核心 C++代码
    • 主main 嵌入调用 ByteTrack API
    • 构建 双向链表 定时机制进行核心框 中心点数据记录更新
    • 定时查验存续框数据,删除mark_removed的 中心点数据链表

  • 使用MOT17数据进行验证

2.gif

本帖最后由 匿名用户2024/07/18 06:43:48 编辑

我要发帖子