目标追踪学习经验总结

标题目标追踪算法学习经验总结
  最近对目标追踪算法进行了学习,以下是我的学习经验,如有不对之处,欢迎大家指正。

1、简介

1.1 定义

  目标跟踪是通过分析视频图片序列,对检测出的各个候选目标区域实施匹配,定位出这些目标在图像中的坐标位置,然后得到一系列相同目标的连续变化的过程。

1.2 分类

单目标跟踪:给定某视频序列初始帧的目标大小与位置的情况下,预测后续帧中该目标的大小与位置。
多目标跟踪(MOT):追踪多个目标的大小和位置,且每一帧中目标的数量和位置都可能变化。
重识别(Re-ID):即给定一个监控行人图像,检索跨设备下的该行人图像。旨在弥补固定的摄像头的视觉局限,并可与行人检测/行人跟踪技术相结合。

1.3 难点

1.遮挡与消失;
2.形态变化;
3.运动模糊;
4.复杂背景;
5.准确性与实时性。

2、多目标追踪

2.1 分类

在线追踪:仅利用当前帧与过去帧的信息,与人眼类似;
离线追踪:可以利用当前帧、过去帧、未来帧的信息进行追踪。
  主流方法是TBD(Tracking-by-Detection),即先进行目标检测,再对生成的检测框进行匹配跟踪。还有一种算法是JDE,即使用类似检测的算法直接实现跟踪。

2.2 基本步骤

1.给定视频的原始帧;
2.运行对象检测器以获得对象的边界框;
3.对于每个检测到的物体,计算出不同的特征,通常是视觉和运动特征;
4.相似度计算步骤计算两个对象属于同一目标的概率;
5.关联步骤为每个对象分配数字ID。

2.3 主要评价指标

一、MOTA(MOT Accuracy)
  衡量检测物体和保持轨迹方面的性能
在这里插入图片描述
FN:未检测到的GT框数目(漏检)
FP: 不能与GT框相匹配的预测框数量;
IDSW:GT框所分配的id变化次数。
  MOTA考虑了FN、FP、ID Switch 三个问题,对所有帧求和,缺点是FN、FP的比重过大、更考虑检测器的性能。
二、MOTP(MOT Precision)
  衡量定位精度(检测器性能)
在这里插入图片描述
  分母为t帧总共匹配的数目,分子的d表示检测框与实际GT框之间的距离。
三、ID Scores
IDP(识别精确度):整体评价精确度的好坏。
在这里插入图片描述
IDF1(平均数比率):正确的目标检测数与真实数和计算检测数和的平均数比率。
在这里插入图片描述
IDR(识别召回率):当IDF1-score最高时正确预测的目标数与真实目标数之比。
在这里插入图片描述
IDTP:在整个视频中检测目标被正确分配的数量;
IDFN:在整个视频中检测目标被漏分配的数量;
IDFP: 在整个视频中检测目标被错误分配的数量。

3、经典算法

3.1 Sort

  全称(Simple Online and Realtime Tracking)
  由目标检测、卡尔曼滤波、匈牙利匹配算法组成。
  优缺点:原理简单、易于实现;但当目标物被遮挡时,准确率急剧下降。

3.1.1 目标检测

  原论文使用Faster R-CNN,也可以使用YOLO系列等等目标检测模型。

3.1.2 卡尔曼滤波

定义:是一个去噪算法,结合先验经验与当前测量更新的状态估计算法;在SORT中,即将数学模型根据上一帧轨迹进行预测的预测框与当前帧对应的检测器检测的检测框进行融合,找到最优估计值。
作用:检测器所得到的预测框不够准确; 俩帧之间的间距很小,目标物的外形、运动特征具有较高相似度,是可以通过上一帧的信息对当前帧的位置进行预测。
简单流程
在这里插入图片描述

3.1.3 匈牙利匹配

  匈牙利算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。它的基本原则就是在原有匹配(最开始的按优先顺序匹配)基础上重新分配,看是否可以添加一个新的匹配。
  简单原理:假设存在俩个集合S,T。S中有m个元素,T中有n个元素,集合内部的元素不相连,匈牙利算法则是要把俩个集合中的元素进行俩俩匹配。匹配原则为:“损失最小”。
  在SORT中,将检测器在当前帧检测到的m个检测框与n个轨迹预测的预测框进行IOU距离计算,得到n*m的IoU代价矩阵,其中COSTij就表示预测框i与检测框j的IOU损失;去除小于置信度阈值的元素;再使用匈牙利算法进行递归匹配,最终得到三个集合,分别为匹配上的轨迹,未匹配上的轨迹,未匹配上的检测框。

