无视遮挡,跟踪一切目标!DINO-Tracker成就单目物体追踪里程碑

论文标题:

DINO-Tracker: Taming DINO for Self-Supervised Point Tracking in a Single Video

论文作者:

Narek Tumanyan, Assaf Singer, Shai Bagon, Tali Dekel

开源地址:

https://dino-tracker.github.io/

导读:

在机器人、自动驾驶及AR/VR等与视觉相关的领域中,运动物体追踪一直是一个难题,也是最热门的研究方向之一。近年来,各种追踪方法层出不穷。然而,无论是增加传感器的“物理追踪”,还是基于光流或粒子跟踪的方法,都难以处理存在遮挡的场景。

2023年Tracking Everything技术引起了广泛关注。该技术通过采用局部空间和标准空间的双向映射来追踪每一个像素,确保每个像素点的全局一致性,实现了对轻微遮挡的鲁棒性,但长距离的追踪仍然会出现跟丢的情况。

本文的DINO-tracker框架能够无视遮挡,实现对物体的长距离跟踪,突破了之前技术的局限,入选了ECCV24。©️【深蓝AI】编译

1. 问题引入

近年来,在视频中建立密集点对应关系这一研究取得了巨大进展。在短期的密集运动估计方面,比如光流估计,研究界的关注焦点是监督学习——设计强大的前馈模型,并在各种合成数据集上进行训练,利用精确的监督信息。最近,这一趋势扩展到了视频中的长期点跟踪领域。随着新架构(如Transformers)和提供长期轨迹监督的新合成数据集的出现,各种监督跟踪器被开发出来,展示了令人印象深刻的成果。

然而,精准的跟踪视频中每一个运动点对此类基于监督学习的方法而言是一个极大的挑战:

首先,用于点跟踪的合成数据集通常包含在不现实配置中的移动物体,相对于自然视频中运动和物体的广泛分布,这些数据集在多样性和规模上受到限制;

此外,现有模型在跨越整个视频时空范围内聚合信息的能力仍然有限——这一点在长时间遮挡(例如在物体被遮挡之前和之后正确匹配一个点)中尤其重要。

为了应对这些挑战,Omnimotion(也就是23年的Tracking Everything)提出了一种测试的优化框架,通过预计算的光流和视频重建作为监督,将跟踪提升到3D层面。这种方法通过优化给定测试视频上的跟踪器,本质上一次性解决了所有视频像素的运动问题。然而,Omnimotion存在一个致命缺点:它严重依赖预计算的光流和单个视频中的信息,没有利用关于视觉世界的外部知识和先验。

在本文中,作者提出了一种新方法,训练与大量数据的学习结合起来,取长补短,形成一个针对特定视频特征提取匹配再到追踪优化框架,该框架结合由广泛的无标签图像训练的外部图像模型学习到的强大特征表示。受到最近自监督学习巨大进展的启发,作者的框架利用了预训练的DINOv2模型——一个使用大量自然图像进行预训练的视觉Transformers。DINO的特征提取已经被证明能够捕捉细粒度的语义信息,并被用于各种视觉任务,如分割和语义对应。

本项工作是首次将基于DINO提取的特征用于密集跟踪的研究。作者展示了使用原始DINO特征匹配可以作为一个强大的跟踪baseline,但这些特征本身不足以支持亚像素精度的跟踪。因此,作者的框架同时调整DINO的特征以适应测试视频中的运动观察,同时训练一个直接利用这些精炼特征的跟踪器。为此,作者设计了一个新的目标函数,通过在精炼特征空间中培养稳健的语义特征级别对应关系,超越了光流监督实现的效果。

在这里插入图片描述
▲图1|效果演示©️【深蓝AI】编译

本文的核心贡献包括:

●首次利用预训练的DINO特征进行点跟踪;

●提出了第一个结合测试时训练和外部先验的跟踪方法;

●在长时间,长遮挡的跟踪方面显著提升了性能。

2. 实现细节

在这里插入图片描述
▲图2|全文方法总览©️【深蓝AI】编译

结合图2,可以理解全文方法的pipeline:

对于给定的输入视频序列,此方法的目标是训练一个跟踪器 ,该跟踪器接受查询点作为输入,并输出一组位置估计,这个过程很容易理解,就是特征提取+匹配+预测,但是这里的特征提取采用了预训练的 DINOv2-ViT 模型进行特征提取。如果各位对DINO还不太了解,请详细阅读下面这段介绍——

我们可以将DINO(Distillation with No Labels)理解为一种无标签的学习训练方法,它广泛应用于计算机视觉领域,尤其是在自监督学习和特征表示学习中。DINO模型的一个显著特点是利用Vision Transformer(ViT)架构进行训练,无需人工标注数据,通过自监督的方式学习图像的语义特征,DINO有三个最显著的特点:

