目标追踪---deepsort原理讲解

news2024/11/21 1:42:57

目录

一、多目标追踪的主要步骤

二、sort流程

三、Deepsort算法流程


一、多目标追踪的主要步骤

  1. 获取原始视频帧
  2. 利用目标检测器对视频帧中的目标进行检测
  3. 将检测到的目标的框中的特征提取出来,该特征包括表观特征(方便特征对比避免ID switch)和运动特征(运动特征方便卡尔曼滤波对其进行预测)
  4. 计算前后两帧目标之前的匹配程度(利用匈牙利算法和级联匹配),为每个追踪到的目标分配ID。

二、sort流程

        Deepsort的前身是sort算法,sort算法的核心是卡尔曼滤波算法和匈牙利算法。

        卡尔曼滤波算法作用:该算法的主要作用就是当前的一系列运动变量去预测下一时刻的运动变量,但是第一次的检测结果用来初始化卡尔曼滤波的运动变量。

        匈牙利算法的作用:简单来讲就是解决分配问题,就是把一群检测框和卡尔曼预测的框做分配,让卡尔曼预测的框找到和自己最匹配的检测框,达到追踪的效果。

        sort工作流程如下图所示:

        Detections是通过目标检测到的框框。Tracks是轨迹信息。

        整个算法的工作流程如下:
(1)将第一帧检测到的结果创建其对应的Tracks。将卡尔曼滤波的运动变量初始化,通过卡尔曼滤波预测其对应的框框。

(2)将该帧目标检测的框框和上一帧通过Tracks预测的框框一一进行IOU匹配,再通过IOU匹配的结果计算其代价矩阵(cost matrix,其计算方式是1-IOU)。

(3)将(2)中得到的所有的代价矩阵作为匈牙利算法的输入,得到线性的匹配的结果,这时候我们得到的结果有三种,第一种是Tracks失配(Unmatched Tracks),我们直接将失配的Tracks删除;第二种是Detections失配(Unmatched Detections),我们将这样的Detections初始化为一个新的Tracks(new Tracks);第三种是检测框和预测的框框配对成功,这说明我们前一帧和后一帧追踪成功,将其对应的Detections通过卡尔曼滤波更新其对应的Tracks变量。

(4)反复循环(2)-(3)步骤,直到视频帧结束。

三、Deepsort算法流程

       由于sort算法还是比较粗糙的追踪算法,当物体发生遮挡的时候,特别容易丢失自己的ID。而Deepsort算法在sort算法的基础上增加了级联匹配(Matching Cascade)和新轨迹的确认(confirmed)。Tracks分为确认态(confirmed),和不确认态(unconfirmed),新产生的Tracks是不确认态的;不确认态的Tracks必须要和Detections连续匹配一定的次数(默认是3)才可以转化成确认态。确认态的Tracks必须和Detections连续失配一定次数(默认30次),才会被删除。

        Deepsort算法的工作流程如下图所示:

       整个算法的工作流程如下:

(1)将第一帧次检测到的结果创建其对应的Tracks。将卡尔曼滤波的运动变量初始化,通过卡尔曼滤波预测其对应的框框。这时候的Tracks一定是unconfirmed的。

(2)将该帧目标检测的框框和第上一帧通过Tracks预测的框框一一进行IOU匹配,再通过IOU匹配的结果计算其代价矩阵(cost matrix,其计算方式是1-IOU)。

(3)将(2)中得到的所有的代价矩阵作为匈牙利算法的输入,得到线性的匹配的结果,这时候我们得到的结果有三种,第一种是Tracks失配(Unmatched Tracks),我们直接将失配的Tracks(因为这个Tracks是不确定态了,如果是确定态的话则要连续达到一定的次数(默认30次)才可以删除)删除;第二种是Detections失配(Unmatched Detections),我们将这样的Detections初始化为一个新的Tracks(new Tracks);第三种是检测框和预测的框框配对成功,这说明我们前一帧和后一帧追踪成功,将其对应的Detections通过卡尔曼滤波更新其对应的Tracks变量。

(4)反复循环(2)-(3)步骤,直到出现确认态(confirmed)的Tracks或者视频帧结束。

(5)通过卡尔曼滤波预测其确认态的Tracks和不确认态的Tracks对应的框框。将确认态的Tracks的框框和是Detections进行级联匹配(之前每次只要Tracks匹配上都会保存Detections其的外观特征和运动信息,默认保存前100帧,利用外观特征和运动信息和Detections进行级联匹配,这么做是因为确认态(confirmed)的Tracks和Detections匹配的可能性更大)。

