Skip to content

对比学习在多目标跟踪中的应用

多目标跟踪(Multi-Object Tracking, MOT)是计算机视觉中的一个重要任务,其目标是对视频中的多个目标进行连续跟踪和识别。近年来,对比学习作为一种强大的特征学习方法,被广泛应用于多目标跟踪任务中,取得了显著的效果。本文将对对比学习在多目标跟踪中的应用进行综述,重点介绍几篇相关的重要论文及其方法[7][8]。

1. QDTrack: Quasi-Dense Similarity Learning for Appearance-Only Multiple Object Tracking[7]

1.1 主要思想

QDTrack 是对比学习在多目标跟踪中的开创性工作。其核心思想是利用对比学习来优化外观特征网络,从而提高目标之间的区分能力。传统的外观特征网络训练方法(如分类方法)在面对大规模数据集时会面临类别数量过多的问题,导致训练困难。而对比学习通过拉大正负样本之间的特征距离,显著降低了训练难度[7]。

QDTrack 提出了一种密集采样方法,通过增加正负样本的数量来提高对比学习的性能。它将多目标跟踪的关联问题转化为特征距离的计算,从而避免了对运动特征的依赖[7]。

1.2 具体方法

1.2.1 训练过程

QDTrack 的训练过程如下:

  1. 选定一帧作为关键帧(key frame),并随机采样另一帧作为参考帧(reference frame)。
  2. 利用检测器的结果定位每个目标,并通过 ROI Align 提取目标区域的特征。
  3. 定义正负样本:如果预测边界框与真值的 IoU 大于阈值 \( \alpha_1 \),则为正样本;如果 IoU 大于 \( \alpha_2 \),则为负样本。
  4. 损失函数采用 InfoNCE 损失,通过拉大正负样本之间的特征距离来优化网络[7]。