3.1.4 算法流程

在这里插入图片描述

3.2 DeepSort

在SORT基础上进行改进,相比于SORT,多了级联匹配,以及新轨迹确认。

3.2.1 马氏距离

运动模型、又称为协方差距离,可以有效计算俩个未知样本集相似度的方法,度量预测和检测的匹配程度。
在这里插入图片描述
其中,d和y分别代表测量分布和预测分布;S为两个分布之间的协方差矩阵,它是一个实对称正定矩阵。

3.2.2 余弦距离

当物体的运动状态的不确定性较低时,可以使用马氏距离。但是当目标物突然加减速,运动状态快速变化时,就要使用余弦距离来度量预测与检测之间的表观特征间的距离。
DeepSort为每个目标物设计了一个“深度外观特征描述符”,是一个在行人重识别数据集上离线训练的 ReID 网络提取到的 128 维单位特征向量(模长为 1 )。对于每个追踪器 tracker,保留它最后 100 个与检测框关联成功的外观特征描述符集合 R 并计算出它们和检测框的最小余弦距离:
在这里插入图片描述
同上,余弦距离这部分也使用了一个指示器,如果余弦距离小于,则认为匹配上。这个阈值在代码中被设置为0.2(由参数max_dist控制),这个属于超参数,在人脸识别中一般设置为0.6。

3.2.3 级联匹配

目的:当物体被长时间遮挡时,卡尔曼滤波器不能对目标状态准确预测。但是当两个轨迹竞争同一检测框时,其中一个是长期丢失目标的轨迹A,一个是短期丢失目标的轨迹B,马氏距离会带来较大的不确定性。会导致A优先于B被匹配,但这很可能是错误匹配,造成目标物ID的连续变换。因此,Deep Sort引入了级联匹配,来赋予更少丢失目标的轨迹的优先匹配权。
步骤
1、输入跟踪目标轨迹集合T,当前帧检测器检测的检测框集合D,允许连续被遮挡的最大帧数A_max。
2、计算T与D的运动及外观匹配度矩阵C;
在这里插入图片描述
可以通过超参数λ来控制每个指标对合并成本的影响。在论文中,发现当摄像机运动较大时,将λ=0 ,即只使用余弦距离,而不使用马氏距离。马氏距离仅作为门控矩阵过滤马氏距离较远的检测框。
3、计算T与D的阈值矩阵;
4、对成功匹配集合P、未成功匹配预测框集合U进行初始化;
5、开始匹配,对于没丢失过的轨迹优先匹配,丢失最久的轨迹最后匹配。
在这里插入图片描述

3.2.4 算法流程

激活轨迹:已连续俩帧以上追踪到的轨迹;
未激活轨迹:新轨迹,仅一帧检测到的轨迹;
失追轨迹:丢失目标物的轨迹(age<A_max)。
age:丢失目标的帧数;
A_max:允许最大丢失目标帧数。
在这里插入图片描述

3.3 ByteTrack

  相比于DeepSORT,ByteTrack认为检测器所得到的低置信度的检测框仍有作用,很可能是目标物被部分遮挡而导致的低置信度,因此算法对低分的检测框也进行了一次匹配。
  同时,相比于DeepSORT,ByteTrack仅在检测器部分使用了深度学习算法,而跟踪器部分并没有使用。

3.3.1 算法流程

在这里插入图片描述

3.4 BoT-Sort

  在ByteTrack的基础上进行改进,拥有BoT-SORT、BoT-SORT-ReID(多了一个重识别)俩个版本。
  改进:1、卡尔曼滤波的状态变量改进;2、加入相机运动补偿(CMC),即利用稀疏光流(目标外画面中的关键点)来获得俩帧之间画面的移动,进而补偿卡尔曼滤波算法的状态估计过程;3、IoU距离与Re-ID特征的余弦距离的融合。

3.4.1 KF中的状态向量改进

在这里插入图片描述

3.4.2 相机运动补偿

  动态相机运动场景下,目标边界框的位置可能发生剧烈变化,在静态情况下,也有可能由于风等原因造成相机移动。
  使用OpenCV中的全局运动补偿(GMC),将前后俩帧的图像配准转化为相机的运动在二维平面上的投影,即通过转化坐标系,将后一帧的图像进行投影,使其与前一帧的图像配准。

3.4.3 IoU距离与ReID特征的余弦特征融合

在这里插入图片描述在这里插入图片描述

没有使用DeepSort中的超参数λ。

