当前位置: 首页 > news >正文

【深度学习MOT】SMILEtrack SiMIlarity LEarning for Multiple Object Tracking,论文

论文:https://arxiv.org/abs/2211.08824

文章目录

  • Abstract
  • Introduction
  • 2. 相关工作
    • 2.1 基于检测的跟踪
      • 2.1.1 检测方法
      • 2.1.2 数据关联方法
    • 2.2 基于注意力的跟踪
  • 3. 方法
    • 3.1 架构概述
    • 3.2 用于重新识别的相似性学习模块(SLM)
  • Experimental Results

Abstract

多目标跟踪(MOT)在计算机视觉领域得到广泛研究,具有许多应用。基于检测的跟踪(TBD)是一种流行的多目标跟踪范式。TBD包括首先进行目标检测,然后进行数据关联、轨迹生成和更新的步骤。我们提出了一种受Siamese网络启发的相似性学习模块(SLM),用于提取重要的目标外观特征,并提出一种有效结合目标运动和外观特征的方法。

这种设计加强了目标运动和外观特征的建模,用于数据关联。我们为我们的SMILEtrack跟踪器设计了相似性匹配级联(SMC)以进行数据关联。SMILEtrack在MOTChallenge和MOT17测试集上分别达到了81.06的MOTA和80.5的IDF1。

Introduction

MOT是计算机视觉中的热门课题,在视频理解中起着重要作用。MOT的目标是估计每个目标的轨迹,并尝试将它们与视频序列中的每一帧关联起来。随着MOT的成功,它可以在社会中被广泛应用,例如车辆计算、计算机交互[25] [12]、智能视频分析和自动驾驶。在过去的几年里,主要和高效的MOT策略[1] [27] [26]基于基于检测的跟踪(TBD)范式方法。它根据检测结果进行跟踪,将问题分解为检测和关联两个步骤。在检测步骤中,我们需要在单个视频帧中定位感兴趣的物体,在关联步骤中将每个物体与现有轨迹连接或创建新的轨迹。然而,由于模糊的物体、遮挡和复杂的场景,它仍然面临挑战。

为了实现跟踪系统,解决方案模型可以分为分离检测和嵌入模型(SDE)以及联合检测和嵌入模型(JDE)。我们的方法属于SDE,其架构如图1所示。SDE至少需要两个功能组件:一个检测器和一个重新识别模型。

首先,检测器通过边界框定位单帧中的所有物体。然后,重新识别模型将从每个边界框中提取物体的特征以生成嵌入。最后,将每个边界框与现有轨迹中的一个关联,或创建一个新的轨迹。然而,SDE方法无法实现实时推断速度,因为当使用两个单独的模型来检测物体和提取嵌入时,需要进行多次计算。检测器和重新识别模型之间的特征无法共享,而SDE方法需要在推断时间内将重新识别模型应用于每个边界框以提取嵌入。面对这个问题,一个可行的解决方案是集成检测器和重新识别模型。JDE类别[26] [32]将检测器和嵌入模型组合在一个单次深度网络中。它可以通过仅推断一次模型同时输出检测结果和检测到的边界框的相应外观嵌入。

尽管JDE的成功使得MOT任务在精度方面取得了巨大的成果,但我们认为JDE仍然存在一些问题。例如,不同组件之间的特征冲突。我们认为用于目标检测任务和目标重新识别任务的特征是完全不同的。目标检测任务的特征需要高级特征来识别物体属于哪个类别,但重新识别任务的特征需要更多的低级特征来区分同一类别中的不同实例。因此,JDE中的共享特征模型可能会降低每个任务的性能。然而,正如我们上面提到的JDE的缺点,SDE可以克服这些缺点,仍然在MOT方面具有出色的潜力。

近年来,基于注意力机制的Transformer [24] 已被引入到计算机视觉领域,并取得了出色的结果。在多目标跟踪问题中,大部分基于Transformer的方法采用了CNN + Transformer的框架。这意味着模型首先通过CNN架构提取输入图像特征,然后将这些特征映射作为输入传递到Transformer中。与基于检测的跟踪方法不同,基于Transformer的方法通过将检测和数据关联部分结合在一起来实现跟踪结果。它可以通过单一模型直接输出轨迹的身份和位置,而无需使用任何额外的轨迹匹配技巧。尽管基于Transformer的方法在特征注意力方面取得了出色的结果,但在将整个图像输入到Transformer架构中时,推断速度仍然存在一定限制。