●无需标签数据:通过自监督学习方法,DINO 能够有效减少对大量人工标注数据的依赖,从而降低数据准备的成本和时间;

●高质量特征表示:由于使用了 Vision Transformer 和对比学习策略,DINO 可以学习到更加语义丰富和泛化能力强的特征表示;

●灵活适应多种任务:DINO 所学习到的特征表示不仅适用于图像分类,还可以通过微调,适用于其他各种视觉任务,如目标检测和语义分割等。

DINO在本文中的应用:DINO 的预训练特征为此方法的框架提供了初始的语义和局部表示,但缺乏准确的长时间跟踪所需的时间一致性和细粒度定位。因此,此方法训练了 Delta-DINO,这是一种特征提取器,用于预测预训练 DINO 特征的残差。

此方法的目标是优化这些特征,使它们可以作为“轨迹嵌入”,即沿着轨迹采样的特征应该收敛到一个独特的表示,同时保留原始的 DINO 先验。这个过程实际上解决的是长距离的跟踪问题,以往的方法往往不会对未来的位置进行预测,而是直接对下一帧图像中相同的特征点进行匹配,这样一旦遮挡物出现,特征点之间的匹配失败,就会跟丢目标,而此方法的预测能力,能够在遮挡物出现的时候通过将预测的点进行匹配,从而保证跟踪的连续性。

■2.1 跟踪过程

DINO-Tracker的追踪过程可以分为三个阶段:特征提取+特征匹配+轨迹预测+全局一致优化。

关于特征提取,前文已经提到此方法主要采用预训练的DINO框架进行特征点的提取,这一部分主要利用了DINO框架的灵活性和高质量的特征表达,提取后的特征会形成一个特征图,用于后续的特征匹配。

在特征匹配阶段,比起传统的在特征点图中进行对应匹配,本文还提出了一个额外的匹配方式,就是用DINO提取的特征对应关系用于补充训练数据,提供额外的监督。通过识别“最佳配对点”提取可靠的匹配关系,其中每个点在一帧中的最近邻匹配第二帧中的最近邻。在训练期间,精炼特征改进其表示并发现新的可靠对应关系,形成持续更新的精炼最佳配对点集合,实现高质量的特征点匹配,这样得到的匹配关系更加精准,也为后续的长距离跟踪和障碍物遮挡打下了基础。

轨迹预测首先如前文所述,会训练一个Delta-DINO来进行初步的新特征点预测,也就是预测下一帧中特征点可能出现的位置,然而这个预测往往会存在一定的误差,此方法采自监督优化策略来优化这个误差。具体而言,就是使用从测试视频自动提取的监督信号来匹配沿轨迹的预测点。这些信号来自光流和DINO特征的对应关系。光流提供帧间精确的位移信息,通过链接这些位移创建短期轨迹。在预处理过程中,此方法通过计算出所有循环一致的光流对应关系,为短轨迹提供高质量的监督。笔者通俗地总结一下,轨迹预测分为两个阶段,第一阶段中采用Delta-DINO预测下一帧出现的特征点,在第二阶段中采用光流法计算当前特征点的位移信息,结合这个计算出来的位移信息以及预测得到的特征点信息进行联合优化,最终确定预测的轨迹,实际上是一个“双保险”的过程,光流发充分利用了已知的信息,Delta-DINO则使用了预训练DINO模型的强大先验。

通过特征提取+特征匹配,DINO-Tracker实现了每一帧中特征点的准确识别和配准,通过特征匹配+轨迹预测,实现了这一帧和下一帧的特征点准确跟踪,这个过程不断迭代,这就是DINO-Tracker能够实现长距离跟踪的核心。

■2.2 遮挡处理

此方法还有一个很强的能力,就是对于遮挡的处理,图3很好地说明了DINO-Tracker是如何在遮挡物出现的时候仍然保持鲁棒跟踪的原理。要处理遮挡场景,首先要有能力判断遮挡的出现,这一点在本文中通过测量轨迹位移差实现,如图3所示,作者选择K1和K2作为锚点,计算追踪点X0是否存在遮挡关系,从图中来看,X0处的轨迹和K1与K2处的轨迹有明显的位移差异,当这种位移差异出现的时候,就会判断在X0处出现了遮挡。这个计算的原理十分简单,目的就是为了提升速度!

想必各位都能发现,本文并不是实时处理遮挡关系的,而是通过当前帧与前两帧来计算遮挡关系,如果判断出现遮挡,就会及时优化修正前一帧中错误的追踪,但是由于这样的计算方式速度很快,这些都发生在电光火石之间,因此对于全局的追踪速度没有太大的影响。