3.4.4 算法流程

在这里插入图片描述

4 总结与对比

4.1 参数对比

BoTSort论文中
在这里插入图片描述

4.2 总结

在这里插入图片描述

  目标检测器的性能很大程度上影响整个跟踪算法的精度,如ByteTrack也是由于检测器精度够高,才能对低分检测框进行利用;
  Re-ID能够一定程度上解决短时间内目标遮挡的现象,但会降低模型运行速度;
  相机运动补偿可以提高一定的跟踪精度。

5、 参考链接

1、实时目标追踪:ByteTrack算法步骤详解和代码逐行解析
2、【论文阅读5】BoT-SORT:Robust Associations Multi-Pedestrian Tracking
3、【论文-目标追踪】BoT-SORT: Robust Associations Multi-Pedestrian Tracking
4、多目标跟踪算法 | DeepSort
5、多目标跟踪入门篇(1):SORT算法详解
6、深入浅出——零基础一文读懂DeepSORT(原理篇)
7、目标追踪—deepsort原理讲解
8、目标跟踪概念、多目标跟踪算法SORT和deep SORT原理
9、知乎-----多目标跟踪(MOT)入门

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nat综合实验

路漫漫其修远兮,吾将上下而求索。 实验目的如图 实验思路&#xff1a;配置内网&#xff0c;再配置外网&#xff0c;再做nat clien1配置 clien2配置 pc3配置 lsw1配置 sysname lsw1 # vlan batch 10 20 30 # interface MEth0/0/1 # interface Eth-Trunk1port link-type trunkp…

数据结构——排序

排序算法 前言一、认识排序排序的概念常见的排序算法排序实现的接口 二、常见排序算法的实现插入排序直接插入排序希尔排序 选择排序直接选择排序堆排序 交换排序冒泡排序 三、各个排序的效率比较四、完整代码演示&#xff1a;shell_insert.hshell_insert.ctest.c 总结 前言 来…

怎样在CSDN插入代码块 怎么变色?

添加代码块&#xff0c;通常有三种方式&#xff1a; 文章目录 ①点击 工具栏中的代码块 代码块 </>&#xff0c;② 快捷键 ctrlshiftk③ 先粘贴上代码&#xff0c;在选中 ctrlshiftk4 如果代码没有变彩色 ①点击 工具栏中的代码块 代码块 </>&#xff0c; 例如 选…

Docker版部署RocketMQ开启ACL验证

一、拉取镜像 docker pull apache/rocketmq:latest 二、准备挂载目录 mkdir /usr/local/rocketmq/data mkdir /usr/local/rocketmq/conf 三、运行 docker run \ -d \ -p 9876:9876 \ -v /usr/local/rocketmq/data/logs:/home/rocketmq/logs \ -v /usr/local/rocketmq/data…

Redis之zset类型

文章目录 Redis之zset类型1. 添加元素/获取集合中元素的数量2. 按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素3. 获取元素的分数4. 删除元素5. 获取指定分数范围的元素6. 增加某个元素的分数7. 获得指定分数范围内的元素个数8. 获取元素的排名9. 按照排名范围…

Hive【Hive(二)DML】

启动 hive 命令行&#xff1a; hive DML 数据操作 1、数据导入 1.1、向表中装载数据&#xff08;load&#xff09; 语法&#xff1a; hive> load data [local] inpath 数据的path [overwrite] into table student [partition (partcol1val1,…)];&#xff08;1&#x…

轻松上手Docker:学习如何创建和运行自己的Docker容器

文章目录 轻松上手Docker&#xff1a;学习如何创建和运行自己的Docker容器容器的介绍Docker的技术架构容器的工作机制&#xff08;Docker&#xff09;容器的关键技术 - NamespaceNamespace隔离说明 容器的关键技术 - CgroupDocker环境搭建1&#xff09;安装基础软件包2&#xf…

十四,间接漫反射用到球体中

间接光照分为间接漫反射和间接镜面反射。 辐照度图是用来适用于间接漫反射的。 直射光也有漫反射&#xff0c;对比下两者。 直接光kD * albedo / PI * radiance * NdotL&#xff1b;其中radiance * NdotL是光照, 间接光&#xff1a; kD * texture(irradianceMap, N).rgb* al…

SD-MTSP:萤火虫算法(FA)求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、萤火虫算法&#xff08;FA&#xff09;简介 萤火虫算法(Firefly Algorithm&#xff0c;FA)是Yang等人于2009年提出的一种仿生优化算法。 参考文献&#xff1a;田梦楚, 薄煜明, 陈志敏, et al. 萤火虫算法智能优化粒子滤波[J]. 自动化学报, 2016, 42(001):89-97. 二、单仓…

