目前目标跟踪算法研究202308

目标跟踪算法综述——附各算法源码和论文


概述

TBD(two-shot):SORT、DeepSORT、StrongSORT、ByteTrack、OC-SORT
JDE(one-shot):BoT-SORT、

0 MutiSORT(多目标跟踪策略)

0.1 track+detection

训练一个网络使它最小化类内误差,最大化类间误差。

1 DeepSORT

1.1 原理

1.1.1 SORT(2016)

SORT论文:SIMPLE ONLINE AND REALTIME TRACKING_2016

卡尔曼(Kalman)预测(tracks)+目标检测 ==> 匈牙利匹配。

SORT没有用到Box框内的特征。

存在的问题:身份交换(IDswitch)

kalman滤波器(采用匀速模型和线性观测模型)预测更新轨迹,该算法将目标的运动状态定义为8个正态分布的向量。

1.1.2 DeepSORT(2017)

DeepSORT论文:SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC

卡尔曼预测(tracks)+目标检测(detection)和数据关联(当前帧detetion和confirmed track确认的轨迹Bbox进行数据关联) ==> 匈牙利匹配。

突破:①加入外观信息,借用了ReID领域模型来提取特征,减少了ID switch的次数。②匹配策略同时考虑运动信息和外观特征(CNN)。

在IOU Match之前(利用了外观特征和马氏距离)做了一次额外的级联匹配。使用马氏距离来评测预测的Kalman状态和新来的状态。

匹配后,仍存在两种状态:

① 匹配失败的detections:新出现的目标或长时间遮挡后出现的目标。对其建立new tracks,对new tracks设置为unconfirmed,并对其进行第三次考察,是实际目标将unconfirmed修改为confirmed。

② 匹配失败的tracks:若是unconfirmed则删除该track,若为confirmed则设置寿命(max_age)。

1.1.3 StrongSORT(2022)

github地址:mirrors / dyhBUPT / StrongSORT · GitCode

StrongSORT论文:StrongSORT: Make DeepSORT Great Again

​ StrongSORT采用BoT作为更强大的外观特征提取器:与DeepSORT中使用的简单CNN不同,BoT使用ResNeSt50骨干模型。更能够区分个体之间的特征。

​ 在匹配成本矩阵时,作为一个简单的线性分配问题来解决,而没有采用DeepSORT中使用的匹配级联。

​ 认为vanilla卡尔曼滤波器是不稳定的。为了考虑检测噪声尺度上的信息,借用了NSA Kalman算法(提出了自适应计算噪声协方差的公式)。
R k ~ = ( 1 − c k ) R k \widetilde{R_k} = (1-c_k)R_k Rk =(1ck)Rk
其中, R k R_k Rk是预设的常数测量噪声协方差, c k c_k ck是状态 k k k 的检测置信度得分。

​ 使用外观特征距离和运动信息来进行匹配,代价矩阵是外观模型和运动模型代价的加权。

1.2 改进版本:StrongSORT

StrongSORT是DeepSORT的改进

对DeepSORT从detection、embedding和association几个方面进行改进,改进结果称为StrongSORT。

(1)在外观分支,BoT+ResNeSt50代替CNN得到外观特征;用EMA代替feature bank更新外观状态。

(2)在运动分支,使用ECC作相机运动补偿;另外,寻常的卡尔曼滤波容易受到低质量检测的影响并忽视有关检测噪音尺度的信息,所以借用NSA卡尔曼算法所提出的一种适应性计算噪音协方差公式 R k ~ \widetilde{R_k} Rk

(3)用外观和运动信息解决配对问题,而不仅仅用外观信息。成本矩阵C(Cost Matrix)是外观成本 A a A_a Aa和运动成本 A m A_m Am的权重和。λ = 0.98, C = λ A a + ( 1 − λ ) A m C=λ A_a+(1-λ )A_m C=λAa+(1λ)Am

2 BoT-SORT (2022.6)

github地址: https://github.com/NirAharon/BOT-SORT

