shaoshengsong/DeepSORT
A real-time multi-object tracking application in C++17 with Qt and ONNX Runtime that runs a YOLO detector with four pluggable trackers — ByteTrack, OC-SORT, Deep OC-SORT, and DeepSORT.
解决的问题
DeepTracker 是一个用于视频的实时多对象跟踪(MOT)系统。它允许用户在视频帧之间识别并保持多个对象(如人)的身份,能够处理遮挡、运动模糊和移动摄像头等挑战。
工作原理
该系统使用 YOLO 检测器在每一帧中查找对象。然后应用四种跟踪算法之一,将这些检测结果与现有轨迹关联起来。所有跟踪器共享一个通用的 C++ 接口(ITracker)和用于运动预测的恒定速度卡尔曼滤波器。
根据所选算法,系统使用不同方法进行对象关联:
- ByteTrack:利用运动信息(IoU 和置信度)恢复因遮挡而丢失的轨迹。
- OC-SORT:专注于运动(观测中心)以处理模糊和遮挡,无需外观模型。
- Deep OC-SORT:结合运动和外观特征,并添加全局运动补偿(GMC)以应对移动摄像头。
- DeepSORT:结合外观嵌入(ReID)和平方马氏距离运动门控来维持身份。
推理由 ONNX Runtime 处理,支持使用 .onnx 模型进行检测和外观编码,无需重新编译。
适用人群
本项目适用于需要高性能 C++ 实现经典多对象跟踪算法进行视频分析的开发者和研究人员。
主要亮点
- 多种算法:支持 ByteTrack、OC-SORT、Deep OC-SORT 和 DeepSORT。
- 灵活的推理:使用 ONNX Runtime 支持 CPU、CUDA、DirectML 和 OpenVINO 提供者。
- 集成 YOLO:整合 YOLO 检测器用于初始对象检测阶段。
- 交互式 GUI:包含基于 Qt 的桌面应用程序用于交互式跟踪,以及用于脚本的命令行工具。
- 模块化架构:所有跟踪器均实现共享接口,仅需一行代码更改即可轻松切换算法。
相关
- 项目
- 项目
- 项目
- 项目