目标跟踪——Deep Sort算法原理浅析

2023-05-16

目标跟踪文章目录

目标跟踪——SORT算法原理浅析
目标跟踪——Deep Sort算法原理浅析
基于yolov5与Deep Sort的流量统计与轨迹跟踪


文章目录

  • 目标跟踪文章目录
  • 前言
  • 多目标跟踪主要流程
  • Deep Sort
  • 总结


前言

背景:Deep Sort是基于Sort目标跟踪进行的改进,它引入深度学习模型,在实时目标跟踪过程中,提取目标的外观特征进行最近邻近匹配。

目的:改善有遮挡情况下的目标追踪效果;同时,也减少了目标ID跳变的问题。

核心思想:使用递归的卡尔曼滤波和逐帧的匈牙利数据关联。


多目标跟踪主要流程

在这里插入图片描述

  1. 给定视频原始帧。
  2. 运行目标检测器如Faster R-CNN、SSD、YOLOv5等进行检测,获取目标检测框。
  3. 将所有目标框中对应的目标抠出来,进行特征提取(包括表观特征或者运动特征)。
  4. 进行相似度计算,计算前后两帧目标之间的匹配程度(前后属于同一个目标的之间的距离比较小,不同目标的距离比较大)
  5. 数据关联,为每个对象分配目标的ID。

因此绝大多数MOT算法无外乎就这四个步骤:①检测 ②特征提取、运动预测 ③相似度计算 ④数据关联

其中影响最大的部分在于检测,检测结果的好坏对于最后指标的影响是最大的。

Deep Sort

DeepSort中最大的特点是加入外观信息,借用了ReID领域模型来提取特征,减少了ID switch的次数。整体流程图如下:
在这里插入图片描述
从上图可以看出,Deep SORT算法在SORT算法的基础上增加了级联匹配(Matching Cascade)+新轨迹的确认(confirmed)。总体流程为:

  • 卡尔曼滤波器预测轨迹Tracks
  • 使用匈牙利算法将预测得到的轨迹Tracks和当前帧中的detections进行匹配(级联匹配和IOU匹配)
  • 卡尔曼滤波更新

其中上图中的级联匹配展开如下:

在这里插入图片描述
上图非常清晰地解释了如何进行级联匹配,上图由虚线划分为两部分:

上半部分中计算相似度矩阵的方法使用到了外观模型(ReID)和运动模型(马氏距离)来计算相似度,得到代价矩阵,另外一个则是门控矩阵,用于限制代价矩阵中过大的值。

下半部分中是是级联匹配的数据关联步骤,匹配过程是一个循环(max age个迭代,默认为70),也就是从missing age=0到missing age=70的轨迹和Detections进行匹配。也就是说,对于没有丢失过的轨迹赋予优先匹配的权利,而丢失的最久的轨迹最后匹配。通过这部分处理,可以重新将被遮挡目标找回,降低被遮挡然后再出现的目标发生的ID Switch次数。

将Detection和Track进行匹配,所以出现几种情况:

  1. Detection和Track匹配,也就是Matched Tracks。普通连续跟踪的目标都属于这种情况,前后两帧都有目标,能够匹配上。
  2. Detection没有找到匹配的Track,也就是Unmatched Detections。图像中突然出现新的目标的时候,Detection无法在之前的Track找到匹配的目标。
  3. Track没有找到匹配的Detection,也就是Unmatched Tracks。连续追踪的目标超出图像区域,Track无法与当前任意一个Detection匹配。
  4. 以上没有涉及一种特殊的情况,就是两个目标遮挡的情况。刚刚被遮挡的目标的Track也无法匹配Detection,目标暂时从图像中消失。之后被遮挡目标再次出现的时候,应该尽量让被遮挡目标分配的ID不发生变动,减少ID Switch出现的次数,这就需要用到级联匹配了。

总结