八大排序详解

目录 1.排序的概念及应用 1.1 排序的概念 1.2 排序的应用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 直接插入排序 2.1.1 基本思想 2.1.2 动图解析 2.1.3 排序步骤&#xff08;默认升序&#xff09; 2.1.4 代码实现 2.1.5 特性总结 2.2 希尔排序 2.2.1 基本思…

HarmonyOS开发:封装一个便捷的Log工具类

前言 日志打印&#xff0c;没什么好说的&#xff0c;系统已给我们提供&#xff0c;且调用也是非常的简单&#xff0c;我们封装的目的&#xff0c;一是扩展&#xff0c;打印一些不常见的类型&#xff0c;比如格式化json&#xff0c;使得日志看起来比较好看&#xff0c;二是&…

GEO生信数据挖掘(二)下载基因芯片平台文件及注释

检索到目标数据集后&#xff0c;开始数据挖掘&#xff0c;本文以阿尔兹海默症数据集GSE1297为例 目录 下载平台文件 1.AnnotGPL参数改为TRUE,联网下载芯片平台的soft文件。&#xff08;国内网速奇慢经常中断&#xff09; 2.手工去GEO官网下载 转换芯片探针ID为gene name 拓…

智能合约经典漏洞案例,xSurge 重入漏洞+套利 综合运用

智能合约经典漏洞案例&#xff0c;xSurge 重入漏洞套利 综合运用 1. 事件介绍 xSurge 被攻击事件发生在 2021-08-16 日&#xff0c;距离今天已经近 1 年了&#xff0c;为什么还会选择这个事件进行分析&#xff1f;主要是这个攻击过程很有意思&#xff0c;有以下的几点思考 使…

UG\NX二次开发 通过点云生成曲面 UF_MODL_create_surf_from_cloud

文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 感谢粉丝订阅 感谢 Rlgun 订阅本专栏,非常感谢。 简介 有网友想做一个通过点云生成曲面的程序,我们也试一下 效果 代码 #include "me.hpp" /*HEAD CREATE_SURF_FROM_CLOUD CCC UFUN */

【2023年11月第四版教材】第15章《风险管理》(合集篇)

第15章《风险管理》&#xff08;合集篇&#xff09; 1 章节说明2 管理基础2.1 风险的属性2.2 风险的分类★★★2.3 风险成本★★★2.4 管理新实践 3 管理过程4 管理ITTO汇总★★★5 过程1-规划风险管理6 过程2-识别风险6.1 识别风险★★★6.2 数据收集★★★6.3 数据分析★★★…

基于微信小程序快递取件上门预约服务系统设计与实现(开题报告+任务书+源码+lw+ppt +部署文档+讲解)

文章目录 前言运行环境说明用户的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示代码参考论文参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;…

范数Norm-衡量向量大小的方法

性质 非负性: 范数的值总是非负的,且当且仅当向量全为零时,范数的值为零。 齐次性: 对于任意实数α,有 三角不等式: 对于任意向量x和y,有 常见范数 L1: 向量所有元素绝对值的和,权重稀疏 L2:欧几里得范数,权重平滑 无穷范数:表示向量中最大的元素 为什么使用范…

【VUE复习·6】监视属性watch:用途、两种写法、简写、应用时注意事项(重点)、深度监视(重点)

总览 1.监视属性是用来干什么的&#xff1f; 2.监视属性的两种写法 3.应用时注意事项 4.深度监视 一、监视属性是用来干什么的&#xff1f; 1.用途 监视一个值&#xff08;可以是基本属性 data&#xff0c;或者是计算属性 computed&#xff09;是否被改变。如果此值被改变&…

C语言-变量与数据类型

一、基本语法 1、注释 注释&#xff08;Comments&#xff09;可以出现在代码中的任何位置&#xff0c;用来向用户提示或解释代码的含义。程序编译时&#xff0c;会忽略注释&#xff0c;不做任何处理。 C 语言有两种注释方式&#xff1a; &#xff08;1&#xff09;单行注释 …

3+单基因泛癌+铜死亡纯生信思路

今天给同学们分享一篇3单基因泛癌铜死亡纯生信思路的生信文章“Systematic pan-cancer analysis identifies SLC31A1 as a biomarker in multiple tumor types”&#xff0c;这篇文章于2023年3月27日发表在BMC Med Genomics 期刊上&#xff0c;影响因子为3.622。 溶质载体家族3…