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

Reference

相关推荐
AKAMAI1 小时前
提升 EdgeWorker 可观测性:使用 DataStream 设置日志功能
人工智能·云计算
fengfuyao9851 小时前
竞争性自适应重加权算法(CARS)的MATLAB实现
算法
散峰而望1 小时前
C++数组(二)(算法竞赛)
开发语言·c++·算法·github
leoufung1 小时前
LeetCode 92 反转链表 II 全流程详解
算法·leetcode·链表
银空飞羽1 小时前
让Trae CN SOLO自主发挥,看看能做出一个什么样的项目
前端·人工智能·trae
wyhwust2 小时前
交换排序法&冒泡排序法& 选择排序法&插入排序的算法步骤
数据结构·算法·排序算法
cg50172 小时前
基于 Bert 基本模型进行 Fine-tuned
人工智能·深度学习·bert
利刃大大2 小时前
【动态规划:背包问题】完全平方数
c++·算法·动态规划·背包问题·完全背包
Dev7z2 小时前
基于Matlab图像处理的EAN条码自动识别系统设计与实现
图像处理·人工智能
Curvatureflight2 小时前
GPT-4o Realtime 之后:全双工语音大模型如何改变下一代人机交互?
人工智能·语言模型·架构·人机交互