Motivation
作者认为当前方法的局限在于,跟踪目标的特征仅被表达学习,而没有做判别性的建模(即网络只学会了如何从表观上描述一个目标的特征,但并未学到不同目标特征之间的差异)。为了解决这一问题,本文引入对比学习(contrastive learning)构建实例级的跟踪器 Instance-Aware Tracker (IAT),确保每个训练样本都能被唯一建模,并与其他大量样本高度区分。提出的 IAT 包括 video-level 和 object-level 两种形式,前者提高了从背景中识别目标的能力,后者提高了区分目标和干扰物的判别能力。
Introduction
首先举一个例子,当人类在跟踪目标时,比如一只猫,我们不但会尽力记住它的眼睛、颜色、耳朵的形状等几个显著特征;同时利用大脑中的强先验知识还会知道这是一只特定的猫,知道这只猫和其他猫有什么不同,甚至知道和我们脑海中所有其他的东西有什么不同。这就是作者的出发点,一个强大的表征不仅应该表达性 (expressively) 地描述目标的特征,还需要区分性 (discriminatively) 地描述目标的特征。
对于判别性建模当前已经有一些工作:DaSiamRPN 增加语义负样本来提升判别性,但一个模板一次只能看到一个负样本,因此效果有限。SINT++ 提出生成难正样本进行鲁棒跟踪,但没有考虑负样本的重要性。Yao 在在线更新时选择难负样本来提高模型的适应性,但会降低推理时的速度。DiMP 充分利用目标 - 背景差异达到了较强的性能,但同样面对负样本数量有限的问题。这些方法均不完全或隐式地模拟了判别性建模,因此阻碍了性能提升。
因此,本文提出实例感知跟踪器 (Instance-Aware Tracker, IAT) 显式地建模视觉跟踪的判别性,首次将基于对比学习的实例级分类任务集成到跟踪中。作者借鉴了经典的 MoCo 算法(算法结构如下图),可以参考 MoCo 论文简析。将每个目标看成一个特定的类别,在 memory bank 中存储大量的类内和类间负样本。然后,对网络进行训练,使其从大量的负样本中对比区分目标对象,从而提升判别能力。
作者提出了两种不同级别的实例感知,视频级和对象级。前者将整个视频看成一个样本,从全局的视角提高了从背景中识别目标的能力;后者将每个目标看成一个实例,强化了目标和干扰物的区分能力。提出的方法仅在训练过程中使用,因此不会增加推理时间,作者在 PrDiMP 上进行实验,速度可以达到 30 FPS。
Method
整体框架如图 2 所示,包括特征提取、分类分支、回归分支和实例分类分支。整个上半部分就是 PrDiMP 的结构,增加的实例分类分支将每个目标与大量其他样本进行分类,以提高跟踪器的判别力。下面对实例分类分支进行详细介绍。
Instance Classification Branch
为了引入大量负样本,作者借鉴了自监督学习方法 MoCo,将该分支定义为字典查找任务,将来自同一视频的帧作为正样本,将来自其他视频的帧作为负样本。如图 2 所示,该分支包括 memory encoder 和 instance boosting module ,其中的网络结构和 f1/f2 相同用于提取字典中的特征,调整来自和 f1 的特征用于后续对比学习。
给定 query q 和字典,字典中包含一个正样本和 K 个负样本,对比学习的任务是从字典中查找到对应 q 的正样本。在本文的跟踪任务中,q 为模板特征,为搜索特征,而是来自其他视频的历史搜索特征。训练时,给定模板帧和搜索帧,实例分类分支的前向传播如下:
而字典是一个大的队列,每次迭代都会将当前的送入队列,把历史最早的特征移出队列,这样无需重复计算就能得到大量历史搜索特征作为负样本,这其中的负样本同时包含了类内和类间的负样本。memory encoder 采用动量更新的方式逐步逼近 query 的 encoder f1/f2:
样本 query 和 key 的相似性通过点积来衡量,最终的对比损失类似 InfoNCE:
Two Variants of IAT
上面介绍的对比学习框架中的 loss 是比较不同实例之间的相似性,但输入是完整的图片,因此下面我们来看如何将输入的图片转化成实例的概念,即 instance boosting module 。作者提出了两种不同粒度的实例的概念,包括视频级别的实例 (IAT-V) 和对象级别的实例 (IAT-O),如图 3 所示。
IAT-V 将每个视频视为一个实例,它使用了包含目标和背景的整个输入帧的特征,结构如图 3 左半部分所示。经过一层卷积后全局池化成 1×1 大小,再过两层 FC 得到了对应的特征向量。IAT-V 可以学习视频之间的差异,某一视频中的目标将有机会从其他负样本视频的目标和背景中学习目标和干扰物之间的差异。因此,IAT-V 可以从全局的角度提高从包括语义对象和非语义杂波的各种背景中识别目标的能力。
IAT-O 将每个目标边界框视为一个实例,如图 3 右半部分所示。相比 IAT-V 增加了一个 ROI Pooling 层来提取目标框内的特征。因此,IAT-O 中的所有样本均为语义样本,可以从更具体的角度来区分不同物体之间的特征。
Training Loss
训练损失包含三部分:
其中来自 PrDiMP 的分类和回归损失,是公式 5 的实例分类损失。整个训练流程如算法 1 所示,和 MoCo 的流程是一样的。注意该过程只用在训练中,推理时只有分类和回归分支在工作。
Experiments
实验选择了 8 个数据集进行验证:OTB50, OTB100, GOT-10k, LaSOT, NFS, UAV123, TrackingNet, VOT2019。负样本数量 K=1000,数量远超 DaSiamRPN 和 DiMP 中的负样本个数。
Ablation Study
表 1 分析了 memory bank 中负样本 K 的数量,可以看到,增加负样本哪怕只有 10 个都是有益的,差不多到 1000 性能饱和了,再增加反而加大了区分的难度。
表 2 分析了 IAT-O 中不同的 ROI 池化尺寸,3 最佳。
表 3 对比了 IAT-V,IAT-O 以及将它们结合的效果。shared 表示二者共享同一个 instance classification branch 并且将得到的特征向量相加,separated 表示不共享 instance classification branch 但同样相加特征向量。这两种结合方式均未带来明显提升,因此作者认为单独使用即可。
SOTA Comparison
在大多数数据集上,IAT-O 结果优于 IAT-V。可能是该模型更细粒度的区分,进一步提高了克服干扰的能力。