IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> MOTR: End-to-End Multiple-Object Tracking with TRansformer -> 正文阅读

[人工智能]MOTR: End-to-End Multiple-Object Tracking with TRansformer

MOTR

论文标题:MOTR: End-to-End Multiple-Object Tracking with TRansformer

论文地址:http://arxiv.org/abs/2105.03247

论文源码:https://github.com/megvii-model/MOTR

收录入CVPR2021

Introduction

? 这篇论文中,作者提出了MOTR,一个真正的完全端到端的跟踪框架。MOTR能够学习建模目标的长程时间变化,它隐式地进行时间关联,并避免了以前的显式启发式策略。基于Transformer和DETR,MOTR引入了track query这个概念,一个track query负责建模一个目标的整个轨迹,它可以在帧间传输并更新从而无缝完成目标检测和跟踪任务。时间聚合网络(temporal aggregation network,TAN)配合多帧训练被用来建模长程时间关系。实验结果表明MOTR达到了SOTA效果。

Motivation

? DETR提出用于端到端目标检测。它将目标检测定义为一个集合预测问题。如图所示1(a),object query作为对象的解耦表示,被输入到变压器解码器,并与图像特征交互以更新其表示。进一步采用二分匹配,实现了对象查询与GT之间的一对一分配,消除了NMS等后处理。与目标检测不同,MOT可以作为一个序列预测问题进行重新分级 。

? 每个序列对应于一个物体的轨迹。从技术上讲,在DETR中扩展了object query来跟踪预测对象序列的查询。track query可作为对象跟踪的隐藏状态。轨迹查询的表示在decoder中进行更新,并用于以迭代的方式预测目标的轨迹(见图1?)。具体来说,跟踪查询是通过自注意和通过多帧特性进行的交叉注意来更新的。更新后的跟踪查询将进一步用于预测边界框。一个轨迹查询的所有预测都会自然地形成一个对象的轨迹。

在这里插入图片描述

本文工作:

  1. 提出了一个完全端到端的MOT框架,基于DETR的MOTR。MOTR可以一种联合的方式隐式地学习外观和位置的方差。
  2. 将MOT定义为一个序列预测集的问题。为了解决该问题,将track query扩展为迭代更新和预测的隐藏状态。
  3. TALA用于跟踪查询和对象之间的一对一分配。引入了一种处理新生轨迹和死亡轨迹的进出机制。

Methodology

Detect Query and Track Query

当将DETR框架从对象检测调整到MOT时,出现了两个主要问题:

? 1)如何通过一个track query跟踪一个对象;

? 2)如何自适应地跟踪对象,因为每一帧都可能引入新生的和死亡的轨迹。

? 在本文中,扩展了来自object query的track query。track query可以作为隐藏状态来执行迭代跟踪预测。track query集在初始帧 T 1 T_1 T1?处为空。DETR中的固定长度object query用于检测新的检测对象。分配给新生对象的object query将被更新并合并到下一帧的track query集中。track query集具有自适应长度,并进行动态更新。分配给消失的轨迹将从的track query集中删除。
在这里插入图片描述

Tracklet-Aware Label Assignment

? 在DETR中,可以将一个object query分配给图像中的任何一个对象,因为标签分配是通过在所有object query和gt之间执行二分匹配来确定的。而在MOTR中,检测查询仅用于检测新生对象,并track query预测这些跟踪对象。在这里,我们引入了具有跟踪感知功能的标签分配(TALA)来实现这一目标。

