论文标题: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©)。具体来说,跟踪查询是通过自注意和通过多帧特性进行的交叉注意来更新的。更新后的跟踪查询将进一步用于预测边界框。一个轨迹查询的所有预测都会自然地形成一个对象的轨迹。
本文工作:
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 2≤i≤N中, 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的整体结构如上图所示,视频序列首先会送入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} qtri和 q ‾ d e t i \overline q_{det}^{i} qdeti和新生对象。我们还收集了被跟踪对象 q ‾ t r i − 1 \overline q_{tr}^{i-1} qtri−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(qtri+qtri−1)⋅(qtri+qtri−1)T)⋅qtri
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(Y∣w,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)=λclsLcls+λl1Ll1+λgiouLgiou
Experiment