QDTrack 的损失函数如下: $$ \mathcal{L}{\text{embed}} = - \sum $$ 其中,}} \log \frac{\exp(\mathbf{v} \cdot \mathbf{k^+})}{\exp(\mathbf{v} \cdot \mathbf{k^+}) + \sum_{\mathbf{k^-}} \exp(\mathbf{v} \cdot \mathbf{k^-})\( \mathbf{v} \) 是关键帧的样本特征,\( \mathbf{k^+} \)\( \mathbf{k^-} \) 分别是正负样本的特征[7]。

此外,QDTrack 还引入了一个辅助损失函数,用于优化正样本对之间的相似度: $$ \mathcal{L}_{\text{aux}} = \left( \frac{\mathbf{v} \cdot \mathbf{k}}{|\mathbf{v}| |\mathbf{k}|} - c \right)^2 $$ 其中,正样本对对应的 \( c = 1 \),负样本对对应的 \( c = 0 \)。最终的总损失函数是检测损失、\( \mathcal{L}_{\text{embed}} \)\( \mathcal{L}_{\text{aux}} \) 的加权和[7]。

1.2.2 推理过程

推理阶段的两个主要创新点如下:

  1. 类间 NMS:由于检测器的分类可能不准确,导致同一个目标被分配到不同的类别,因此 QDTrack 引入了类间 NMS 来解决这一问题[7]。
  2. 双向 Softmax:在计算外观相似度时,QDTrack 采用了双向 Softmax 而非简单的余弦相似度,从而充分利用了所有样本的信息[7]。

2. Towards Discriminative Representation: Multi-view Trajectory Contrastive Learning for Online Multi-object Tracking[7]

2.1 主要思想

该论文提出了一种基于轨迹的对比学习方法,旨在利用历史轨迹信息来更全面地描述目标,从而提高多目标跟踪的性能。与 QDTrack 不同,该方法不仅关注相邻帧之间的样本对,还利用整个轨迹时域上的信息来进行对比学习[7]。

2.2 具体方法

2.2.1 Learnable View Sampling

为了生成更多的正样本,该方法引入了一个线性层,根据目标的中心点坐标预测更多的采样点坐标。这些采样点代表同一个目标,从而增加了正样本的数量[7]。

2.2.2 轨迹中心记忆库

该方法将历史轨迹表示为一个向量,并存储到动态记忆库中。在训练阶段,网络以多帧作为输入,并检测出每个帧中的所有目标。通过更新记忆库中的特征向量,该方法可以利用丰富的帧间信息来进行对比学习[7]。

损失函数采用 InfoNCE 损失: $$ \mathcal{L}_{\text{NCE}}^k = - \log \frac{\exp(\tilde{\mathbf{v}}_l^k \cdot \mathbf{c}_l) / \tau}{\sum_i \exp(\tilde{\mathbf{v}}_l^k \cdot \mathbf{c}_i) / \tau} $$ 其中,\( \tilde{\mathbf{v}}_l^k \) 是外观特征向量,\( \mathbf{c}_l \) 是轨迹中心向量,\( \tau \) 是温度参数[7]。

最终的总损失函数是所有外观嵌入的平均损失: $$ \mathcal{L}{\text{TCL}} = \frac{1}{N_a} \sum^k $$}^{N_a} \mathcal{L}_{\text{NCE}

3. Uncertainty-aware Unsupervised Multi-Object Tracking[7]

3.1 主要思想

对于无监督多目标跟踪,由于缺乏目标 ID 的标签,通常需要通过相似度准则生成伪标签。然而,这种方法容易导致错误累积。为了解决这一问题,该论文提出了一种不确定性感知的无监督多目标跟踪方法。其核心思想是利用不确定性来优化外观特征提取网络,并通过融合运动特征(IoU)来降低不确定性[7]。

3.2 具体方法

3.2.1 不确定度的衡量与修正

在无监督训练中,该方法通过计算外观相似度的不确定度来衡量目标之间的匹配关系。不确定度的定义如下: $$ \sigma_{i, j} = - \log c_{i, j} - \log (1 - c_{i, j2}) $$ 其中,\( c_{i, j} \) 是目标 \( i \) 和目标 \( j \) 之间的外观相似度,\( c_{i, j2} \) 是目标 \( i \) 与其他目标之间的相似度[7]。

为了修正不确定度,该方法引入了历史外观信息和运动信息(IoU),新的代价矩阵如下: $$ c_{i, j}' = \left( \frac{1}{K} \sum_{\hat{t}=t-K}^{t-1} \mathbf{f}_i^t \cdot \mathbf{f}_j^{\hat{t}} \right) \times \mathbb{I}(\text{IoU}(b_i^t, b_j^{t-1}) > \beta) $$

3.2.2 轨迹数据增强

该方法通过仿射变换矩阵生成增强图像,从而增加样本数量。增强图像的轨迹匹配概率如下: $$ p(a = i \mid t) = \frac{\exp(-\Omega_i)}{\sum_{\hat{i}=1}{Mt} \exp(-\Omega_{\hat{i}})} $$ 其中,\( \Omega_i \) 是轨迹 \( i \) 的不确定度[7]。

4. Tracking Every Thing in the Wild[7]

4.1 主要思想

该论文是 QDTrack 的后续工作,旨在解决多类多目标跟踪中的分类问题。传统的多类多目标跟踪方法通常将不同类别的目标分别进行跟踪,但这种方法在面对大规模数据集时容易受到类别分类错误的影响。为了解决这一问题,该论文提出了一个新的评价指标,并引入了类别纠正的对比学习框架[7]。

4.2 具体方法

4.2.1 新的评价指标

该论文提出了一个新的评价指标,将定位性能、关联性能和分类性能分开评估。具体如下:

  1. 定位分数: $$ \text{LocA} = \frac{TPL}{TPL + FPL + FNL} $$ 其中,TPL 是正确定位的目标数量,FPL 是定位错误的目标数量,FNL 是未检测到的目标数量[7]

4.2.2 类别纠正的对比学习框架

为了解决分类器无法准确分类的问题,该论文提出了一种基于对比学习的类别纠正方法。具体如下:

  1. 模型以连续两帧作为输入,对于与 GT box 的 IoU 大于 0.7 的 RoI,将其分配为 GT box 的类别。
  2. 在对比学习中,正样本定义为同一类别的其他目标,负样本为其他类别的目标。这种方法促使模型学习细粒度的类别级特征。
  3. 采用的损失函数是 Supervised Contrastive Learning 中的 SupCon 损失: $$ \mathcal{L}{\mathcal{C}} = - \sum $$ 其中,$ \text{PosD}(q) $ 是正样本的相似度总和: $$ \text{PosD}(q) = \frac{1}{|Q^{+}(q)|} \sum_{q^{+} \in Q^{+}} \exp(\text{sim}(q, q^{+}) / \tau) $$} \frac{1}{|Q^{+}(q)|} \sum_{q^{+} \in Q^{+}(q)} \log \frac{\exp(\text{sim}(q, q^{+}) / \tau)}{\text{PosD}(q) + \sum_{q^{-} \in Q^{-}} \exp(\text{sim}(q, q^{-}) / \tau)

Ref

https://blog.csdn.net/wjpwjpwjp0831/article/details/135182216