论文地址:https://arxiv.org/pdf/2206.14651.pdf

论文名称:BoT-SORT: Robust Associations Multi-Pedestrian Tracking

2.1 原理

在这里插入图片描述

3 ByteTrack

详见: ByteTrack算法原理及流程_爱吃油淋鸡的莫何的博客-CSDN博客

3.1 方法

1 对当前帧中(置信度高于最低阈值的)所有检测框,根据置信度中间阈值分成 高置信度检测框 和 低置信度检测框。(几乎保留所有检测框进行轨迹匹配)

2 对于高置信度的检测框,很容易关联到之前的轨迹中

(2.1)使用当前帧的检测框和上一帧的卡尔曼滤波预测(或估计)结果,使用IOU计算相似度(或者如果有用ReID的话,会计算特征间距离计算相似度)。

(2.2)基于相似度采用匈牙利算法进行匹配。

(2.3)要保留未匹配到轨迹的高置信度检测框(即当前帧剩的检测框) 和 未匹配到检测框的上一帧存在的轨迹(即上一帧剩的轨迹)。

3 对于低置信度的检测框

(3.1)先与(2.3)中剩的轨迹关联。其实就是当前低置信度的检测框和(2.3)中剩下的轨迹关联。这里值得说明的是,此处关联要使用IOU计算相似度,因为低置信度检测框通常模糊或存在遮挡,此时用ReID并不可靠。

(3.2)要保留(3.1)中仍然未匹配到检测框的轨迹

(3.3)删除在(3.1)中未匹配到轨迹的低置信度的检测框。认为这些低置信度的检测框不包含目标。

4 对于未匹配到轨迹的高置信度检测框,作为新的轨迹保存。

4 OC-SORT

github地址: https://github.com/noahcao/OC_SORT

论文地址:https://arxiv.org/abs/2203.14360

论文名称:Observation-Centric SORT: Rethinking SORT for Robust Multi-Object Tracking

4.1 原理

附1:特征提取攻略

1.1 OSNet(2019)

重识别特征提取器

github地址:https://github.com/KaiyangZhou/deep-person-reid

github地址:https://github.com/cmalki/Yolov5_DeepSort_OSNet-master

论文地址:https://arxiv.org/pdf/1905.00953.pdf (论文Abstract有code地址)

论文名称:Omni-Scale Feature Learning for Person Re-Identification

1.1.1 原理

下述来自论文截图。
在这里插入图片描述
在这里插入图片描述

1.1.2 描述

作者针对行人重识别。

作者设计了一种新颖的深度CNN,称为全尺度网络( Omni-Scale Network,OSNet),用于ReID中的全方位特征学习。

全尺度特征,通过设计一个由多个卷积特征流组成的残差块来实现的,每个残差块检测一定尺度的特征。

引入了一种新的统一聚合门用输入依赖的每个channel权重进行动态多尺度特征融合。为了有效地学习空间通道相关性,避免过度拟合,构建块同时使用点卷积和深度卷积。通过逐层叠加这些块,OSNet是非常轻量级的,可以在现有的ReID基准上从零开始训练。

综上,ReID的关键在于学习判别式特征,本文认为需要提取全方位特征,也就是多样化的同质和异质的分块的结合。

OSNet是通过简单地逐层堆叠轻量级bottleneck而构建。

下列来自论文翻译:

Omni-Scale Residual Block:通过利用Lite 3×3 layer构建全尺度残差块。

(a) Multi-scale feature learning:为了实现多尺度特征学习,本文引入了一个新的表示特征尺度的参数t 来扩展残差函数 F。

短连接可以使当前层学习的更小尺度的特征在下一层中有效的保留,从而使得最终的特征能够捕获整个空间尺度的范围。

(b) Unified aggregation gate:通过上述的各个尺度特征学习流,以学习到多个特征尺度的特征图。为了将它们组合以得到全尺度的特征,以动态组合方式组合不同卷积流的输出,即,根据输入图像分配不同尺度以不同的权重,而不是悬链后固定权重值。

