【免费源码】使用YOLOv11和OCSort进行多类别目标跟踪。(基于tensorRT框架,c++实现)
本文介绍了一个基于YOLOv11和OCSort的多类别目标跟踪项目,使用TensorRT框架C++实现。相比DeepSort和ByteTrack,OCSort算法在遮挡处理、速度和轻量级部署方面更具优势。项目包含环境配置指南和推理步骤,支持视频推理及结果保存。测试显示推理速度可达200FPS左右。作者提供了相关参考项目链接,并强调代码开源性质,反对商业倒卖行为。该实现将YOLOv11的前后处理移至
yolov11_ocsort_tensorrt
使用YOLOv11和OCSort进行多类别目标跟踪。(基于tensorRT框架,c++实现)
源码下载链接:https://github.com/zhahoi/yolov11_ocsort_tensorrt
写在前面
之前尝试过使用YOLOv11和DeepSort实现行人跟踪,亲自实现后发现Deepsort这个算法的局限性还是挺大的。(yolov11_deepsort_ncnn)一方面使用DeepSort进行目标追踪需要另外训练出一个模型,增加推理时间;另一方面,只能跟踪单类别的目标。老实说,实际应用选择该算法应该比较少。
最近在网上检索合适的目标跟踪算法时,发现了一个除了ByteTracker和DeepSort另外的一种目标跟踪算法。以下是三者算法优略比较(来自chatgpt):
| 特性 / 算法 | DeepSort | ByteTrack | OCSort |
|---|---|---|---|
| 基本思想 | 基于检测 + Kalman Filter + 外观特征匹配 | 基于检测 + Kalman Filter + IoU 匹配 | 基于检测 + Kalman Filter + 区分可见/遮挡状态的匹配 |
| 外观特征依赖 | 强依赖 CNN 特征用于匹配,处理遮挡能力较强 | 可选外观特征,主要依赖运动信息 | 默认不依赖外观特征,结合可见性/遮挡信息匹配 |
| 遮挡处理 | 使用外观特征缓解遮挡 | 基于运动信息,遮挡期间易丢失 | 明确区分“可见/遮挡轨迹”,遮挡后重新关联能力更强 |
| 误匹配率 | 中等,遮挡严重时可能误关联 | 较低,通过低分检测补充轨迹 | 更低,通过 Occlusion-aware Matching 减少误关联 |
| 速度 | 中等,外观特征提取耗时 | 高速,轻量级 | 高速,计算轻量,且无需外观特征 |
| 轻量级 / 部署 | 较重,需要特征提取网络 | 轻量级,易部署 | 轻量级,简单 Kalman + 区分可见性逻辑 |
| 跟踪稳定性 | 遮挡多时轨迹易断裂 | 遮挡轻微影响,短时遮挡易断 | 遮挡追踪能力更稳定,尤其是短期遮挡 |
| 对低分检测的利用 | 一般忽略低分框 | 使用低分框补充轨迹 | 可以智能利用低分检测框,提高遮挡恢复率 |
| 主要优势 | 对外观变化敏感,遮挡时表现一般 | 快速,低复杂度,低误匹配 | 遮挡处理更智能、误匹配少、速度快、轻量化 |
从表中就可以看到,OCSort算法在目标跟踪中存在很大的优势,因此自己想尝试用tensorRT框架实现该算法。
**【基本说明】**使用的目标检测为YOLOv11s版本,OCSort算法参考自官方的OC_SORT项目,其中存在c++实现。由于OCSort是一种即插即用的目标跟踪算法,因此很容易地可以嵌入到现有的其他项目中。在本项目中,几乎没对OCSort的代码部分进行修改,修改的部分来自融合目标检测和目标跟踪部分。
【注】
- 本项目还有对应的ncnn框架实现,指路:yolov11_ocsort_ncnn;
- 本项目yolov11目标检测推理修改本人的另一个yolov8的tensorRT实现,指路:YOLOv8_TensorRT_Jetson;
- 本项目可以将yolov11推理的前后处理放到cuda中实现,推理速度有很大的提升,推理测试可以到200帧左右;
环境配置
- Ubuntu 2024.04
- CUDA:12.0
- cuDNN:8.9.7
- TensorRT:8.6.1
- OpenCV:4.6.0
- eigen3
注:并不需要和本仓库代码的配置环境保持一致,可以根据自己的实际情况来即可。
推理设置
-
先将本项目拷贝到本地的运行环境中。
$ git clone https://github.com/zhahoi/yolov11_ocsort_tensorrt.git -
在仓库中新建
build文件夹; -
随后进入
build文件夹下,使用以下指令进行编译:$ cmake .. $ make -j8 -
进行推理(参考)
$ ./yolov11_ocsort ***.mp4 //进行视频推理 $ ./yolov11_ocsort ***.mp4 1 //进行视频推理并保存推理后的视频
推理结果


写在后面
- 我自己实现后发现,tensorRT中的gpu推理可比ncnn实现的cpu推理可强太多了,有钱真好。
- 如果有疑问的话,可以开issue提问。如果觉得这个项目还不错的话麻烦给一个star或者fork,可以让我开心一整天。
- 某些把我开源的代码拿去打包出售的人能不能去死一死,做个人好嘛。
Reference
更多推荐
所有评论(0)