【YOLO11】【DeepSort】【NCNN】使用YOLOv11和DeepSort进行行人目标跟踪。(基于ncnn框架,c++实现)

yolov11_deepsort_ncnn

使用YOLOv11和DeepSort进行行人目标跟踪。(基于ncnn框架,c++实现)

Github仓库:https://github.com/zhahoi/yolov11_deepsort_ncnn

写在前面

当前大部分Tracking相关的项目都是基于TensorRT部署的,使用NCNN框架部署的Tracking很少很少,但是对我来说,我更喜欢NCNN框架,因为平台和环境依赖性没那么高,因此想尝试自己用NCNN框架实现一版跟踪项目。

使用的目标检测为YOLOv11的nano版本,而DeepSort算法大部分是参考自yolov5_deepsort_ncnn_qt项目,不过自己对其进行了部分修改,使其更符合本项目的实现。模型的训练权重是官方提供的预训练权重,自己尝试从pt转到ncnn平台,因为有一些参考教程所以没那么复杂。

老实说Deepsort算法的id跟踪极大程度上依赖于提取的外观特征,我觉得这个算法其实不是很鲁棒,因为如果被跟踪的物体(人)动作幅度过大地话(从站立->摔倒->站立),这个跟踪id就可以切换好几次。另外Deepsort算法需要调整的参数很多,要想获得一个更好的效果,需要进行多次调整才行。本项目对于该部分没有做那么多的关注,只专注于最基本的实现。

本仓库的测试平台为Visual Studio2019,因为电脑内存的原因,暂时没办法在Ubuntu上尝试部署。如果你是想在嵌入式端部署的话,需要自己做一些额外的工作。

环境配置

  • Visual Studio 2019
  • ncnn-20250503-full-source
  • opencv-3.4.10
  • eigen3

注:并不需要和本仓库代码的配置环境保持一致,可以根据Visual Studio的版本,下载对应的ncnn和opencv-mobile的版本即可。

推理设置

(1)先在Visual Studio新建一个空白工程,将本仓库代码放到该工程中。把本项目中的.h和.cpp文件分别导入到头文件和源文件中。操作结果如下:

(2)在工程中载入推理需要依赖的库。



附加依赖项添加的库如下:

shell 复制代码
opencv_world3410.lib
ncnn.lib
glslang.lib

(3)选择开始执行,应该在工程的Release 的目录下可以成功地生成.exe文件。将测试图像复制到Release下的路径。

(4)执行推理。

推理脚本如下:

sh 复制代码
$ YOLOv11-DeepSORT.exe video video_2.mp4   // 推理视频
$ YOLOv11-DeepSORT.exe video 0   // 调用摄像头推理

推理结果

CSDN不支持上传,可以进入该项目Github的主页查看。

写在后面

  1. 本项目有几个需要重点关注的头文件,分别为deepsort.h、yolov11.h和tracker.h。需要配置权重的位置和一些和跟踪结果相关的参数。
  2. 从上面的GIF中可以很直观地看出,当检测目标摔倒之后,其id切换得很快,这是基于外观跟踪算法一个弊端吧。我个人觉得DeepSort算法适合那种简单的行人检测,如果被检测对象动作过于丰富的话,那结果一定是不好的。
  3. 本项目默认开启了GPU加速,如果没有GPU的话,对于少量检测对象的话,其推理速度影响不大,但是如果是很多检测对象的话,那推理速度可就慢了,因为DeepSort本身就不轻量。
  4. 如果有疑问的话,可以开issue提问。如果觉得这个项目还不错的话麻烦给一个star或者fork,可以让我开心一整天。
  5. 某些把我开源的代码拿去打包出售的人能不能去死一死,做个人好嘛。

Reference

相关推荐
做萤石二次开发的哈哈14 分钟前
连锁门店、园区、交通枢纽的视频如何统一汇集?应用模板的接入与分权管理详解
人工智能·物联网·音视频·二次开发·视频监控·蓝海aiot一站式工作台·萤石云开放平台
老金带你玩AI26 分钟前
全程拿着手机,我让dot准备了一场AI分享
人工智能
nvd1132 分钟前
Flink 批处理驱动的湖仓 AI 财务研报流水线:从双流广播汇聚到 Agent 智能决策与原生 Iceberg 落盘全景实战
大数据·人工智能·flink
码爸35 分钟前
线性回归算法
算法·机器学习·线性回归
snhna1 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
架构技术专栏1 小时前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
Coder-magician1 小时前
《代码随想录》刷题打卡day51:图论-part09(dijistra堆优化,Bellman_ford算法)
算法·图论
点云-激光雷达-Slam-三维牙齿1 小时前
100,000 Records CSV File - India Traffic Accident Analysis Dataset.7z
人工智能·数据集
TechWayfarer1 小时前
精度极限的突破:AI与IPv6如何重塑高精度IP查询
人工智能·网络协议·tcp/ip·transformer
Nil2081 小时前
leetcode 763划分字母区间
算法·leetcode·职场和发展