(6)进行级联匹配后有三种可能的结果。第一种,Tracks匹配,这样的Tracks通过卡尔曼滤波更新其对应的Tracks变量。第二第三种是Detections和Tracks失配,这时将之前的不确认状态的Tracks和失配的Tracks一起和Unmatched Detections一一进行IOU匹配,再通过IOU匹配的结果计算其代价矩阵(cost matrix,其计算方式是1-IOU)。

(7)将(6)中得到的所有的代价矩阵作为匈牙利算法的输入,得到线性的匹配的结果,这时候我们得到的结果有三种,第一种是Tracks失配(Unmatched Tracks),我们直接将失配的Tracks(因为这个Tracks是不确定态了,如果是确定态的话则要连续达到一定的次数(默认30次)才可以删除)删除;第二种是Detections失配(Unmatched Detections),我们将这样的Detections初始化为一个新的Tracks(new Tracks);第三种是检测框和预测的框框配对成功,这说明我们前一帧和后一帧追踪成功,将其对应的Detections通过卡尔曼滤波更新其对应的Tracks变量。

(8)反复循环(5)-(7)步骤,直到视频帧结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/562167.html

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

相关文章

SQL语句练习附带答案

首先创建数据库filmclub DROP DATABASE IF EXISTS filmclub;CREATE DATABASE filmclub;USE filmclub;CREATE TABLE category (cid INT PRIMARY KEY AUTO_INCREMENT,cname VARCHAR(20) )CHARSETutf8; CREATE TABLE film (fid INT PRIMARY KEY AUTO_INCREMENT,fname VARCHAR(20)…

ChatGPT和 dalle2 配合生成故事绘本

和 dalle2 配合生成故事绘本 在之前章节中,我们已经尝试过让 ChatGPT 来生成一些故事情节,不管是影视剧还是小说还是游戏都可以。这时候,自然而然的可以联想到:那我们可不可以一步到位,把 ChatGPT 编出来的故事情节&a…

为什么MySQL数据库单表建议最大2KW数据?

文章目录 为什么MySQL数据库单表建议最大2KW数据?一、 Innodb 存储引擎1、数据存储2、数据页的结构 二、 B tree 结构三、 B 树存放数据的行数 为什么MySQL数据库单表建议最大2KW数据? 我们经常会听到一种说法,在MySQL中,数据库单…

Spring Security 中的 CSRF 攻击是什么?如何防止它?

Spring Security 中的 CSRF 攻击是什么?如何防止它? 什么是 CSRF 攻击? CSRF(Cross-Site Request Forgery)攻击是一种常见的网络安全威胁,也称为“跨站请求伪造”攻击。攻击者可以通过某些手段&#xff0…

SpringBoot整合RabbitMQ及其原理分析

上一篇&#xff1a;RabbitMQ基础知识 1、相关依赖 这里无需指定版本号&#xff0c;让其跟着SpringBoot版本走。本示例使用SpringBoot版本号为2.7.10。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-…

SaaS系统平台,如何兼顾客户的个性化需求?

在当今数字化的商业环境中&#xff0c;SaaS系统已经成为企业运营的重要组成部分之一。 SaaS系统平台的好处是显而易见的&#xff0c;可以将业务流程数字化&#xff0c;从而帮助企业提高效率并节省成本。 但是&#xff0c;由于每个企业的业务都不尽相同&#xff0c;所以在选择Sa…

GuLi商城-前端基础ES6

ES6 ES6全称ECMAScript6.0是JavaScript语言的下一代标准。 ECMAScript是浏览器脚本语言的规范&#xff0c;而我们熟悉的各种js语言&#xff0c;如JavaScript则是规范的具体实 现。 新建一个ES6文件夹&#xff0c;shift!按着不动&#xff0c;回车&#xff0c;可以快速生成模…

图神经网络:(处理点云)PPFNet的实现

文章说明&#xff1a; 1)参考资料&#xff1a;PYG官方文档。超链。 2)博主水平不高&#xff0c;如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook和有关文献。超链。提取码8848。 文章目录 前言文献阅读代码实操历史遗留问题 前言 本篇文章接上一篇文章…

【LeetCode: 410. 分割数组的最大值 | 暴力递归=>记忆化搜索=>动态规划 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

这七种常见的路由协议,每一个网络工程师都应该知道!

你好&#xff0c;这里是网络技术联盟站。 路由协议是网络中非常重要的一个概念&#xff0c;它负责将数据包从源节点传递到目的节点。路由协议定义了网络中不同路由器之间的通信规则和数据传输方式&#xff0c;以便有效地将数据包从源地址传输到目标地址。在网络领域中&#xf…

基于无人机辅助边缘计算系统的节能卸载策略

源自&#xff1a;《系统工程与电子技术》 作者&#xff1a;余雪勇 朱烨 邱礼翔 朱洪波 摘 要 针对复杂地形中地面基础设施无法有效提供可靠通信和密集算力的问题,首先提出一种基于无人机(unmanned aerial vehicle, UAV)托管计算资源的卸载方案。考虑用户终端的计算需…

提升网站访问性的10个步骤优化

第一步,检查 不允许空,不允许过长,简洁明了。 是第一个可以访问到内容的元素,所以一定要非常重视。当用户切换浏览器Tab标签的时候,一定最先听到 标记的内容。Title一定要能代表当前页面的主题。这里的要求和SEO最佳实践几乎一致。 第二步,提供文字替代方案。 走查网页…

【LeetCode】238. 除自身以外数组的乘积

238. 除自身以外数组的乘积&#xff08;中等&#xff09; 方法一&#xff1a;左右乘积列表 思路 除了 nums[i] 以外各元素的积&#xff0c;就等同于 nums[i] 左边元素的乘积 * 右边元素的乘积&#xff0c;因此&#xff0c;我们可以计算出两个乘积列表 &#xff0c;最后再经过一…

2023-05-23 题目

1、在java中定义一个无参的构造方法的作用&#xff1a; 在java程序执行子类的构造方法之前&#xff0c;如果是没有super()来调用父类的特定的构造方法&#xff0c;则会调用父类中没有参数的构造方法。 如果java中没有定义无参的方法&#xff0c;且没有指定super()方法&#x…

深眸科技探索AI机器视觉技术,助力密封圈缺陷识别检出率达99.8%

密封圈作为一种具有良好性能的密封材料&#xff0c;在工业领域具有极其广泛的应用&#xff0c;在汽车、船舶、管道、家用电器等多行业都能看见它的身影&#xff0c;广阔的市场需求促就密封圈产业的蓬勃发展。 密封圈属于大批量生产&#xff0c;在生产过程中难免会出现瑕疵品&a…

zabbix监控系统

一、Zabbix概述 1、使用zabbix的原因 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去了解上线发布的结果&#xff0c;和网站的健康状态。 利用一个优秀的监控软件&#xff0c;我们可以: ●通过一个友好的界面进…

vue 3.0使用 iframe 标签引入本地HTML页面,并实现数据交互

文章目录 1. 问题总结2. vue中引入html页面3. vue向html传递数据4. html向vue传递数据 1. 问题总结 最近在做vue的项目时候&#xff0c;需要引入本地html页面&#xff0c;中间遇到了很多问题&#xff0c;费时又费力&#xff0c;因此记录下来&#xff0c;以备不时之需&#xff…

顺序表 ArrayList

目录 1. 概念 2. ArrayList集合框架图 3.ArrayList常见的方法 4. 自己实现ArrayList&#xff08;Integer&#xff09; 4.1 ArrayList构造 4.2 ArrayList容量的扩容 4.3 判断空满 4.4 pos坐标是否合法&#xff08;含有&#xff09; 4.5 ArrayList的增删元素 4.6 包含元…

操作系统原理 —— 死锁的概念(十七)

什么是死锁 什么是死锁&#xff0c;如果你是个程序员&#xff0c;那么这概念肯定是不陌生的&#xff0c;死锁通常是指&#xff0c;在并发环境下&#xff0c;各个进程因竞争资源而造成一种相互等待的现象&#xff0c;导致的结果就是各个进程都处于阻塞状态&#xff0c;无法往下…

老司机解读香农定理、奈奎斯特定理、编码与调制

工程师都会考虑一个问题&#xff1a;信道上到底可以传输多大的数据&#xff0c;或者指定的信道上的极限传输率是多少。这就是信道容量的问题。例如&#xff0c;在xDSL系统中&#xff0c;我们使用的传输介质是仅有几兆带宽的电话线&#xff0c;而上面要传送几兆、十几兆甚至几十…