MOTR解读

Posted 周先森爱吃素

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MOTR解读相关的知识,希望对你有一定的参考价值。

最新的一篇MOT领域基于Transformer的工作,是第一个真正严格意义上端到端的多目标跟踪框架,超越了此前的TransTrack和TrackFormer等工作。

简介

多目标跟踪的关键挑战在于轨迹上目标的时序建模,而现有的TBD方法大多采用简单的启发式策略,如空间和外观相似度。尽管这些方法具有通用性,但它们过于简单,不足以对复杂的变化进行建模,例如通过遮挡进行跟踪。 本质上,现有方法缺乏时间建模的能力。 这篇论文中,作者提出了MOTR,这是一个真正的完全端到端的跟踪框架。MOTR能够学习建模目标的长程时间变化,它隐式地进行时间关联,并避免了以前的显式启发式策略。基于Transformer和DETR,MOTR引入了track query这个概念,一个track query负责建模一个目标的整个轨迹,它可以在帧间传输并更新从而无缝完成目标检测和跟踪任务。时间聚合网络(temporal aggregation network,TAN)配合多帧训练被用来建模长程时间关系。实验结果表明MOTR达到了SOTA效果。

  • 论文标题

    MOTR: End-to-End Multiple-Object Tracking with TRansformer

  • 论文地址

    http://arxiv.org/abs/2105.03247

  • 论文源码

    https://github.com/megvii-model/MOTR

介绍

多目标跟踪是在视频序列的每一帧中定位所有的目标并确定它们的移动轨迹的一个任务。多目标跟踪是极具挑战的一个任务,因为每帧中的目标都可能因为环境的变化而被遮挡,而且跟踪器要想进行长期跟踪或者低帧率的跟踪是比较困难的。这些复杂多样的跟踪场景为MOT方法的设计带来了诸多挑战。

现有的多目标跟踪方法基本上都遵循tracking-by-detection(TBD)范式,它将轨迹的生成分为两个步骤:目标定位时序关联。对目标定位而言,使用检测器逐帧检测目标即可。而对于时序关联,现有的方法要么使用空间相似性(即基于IoU关联)要么使用外观相似性(即基于ReID关联)。对于基于IoU的方法,计算两帧检测框的两两之间的IoU矩阵,若两个目标之间的IoU高于某个阈值则赋予同一个ID,如下图的(a)所示。基于ReID的方法思路类似,两帧之间目标两两计算特征相似度,具有最高相似度的两个目标赋予同一个ID,不过,单独训练一个检测器和ReID模型代价太大,最近的主流思路是一个模型联合训练检测和ReID分支,这类方法称为JDT(joint detection and tracking)方法,如下图(b)所示。

在这里插入图片描述

上述的时序关联方法都是启发式的,并且是相当简单的,因此它们难以建模长时间的物体复杂的空间和外观变化。本质上看,其不具备对时间变化建模的能力,这和深度学习“端到端学习”的理念是不一致的。这些方法也许大多数情况下工作正常,但是对于一些挑战性的场景缺乏鲁棒性,这些场景下IoU和外观是不可信的,而这些复杂场景才是MOT任务的关键。因此,作者为了解决这个问题,构建了一个不需要任何数据关联处理的端到端跟踪框架。

最近,DETR提出了一套端到端目标检测的策略,它开创性地提出了“object query”这个概念,这是目标的显式解耦表示(representation),这种表示简化了Transformer框架的学习。首次启发,论文作者拓展“object query”到目标跟踪领域,形成了“track query”,每个track query负责预测一个对象的完整轨迹。如上图©所示,和分类和回归分支并行,MOTR对每一帧预测track query集合,这个track query集输入到decoder网络中以产生当前帧的跟踪预测和更新的track query,更新后的track query传递到下一帧的decoder中。这个query传递和预测的处理过程会在整个视频序列上一帧帧重复进行,因此称为连续query传递(continuous query passing)。由于一个query一旦和某个目标匹配,这个query就会一直跟随这个目标,因此continuous query passing可以很自然地消除数据关联和一些手工操作,如NMS。

接着,为了建模长期时间关系,作者进一步引入了多帧训练以及时间聚合网络(TAN),TAN建立了一个query memory bank来收集历史帧中和已跟踪目标对应的query,当前帧的track query会和memory 板块中的每个query通过多头注意力进行交互。

作者认为,MOTR是简单且高效的,并且严格意义上它是第一个端到端的MOT框架。通过多帧时间聚合学习的track query有强大的时间建模能力,因而MOTR不需要时间关联处理或者手工操作。相反,此前基于Transformer的工作并非完全端到端的,它们依然需要IoU匹配或者Tracking NMS等操作。在MOT16和MOT17上的实验结果表明,MOTR达到SOTA性能并且比之前的方法具有更低的复杂度。

