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

news2025/1/10 20:53:37

目录

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.coloradmin.cn/o/2257110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5G Multicast/Broadcast Services(MBS) (八) MBS多播DRX

这里简单看下多播DRX的内容。 1 MBS multicast 对于MBS多播,RRC可配置 MAC entity使其具备per G-RNTI 或per G-CS-RNTI DRX 功能,从而控制 UE 对 MAC entity的G-RNTI和G-CS-RNTI 的 PDCCH 监听活动。当处于 RRC_CONNECTED 状态时,如果为 G-RNTI 或 G-CS-RNTI 配置了多播…

【JavaEE】多线程(7)

一、JUC的常见类 JUC→java.util.concurrent,放了和多线程相关的组件 1.1 Callable 接口 看以下从计算从1加到1000的代码: public class Demo {public static int sum;public static void main(String[] args) throws InterruptedException {Thread …

宝塔面板-java项目 spring 无法正常启动 java spring 宝塔 没有显示日志 问题解决方案-spring项目宝塔面板无日志

宝塔面板-java项目 spring 无法正常启动 java spring 宝塔 没有显示日志 -优雅草央千澈问题解决方案-spring项目宝塔面板无日志 问题描述 昨天安排了一个新项目的开发,搭建兄弟搭建完但是通信有问题,spring服务无法正常启动,于是交代后端兄…

关于一些游戏需要转区的方法

当玩非国区游戏时有时会出现乱码导致无法启动,此时多半需要转区来进行解决 1.下载转区软件 【转区工具】Locale Emulator 下载链接:Locale.Emulator.2.5.0.1.zip - 蓝奏云 用此软件可以解决大部分问题。 2.进行系统转区 首先打开控制面板选择时间与…

浅谈网络 | 应用层之云网络隔离GRE/VXLAN

目录 前言GRE 隧道技术VXLANGRE/VXLAN接入云平台 前言 之前提到,为云平台中的租户实现隔离时,常用的策略是基于 VLAN。然而,VLAN 只有 12 位,共支持 4096 个 ID,这在最初设计时看似足够,但随着云计算的快速…

【Python】批量下载抖音视频

1、代码 import os import re from concurrent.futures import ThreadPoolExecutor import requestsdef get_urls(max_cursor):# 请求头 (页面获取)headers {Cookie: ,Referer: ,User-Agent: }# 请求地址(页面获取)url # max_c…

刚入行Java,如何深入学习JVM底层原理?

对于JVM,我想大部分小伙伴都是要面试了才会去学,其余时间基本不会去看(掐指一算,你们书架上面的深入理解Java虚拟机第三版应该都一层灰了吧【手动狗头】)。但值得一说的是,当你工作多年之后,你遇…

【Redis】深入解析Redis缓存机制:全面掌握缓存更新、穿透、雪崩与击穿的终极指南

文章目录 一、Redis缓存机制概述1.1 Redis缓存的基本原理1.2 常见的Redis缓存应用场景 二、缓存更新机制2.1 缓存更新的策略2.2 示例代码:主动更新缓存 三、缓存穿透3.1 缓存穿透的原因3.2 缓解缓存穿透的方法3.3 示例代码:使用布隆过滤器 四、缓存雪崩4…

java中的数组(2)

大家好,我们今天继续来看java中数组这方面的知识点,那么话不多说,我们直接开始。 一.数组的使用 1.数组中元素访问 数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,数组可以通过下标访问其任意位置的元素. 也可以进行修改…

Qt入门7——Qt事件

目录 1. Qt事件介绍: 2. 事件的处理 示例1:鼠标进入(enterEvent)与离开事件(leaveEvent) 示例2:鼠标点击事件(mousePressEvent) 示例3:鼠标移动事件(mouseMoveEvent) 3. 按键事件 4. 定时器 5. 窗口事件 1. Qt事件介绍&a…

PyQt事件机制练习

一、思维导图 二、代码 import sysfrom PyQt6.QtTextToSpeech import QTextToSpeech from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit from PyQt6 import uic from PyQt6.QtCore import Qt, QTimerEvent, QTimeclass MyWidget(QWidget):d…

【河南】《关于省级政务信息化建设项目支出预算标准的规定(试行)》(豫财预〔2020〕81号)-省市费用标准解读系列25

《关于省级政务信息化建设项目支出预算标准的规定(试行)》(豫财预 〔2020〕81号)是河南省财政厅2020年8月27日发布的信息化项目预算标准(了解更多可直接关注我们咨询)。该标准旨在加强河南省省级部门预算管理,规范省级…

oscp备考,oscp系列——Kioptix Level 3靶场

Kioptix Level 3 oscp备考,oscp系列——Kioptix Level 3靶场 nmap扫描 主机发现 └─# nmap -sn 192.168.80.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-09 00:33 CST Nmap scan report for 192.168.80.1 Host is up (0.00014s latency). MAC…

活动|华院计算董事长宣晓华应邀出席2024科创大会并作圆桌嘉宾

2024科创大会在上海举行,由中央广播电视总台和上海市人民政府共同主办。本次大会以“创新驱动 新质未来”为主题,来自知名院校、科研机构的专家学者以及科技企业、金融机构的相关负责人共聚一堂,探讨人工智能、生物医药等产业应用前景&#x…

Robust Univariate Mean Estimation算法简介

Robust Univariate Mean Estimation 是一种统计算法,主要用于在单变量场景中估计样本的均值,同时对异常值(outliers)具有鲁棒性。传统的均值估计使用样本的算术平均值,但它对异常值高度敏感。为了缓解这个问题&#xf…

C/C++流星雨

系列文章 序号直达链接1C/C爱心代码2C/C跳动的爱心3C/C李峋同款跳动的爱心代码4C/C满屏飘字表白代码5C/C大雪纷飞代码6C/C烟花代码7C/C黑客帝国同款字母雨8C/C樱花树代码9C/C奥特曼代码10C/C精美圣诞树11C/C俄罗斯方块12C/C贪吃蛇13C/C孤单又灿烂的神-鬼怪14C/C闪烁的爱心15C/C…

MySQL——buffer poll

为什么要有buffer poll? 如果没有buffer poll,每次读取数据的时候都是从磁盘上读的,这样效率是很差的的。 所以有了提高效率的方式,就加上了一个缓存——buffer poll 所以,当我们读取数据的时候就有以下的方式 当读…

2025年山东省职业院校技能大赛“信息安全管理与评估”(山东省) 任务书

2025年山东省职业院校技能大赛“信息安全管理与评估”(山东省 任务书 模块一网络平台搭建与设备安全防护任务1:网络平台搭建 (50分)任务2:网络安全设备配置与防护(250分) 模块二网络安全事件响应、数字取证…

ERROR: KeeperErrorCode = NoNode for /hbase/master

原因分析 通过上面的情景模拟,我们可以看到报错的原因在于zookeeper中出现问题,可能是zookeeper中的/hbase/master被删除,或者是在hbase集群启动之后重新安装了zookeeper,导致zookeeper中的/hbase/master节点数据异常。 1. 停止…

ElasticSearch7.8学习笔记

1. ElasticSearch概述 1.1 ElasticSearch是什么 Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到…