当前位置: 首页 > news >正文

【免费源码】使用YOLOv11和OCSort进行多类别目标跟踪。(基于ncnn框架,c++实现)

yolov11_ocsort_ncnn

使用YOLOv11和OCSort进行多类别目标跟踪。(基于ncnn框架,c++实现)


本项目开源自:https://github.com/zhahoi/yolov11_ocsort_ncnn.git


写在前面

之前尝试过使用YOLOv11和DeepSort实现行人跟踪,亲自实现后发现Deepsort这个算法的局限性还是挺大的。(yolov11_deepsort_ncnn)一方面使用DeepSort进行目标追踪需要另外训练出一个模型,增加推理时间;另一方面,只能跟踪单类别的目标。老实说,实际应用选择该算法应该比较少。

最近在网上检索合适的目标跟踪算法时,发现了一个除了ByteTrackerDeepSort另外的一种目标跟踪算法。以下是三者算法优略比较(来自chatgpt):

特性 / 算法DeepSortByteTrackOCSort
基本思想基于检测 + Kalman Filter + 外观特征匹配基于检测 + Kalman Filter + IoU 匹配基于检测 + Kalman Filter + 区分可见/遮挡状态的匹配
外观特征依赖强依赖 CNN 特征用于匹配,处理遮挡能力较强可选外观特征,主要依赖运动信息默认不依赖外观特征,结合可见性/遮挡信息匹配
遮挡处理使用外观特征缓解遮挡基于运动信息,遮挡期间易丢失明确区分“可见/遮挡轨迹”,遮挡后重新关联能力更强
误匹配率中等,遮挡严重时可能误关联较低,通过低分检测补充轨迹更低,通过 Occlusion-aware Matching 减少误关联
速度中等,外观特征提取耗时高速,轻量级高速,计算轻量,且无需外观特征
轻量级 / 部署较重,需要特征提取网络轻量级,易部署轻量级,简单 Kalman + 区分可见性逻辑
跟踪稳定性遮挡多时轨迹易断裂遮挡轻微影响,短时遮挡易断遮挡追踪能力更稳定,尤其是短期遮挡
对低分检测的利用一般忽略低分框使用低分框补充轨迹可以智能利用低分检测框,提高遮挡恢复率
主要优势对外观变化敏感,遮挡时表现一般快速,低复杂度,低误匹配遮挡处理更智能、误匹配少、速度快、轻量化

从表中就可以看到,OCSort算法在目标跟踪中存在很大的优势,因此自己想尝试用ncnn框架实现该算法。

【基本说明】使用的目标检测为YOLOv11的nano版本,OCSort算法参考自官方的OC_SORT项目,其中存在c++实现。由于OCSort是一种即插即用的目标跟踪算法,因此很容易地可以嵌入到现有的其他项目中。在本项目中,几乎没对OCSort的代码部分进行修改,修改的部分来自融合目标检测和目标跟踪部分。

【注】对应的tensorRT版本实现,指路:yolov11_ocsort_tensorrt。

环境配置

  • Ubuntu 2024.04
  • ncnn-20250503-full-source
  • opencv-3.4.10
  • eigen3

注:并不需要和本仓库代码的配置环境保持一致,可以根据自己的实际情况来即可。

推理设置

  1. 先将本项目拷贝到本地的运行环境中。

    $ git clone https://github.com/zhahoi/yolov11_ocsort_ncnn.git
    
  2. 修改CMakeLists.txt中依赖库的位置,和detector/yolov11.h中引入权重的位置。

  3. 在仓库中新建build文件夹;

  4. 随后进入build文件夹下,使用以下指令进行编译:

    $ cmake ..
    $ make -j8
    
  5. 进行推理(参考)

    $ ./yolov11_ocsort ***.mp4  //进行视频推理
    $ ./yolov11_ocsort ***.mp4  1 //进行视频推理并保存推理后的视频
    

推理结果

在这里插入图片描述

在这里插入图片描述

写在后面

  1. 我自己实现后发现,ocsort的推理帧数还真的是不错,在没有gpu的情况下还可以保证20-30帧率的检测速度。另外这是多类别跟踪,真的是比deepsort强很多。
  2. 如果有疑问的话,可以开issue提问。如果觉得这个项目还不错的话麻烦给一个star或者fork,可以让我开心一整天。
  3. 某些把我开源的代码拿去打包出售的人能不能去死一死,做个人好嘛。

Reference

  • OC_SORT
  • yolov11_deepsort_ncnn
http://www.dtcms.com/a/486274.html

相关文章:

  • 学习:uniapp全栈微信小程序vue3后台(31)
  • 微信小程序开发实战指南(三)-- Webview访问总结
  • 公司自建网站加盟装修公司哪家好
  • 哪个软件做网站好如何制作橡皮泥 简单
  • DDE方式下Delphi7程序间及与VB6程序的数据交换
  • 网络安全等级保护要求(10+4 层面)记忆总结
  • 活字格AI智能体:重塑企业级自动化与智能交互新范式
  • 【通信网络安全主题】第六届计算机通信与网络安全国际学术会议(CCNS 2025)
  • 海商网做网站价格自己做的网站怎么添加采集模块
  • vscode使用翻译插件分享
  • Web通信技术:Comet(服务器推送)详解
  • 互联网营销网站建设玩具租赁网站开发与实现论文
  • 为什么格林公式二重积分一侧的被积函数是两项相减
  • 成都网站建设软件石家庄模板网站
  • 【实战-12】flink版本表
  • ‌MyBatis-Plus 的 LambdaQueryWrapper 可以实现 OR 条件查询‌
  • 带你了解STM32:SPI通信(硬件部分)
  • CentOS下安装配置JDK24和tomcat11
  • springboot mybatisplus 配置SQL日志,但是没有日志输出
  • Windows下安装配置JDK24和tomcat11
  • 建个大型网站要多少钱房产信息网网站
  • 贵阳建站公司做的不错的h5高端网站
  • 实践 3:Vim 编辑器的使用
  • UG(NX)转换为3DXML全流程技术指南,附迪威模型网在线方案,适用于技术人员与学生
  • Python爬虫第4课:XPath与lxml高级解析技术
  • 使用 EasyExcel 封装通用 Excel 导出工具类
  • asp.net做网站的流程百度标注平台怎么加入
  • 怎么做同学录的网站电子商务公司简介模板
  • Redis(63)Redis的Lua脚本如何使用?
  • 鸿蒙NEXT输入设备开发指南:从触摸屏到游戏手柄的完整解决方案