在这里插入图片描述
? 一般来说,TALA由两种策略组成。对于object query,将DETR中的分配策略修改为新对象,其中在object query和新生对象的gt之间进行二分匹配对于track query,设计了一个目标一致的分配策略。track query被排除在二部匹配之外,并遵循之前帧的相同分配。将 T i T_{i} Ti?帧的预测和GT分别表示为 Y i = Y t r i , Y d e t i Y_i={Y_{tr}^{i},Y_{det}^{i}} Yi?=Ytri?Ydeti? Y ^ i = { Y ^ t r i , Y ^ d e t i } \hat Y_i=\lbrace{\hat Y_{tr}^{i},\hat Y_{det}^{i}}\rbrace Y^i?={Y^tri?Y^deti?}。这是 Y t r i , Y d e t i Y_{tr}^{i},Y_{det}^{i} Ytri?Ydeti?是track query和object query的预测。 Y ^ t r i , Y ^ d e t i \hat Y_{tr}^{i},\hat Y_{det}^{i} Y^tri?Y^deti?是对应的gt。object query和object query的预测和gt之间的标签分配结果可以写为 ω i = ω t r i , ω d e t i ω_i={ω_{tr}^{i},ω_{det}^{i}} ωi?=ωtri?ωdeti?,并且可以表述为:
在这里插入图片描述
? 这里, N N N是视频序列的长度, L \mathcal {L} L是DETR中定义的成对匹配代价。在初始帧 T 1 T_{1} T1?中, w t r 1 w_{tr}^{1} wtr1?是空的,因为之前没有跟踪任何对象,而 w d e t i w_{det}^{i} wdeti?是由 Y ^ d e t i \hat Y_{det}^{i} Y^deti? Y d e t i Y_{det}^{i} Ydeti?之间的二部匹配确定的。在任何帧 2 ≤ i ≤ N 2≤i≤N 2iN中, w i w_{i} wi?仍然由二分匹配决定。 w t r i w_{tr}^{i} wtri?是通过合并 w t r i ? 1 w_{tr}^{i-1} wtri?1? w d e t i ? 1 w_{det}^{i-1} wdeti?1?来生成的。这意味着对被跟踪的对象遵循相同的帧 T i ? 2 T_{i-2} Ti?2?的分配。而对于 T i ? 1 T_{i-1} Ti?1?帧中的新生对象,我们将相应的object query合并到 T i T_{i} Ti?的track query集中。

MOTR Architecture
在这里插入图片描述

? MOTR的整体结构如上图所示,视频序列首先会送入CNN(ResNet50)中,随后进入Deformable DETR的编码器提取基本特征 f = { f 0 , f 1 , … , f N } f=\left\{f_{0}, f_{1}, \ldots, f_{N}\right\} f={f0?,f1?,,fN?},这里的 f 1 f_1 f1? 表示第 T 0 T_0 T0?帧的特征。对第 T 0 T_0 T0?帧而言,特征 f 1 f_1 f1?和empty query set q d q_d qd?被输入到decoder网络中定位所有初始化目标并生成原始的track query set q o t 1 q_{ot}^1 qot1? q o t 1 q^1_{ot} qot1?通过QIM模块生成了下一帧的track query输入 q t 2 q^2_t qt2?。所以从上图可以看出来,整个模型迭代式地处理每一帧 T i ( i ∈ [ 1 , N ] ) T_i(i\in[1, N]) Ti?(i[1,N]),QIM根据上一帧地输出产生的 q t i q^i_t qti? 会和empty query set q d q_d qd?级联到一起,级联后的query set q d q_d qd?回合特征 f i f_{i} fi?一起送入decoder中直接产生当前帧的预测结果,并且更新query set q o t i + 1 q_{ot}^{i+1} qoti+1? 将其送入到下一帧。

Query Interaction Module

? Object Entrance and Exit: 目标进出机制,每个track query表示一个完整轨迹,然而,一些目标可能在中间某一帧出现或者消失,因此MOTR需要输出一些边界框$ \left{b o x_{i}, \ldots, b o x_{j}\right} 假 定 目 标 在 假定目标在 T_i 帧 出 现 但 在 帧出现但在 T_j$帧消失。

? 在训练时,track query的学习可以通过二分图匹配的GT来监督。但是,在推理时,使用跟踪得分预测来决定一个轨迹的出现和消失。对 T i T_i Ti?帧而言,track query set q t i q^i_t qti?通过QIM从 T i ? 1 T_{i-1} Ti?1?帧生成,然后和empty query set q d q_d qd?级联到一起,级联的结果继而输入到decoder并产生原始的包含跟踪得分的track query set q o t i q_{ot}^i qoti? q o t i q_{ot}^i qoti?随机被分割为两个query set, q o t i = { q t r i , q d e t i } q_{ot}^{i}=\lbrace q_{tr}^{i},q_{det}^{i} \rbrace qoti?={qtri?,qdeti?},其中 q d e t i q_{det}^{i} qdeti?包含新对象, q t r i q_{tr}^{i} qtri?中包含跟踪的轨迹和消失的轨迹。一个轨迹的死亡时根据 Y ^ i \hat Y_i Y^i? w t r i w_{tr}^{i} wtri?匹配得出
在这里插入图片描述
? 对于推理过程,使用预测 Y i Y_{i} Yi?的分类score来确定一个轨迹何时出现和消失。对于新生对象,保留 q d e t i q_{det}^{i} qdeti?中的分类分数高于入口阈值 τ e n \tau_{en} τen?的track query,同时删除其余的query。

