目录
论文链接:https://arxiv.org/abs/2105.03247
文章侧重点
- 受到DERT启发,将目标检测中的 O b j e c t Object Object Q u e r y Query Query迁移到多目标追踪中,构造了 T r a c k Track Track Q u e r y Query Query。这个出发点也决定MOTR也是一个基于检测的追踪。
- 当前许多基于检测的追踪方法是外观建模+运动建模 (后置处理,如卡尔曼滤波等),而MOTR提出了时序融合网络,利用 T r a c k Track Track Q u e r y Query Query的逐帧更新,同时对外观和运动建模。
- MOTR为了保证时序建模的有效性,提出了基于轨迹的标签构造【tracklet-aware label assignment】训练策略+联合平均损失【collective average loss】增强模型的时序建模。
将 O b j e c t Object Object Q u e r y Query Query 变成 T r a c k Track Track Q u e r y Query Query需要解决的问题
通常来讲,虽然目标检测与目标跟踪都是CV领域,但由于下端的根本任务不同,所以直接套用肯定有问题,所以要仔细设计。
- 用一个 T r a c k Track Track Q u e r y Query Query追踪同一个目标。 因为DERT中的 O b j e c t Object Object Q u e r y Query Query是基于每一帧识别,每一个目标和 O b j e c t Object Object Q u e r y Query Query并不存在对应关系,如下图(a)。但多目标追踪需要对序列中每个目标生成追踪轨迹,这必然要求目标轨迹的一致性,不能发生ID Switch的问题。 这就意味着目标检测+目标轨迹匹配都要用 T r a c k Track Track Q u e r y Query Query来实现,这也是端到端的精髓了,取消后置处理。本文引入基于轨迹的标签构造【tracklet-aware label assignment】训练策略,使得用同一个ID的边界框去监督训练检测+匹配的过程。
- 对新出现目标和消失目标的处理。 因为多目标追踪中会面临某个目标突然消失或突然出现等情况,所以固定长度的 T r a c k Track Track Q u e r y Query Query并无法满足实际的需求。故本文提出了两个变量集合—— T r a c k Track Track Q u e r y Query Query(可变长度)和 D e t e c t Detect Detect Q u e r y Query Query(固定长度)来处理目标出现和消失等情况。 如上图(b),对于每一帧都要迭代式更新 T r a c k Track Track Q u e r y Query Query,将消失的目标将其对应的 T r a c k Track Track Q u e r y Query Query删去,并且每一帧用 D e t e c t Detect Detect Q u e r y Query Query检测该帧有多少目标,新目标通过 D e t e c t Detect Detect Q u e r y Query Query检测出来加入 T r a c k Track Track Q u e r y Query Query的集合中。具体过程如下图所示:
总体网络结构——时序融合网络
可以看到,上图的结构解析如下:
- Enc 表示特征提取阶段:Backbone网络+Deformable DERT的Encoder;
- Dec 表示Deformable DERT的Decoder。
- 在第一帧由于追踪目标还未出现,故输入是固定长度的 q d q_d qd和为空集的 q t r q_{tr} qtr,而后续帧的输入就是 q d q_d qd和上一帧传递的 q t r q_{tr} qtr。
- 输出是中间态特征,用于生成追踪预测结果和QIM的输入。
QIM——Query交互模块
此模块的作用是处理目标的出现和消失等情况。图中的分数表示Head预测追踪目标的分类得分。
- 输入:Decoder输出的中间态特征,如上图最左侧输入。黄色部分表示 q d q_d qd,橙色为 q t r q_{tr} qtr。
- 第一步:将其和Head预测追踪目标的分类得分,分别输入到处理(a)目标出现、(b)目标消失两个分支中。这里分别设定了两个阈值作为filter,筛选有效的query。
- 第二步:对于 (a)目标出现分支中,将分类分数大于阈值的检测目标视为新增目标。
- 第三步:对于 (b)目标消失分支中,当筛选出新的 T r a c k Track Track Q u e r y Query Query之前,要经过 【时序增强网络】TAN ,该网络本质是一个self-attention机制。输入是本帧的目标query q t r i q_{tr}^i qtri、第一步(b)分支输出的中间态特征。该输出是下一帧的追踪目标。
- 输出:第二步与第三步的输出拼接起来为下一帧的追踪目标 q t r i + 1 q_{tr}^{i+1} qtri+1。
训练逻辑
Tracklet-Aware Label Assignment
【目的是为 T r a c k Track Track Q u e r y Query Query 对轨迹与目标的一对一关系建模。】
TALA 有两种策略,分别对应着 D e t e c t Detect Detect Q u e r y Query Query和 T r a c k Track Track Q u e r y Query Query的训练策略
-
针对 D e t e c t Detect Detect Q u e r y Query Query :沿用DERT中的检测策略专门来检测追踪序列中每一帧出现的新目标。训练策略是对于 D e t e c t Detect Detect Q u e r y Query Query与新增目标的GroundTruth进行双向匹配。
-
针对 T r a c k Track Track Q u e r y Query Query :本文设计一个目标一致的训练策略。本帧的 T r a c k Track Track Q u e r y Query Query由上一帧的 T r a c k Track Track Q u e r y Query Query+ D e t e c t Detect Detect Q u e r y Query Query。对于第一帧, T r a c k Track Track Q u e r y Query Query为空集。
Collective Average Loss
【目的是为 T r a c k Track Track Q u e r y Query Query 对时序信息的传递进行前后帧建模。】
通常的训练策略是计算帧的loss,如此策略忽略了序列中存在的关于目标的运动信息。故本文设计了一个联合平均损失预测以video clip为基本单位的损失。联合平均损失=(单帧的追踪损失+单帧的检测损失)之和 / 帧数。
与强同学。