Deep Sort是基于Sort目标跟踪进行的改进,它引入深度学习模型,在实时目标跟踪过程中,提取目标的外观特征进行最近邻近匹配。其可以达到实时跟踪效果,可被应用于工业开发。
下一篇文章计划讲解下Deep Sort的实际应用(基于yolov5的目标实时计数与轨迹展示)

参考文档:
https://zhuanlan.zhihu.com/p/97449724
https://www.cnblogs.com/pprp/articles/12736831.html
https://guo-pu.blog.csdn.net/article/details/122827312?spm=1001.2014.3001.5502

如果阅读本文对你有用,欢迎一键三连呀!!!
2022年4月7日11:48:38
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

目标跟踪——Deep Sort算法原理浅析 的相关文章

  • VC开发非MFC程序内存泄漏跟踪代码

    在可执行模块源码中重写new和delete函数 xff0c 在里面插入跟踪代码 xff0c 程序最后t退出前保存统计信息 下面的代码基本能解决问题 xff0c 但程序运行时较慢 xff0c 作为测试时使用可以满足要求 namespace f
  • Windows 为什么需要资源句柄

    Windows 为什么需要资源句柄 句柄存在于句柄表中 xff0c 它指向一个内存池中的一个数据结构实例 句柄的用户无法直接修改 句柄指向数据的值 xff0c 一定程度上保证了数据的安全性 windows如果修改了数据结构 xff0c 由于
  • armadillo + openblas 编译

    1 编译openblas 需要先安装VS2019和intel的免费fortran编译器 2 编译openblas获得lopenblas lib静态库就好了 xff0c 其他项目报错不管他 3 安装该lib库到合适的目录下 xff0c 比如
  • 成员函数指针编程两例

    今天学了一下成员函数指针编程 xff0c 特将代码记在此处 xff0c 代码不太严格 xff0c 阅读过的网友不要简单抄录 例子1 xff1a include 34 stdafx h 34 class CModule typedef voi
  • 处理对话框WM_NCCALCSIZE消息,调用SetWindowPos函数给对话框加上表头

    结合两者 xff0c 可以实现给对话框加上表头 另一种解决方案是在对话框标题栏下创建表头控件 xff0c 一般为CStatic的派生类 xff0c 并将对话框原来的控件都往下移动 xff0c 之后拉长窗口 本人使用了上面的第一种方法 xff
  • 简单的工作者线程封装

    1 基类 class CWorkerThread public CObject DECLARE DYNAMIC CWorkerThread public CWorkerThread m pHost 61 NULL virtual CWork
  • MFC中非MDI子框架窗口

    框架窗口也可以做为界面中的子窗口 创建时要加入WM CHILD属性 下面为示例 1 主框架窗口 include 34 MyChildFrm h 34 class CMainFrame public CFrameWnd public CMai
  • 采用多重继承模仿文档视图结构

    1 数据类 include lt list gt class IJxInterface class CJxDataSet public CCmdTarget DECLARE DYNCREATE CJxDataSet CJxDataSet p
  • MFC程序崩溃地址抓取代码(VC6通过)

    1 更改AfxWinMain函数 stdafx cpp source file that includes just the standard includes MyMainFunc pch will be the pre compiled
  • 打印成员函数地址一例

    代码很简单 static bool bGet 61 false CMyMainFuncView CMyMainFuncView if bGet CString str str Format 34 CMyMainFuncView PreCre
  • 模拟MFC命令消息机制的事件机制

    为了携带更多参数在线程间调用过程 xff0c 我最近模仿windows的MFC命令机制 xff0c 写了一个简单的事件机制 分为事件消息接收器 xff0c 事件转发器 xff0c 事件处理器等 主要代码如下 1 JrEvent h prag
  • 一种多线程环境下的参数访问方法

    应用临界区锁控制访问 xff0c 并利用了模板参数 xff0c 方便应用 template lt typename T gt class CJrParam public CJrParam void InitializeCriticalSec
  • MFC使用API函数GdiAlphaBlend绘制半透明控件

    示例代码如下 if m hBrushBackground HDC back CRect rcx 61 rcc back 61 CreateCompatibleDC dc HBITMAP bmpx bmpx 61 CreateCompatib
  • 近日做的皮肤界面

  • 给ThemeButton加上图标

    采用 DrawThemeBackground API函数可以给ThemeButton加上图标 xff0c 类似以前Delphi风格的按钮 代码及界面效果如下 xff0c 不难 xff0c 就不多解释了 LRESULT CSkinWnd Bu
  • Swift设计模式之解释器模式

    转自 Swift设计模式 原文 Design Patterns In Swift span class hljs comment 解释器模式 span span class hljs comment 百度百科 xff1a 给定一个语言 xf
  • VC 如何在一个矩形框中居中显示一个长字符串

    VC 如何在一个矩形框中居中显示一个长字符串 先使用 DT WORDBREAK 和 DT CALCRECT标志位调用 DrawText函数获得文字的外框尺寸 再使用将该外框尺寸居中显示实际绘制到窗口矩形框中 示例代码和界面效果图如下所示 x
  • 使用开源代码写了一个C++文件阅读编辑器

    源代码在下面这个链接里 http download csdn net detail joshua0137 5022988 欢迎大家使用和提建议
  • 汇编实验1——利用8255实现LED的流水点亮实验

    前言 做这个实验耗时近半天 xff0c 其中安装虚拟机5小时 xff0c 编写程序3小时 踩过不少的坑 xff0c 比如说一开始一直显示不出来usb插件 xff0c 最后发现是开关没开 xff1b 又比如 xff0c 程序逻辑没有问题 xf
  • Python序列的切片操作符使用

    说明 xff1a 切片操作符在python中的原型是 start stop step 即 xff1a 开始索引 结束索引 步长值 开始索引 xff1a 同其它语言一样 xff0c 从0开始 序列从左向右方向中 xff0c 第一个值的索引为0