为了生成高质量的检测和目标外观,我们选择了SDE作为TBD模型,以解决JDE中的特征冲突问题。然而,我们认为大多数特征描述符无法清楚地区分不同对象之间的外观特征。

为了解决这个问题,我们提出了SMILEtrack,它结合了一个检测器和类似Siamese网络的相似性学习模块(SLM)。受到视觉Transformer [6] 的启发,我们创建了一个图像分割注意块(ISA),它使用了SLM中的注意力机制和图像分割机制。此外,我们还为视频中每个帧之间的对象匹配构建了一个相似性匹配级联(SMC)。我们跟踪系统的大致过程如下:首先,我们通过一个名为PRB [4] 的检测器预测目标边界框的位置。在获得物体边界框后,我们通过SMC将边界框与轨迹关联起来。

我们工作的贡献总结如下:

我们引入了一个名为SMILEtrack的分离检测和嵌入模型,以及相似性学习模块(SLM),该模块使用类似Siamese网络的架构来学习每个对象之间的相似性。

在SLM的特征提取部分,我们构建了一个图像分割注意块(ISA),它使用了Transformer的图像分割方法和注意力机制来学习对象特征。

为了完成轨迹匹配部分,我们为每个帧中的每个边界框构建了一个相似性匹配级联(SMC)来实现关联步骤。

2. 相关工作

2.1 基于检测的跟踪

基于检测的(TBD)算法在MOT问题中取得了显著的成功,已经成为MOT框架中最受欢迎的方法。TBD方法的主要任务是在视频的每一帧之间关联检测结果,以实现MOT系统。整个工作可以大致分为两部分。

2.1.1 检测方法

Faster R-CNN [18] 是一种两阶段检测器,它使用VGG-16作为主干网络,使用区域建议网络(RPN)来检测边界框。SSD [11] 使用锚点机制来取代RPN,在每个特征图上设置不同大小的锚点,以增强检测质量。YOLO系列 [15] [16] [17] [2] 是一种一阶段方法,它使用特征金字塔网络(FPN)来解决目标检测中的多尺度问题,速度和精度表现出色。尽管基于锚点的检测器可以取得出色的性能,但仍存在一些由锚点引起的问题。例如,基于锚点的检测器很难根据情况调整一些锚点的超参数,而在训练过程中计算锚点的交并比(IOU)需要大量时间和内存。为了克服这些问题,无锚点检测器是另一种选择。CornerNet [9] 是一种无锚点方法,它利用热图和角点池化代替锚点来预测目标的左上角和右下角,然后将这两个点匹配以生成物体的边界框。与CornerNet相比,CenterNet [34] 通过中心池化和级联角点池化直接预测目标的中心点。YOLOX将YOLO系列从基于锚点的检测器转变为无锚点检测器。此外,它使用解耦的头部来提高检测的准确性。

2.1.2 数据关联方法

在MOT系统中,必须克服许多挑战,如物体遮挡、拥挤的场景和运动模糊。因此,数据关联方法需要小心处理。SORT [1] 首先使用卡尔曼滤波器根据当前帧的物体位置预测对象的未来位置,然后通过计算现有目标的检测和预测边界框之间的IOU距离生成分配成本矩阵。最后,通过匈牙利算法匹配分配成本矩阵。尽管SORT在推断时间方面具有较高的速度,但由于它不涉及对象外观信息,因此无法处理长时间遮挡问题或快速运动的对象。

为了解决遮挡问题,Deep SORT [27] 使用预训练的CNN模型提取边界框外观特征,然后使用外观特征计算轨迹和检测之间的相似性。最后,使用匈牙利算法完成分配。

这种方法可以有效减少ID切换的次数,但Deep SORT中的检测模型和特征提取模型是分开的,这导致推断速度远低于实时。面对这个问题,JDE [26] 将检测器和嵌入模型组合成一个单次网络,它可以实时运行,并且在准确性上与两阶段方法相当。FairMOT [32] 展示了锚点带来的不公平问题,它采用了一种基于CenterNet的无锚点方法,在多个数据集中(如MOT17 [14])的性能大幅提升。然而,我们认为JDE模型存在一些问题,比如不同组件之间的特征冲突。

