多目标跟踪——阶段性进展

此篇为第④篇,多目标跟踪系列文章:
基础demor入门①②;公式推导③④;深入分析初始化参数的影响⑤;
① Matlab Kalman滤波例子——小球跟踪解析 :matlab官方例子,单目标跟踪。匀速模型和匀加速模型
Matlab Kalman Filter based Multiple object Tracking 官方例子 多目标跟踪_hello world-CSDN博客matlab官方例子,多目标跟踪。注意有匈牙利轨迹分配算法,且其中的距离计算公式为观测与预测的马氏距离,这个来源于1987年的作者的著作中。 
kalman滤波——公式推导_hello world-CSDN博客_卡尔曼滤波递推公式
理解马氏距离的公式! 理解残差和残差协方差!
多目标跟踪——阶段性进展_hello world-CSDN博客_多目标跟踪 多目标综述、Kalman滤波公式推导
kalman简单例子——初始化参数对kalman性能的影响_hello world-CSDN博客
多目标跟踪中的目标是否静止判断_hello world-CSDN博客 判断是否静止,如何计算速度
CheckStatic代码原理解析,数学公式推导。
其它优秀的博客参考:
多目标跟踪(MOT)入门 - 知乎 比较好的多目标MOT综述!
《Towards Real-Time Multi-Object Tracking》论文翻译 - 知乎
⑨ 视频轨迹跟踪分析——他山之石_hello world-CSDN博客



1. 多目标跟踪:背景建模+kalman+匈牙利

demo参考:

demo1的路线:GMM背景建模→blob分析计算质心→Kalman→匈牙利。这个做的还可以,在于质心的计算比较好,因此在匹配时是否可以加入一些特征进去

demo3的路线:背景建模进行目标检测→canny边缘检测→findContours找到质心,从半径中筛选一些虚警→Kalman filter预测+校正→匈牙利进行ID匹配→起始、终止、新建等轨迹操作和处理。

  • 这个的处理效果有限。因为在计算轮廓那里不鲁棒。只适用于作者的小细胞类的跟踪。

--------------------------------------

1.0 开源仓库代码构建

仓库地址:cGitHub - Smorodov/Multitarget-tracker: Multiple Object Tracker, Based on Hungarian algorithm + Kalman filter.

  • step1: 检测:①背景建模;②YOLO;③Opencv HOG+SVM
  • step2:检测、轨迹分配:①匈牙利O(N^3);②加权二分图
    距离分配:

1.0.1 Build

1.0.2 readme如下 

 2025/01/06补充

  • 增加了yolo检测器的tensorrt8 推理;增加了Re-ID的人车重识别(来自openVINO)
  • 漏检时使用视觉搜索功能

1.0.3 win10 编译 Smorodov/Multitarget-tracker仓库代码

① opencv+opencv_contrib 编译,之前有编译好的opencv_cuda。

git clone https://github.com/Smorodov/Multitarget-tracker.git
cd Multitarget-tracker
mkdir build
cd build
cmake . .. -DUSE_OCV_BGFG=ON -DUSE_OCV_KCF=ON -DUSE_OCV_UKF=ON -DBUILD_YOLO_LIB=ON -DBUILD_YOLO_TENSORRT=ON -DBUILD_ASYNC_DETECTOR=ON -DBUILD_CARS_COUNTING=ON
make -j

② cmd下编译,找不到OPENCV_DIR,要修改命令,使用.bat文件
cmake_vs2017.bat 文件位置:

Multitarget-tracker/cmake_vs2017.bat at master · Smorodov/Multitarget-tracker · GitHub

③出现错误:找不到OpenCVDIR,要在cmake指令里面指明
④ Cuda和CUDNN安装路径存在空格,解决办法如下:Program Files用Progam~1表示 

CmD空格转义的三种方法,总有一种会解决问题 - 想总结却停留不前? - 博客园

​ ⑤遇到错误:找不到PKG_CONFIG_EXE 


 原因:还是在于空格路径没办法解决!
终极解决办法:路径加引号。如 "Visual Studio 16 2019" 就可以识别的。下图红框所示:

 1.0.4 build成功了

1.1 Kalman滤波——单目标跟踪

目标跟踪学习笔记_5(opencv中kalman点跟踪例子) 有实验代码。

匀加速模型:状态观测+实际观测。观测的误差太大,比较信任绿色的结果。

kalman.cpp 源文件位置:opencv/modules/video/src/kalman.cpp

### 多目标跟踪算法的最新进展 多目标跟踪(Multi-Object Tracking, MOT)作为计算机视觉领域的重要分支,近年来取得了显著进步。以下是关于该主题的一些重要研究方向和技术实现。 #### 基于深度学习的目标跟踪方法 随着深度学习技术的发展,许多现代多目标跟踪算法都依赖于卷积神经网络(CNNs)。例如,DeepSort 是一种经典的两阶段算法,其核心思想是在 Sort 的基础上引入了深度学习模型来提取目标的外观特征[^1]。这种方法能够有效解决因遮挡或误检而导致的身份切换问题。然而,最新的研究已经超越了传统的两阶段框架,提出了更加高效和精确的方法。 #### 单阶段 vs 双阶段架构 双阶段架构通常先进行目标检测再执行关联操作,而单阶段架构则试图在一个统一的框架下完成这两项任务。例如,TrackFormer 将目标跟踪视为集合预测问题,并利用 Transformer 结构直接生成轨迹[^3]。这种端到端的设计不仅简化了流程,还提高了性能指标。 #### 跨帧关联策略 跨帧之间的对象匹配对于保持一致性和稳定性至关重要。传统方法可能仅依靠卡尔曼滤波器估计运动状态;但是,当前先进的解决方案倾向于结合多种线索——包括但不限于空间位置、速度变化以及语义描述符等信息来进行综合判断。具体来说,一些工作探索如何更好地融合光流场数据或者采用图神经网络(GNN)捕捉长期关系模式[^4]。 ```python import torch from torchvision.models.detection import fasterrcnn_resnet50_fpn def load_model(): model = fasterrcnn_resnet50_fpn(pretrained=True) device = 'cuda' if torch.cuda.is_available() else 'cpu' model.to(device).eval() return model model = load_model() # Example usage of the loaded model for object detection (not tracking yet). images_tensor = ... # Preprocess your input images here. predictions = model(images_tensor)[0] boxes = predictions['boxes'].detach().cpu().numpy() scores = predictions['scores'].detach().cpu().numpy() ``` 上述代码片段展示了加载预训练 Faster R-CNN 模型的过程,这是构建复杂跟踪系统的起点之一。实际应用时还需要进一步扩展功能模块以支持完整的MOT逻辑。 #### 数据集与评估标准 为了推动技术创新并公平比较不同方案的效果,社区创建了一系列公开可用的数据资源及其配套度量体系。像MOTChallenge就是这样一个标杆平台,提供了多样化场景下的标注资料供研究人员测试自己的想法[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值