MOTR

Deformable DETR

DETR是Transformer在目标检测领域的经典成功案例之一。在DETR中,object query是固定数量的可学习位置嵌入,表示可能的目标的proposal。一个object query只会对应一个目标,这种对应关系是通过二分图匹配构建的。考虑到DETR较高的复杂度和较慢的收敛速度,Deformable DETR将Transformer中的self-attention替换为了multi-scale deformable attention。为了表示object query如何通过decoder与特征交互,作者重新设计了Deformable DETR的解码器。

q ∈ R C q \\in R^{C} qRC表示object query集且 f ∈ R C f \\in R^{C} fRC表示从encoder获得的特征图,这里的 C C C表示特征的维度。解码器的处理过程可以描述如下式,其中 k ∈ 1 , … , K k \\in 1, \\ldots, K k1,,K K K K为decoder的层数), q k q^k qk表示第 k k k个decoder层的output query。 G s a G_{sa} Gsa表示DETR中的self-attention操作, G c a G_{ca} Gca则表示multi-scale deformable attention操作。

q k = G c a ( G s a ( q k − 1 ) , f ) q^{k}=G_{c a}\\left(G_{s a}\\left(q^{k-1}\\right), f\\right) qk=Gca(Gsa(qk1),f)

Framework

MOTR中,作者引入track query和continuous query passing来进行端到端的跟踪,temporal aggregation network进一步被提出用来增强多帧的时间信息。下面就逐一阐述这几个核心模块。

End-to-End Track Query Passing

Track Query:

在这里插入图片描述

DETR中的object query并不负责预测特定的目标,因此一个object query在不同的帧上可能预测不同的目标。如上图所示,DETR对MOT数据集进行检测,同一个object query在两个不同帧中预测的目标是不一样的(如上图中(a)绿色框所示),因此将query的id用于轨迹关联是不合理的。(作者这里其实想表述的是,object query只是对一个区域目标负责,并不具体到id级别。

针对上述问题,作者拓展object query进行跟踪任务,拓展后的称为track query,每个track query负责一个目标的整个轨迹的预测。如上图(b)所示,一旦一个track query在某一帧和某个目标匹配之后,这个track query将一直预测这个目标直到该目标消失。因此,同一个track query的所有预测结果就形成了一个目标的轨迹,不需要显式的数据关联步骤,至于track query之间的order-preserving则是依据特定目标的track query监督的。当然,还有一个问题,那就是新目标的产生,因此作者进一步提出了empty query来负责新目标的检测。

Continuous Query Passing:

基于上述提出的track query,作者进一步提出了continuous query passing机制,在这个机制下,track query随着帧的变化而改变representation和匹配的目标的localization。然后,作者提出了基于continuous query passing的端到端MOT框架,即MOTR。在MOTR中,目标的时间变化建模是编码器的多头注意力隐式学习的,因此不需要显式的数据关联。

在这里插入图片描述

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

Query Interaction Module

在上面的叙述中,QIM负责接受上一帧的track query输出并生成当前帧的track query输入,在这一节将具体阐述Query Interaction Module(QIM)。QIM主要包括目标进出机制(object entrance and exit mechanism)和时间聚合网络(temporal aggregation network)。

Object Entrance and Exit: 首先来看目标进出机制,我们知道,每个track query表示一个完整轨迹,然而,一些目标可能在中间某一帧出现或者消失,因此MOTR需要输出一些边界框 { b o x i , … , b o x j } \\left\\{b o x_{i}, \\ldots, b o x_{j}\\right\\} {boxi,,boxj}假定目标在 T i T_i Ti帧出现但在 T j T_j Tj帧消失。

MOTR是如何处理目标进出的情况呢?在训练时,track query的学习可以通过二分图匹配的GT来监督。但是,在推理时,使用跟踪得分预测来决定一个轨迹的出现和消失。来看下图,这是QIM的结构图,对 T i T_i Ti帧而言,track query set q t i q^i_t qti通过QIM从 T i − 1 T_{i-1} Ti1帧生成,然后和empty query set q e q_e qe级联到一起,级联的结果继而输入到decoder并产生原始的包含跟踪得分的track query set q o t i q_{ot}^i qoti q o t i q_{ot}^i qoti随机被分割为两个query set,即 q e n i = q ot  i [ : d e ] q_{e n}^{i}=q_{\\text {ot }}^{i}\\left[: d_{e}\\right] qeni=qot i[:de] q c e i = q o t i [ d e : ] q_{c e}^{i}=q_{o t}^{i}\\left[d_{e}:\\right] qYOLOV7详细解读网络架构解读

YOLOV7详细解读网络架构解读

电子信息工程考研专业方向解读

源码解读|SparkEnv源码解读

SpringBoot 详细解读

源码解读|SparkContext源码解读