与此同时,一些MOT跟踪方法 [21] [22] 放弃了物体外观特征,仅通过应用高性能的检测器和运动信息来完成跟踪系统。尽管这些方法在MOTChallenge基准测试中可以达到最先进的性能和高推断速度,但我们认为这部分是因为MOTChallenge基准数据集中的运动模式相对简单。

此外,不考虑物体外观特征可能导致在更拥挤的场景中,物体跟踪的准确性和鲁棒性较差。

2.2 基于注意力的跟踪

在使用Transformer进行目标检测取得成功后,Trackformer [13] 将MOT视为一种集合预测问题,基于DETR构建,添加了对象查询和自回归轨迹查询来进行目标跟踪。

TransTrack [23] 基于可变形DETR构建,并具有两个解码器,一个用于当前帧检测,另一个用于先前帧检测。它通过在两个解码器之间匹配检测框来解决跟踪问题。TransCenter [29] 是基于点的跟踪方法,提出了一个密集的查询特征图,使用多尺度的输入图像来实现基于Transformer的MOT。

3. 方法

在本节中,我们介绍SMILEtrack模型的细节,包括相似性学习模块(SLM)以及用于每一帧中的框关联的相似性匹配级联(SMC)。

3.1 架构概述

SMILEtrack的整体架构如图2所示。我们的框架可以分为以下几个步骤:(1)检测目标位置:为了定位目标物体的位置,我们采用PRB作为检测器。 (2)数据关联:通过关联相邻帧中的每个物体来解决MOT问题。在通过PRB生成的检测结果之后,我们计算每一帧之间的运动相似性矩阵和外观相似性矩阵,然后通过匈牙利算法解决线性分配问题,其中成本矩阵与这两个矩阵相结合。

在这里插入图片描述

3.2 用于重新识别的相似性学习模块(SLM)

为了实现稳健的跟踪质量,目标的外观信息是不可或缺的。一些跟踪方法已经考虑了目标的外观信息。例如,DeepSORT使用一个由简单CNN构建的深度外观描述符来提取目标的外观特征。尽管外观描述符可以提取有用的外观特征,我们认为外观描述符无法清楚地区分不同物体之间的外观特征。为了提取更具有辨识度的外观特征,我们提出了一个类似Siamese网络架构的相似性学习模块SLM。SLM的详细信息如图3所示。

在这里插入图片描述

后面翻译略,感兴趣可以看论文。

Experimental Results

在这里插入图片描述

相关文章:

【深度学习MOT】SMILEtrack SiMIlarity LEarning for Multiple Object Tracking,论文

论文:https://arxiv.org/abs/2211.08824 文章目录 AbstractIntroduction2. 相关工作2.1 基于检测的跟踪2.1.1 检测方法2.1.2 数据关联方法 2.2 基于注意力的跟踪 3. 方法3.1 架构概述3.2 用于重新识别的相似性学习模块(SLM) Experimental Res…...

jmeter通过BeanShell对接口参数进行MD5和HmacSHA256加密【杭州多测师_王sir】

