Explicitly Modeling the Discriminability for Instance-Aware Visual Object Tracking

论文

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 $\omega$ 和instance boosting module $\psi$,其中$\omega$的网络结构和f1/f2相同用于提取字典中的特征,$\psi$调整来自$\omega$和f1的特征用于后续对比学习。

给定query q和字典$\{k_+, \{k_i\}^K_{i=1} \}$,字典中包含一个正样本$k_+$和K个负样本,对比学习的任务是从字典中查找到对应q的正样本$k_+$。在本文的跟踪任务中,q为模板特征,$k_+$为搜索特征,而$\{k_i\}^K_{i=1}$是来自其他视频的历史搜索特征。训练时,给定模板帧$I_t$和搜索帧$I_s$,实例分类分支的前向传播如下:

而字典是一个大的队列,每次迭代都会将当前的$k_+$送入队列,把历史最早的特征移出队列,这样无需重复计算就能得到大量历史搜索特征作为负样本,这其中的负样本同时包含了类内和类间的负样本。memory encoder $\omega$ 采用动量更新的方式逐步逼近query的encoder f1/f2:

样本query和key的相似性通过点积来衡量,最终的对比损失类似InfoNCE:

Two Variants of IAT

上面介绍的对比学习框架中的loss是比较不同实例之间的相似性,但输入是完整的图片,因此下面我们来看如何将输入的图片转化成实例的概念,即instance boosting module $\psi$。作者提出了两种不同粒度的实例的概念,包括视频级别的实例(IAT-V)和对象级别的实例(IAT-O),如图3所示。

IAT-V将每个视频视为一个实例,它使用了包含目标和背景的整个输入帧的特征,结构如图3左半部分所示。经过一层卷积后全局池化成$1 \times 1$大小,再过两层FC得到了对应的特征向量。IAT-V可以学习视频之间的差异,某一视频中的目标将有机会从其他负样本视频的目标和背景中学习目标和干扰物之间的差异。因此,IAT-V可以从全局的角度提高从包括语义对象和非语义杂波的各种背景中识别目标的能力。

IAT-O将每个目标边界框视为一个实例,如图3右半部分所示。相比IAT-V增加了一个ROI Pooling层来提取目标框内的特征。因此,IAT-O中的所有样本均为语义样本,可以从更具体的角度来区分不同物体之间的特征。

Training Loss

训练损失包含三部分:

其中$L_{cls}, L_{reg}$来自PrDiMP的分类和回归损失,$L_{ins}$是公式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。可能是该模型更细粒度的区分,进一步提高了克服干扰的能力。