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

目标跟踪算法:SORT、卡尔曼滤波、匈牙利算法

目录

1 目标检测

2 卡尔曼滤波

3《从放弃到精通!卡尔曼滤波从理论到实践》视频简单学习笔记

3.1 入门   

3.2 进阶

3.2.1 状态空间表达式

3.2.2 高斯分布

3.3 放弃

 3.4 精通

4 匈牙利算法

5 《【运筹学】-指派问题(匈牙利算法)》视频简单笔记

6 SORT算法的具体流程实现

参考文献:


        平时工程中基本上都是用SORT跟踪算法,也知道他的大体原理,这次稍微有点时间,我想再认真了解一下里面的卡尔曼滤波和匈牙利算法的公式推导,虽然我这次看完之后大概率后面很快也还是会忘,但是肯定会加深我的理解。

1 目标检测

目标检测(Object Detection): SORT算法采用“Tracking-by-Detection”策略,即算法的输入数据来源于目标检测器。SORT本身不参与目标检测过程,而是利用目标检测器(如Faster R-CNN、YOLO等)的输出结果,通常是一个矩形(bounding box)来表示目标的位置

2 卡尔曼滤波

由于目标检测得到的bounding box会带有噪声,SORT使用卡尔曼滤波来预测目标的位置和速度信息,从而得到下一帧中目标的运动轨迹。卡尔曼滤波是一种递归滤波器,可以对系统的状态进行最优估计。

卡尔曼滤波可以通过利用数学模型预测的值和测量得到的观测值进行数据融合,找到“最优”的估计值(这里的最优指的是均方差最小)。比方说,我们现在要知道t帧时某一目标准确的bbox(即,计算估计值),记为。我们已知的是1~t­-1帧中目标的bbox。现在我们有两种方法得到t帧的bbox:一是通过数学建模,根据1~t-1的信息来预测出t帧的bbox,记为;二是通过检测算法,直接测量出t帧的bbox,记为。卡尔曼滤波做的事情就是利用来得到,具体分两步实现:预测(predict),即通过数学模型计算出;更新(update),结合测量值得到当前状态(state)的最优估计值。

      总之,卡尔曼滤波是一种去噪技术,能够在目标检测的基础上,得到更加准确的bbox。

3《从放弃到精通!卡尔曼滤波从理论到实践》视频简单学习笔记

我看的B站的这个学习视频,下面是我的简单的学习笔记,建议还是直接去看原视频,视频链接如下: 

从放弃到精通!卡尔曼滤波从理论到实践~_哔哩哔哩_bilibili

3.1 入门   

  

3.2 进阶

3.2.1 状态空间表达式

3.2.2 高斯分布

 正态分布就是正常状态下的概率分布。

  

3.3 放弃

 

 3.4 精通

4 匈牙利算法

     匈牙利算法是一种数据关联(Data Association)算法,其实从本质上讲,跟踪算法要解决的就是数据关联问题。假设有两个集合S和T,集合S中有m个元素,集合T中有n个元素,匈牙利算法要做的是把S中的元素和T中的元素两两匹配(可能匹配不上)。结合跟踪的情景,匈牙利算法的任务就是把t帧的bbox与t-1帧的bbox两两匹配,这样跟踪就完成了。

      要想匹配就需要一定的准则,匈牙利算法依据的准则是“损失最小“。损失由损失矩阵的形式来表示,损失矩阵描述了匹配两个集合中某两个元素所要花费的代价。

    在SORT算法中,匈牙利算法基于目标检测框(Detections)和预测的目标跟踪框(Tracks,)之间的交并比(Intersection over Union, IoU)来构建相似度矩阵。这个矩阵的每个元素表示一个检测框和一个跟踪框之间的相似度,通常用1减去IoU值来表示匹配的代价或损失,然后利用这个矩阵去寻找匹配代价最小的一组匹配,其实匈牙利算法本身还是用iou进行匹配的,然后本质上其实就是检测框和预测的跟踪框匹配后,保证iou最大,也就是匹配代价最小。

5 《【运筹学】-指派问题(匈牙利算法)》视频简单笔记

6 SORT算法的具体流程实现

参考文献:

从放弃到精通!卡尔曼滤波从理论到实践~_哔哩哔哩_bilibili

匈牙利算法-看这篇绝对就够了!-CSDN博客 

 匈牙利算法详解-CSDN博客

 趣写算法系列之--匈牙利算法_匈牙利算法基本原理-CSDN博客

【运筹学】-指派问题(匈牙利算法)_哔哩哔哩_bilibili 

http://www.lryc.cn/news/501313.html

相关文章:

  • Java版-图论-拓扑排序与有向无环图
  • GTC2024 回顾 | 优阅达携手 HubSpot 亮相上海,赋能企业数字营销与全球业务增长
  • eclipse启动的时候,之前一切很正常,但突然报Reason: Failed to determine a suitable driver class的解决
  • _tkinter.TclError: can‘t find package tkdnd Unable to load tkdnd library.解决办法
  • VBA高级应用30例应用在Excel中的ListObject对象:向表中添加注释
  • folly库Conv类型转换源码解析
  • UE4 骨骼网格体合并及规范
  • Java版企业电子招标采购系统源业码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis
  • 通过源码⼀步⼀步分析 ArrayList 扩容机制
  • 源码分析之Openlayers中默认Controls控件渲染原理
  • 中间件的分类与实践:从消息到缓存
  • 京东e卡 h5st 4.96
  • 《CSS 知识点》滚动条仅在 hover 时才显示(宽度不改变)
  • 手里有病理切片+单细胞测序的数据,如何开展医工交叉的研究?
  • 力矩扭矩传感器介绍
  • 【Appium】AttributeError: ‘NoneType‘ object has no attribute ‘to_capabilities‘
  • QT 中 多线程(备查)
  • 第八十六条:在实现serializable接口时要特别谨慎
  • 【Elasticsearch 中间件】Elasticsearch 客户端使用案例
  • 深入理解MySQL中的ONLY_FULL_GROUP_BY
  • 获得日志记录之外的新视角:应用程序性能监控简介(APM)
  • 如何避免缓存击穿?超融合常驻缓存和多存储池方案对比
  • 口语笔记——祈使句用法
  • SQL连续登录问题(详细案例分析)
  • Next.js 系统性教学:深入理解缓存与数据优化策略
  • 【PyTorch】(基础六)---- 搭建卷积神经网络
  • 【JAVA项目】基于ssm的【美食推荐管理系统】
  • adb 常用命令笔记
  • [代码随想录Day32打卡] 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
  • android NumberPicker隐藏分割线或修改颜色