当遮挡关系被计算得到之后,轨迹的预测就会派上用场了,前文中我们提到了对于轨迹预测的“双保险”,即使用Delta-DINO预测下一帧的特征点位置+使用光流直接计算特征点位置共同进行预测,然而遮挡的关系出现会导致光流法失效,因此这个时候会赋予Delta-DINO更多的权重,从而保持跟踪,当物体穿过遮挡物之后,光流又会继续上线,帮助修正全局的跟踪轨迹,通过这个过程实现了对于遮挡关系的处理。

很多人对此都会产生一个疑问:

如果遮挡关系出现得太久,一直依靠Delta-DINO的预测,是否会出现轨迹上的偏差?

答案是:一定会出现的。

在“透视”技术被研究出来之前,理论上来说没有太好的方法能够处理长时间的遮挡关系,但本文方法对于短时间能出现的遮挡关系的处理,已经堪称“完美”,能够应对大多数场景了!

在这里插入图片描述
▲图3|遮挡处理示意图©️【深蓝AI】编译

3. 实验效果

作者通过数值实验和可视化实验证明了本文方法的有效性,首先来看数值实验。

在这里插入图片描述
▲图4|数值实验结果©️【深蓝AI】编译

从图4中可以看到,作者在大部分的数据集中都超过了SOTA方法,并且这些SOTA方法大部分都不具备对于遮挡关系的处理能力。读者可能会觉得似乎作者的指标没有超出SOTA方法太多,我们需要注意的是,这里计算的是像素之间的距离,而由于投影关系,像素上个位数的差异经过投影变换到真实世界中,往往就会被放大到几米甚至十几米(根据不同的投影尺度),因此在这个领域,即便是很小的数值增长,也是很大的提升。

接下来是可视化实验,这里作者主要体现了本文方法对于遮挡和长距离跟踪的能力。

在这里插入图片描述
▲图5|可视化对比实验©️【深蓝AI】编译

从实验结果上来看,本文方法在遮挡出现的时候依旧能够实现鲁棒的跟踪,而对比方法基本上都会出现跟丢或者跟踪出错的问题(从图5左图看出),图五的右图主要体现的是长距离跟踪,图中的自行车选手在公路上“飙车”,速度很快,对比方法出现了不同程度的跟丢情况,而本文方法则死死“咬住”了目标,由此体现出本文方法的高性能。

在这里插入图片描述
▲图6|DINO特征点选取可视化©️【深蓝AI】编译

图6则可以看到DINO特征点提取的优势,可以从图中看到DINO提取的特征点十分均匀地分布在跟踪物体的各个关键运动位置(关节,轮廓边缘)这些部分是物体运动的重要追踪位置,而其他对比方法则无法实现对这些关键位置的特征提取和鲁棒的追踪。

4. 总结

本文提出了DINO-Tracker的追踪框架,能够很好地处理追踪过程中出现的遮挡关系以及长距离的汇总问题。通过利用DINO模型强大的先验知识,实现了对于任意物体的鲁棒追踪。DINO-Tracker不仅在短期内表现出色,还能在较长时间跨度内保持高精度的追踪能力,这主要得益于其特征点轨迹预测方法能够很好地忽略短时间内的遮挡,解决了追踪任务中的一个关键难题。

编译|阿豹

审核|Los

移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态👇

深蓝AI·赋能AI、智驾与机器人

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,Grounding DINO是一种结合了DINO和基于Transformer的检测器的模型,用于开放式目标检测。它的输入是图像和文本,输出是多个[物体框,名词短语]对。具体来说,Grounding DINO使用DINO模型对图像和文本进行编码,然后使用基于Transformer的检测器对编码后的特征进行检测,最终输出[物体框,名词短语]对。 下面是一个简单的示例代码,演示如何使用Grounding DINO进行开放式目标检测: ```python import torch from torchvision.models.detection import fasterrcnn_resnet50_fpn from transformers import ViTFeatureExtractor, ViTForImageClassification from transformers.models.dino.modeling_dino import DINOHead # 加载预训练的DINO模型和ViT模型 dino = ViTForImageClassification.from_pretrained('facebook/dino-vit-base') dino_head = DINOHead(dino.config) dino_head.load_state_dict(torch.load('dino_head.pth')) dino.eval() vit_feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224') # 加载预训练的Faster R-CNN检测器 model = fasterrcnn_resnet50_fpn(pretrained=True) model.eval() # 输入图像和文本 image = Image.open('example.jpg') text = 'a person riding a bike' # 对图像和文本进行编码 image_features = vit_feature_extractor(images=image, return_tensors='pt')['pixel_values'] text_features = dino_head.get_text_features(text) image_embedding, text_embedding = dino(image_features, text_features) # 使用Faster R-CNN检测器进行目标检测 outputs = model(image_embedding) boxes = outputs[0]['boxes'] labels = outputs[0]['labels'] # 输出[物体框,名词短语]对 for i in range(len(boxes)): print([boxes[i], labels[i]]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值