阅读笔记-TransTrack: Multiple-Object Tracking with Transformer

来源: arXiv:2012.15460v1
代码: https://github.com/PeizeSun/TransTrack

Title

这篇文章的主要思路是利用transformer思路实现query-key的跟踪匹配。
motivation可以从Fig.1 看出来。


motivation

(a) 是传统的tracking-by-detection结构,即每一帧先进性目标的检测,然后每个目标patch进行特征的抽取,相邻帧之间利用特征相似度矩阵进行数据关联的推理获得连续的轨迹;
(b) 单目标跟踪器的应用。一般而言,每个目标具有一个模板,然后通过该模板在候选区域的匹配找到当前帧中轨迹跟踪结果,途中query就是模板,key是候选模板,代表性方法比如SiamRPN等;
(c) 单目标query-key机制在多目标跟踪场景的应用,即把每一个目标创建成单目标跟踪器,但此时存在的问题是无法处理新出现的目标,这时候一般需要额外的检测器找到新出现的目标。

于是这篇文章的目的是将目标检测和query-key跟踪机制进行融合。具体的思路如Fig.2所示:

Pipeline

以当前帧图像为输入,然后利用DETR的思路实现了两个检测器,分别表示track到的box和detect的box。两个检测器的不同点在于query的设置不同。detection分支和DETR相同,是学习得到的query,而tracking分支的query是前一帧跟踪器提供的目标的特征。获得了两种检测结果后通过IOU匹配获得关联结果。注意这里 和 时刻的object feature 的关系,也就是说作为下一帧的object query的feature是当前帧detect分支用于解析检测框的特征。

这里可以将track分支理解为由历史信息预测的位置,比如tracktor上的预测,或者更简单的利用motion信息进行预测。检测分支则主要用于产生新轨迹。

其实,这里可以改进,可以把两个分支结合,然后就能避免IOU匹配过程。

architecture details

可以发现细节部分,transformer的encoder是共享的,而两个decoder结构也是一样的,只有query不同。

训练数据:需要序列数据,从中选择连续帧或者随机两帧作为训练样本。如果使用静态图像的话,需要通过尺度或平移变化对其相邻帧进行模拟。

训练损失:两个decoder分支都是检测任务,因此检测分支的损失和DETR相同,使用set prediction loss做gt的分配,然后进行回归和分类损失的计算。而对于track的分支,此时有轨迹特性不需要再次进行gt的分配,直接计算分类和回归损失。

推理阶段:第一帧纯粹的检测任务,后续两帧两帧的操作进行串联。为了处理短时丢失或者遮挡,方法也设置了对应的rebirth策略,即重新找回的策略。具体来说就是track的box需要连续K帧没有匹配才认为轨迹消失,中间出现匹配的情况则该轨迹被重新激活。 这里其实并不合理,因为目标运动过程中,box肯定位移较大,特别是密集场景中,若干帧之后进行匹配成功也不一定是原始目标,所以这里其实最好是保留对应的feature,而不是box

实验数据:MOT17, 训练和验证集构造是分别取每段序列的一半。 CrowdHuman进行预训练。具体的实验细节讲的不是很清楚,不知道到底训练了多少个epoch。可能Deformable transformer作为back architecture训练了150个epoch吧?

消融实验:

  1. 对比了标准transformer, transformer+DC5, transformer+P3(只利用FPN替换encoder), deformable DETR,显然最后的效果最好。
  2. 验证同时使用learned object query和feature query的效果。这里只是用learned object query时,匹配直接通过预测结合的索引进行匹配,作者认为每个query预测目标位置应该都在近似空间内。这里很奇怪,作者没对比此时使用feature进行关联的结果,以及如果纯粹使用box的IOU匹配结果又会怎么样?
    单独利用feature query就是没有新轨迹的产生,显然性能很差,但为什么没有MOTA指标??

与SOTA的对比:


MOT17 test set

实验可以发现本文方法在IDF1和IDS指标上表现并不好,说明对于轨迹连续性的刻画能力不够好。MOTP度量的是检测器的性能不能说明跟踪器的优势,FP和FN一定程度上此起彼伏也不能说明问题,所以最终看的就是MOTA和IDF1, IDS指标。因此对比结论就是该方法性能还很粗糙。

结论:
本文提出了使用transformer处理MOT任务,基本思路是将DETR检测器和以特征为query的DETR预测结果进行关联持续跟踪,是一种基于transformer 的MOT的尝试。
但该方法其实问题还挺多。

  1. 基于transformer更自然的想法是end-to-end,就应该避免匹配过程,但该方法还存在iou matching部分;
  2. 既然learned query和track query都进行box的预测,为什么不能进行融合呢,即学习一个track query到learned query的映射,这样decoder每次输入100个query,这些query包含可学习得query以及前一帧feature变换后的query,直接预测box,也避免了iou matching。
    3.历史特征没有使用,其实可以用来做rebirth。

你可能感兴趣的:(阅读笔记-TransTrack: Multiple-Object Tracking with Transformer)