优点:OSNet是一个轻量级的CNN网络,能够学习全尺度的特征表示。(部署)

1.1.3 总结

我的总结:因为原论文本身是针对行人重识别的,而且作者在设计的时候,考虑到类内特征差异大,类间特征差异小的特点(例如,一个人背着包包前后拍到的差异大,不同人穿类似衣服,差异小),作者提出了通过联合聚合门(统一聚合门)生成的通道权重将不同尺度的信息动态融合,即做了全尺度的特征表示。

​ 我们应用在车路协同场景下,目标追踪类型包含了机动车、非机动车和行人。机动车的类内差异主要体现在由于拍摄角度带来的形态差异。多目标类型的类间差异体现在机动车和非机动车及行人之间的差异较大。

​ 应是可以用于【跨镜头机动车目标的重识别】,可以先试一下~

1.1.4 改进版本:BC-OSNet

论文:Branch-Cooperative OSNet for Person Re-Identification(BC-OSNet)

描述:BC-OSNet提出一种多分支的结构,包含:局部分支(V1),全局分支(V2),对比分支(V3)、相关性分支(V4)。

1.2 VGGNet

重识别特征提取器

附2:损失函数

2.1 Center Loss

论文: A Discriminative Feature Learning Approach for Deep Face Recognition

2.1.1 描述

中心损失,最初在人脸识别的论文中应用。用来减少类内(比如说同一表情)的差异,而不能增大类间(比如说不同表情)的差异性。
C e n t e r L o s s = 1 2 N ∑ i = 1 n ∣ x i − c ∣ 2 2 CenterLoss = \frac{1}{2N}\sum_{i=1}^{n}{\mid x_i - c \mid{^2_2}} CenterLoss=2N1i=1nxic22

2.2 Loss

2.2.1 描述

。。。 。。。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java基础语法

