论文链接:https://arxiv.org/pdf/2203.13250.pdf
Tracking-by-detection范式
当前多目标追踪大多遵循了Tracking-by-detection范式完成跟踪任务。Tracking-by-detection范式将追踪任务分为两步完成:目标检测与数据关联。这样的解决思路也使得当前许多Tracking-by-detection的追踪器将关注点放到了如何进行有效的数据关联。
- 对于Local Tracker的关联思路主要是进行逐帧的匹配关联,又称pairwise association,是一种贪心的局部最优方式,当追踪序列中目标一直在,这样的方式性能佳,但是当发现长时间遮挡或者外观巨变,这样的方法就失效了。我之前写的关于*MOTR*这篇论文就是这样一个局部关联的Tracker。
- 对于Global Tracker是基于图论等进行全局优化,这就使得它可以将不连续出现的目标匹配到一起,更鲁棒,但是速度慢,因为要预先得到许多帧的追踪目标才行,这样也使得追踪直接和检测分离。
文章侧重点
- 本篇论文的模型分为两部分:目标检测器和目标匹配器(GTR)。模型的输入是一段图片序列(文中为32帧),其中,目标检测器负责输出一段图片帧中的所有目标的边界框,GTR负责将这些目标匹配起来,输出检测给的边界框完成追踪任务,即输出是匹配了轨迹的序列。这点就使其成为Global Trackier。因为它是非逐帧关联,而是在一段序列(时间窗口)里进行所有检出目标的全局式关联。
- 这样的模型就引出了一个问题,目标检测器的好坏对整个模型的性能是比较关键的。因为后阶段的目标匹配所用到的目标特征依赖目标检测器的输出。
- 实际上在实现中,GTR做的就是将目标检测阶段输出的边界框包含的所有目标特征进行匹配,输出每个目标特征对应的一个关联分数向量【以计算相似度的方式】,按照分数向量将这些目标特征匹配关联。
网络结构
上图为Tracker的总体网络结构,包括了目标检测和追踪。
- 输入:一段长度为32帧的图片序列。
- 第一步:目标检测。 首先由目标检测器对输入的图片帧中所有目标检出,如图All-frame detections所示的每个目标的切块实际上就是目标检测器输出的目标边界框对应的特征。(要是这个时候输出的边界框与实际目标有偏移,会影响到后面目标匹配)
- 第二步:目标追踪模块——Global Tracking Transformer。 该模块输入是前一步的检出的所有目标+Trajectory Queries,输出是在目标上的轨迹归类结果。
- 以往的工作中,常常将Query这部分看作一个可学习的部分,在训练的时候训练其参数,在推理中固定参数,为输入的向量加权计算相似度。但是这里的Trajectory Queries并不是这样的作用。
- 因为目标检测器在一段图片序列(文中为32帧)输出的目标特征会非常多。GRT中的Trajectory Queries初始化为目标分类数量(这段图片中包含多少条不同目标的轨迹数量)相关的向量,Trajectory Queries与目标特征进行Cross-Attention,将目标特征之间的相似度分数(相似度最高的目标特征属于一个轨迹)输出为轨迹。
- 所以,Trajectory Queries只是一个存储目标特征之间相似度的一个向量,不需要怎么训练。训练的重点是Cross-Attention和线性映射等怎么增强目标的特征以便于相似的目标相似度更高。
目标关联模块——GTR
- 输入:
- F F F是目标检测器输出边界框对应的图片特征,N表示目标的个数,D是目标特征flatten之后的向量维度。
- Q Q Q表示相似度向量,M是目标分类数量或者说轨迹的个数,D表示目标特征flatten之后的向量维度。
- 输出: G G G表示目标关联分类分数向量, 即每一个列向量 G i ( : , i ) G_i(:,i) Gi(:,i)就表示第 i i i个目标特征对应的轨迹相似度向量,最高的那个相似度我们就将其分配为第 i i i个目标特征的轨迹。
训练策略与推理逻辑
这部分公式比较多,详见笔记。
今天西安天气很好,枫叶谷!