这里的query interaction module相比第一版做了修改,第一版只采用了interfer中的置信度分类。

Temporal Aggregation Network

? 引入了时间聚合网络(TAN)来增强时间关系,并为被跟踪的对象提供上下文先验。TAN的输入是过滤track query q  ̄ t r i \overline q_{tr}^{i} q?tri? q  ̄ d e t i \overline q_{det}^{i} q?deti?和新生对象。我们还收集了被跟踪对象 q  ̄ t r i ? 1 \overline q_{tr}^{i-1} q?tri?1?的跟踪query,以进行时间聚合。生成的查询作为查询和关键元素输入到多头注意(MHA)模块,以生成注意力权重。 q t r i q_{tr}^{i} qtri?作为MHA的值元素,通过点积进行更新:
t g t = σ s ( ( q  ̄ t r i + q  ̄ t r i ? 1 ) ? ( q  ̄ t r i + q  ̄ t r i ? 1 ) T d ) ? q  ̄ t r i tgt = \sigma_{s}(\frac {(\overline q_{tr}^{i}+\overline q_{tr}^{i-1})\cdot(\overline q_{tr}^{i}+\overline q_{tr}^{i-1})^{T}}{\sqrt {d}})\cdot\overline q_{tr}^{i} tgt=σs?(d ?(q?tri?+q?tri?1?)?(q?tri?+q?tri?1?)T?)?q?tri?
Collective Average Loss

? 集体平均损失(CAL)收集多个预测 Y = { Y i } i = 1 N Y=\lbrace Y_{i} \rbrace_{i=1}^{N} Y={Yi?}i=1N?,而不是逐计算损失。然后用 Y ^ = { Y ^ i } i = 1 N \hat Y=\lbrace \hat Y_{i} \rbrace_{i=1}^{N} Y^={Y^i?}i=1N?计算整个视频序列内的损失,匹配结果为 w = { w i } i = 1 N w=\lbrace w_{i}\rbrace _{i=1}^{N} w={wi?}i=1N?。CAL是整个视频序列的总体损失,按对象数进行归一化:
L o ( Y ∣ w , Y ^ ) = ∑ i = 1 N ( L ( Y t r i ∣ w t r i , Y ^ t r i ) + L ( Y d e t i ∣ w d e t i , Y ^ d e t i ) ) ∑ n = 1 N ( V i ) \mathcal {L}_{o}(Y|_{w},\hat Y)=\frac {\sum_{i=1}^{N}(\mathcal {L}(Y_{tr}^{i}|_{{w_{tr}^{i}}},\hat Y_{tr}^{i})+\mathcal {L}(Y_{det}^{i}|_{{w}_{det}^{i}},\hat Y_{det}^{i}))}{\sum_{n=1}^{N}(V_{i})} Lo?(Yw?,Y^)=n=1N?(Vi?)i=1N?(L(Ytri?wtri??,Y^tri?)+L(Ydeti?wdeti??,Y^deti?))?

? 其中, V i = V t r i + V d e t i V_i=V^i_{tr}+V^i_{det} Vi?=Vtri?+Vdeti?表示 T i T_{i} Ti?帧下GT的总数。 V t r i V_{tr}^{i} Vtri? V d e t i V_{det}^{i} Vdeti?分别为 T i T_{i} Ti?帧下跟踪对象和新生对象的数量。L为单帧损耗,与DETR中的检测损耗相似。单帧损耗L可表述为:
L ( Y i ∣ w i , Y ^ i ) = λ c l s L c l s + λ l 1 L l 1 + λ g i o u L g i o u \mathcal {L}(Y_{i}|_{{w_{i}}},\hat Y_{i})=\lambda_{cls}\mathcal {L}_{cls}+\lambda_{l1}\mathcal {L}_{l1}+\lambda_{giou}\mathcal{L}_{giou} L(Yi?wi??,Y^i?)=λcls?Lcls?+λl1?Ll1?+λgiou?Lgiou?
Experiment

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:31:02  更:2022-03-10 22:32:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:39:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码