1.第一份程序 1.1.代码编写 /*块注释 HelloWord.java 内部 *//**文档注释 * 作者:limou3434 */ public class HelloWord {public static void main(String[] args){System.out.println("Hello Word!");//打印“Hello Word!”} }直接上代码,上…

工具篇--SpringCloud--openFeign--Feign.builder()自定义客户端

文章目录 前言一、自定义客户端:1.1 定义外部接口类:1.2 接口代理类生成:1.3 方法的远程调用: 二、Feign.builder()自定义客户端原理:2.1 FeignClientFactoryBean2.2 客户端的配置设置:2.3 代理类的生成&am…

【GitHub项目推荐--AI 开源项目/涵盖 OCR、人脸检测、NLP、语音合成多方向】【转载】

今天为大家推荐一个相当牛逼的AI开源项目,当前 Star 3.4k,但是大胆预判,这个项目肯定要火,未来 Star 数应该可以到 10k 甚至 20k! 着急的,可以到 GitHub 直接去看源码 传送门:https://github.c…

GNSS差分码偏差(DCB)原理学习与数据下载地址

一、DCB原理 GNSS差分码偏差(DCB,Differential Code Bias)是由不同类型的GNSS信号在卫星和接收机不同通道产生的时间延迟(硬件延迟/码偏差)差异,按照频率相同或者不同又可以细分为频内偏差(例如…

电子电器架构车载软件 —— 集中化架构软件开发

电子电器架构车载软件 —— 集中化架构软件开发 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任…

好物周刊#36:程序员简历

村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. SmartDNS 一个运行在本地的 DNS 服务器,它接受来自本地客户端的 DNS 查询请求,然后从多个上游 DNS 服务器获取 DNS 查询…

从零开始复现BERT,并进行预训练和微调

从零开始复现BERT 代码地址:https://gitee.com/guojialiang2023/bert 模型 BERT 是一种基于 Transformer 架构的大型预训练模型,它通过学习大量文本数据来理解语言的深层次结构和含义,从而在各种 NLP 任务中实现卓越的性能。 核心的 BER…

InseRF: 文字驱动的神经3D场景中的生成对象插入

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

基于特征选择和机器学习的酒店客户流失预测和画像分析

基于特征选择和机器学习的酒店客户流失预测和画像分析 基于特征选择和机器学习的酒店客户流失预测和画像分析摘要1. 业务理解2. 数据理解和处理2.1 特征理解2.2 数据基本情况2.3 特征相关性分析 3. 酒店客户流失预测模型构建和评估3.1 支持向量机3.2 K-means聚类用户画像构建 4…

ssh协议以及操作流程

ssh协议 1.是一种安全通道协议 2.对通信数据进行了加密处理,用于远程管理 3.对数据进行压缩 在日常生活中,我们使用的是openssh openssh 服务名称:sshd 服务端主程序:/usr/sbin/sshd 服务端配置文件:/etc/ssh/sshd_con…

pytorch一致数据增强—异用增强

前作 [1] 介绍了一种用 pytorch 模仿 MONAI 实现多幅图(如:image 与 label)同用 random seed 保证一致变换的写法,核心是 MultiCompose 类和 to_multi 包装函数。不过 [1] 没考虑不同图用不同 augmentation 的情况,如&…

《工具录》dig

工具录 1:dig2:选项介绍3:示例4:其他 本文以 kali-linux-2023.2-vmware-amd64 为例。 1:dig dig 是域名系统(DNS)查询工具,常用于域名解析和网络故障排除。比 nslookup 有更强大的功…

MISGAN

MISGAN:通过生成对抗网络从不完整数据中学习 代码、论文、会议发表: ICLR 2019 摘要: 生成对抗网络(GAN)已被证明提供了一种对复杂分布进行建模的有效方法,并在各种具有挑战性的任务上取得了令人印象深刻的结果。然而,典型的 GAN 需要在训练期间充分观察数据。在本文中…

【数据结构 | 希尔排序法】

希尔排序法 思路ShellSort 思路 希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取&#xff0c…

Spark原理——Shuffle 过程

Shuffle 过程 Shuffle过程的组件结构 从整体视角上来看, Shuffle 发生在两个 Stage 之间, 一个 Stage 把数据计算好, 整理好, 等待另外一个 Stage 来拉取 放大视角, 会发现, 其实 Shuffle 发生在 Task 之间, 一个 Task 把数据整理好, 等待 Reducer 端的 Task 来拉取 如果更细…

【开发板资料】Arduino NANO 资料分享(引脚分布图、原理图、亮灯程序等)

给出部分参考资料以及来源 引脚分布 PINOUT 来源:Nano | Arduino Documentation https://docs.arduino.cc/hardware/nano PINOUT PINOUT 来源:https://www.tumblr.com/pighixxx/42591353009/arduino-nano-pinout https://www.tumblr.com/pighixxx/…

求解建公路问题

课程设计题目 求解建公路问题 课程设计目的 深入掌握 Prim 和 Kruskal算法在求解实际问题中的应用 问题描述 假设有 n 个村庄,编号从到,现在修建一些道路使任意两个村庄之间可以互相连通。所谓两个村庄 A 和B是连通的,指当且仅当A 和 B之间有一条道路或者存在一个村庄 C 使得…

UG装配-WAVE几何链接器

自上向下(自顶向下)设计 先将产品主要结构(或主要部件)建立好,然后再根据要求设计其它组件,使每个组件之间有数据关联,适用于产品开发初期,便于修改,修改组件数据后&…

如何利用小程序介绍公司品牌形象?

企业小程序的建设对于现代企业来说已经成为了一项必不可少的工作。随着移动互联网的快速发展,越来越多的职场人士和创业老板希望通过小程序来提升企业形象,增强与用户的互动,实现更好的商业效果。在这个过程中,使用第三方制作平台…

C-操作符详解

1.进制转换 1.1 10进制转2进制 方法:短除法 1.2 2进制转换8进制 8进制的数字每⼀位是0~7的,0~7的数字,各⾃写成2进制,最多有3个2进制位就⾜够了,⽐如7的⼆进制是111,所以在2进制转8进制数的时候&#xf…