粒子视频回顾:使用点轨迹跟踪遮挡 CVPR2022
论文地址:https://arxiv.org/abs/2204.04153
开源代码:GitHub - aharley/pips: Particle Video Revisited
目录
3.4. Measuring local appearance similarity
3.7. Test-time trajectory linking
5.1. Training data: FlyingThings++
5.3. Trajectory estimation in FlyingThings++
视频中的像素追踪通常被研究为一个光流估计问题,其中每个像素都被描述为一个位移矢量,用来定位它在下一帧的位置。
文章提出 Deep Particle Video(DPV),一种通过遮挡进行多帧点轨迹估计的方法。将成本量和迭代推理与多帧时间深度网络结合起来,共同推理多个时间段内,视觉实体的位置和外观。
1. Introduction
提出了Deep Particle Video (DPV),一种新的粒子视频方法,利用长程时间先验来表示视频中的粒子在多个帧中的移动。它接受T帧的RGB视频作为输入,以及要跟踪的目标的(x;y)坐标,并输出一个T×2矩阵,表示目标在给定帧中的位置。
特征匹配和光流估计的方法在像素级别上估计长程轨迹的研究相对较少。特征匹配方法通过将每个新帧的特征与一个或多个源帧的特征进行匹配来工作,而不考虑时间上下文。光流方法可以在成对的帧之间产生准确的估计,但一旦目标被遮挡,就无法在光流场中表示,导致跟踪失败。
对此,粒子视频可以做到持久性穿越遮挡和多帧的时间上下文。为像素级别的长程轨迹估计提供了一种新颖的方法,并在特征匹配和光流方法无法处理的情况下,展现了优势。
图1:模型在DAVIS基准测试的RGB视频上的示例输出。输入RGB视频,并估计任意数量的目标像素的轨迹。左上:目标像素用圆点标记。左下:估计的轨迹。右:估计的轨迹覆盖在输入的第一帧上。
2. Related Work
Optical flow:
RAFT:模拟了一种迭代优化算法,并通过对所有像素对构建的4D相关体积进行迭代更新来估计高分辨率的光流场。本文也使用相关体作为输入来迭代更新位置估计,与RAFT不同的是,还更新特征。
A fusion approach for multi-frame optical flow estimation:一种用于多帧光流估计的融合方法。先前帧的光流估计用于获取当前时间步的多个候选光流估计,然后通过可学习模块将其融合成最终预测。相比之下,DPV明确地考虑了多帧上下文,并在所有考虑的帧上迭代更新其估计。请注意,如果不使用多个帧,就无法在遮挡之后恢复目标实体。
Unsupervised learning of multi-frame optical flow with occlusions:接近我们的方法,它使用3个帧作为多帧上下文,并明确考虑了遮挡。该工作使用恒定速度先验来估计遮挡期间的运动。相比之下,DPV将模型的大部分容量用于学习准确的时间先验,并在所有考虑的帧上迭代更新其估计,以寻找目标从遮挡中重新出现。
Feature matching:
Space-time correspondence as a contrastive random walk、A fusion approach for multi-frame optical flow estimation、Learning correspondence from the cycle-consistency of time:利用时间的循环一致性进行特征匹配。这使得在无标签视频中通过在特征空间上优化循环一致性损失来实现对特征的无监督学习。
MAST: A memoryaugmented self-supervised tracker、Self-supervised learning for video correspondence flow:通过优化代理重建目标来学习特征对应关系,其中目标是通过线性组合来自一个或多个参考帧的像素来重建目标帧(颜色或光流)。组合权重是通过计算目标帧特征与参考帧特征之间的亲和性来获得的。
监督方法(Visual correspondence hallucination: Towards geometric reasoning、 COTR: Correspondence Transformer for Matching Across Images、 Learning feature descriptors using camera pose supervision):直接使用图像之间的真实对应关系训练模型。提取每个图像的特征,并使用基于Transformer的处理器在图像之间定位对应关系。而本文考虑的是在长时间范围内的点对应关系,结合运动上下文,而不是像这些方法那样使用帧对。
3. Deep Particle Video (DPV)
3.1. Setup and overview
受论文Particle Video的启发。DPV接受T帧的RGB视频作为输入,以及第一帧上的一个单点的坐标(x1, y1),表示要跟踪的目标。作为输出,模型产生一个T×3矩阵,包含了随时间变化的T个跟踪坐标(xt, yt),以及可见性/遮挡估计vt∈[0, 1]。模型可以同时查询N个目标点,并且它们之间会共享一些计算资源,但模型不会在目标轨迹之间共享信息。
训练时,使用具有真实轨迹和可见性标签的点来查询模型。通过回归目标监督模型的(xt, yt)输出,并通过分类目标监督可见性估计vt。
成功追踪需要考虑到指定像素周围的局部空间上下文,因此模型对尺度和分辨率有一定的敏感性。
整体方法包括四个阶段,与RAFT光流方法相似:提取视觉特征(3.2节),为每个目标初始化位置和特征列表(3.3节),在局部测量外观相似性(3.4节),以及重复更新每个目标的位置和特征(3.5节)。
3.2. Extracting features
首先从输入视频的每一帧中提取特征。每一帧都经过一个2D卷积网络独立处理(即没有时间卷积)。生成1/8分辨率特征。
3.3. Initializing each target
通过双线性采样在第一个特征图中的第一个坐标内进行采样,得到一个特征向量f1,用于表示目标的特征。
使用这个采样的特征来初始化特征轨迹,将该特征沿时间维度复制,得到一个T × C大小的矩阵,其中C是通道维度。(这种初始化隐含了外观恒定的先验。)
以类似的方式初始化目标的位置轨迹。只需在时间维度上复制初始位置,得到一个T × 2形状的矩阵。(这种初始化隐含了零速度的先验,基本上假设目标的运动情况。)
在推理过程中更新特征轨迹以跟踪外观变化,并更新位置轨迹以跟踪运动。
3.4. Measuring local appearance similarity
测量局部外观相似性。衡量 位置轨迹和相关特征轨迹 与 特征图 的匹配程度。
将每个特征与 对应时间步长的特征图 进行相关运算,然后通过双线性采样在对应位置(xt, yt)中心处裁剪一个区域来获得“局部”得分。返回未归一化相似度得分的补丁,其中较大的正值表示目标特征与该位置处的卷积特征之间的高相似度。将初始得分集合表示为C0,形状为T × P · P,其中P是从每个相关图中提取的补丁的大小。
与RAFT类似,在这些得分补丁上创建空间金字塔有益于以多个尺度获得相似性测量。得分矩阵变为T × P · P · L,其中L是金字塔中的级别数。
3.5. Iterative updates
更新位置序列和特征序列。目前计算得到的所有信息:位置矩阵Xk,特征矩阵Fk,相关矩阵Ck。
从绝对位置Xk矩阵的每个元素中减去给定的位置(x1,y1),将其转换为位移矩阵。使用位移而不是绝对位置,使得所有输入轨迹看起来都以(0,0)开始,模型具有平移不变性。还将位移的正弦位置编码进行串联,类似VIT。
为了处理广泛的输入集合,将它们在通道维度上进行串联,得到一个形状为T × D的新矩阵,并使用12块MLP-Mixer进行处理,这是一种参数高效的全MLP架构,设计上与Transformer类似。作为输出,这个模块产生位置序列和特征序列的更新,即dX和dF,用于更新:
每次使用 更新后的特征 计算 更新后坐标处的新相关金字塔。
该更新模块迭代K次。最后一次更新之后,位置XK被视为最终轨迹,并将特征FK送入线性层以估计每个时间步长的可见性logits V。
3.6. Supervision
模型的主要损失函数使用真实轨迹和预测轨迹的L1距离进行模型的监督:
权重指数增加,K是迭代更新的次数,设置γ = 0.8。
模型的可见性估计,采用交叉熵损失:
V*是真实可见性标签。发现直接监督得分图在目标可见时峰值出现在正确位置(即真实对应位置)会加快收敛速度:
cj表示像素j处的匹配得分,i是具有对应关系的像素索引。将每个损失的系数设置为1,并对批次中的所有目标进行平均。
3.7. Test-time trajectory linking
测试时,通常希望生成比训练序列长度T更长的对应关系。为了生成更长的轨迹,从估计的轨迹中的任何时间步骤开始重复推理,将(xt,yt)视为新的(x1,y1),从而“延续”轨迹直到(xt+T,yt+T)。然而,简单地这样做可能会导致跟踪偏移。
首先,最重要的是避免从目标被遮挡的时间步骤继续轨迹。否则,模型将切换到跟踪遮挡物。做法:利用可见性估计,寻找可见性得分高于阈值的最远时间步骤。需要注意的是,寻找最远的可见时间步骤允许模型跳过目标暂时被遮挡的帧,只要遮挡的时间跨度小于模型的时间跨度(T)。由于可见性估计始终接近1,因为模型在训练时假设提供的(x1,y1)指示了真实目标,所以我们将这个选择过程中的前几个时间步骤排除在外,强制模型选择轨迹的后半部分的时间步骤。我们保守地将阈值初始化为0.99,并以0.01的增量逐渐降低,直到找到一个有效的选择。
即使使用了可见性感知的轨迹链接策略,模型仍然可能“忘记”最初跟踪的目标,因为目标初始化策略涉及每当向链中添加新的链接时,在新的(x1,y1)位置进行双线性采样。因此,我们还采用第二种策略,即始终使用在第一个时间步骤中找到的特征来初始化F0。直观上,这将模型锁定在跟踪“原始”目标上。这确实会导致目标特征与当前帧上的卷积特征图之间存在轻微不匹配,但我们发现内部的更新机制能够有效地补偿这一点。
4. Implementation details
CNN:使用了RAFT中的"BasicEncoder"架构。该架构包括一个7×7的步长为2的卷积层,然后是6个核大小为3×3的残差块,最后是一个核大小为1×1的卷积层。输出维度为C = 256。
局部相关金字塔:相关金字塔使用三个级别,半径为4。每个时间步长有三个9×9的相关补丁。
MLP-Mixer:输入是一个相对坐标、特征和相关金字塔的序列。通过减去第一个位置,将坐标设置为"相对"坐标,即序列的第一个元素是(0; 0),而其他元素可以被解释为从第一个时间步长的绝对位置起始的流向量。每个时间步长的输入被展平,然后被视为MLP-Mixer的一个向量序列(即"token")。在模型末尾,对序列维度进行求平均,然后经过一个线性层,将其映射到一个通道大小为T · (C + 2)的维度。
更新:将MLP-Mixer的输出重新调整为特征更新序列和坐标更新序列。
可见性:使用一个线性层将 最后一次更新迭代的像素级特征序列 映射为可见性logits。
优化:使用4个GPU进行批处理训练,批处理大小为4。在训练时,使用368×496的分辨率。对于批处理的每个元素,随机采样32条轨迹,其初始时间步被标记为“可见”(以确保跟踪目标始终在范围内且未遮挡)。进行500,000步的训练,学习率1e-4,采用1-cycle调度,使用AdamW优化器并将梯度裁剪到[-1; 1]。在四张GeForce RTX 2080显卡上,训练大约需要5天的时间。
超参数:使用T = 8(MLP-Mixer考虑的时间步长)和K = 8(更新迭代次数)。
复杂性:速度:当目标数量足够小以适应GPU时(例如,12G GPU上的128个目标),我们的模型比RAFT快(在480×1024分辨率下,340ms对比2000ms)。RAFT相对较慢的原因是:(1)它的内存消耗太大,无法并行计算所有帧的光流,所以必须运行T-1次;(2)大部分计算用于非目标像素。内存:模型的内存随着T·N的增加而增加,N是正在跟踪的粒子数,这是由于迭代的MLP-Mixer每个粒子消耗一个长度为T的特征序列。
5. Experiments
5.1. Training data: FlyingThings++
基于FlyingThings创建了一个合成数据集:FlyingThings++。
为了创建多帧轨迹的真实值,需要将真实光流进行链式传递,并丢弃未通过正向-反向一致性检查的链条(例如着陆在遮挡物上)。这样就创建了一组稀疏的4帧和8帧轨迹,还将原始光流场中的2帧轨迹添加到这个集合中。
正向-反向一致性检查确保了轨迹的准确性,但它会留下每个时间步长目标都可见的轨迹库。因此,在视频上方需要添加新的遮挡物。在批处理期间即时进行操作:对于每个FlyingThings视频,从另一个FlyingThings视频中随机选择一个对象,直接粘贴在当前视频上,并覆盖每帧中其掩码内的像素。然后更新地面实况,以反映每帧遮挡区域的新可见性,并更新轨迹列表以包括添加对象的轨迹。
将所有具有至少32个有效8帧轨迹的视频组合起来,获得了4311个训练视频和734个测试视频。也进行数据增强,包括颜色和亮度变化、随机尺度变化、随机裁剪、随机高斯模糊以及随机水平和垂直翻转。
5.2. Baselines
RAFT:通过迭代更新,对所有像素对之间构建的4D成本体积进行查找,来细化高分辨率的光流场。在FlyingThings上进行训练,但其时间跨度仅为2帧。在测试时,为了生成多帧轨迹,我们使用RAFT计算所有相邻帧之间的光流,然后在第一帧上查询像素并计算光流链。为了使超出边界的链继续延伸,将坐标限制在图像范围内,并在光流图的边缘采样。
DINO:基于ViT-S的模型。在ImageNet上进行训练,其自监督目标基于一种知识蒸馏设置,以建立对图像增强的不变性。将该模型用于多帧对应,使用论文提供的代码进行实例跟踪,使用初始帧和当前帧之间的最近邻,以及连续帧之间的最近邻,将匹配限制在先前匹配的局部邻域。
TimeCycle:通过优化一个目标函数来学习不同帧之间的像素对应关系,该目标函数鼓励在时间上保持一致性(即正向-反向一致性),包括跨越帧之间的一致性。与DINO相似,通过计算帧之间的特征相关性,并报告最近邻。
Contrastive Random Walk (CRW) :将视频视为时空图,边缘包含随机游走的转移概率,并通过在图上进行游走计算远程对应关系。类似于TimeCycle,该模型通过循环一致性进行训练。
Memory-Augmented Self-supervised Tracker (MAST):通过用参考帧的线性组合重构目标帧来学习特征之间的对应关系。在测试时,通过自回归方式预测对应关系。
Video Frame-level Similarity (VFS) :学习了一个编码器,生成视频内部帧级别的嵌入,使得同一视频中的帧相似,不同视频之间的帧不相似。该模型在Kinetics-400数据集上进行训练。
ImageNet ResNet :一个在ImageNet分类任务上以监督方式进行训练的ResNet50模型,与DINO使用相同的评估方式。
5.3. Trajectory estimation in FlyingThings++
用FlyingThings++测试集中的8帧视频作为输入,对所有具有真实值的像素估计轨迹,并评估每个估计轨迹与其相应的真实值之间的欧氏距离,然后对所有8个时间步骤进行平均。
特别关注在目标被遮挡或飞出画面时,模型与基准模型的性能比较。为了创建可控的超出边界和遮挡测试,首先对每个视频进行中心裁剪,大小为368×496,就可以获得一些飞出裁剪区域的轨迹。其次实施遮挡策略:在第2-5帧中用灰色像素替换一个200×200的正方形区域。
与DINO和RAFT进行比较。表1:测试集上不同评估结果的比较。DINO在所有分割情况下都表现不佳,并且在遮挡像素上的表现比可见像素差。RAFT对于可见像素的准确性很高,但随着遮挡的增加,其错误率也会增加。我们的模型在可见像素上的表现与RAFT相似,但对于遮挡情况具有一定的鲁棒性。RAFT的轨迹在添加遮挡物的区域变得“卡住”,而我们的模型能够在目标重新出现时定位它们,并填补轨迹中缺失的部分。
5.4. Trajectory estimation in KITTI
在由KITTI城市场景基准的“跟踪”子集创建的8帧点轨迹数据集上进行评估。DPV和RAFT性能大致相当,但DINO的误差几乎是两者的两倍。
5.5. Trajectory estimation in CroHD
在人群头部数据集(CroHD)上进行轨迹估计。从该数据集中提取8帧序列,使用12.5帧每秒的速率进行评估。过滤掉运动距离低于阈值的目标,并将评估分为可见目标和遮挡目标。DPV的性能远远超过RAFT和DINO,无论是哪种可见性设置。DINO整体表现不佳,可能是因为该数据集中的运动很小,而且DINO只能以粗糙的分辨率进行跟踪。
5.6. Keypoint propagation in BADJA
BADJA是一个带有关键点标注的动物视频数据集。标准评估指标是正确关键点传输百分比(PCK-T)。在参考图像上提供关键点标注,目标是将这些标注传播到其他帧上。如果关键点传输到真实像素坐标的距离小于0.2 * A(A是帧上的真实分割掩码的面积),则认为关键点传输是正确的。
在七个视频中,我们的模型在其中四个视频上产生了最好的关键点跟踪准确性,并且平均表现也是最好的,优势达到9个百分点。
DAVIS数据集具有以对象为中心的偏向性(即目标通常保持在画面中心附近),而DINO等对平移敏感的方法可以利用此特点,因为它们的特征编码了图像位置嵌入。RAFT和DPV更加通用。
图4可视化了DINO、RAFT和DPV在经历短暂遮挡的目标上的轨迹,说明了DINO仅粗略地进行跟踪,以及RAFT在遮挡之后失去跟踪的情况。
5.7. Limitations
模型有两个主要限制:
1.在空间感知和时间感知之间进行的极端权衡。尽管这最大化了模型中时间先验的作用,但它牺牲了可能有价值的可以在轨迹之间共享的信息。后续希望将架构扩展到同时估计多个点轨迹。
2.第二个限制源自于MLP-Mixer。由于这种架构选择,模型在时间上不是递归的。尽管可以通过在初始轨迹的末尾重新初始化推断来生成更长的轨迹,但如果目标停留在模型的时间窗口之外的遮挡区域,模型将会丢失目标。利用更长和潜在变化的时间上下文,有助于模型在更长的不确定期间进行跟踪,并可能利用更长范围的时间先验知识。
6. Conclusion
提出了Deep Particle Video(DPV),一种通过遮挡进行多帧点轨迹估计的方法。
将成本体积和迭代推理与多帧时间深度网络相结合,共同推理跨多个时间步长的视觉实体的位置和外观。粒子视频受益于时间上下文,这是基于匹配的方法所缺乏的,并且还可以在多帧遮挡情况下保持稳定,而这在基于光流的方法中是缺失的。鉴于光流和特征匹配在推动视频理解方面取得了巨大的进展,作者希望提出的多帧轨迹能够帮助 设计用于更长范围细粒度对应的架构和数据集。