URL
TL;DR
-
提出了一个完全端到端的多目标跟踪框架
-
将多目标跟踪问题形式化为一组序列预测问题
-
引入了跟踪感知的标签分配
-
提出了用于时间建模的集体平均损失和时间聚合网络方法
Algorithm
MOTR 整体流程
-
特征提取:用
CNN backbone
提取连续帧中每一帧的特征(上图中的Enc
) -
查询生成:用
Deformable Transformer
对第一步提取的特征进行查询(上图中的Dec
)-
对于视频第一帧,只解码
object detection query
(上图中的 )得到hidden state
-
对于非第一帧,将
object detection query
(上图中的 )和上一帧的tracking query
(上图中的 )先concat
再进行解码得到hidden state
-
-
预测结果生成:用一个简单的结构将上一步得到的
hidden state
映射到任务空间,预测结果包含object detection results
和tracking results
-
得到下一帧的 tracking query:用
QIM (Query Interaction Module, 查询交互模块)
将上一步得到的预测结果映射为下一帧的tracking query
-
计算损失 / 输出预测结果:对于训练,计算集体平均损失(
CAL, Collective Average Loss
);对于预测,直接输出第 3 步得到的结果
- 描述
MOTR
过程的伪代码
1 | def process_frame(frame, detect_queries, track_queries=None, ground_truths=None): |
查询交互模块
-
查询交互模块
Query Interaction Module (QIM)
是MOTR
中的一个关键组件,它负责处理物体的进入和退出,以及增强长期的时间关系建模 -
QIM
的输入是当前帧预测的detection result
和tracking result
,输出是下一帧的tacking query
-
通俗来说,
QIM
是根据当前帧预测的结果,给出下一帧的 “提问” -
QIM
过程的伪代码
1 | def query_interaction_module(hidden_states, scores, tau_en, tau_ex, M): |
集体平均损失
-
集体平均损失(Collective Average Loss,CAL)是
MOTR
算法中用于训练的损失函数。不同于传统的逐帧计算损失,CAL
收集整个视频剪辑的所有预测,然后基于整个视频剪辑计算总体损失 -
集体平均损失的代码描述
1 | def collective_average_loss(predictions, ground_truths, matching_results): |
Thought
-
以一种非常优雅的方式解决了端到端多目标追踪的任务,打破了之前
NN detection + Hard logic code tracking
的tracking
范式 -
这种非黑盒的(显式监督
detecion bbox
)复杂任务端到端训练,启发了后续的许多更复杂的端到端任务,例如UniAD