一、在eclipse里面编写MD5加密算法 package com.Base64;import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class Md5Utils {public static String md5(String sourceStr) {String result "";try {MessageDigest md Mess…...

基于自适应曲线阈值和非局部稀疏正则化的压缩感知图像复原研究【自适应曲线阈值去除加性稳态白/有色高斯噪声】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Spring AOP 切点表达式

参考博客: 参考博客...

打破传统直播,最新数字化升级3DVR全景直播

导语: 近年来,随着科技的不断创新和发展,传媒领域也正经历着一场前所未有的变革。在这个数字化时代,直播已经不再仅仅是在屏幕上看到一些人的视频,而是将观众带入一个真实世界的全新体验。其中,3DVR全景直…...

网络安全--利用awk分析Apache日志

一、溯源 你会溯源吗?怎么溯 拿到日志(ssh登录日志,Apache日志),通过日志溯到ip,对日志进行每天的拆分,第二通过awk日志分析工具对每天的日志进行拆分,分析某一个ip今天对我访问多…...

计算机视觉一 —— 介绍与环境安装

傲不可长 欲不可纵 乐不可极 志不可满 一、介绍 研究理论和应用 - 研究如何使机器“看”的科学 - 让计算机具有人类视觉的所有功能 - 让计算机从图像中,提取有用的信息,并解释 - 重构人眼;重构视觉皮层;重构大脑剩余部分 计…...

如何看懂统一社会信用代码?

在查看企业信息的时候,我们通常第一时间查看的就是该企业的照面信息:企业名称,企业信用代码,企业法人等等。 其中统一社会信用代码就是给各个企业组织编号,是便于统一识别管理的一串代码,类似我们的身份证…...

计算机网络 运输层端口号,复用、分用

...

systrace: 系统级跟踪工具的解析

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、获取systrace文件3.1 通过python命令获取3.1.…...

关于青少年学习演讲与口才对未来的领导力的塑造的探析

标题:青少年学习演讲与口才对未来领导力的塑造:一项探析 摘要: 本论文旨在探讨青少年学习演讲与口才对未来领导力的塑造的重要性和影响。通过分析演讲和口才对青少年的益处,以及如何培养这些技能来促进领导力的发展,我…...

大数据分析案例-基于KMeans和DBSCAN算法对汽车行业客户进行聚类分群

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

Vue 3 中定义组件常用方法

在Vue 3 中有多种定义组件的方法。从选项到组合再到类 API,情况大不相同 1、方式一:Options API 这是在 Vue 中声明组件的最常见方式。从版本 1 开始可用,您很可能已经熟悉它。一切都在对象内声明,数据在幕后由 Vue 响应。它不是…...

Linux | curl命令调用接口时查看调用时长和详情

关注wx&#xff1a; CodingTechWork 引言 在服务器中通过curl命令调用接口时&#xff0c;我们经常需要分析一些时长。本文主要总结两种方式进行处理。 curl命令 使用time命令 time curl -k -u <username>:<password> https://127.0.0.1/xxxx -vvv 使用文本 编…...

用ngrok实现内网穿透,一行命令就搞定!

最近在写支付的东西&#xff0c;调试时候需要让支付平台能够回调本地接口来更新支付成功的状态。但由于开发机器没有公网IP&#xff0c;所以需要使用内网穿透来让支付平台能够成功访问到本地开发机器&#xff0c;这样才能更高效率的进行调试。 推荐内网穿透的文章已经很多很多…...

C++ 混合Python编程 及 Visual Studio配置

文章目录 需求配置环节明确安装的是64位Python安装目录 创建Console C ProjectCpp 调用 Python Demo 参考 需求 接手了一个C应用程序&#xff0c;解析csv和生成csv文件&#xff0c;但是如果要把多个csv文件合并成一个Excel&#xff0c;分布在不同的Sheet中&#xff0c;又想在一…...

斐波拉契数列+二进制--夏令营

1. f[40]{0,1} 数组赋值&#xff1a;只赋值前两个的话&#xff0c;剩余的自动为0 2.先要自己写出斐波拉契数列判断一下应该要多少个斐波拉契数样例&#xff0c;第39项已经超样例数500了&#xff0c;所以够用 3.就是把一个数字拆分成斐波拉契数列里的数的和嘛&#xff0c;但是…...

【使用Hilbert变换在噪声信号中进行自动活动检测】基于Hilbert变换和平滑技术进行自动信号分割和活动检测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Android 13 Launcher——屏蔽上拉到应用列表

背景 Launcher定制需要将原先的应用列表去掉,可以从根源去掉,就是将上拉出现应用列表的上拉手势直接屏蔽,让其不能上拉出现应用列表界面,在研究的过程中顺便将下拉出现负一屏的逻辑也研究了下,如下就是具体实现。 目录 背景 一.如何屏蔽上拉出现应用列表 一.如何屏蔽上拉…...

Java 基础知识点

Object 类相关方法 getClass 获取当前运行时对象的 Class 对象。 hashCode 返回对象的 hash 码。 clone 拷贝当前对象&#xff0c; 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝&#xff0c;对引用类型拷贝引用&#xff1b;深拷贝对基本类型进行值拷贝&#xff0c;对…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...