随机推荐

  • [N1盒子] Phicomm-N1 斐讯 N1 NAS 打造指南

    N1盒子 Phicomm N1 斐讯 N1 NAS 打造指南 word复制过来不带图片 xff0c 需要图片的见百度盘下载 第 一 章 硬件介绍 3 1 1 裴讯N1介绍 3 1 2 产品参数 3 1 3 产品外观 6 1 3 1 整体外观
  • 32.输出10个整数中的最大值和最小值

    编程题目 xff1a 32 编写一个程序 xff0c 接受用户输入的10个整数 xff0c 并输出这10个整数的最大值和最小值 示例代码 xff1a span class token keyword package span program
  • Flutter 学习第四天 第一个flutter项目

    这个转自我自己的有道云 想看图片去那里 文档 xff1a Day2 26 Dart 面向对象 异步语法 md 链接 xff1a http note youdao com noteshare id 61 1dc3ee54f0ddd36e174
  • windows系统 Mysql忘记root密码的解决方法

    1 以系统管理员身份运行cmd 2 查看mysql是否已经启动 xff0c 如果已经启动 xff0c 就停止 xff1a net stop mysql 3 切换到MySQL安装路径下 xff1a D WAMP MySQL 5 6 36 bi
  • 将Centos6的python2.6升级到2.7

    CentOS 6 6自带的是Python 2 6 6 xff0c 而编译llvm需要Python 2 7以上 checking for python usr bin pythonchecking for python gt 61 2 7 n
  • 树莓派与笔记本用远程桌面连接(Xrdp远程桌面服务)

    树莓派与笔记本用远程桌面连接 xff08 Xrdp远程桌面服务 xff09 输入命令 xff1a sudo apt get install xrdp 用以安装xrdp 安装完成后 xff0c 输入如下命令 xff1a sudo etc in
  • 方面级情感分析论文阅读《A Survey on Aspect-Based Sentiment Analysis: Tasks, Methods, and Challenges》

    文章目录 文章简介基本知识Sentiment or Emotion名词解释 方面级情感分析任务单个任务Aspect Term Extraction ATE Aspect Category Detection ACD Aspect Opini
  • 无法获取unionid时判断是否是同一用户的方法

    思路分享 xff1a 判断是否是历史用户 适用于用户数据迁移 做过微信系产品开发的同学都知道微信有一套账户体系 用户在每个应用都有一个openid xff0c 如果想打通账号体系就必须注册微信开放平台 xff0c 关联公众号或者小程序才能获
  • Rust的所有权

    什么是所有权 所有权是Rust特有的核心概念 xff0c 这个特性让Rust即使没有垃圾回收机制也能够编写出内存安全的程序 因而理解所有权的工作机制对于学习Rust非常重要 与所有权相关的内容还有 xff1a 借用 xff0c 切片和数据的
  • Python 序列之切片(slice)

    本文为Python列表切片功能的学习笔记 xff0c 供您参考 基本用法 Python中支持切片操作的序列类型有列表 xff08 list xff09 元组 xff08 tuple xff09 以及字符串 xff08 str xff09 以
  • Debian 查看与修改IP,设置多ip,network与networkManager配置

    目录 Debian网络配置network Debian网络配置NetworkManager 当前用的是Debian桌面版 xff0c 网络配置network与NetworkManager xff0c 默认网络采用networkManager
  • 树莓派入门(2)树莓派的远程控制

    目录 前言SSHPuTTY远程登录树莓派远程桌面连接VNC与树莓派进行文件传输 前言 在计算机网络中 xff0c 我们可以通过使用C S xff08 客户端 服务器 xff09 模式来实现远程控制 我们如果想用其他电脑来远程控制树莓派 xf
  • “我们“App功能介绍

    系统及开发配置 系统 xff1a Android系统 开发工具 xff1a Android Studio4 0 运行要求 xff1a Android系统5 1及以上 软件介绍 一款娱乐的 xff0c 记录您和爱人纪念日的软件 其中包含经典的
  • Linux/Debian下 root 用户没有声音的解决

    Linux Debian下 root 用户没有声音的解决 问题 xff1a 新装的Debian11 5 下root用户一直没有声音 背景 xff1a Debian11 5 为U盘dvd iso 版本 xff0c root用户下pulse a
  • dmpython win7安装遇到的问题

    系统环境 xff1a win7 python3 6 dm8 20230106 x86 win 64 安装过程及问题 xff1a 打开cmd进入达梦数据库安装目录D soft dm dm8 drivers python dmPython xf
  • python实现队列

    文章目录 队列实现操作实现 队列实现 队列是一种先进先出的数据结构 xff0c 本文用顺序表实现队列 操作 Queue 创建一个空的队列enqueue item 往队列中添加一个item元素dequeue 从队列头部删除一个元素is emp
  • vscode当前工作区不受信任,因此已禁用此扩展

    openGL系列文章目录 文章目录 openGL系列文章目录前言一 解决步骤首先点击左边的 扩展 xff0c 或者使用快捷键 xff1a ctrl 43 shift 43 x2 添加插件信任选择扩展工作区信任 前言 在vscode中安装插件
  • python实现二叉树的创建

    文章目录 二叉树的基本概念二叉树的性质 特性 二叉树的节点表示以及二叉树的创建1 二叉树的节点表示2 二叉树的创建 二叉树的基本概念 二叉树是每个节点最多有两个子树的树结构 通常子树被称作 左子树 xff08 left subtree xf
  • 目标跟踪——SORT算法原理浅析

    目标跟踪文章目录 目标跟踪 SORT算法原理浅析 目标跟踪 Deep Sort算法原理浅析 基于yolov5与Deep Sort的流量统计与轨迹跟踪 文章目录 目标跟踪文章目录SORT算法卡尔曼滤波匈牙利算法 SORT核心算法流程总结 SO
  • 目标跟踪——Deep Sort算法原理浅析

    目标跟踪文章目录 目标跟踪 SORT算法原理浅析 目标跟踪 Deep Sort算法原理浅析 基于yolov5与Deep Sort的流量统计与轨迹跟踪 文章目录 目标跟踪文章目录前言多目标跟踪主要流程Deep Sort总结 前言 背景 xff