2024年7月29日,Meta在官网发布SAM2开源消息:segment-anything-2
在这里插入图片描述

在这里插入图片描述

要点:

  • 继图像元分割模型(SAM) 取得成功之后,最新发布SAM 2,这是一个用于在图像和视频中实时提示对象分割的统一模型,可实现最先进的性能。
  • 开源SA-V 数据集,其中包括大约51,000 个真实世界视频和超过 600,000 个 masklet(时空掩模)。
  • SAM 2 可以分割任何视频或图像中的任何对象
  • 即使对于以前从未见过的对象和视觉域也是如此,从而无需进行自定义调整即可实现多种使用案例。
  • SAM 2 具有许多潜在的实际应用。例如,SAM2 的输出可与生成视频模型一起使用,以创建新的视频效果并解锁新的创意应用。
  • SAM 2还可以帮助更快地注释视觉数据,以构建更好的计算机视觉系统。SAM 2 网络演示的预览,允许分割和跟踪视频中的对象并应用效果。
    在这里插入图片描述

如何打造 SAM 2

SAM 能够学习图像中物体的一般概念。然而,图像只是动态现实世界的静态快照,其中视觉片段可以表现出复杂的运动。许多重要的现实世界用例需要在视频数据中进行准确的对象分割,例如在混合现实、机器人、自动驾驶汽车和视频编辑中。相信通用分割模型应该适用于图像和视频。

图像可以看作是一段只有一帧的非常短的视频。采用这种观点来开发一个统一的模型,无缝支持图像和视频输入。处理视频的唯一区别是,模型需要依靠内存来回忆该视频之前处理过的信息,以便在当前时间步准确分割对象。在这里插入图片描述

成功分割视频中的对象需要了解实体在空间和时间中的位置。与图像中的分割相比,视频带来了重大的新挑战。物体运动、变形、遮挡、光线变化和其他因素可能会在每一帧之间发生巨大变化。由于相机运动、模糊和分辨率较低,视频质量通常低于图像,这增加了难度。因此,现有的视频分割模型和数据集无法为视频提供类似的“分割任何内容”功能。在构建 SAM 2 和新 SA-V 数据集的工作中解决了许多这些挑战。

与用于 SAM 的方法类似,在实现视频分割功能方面的研究涉及设计新任务、模型和数据集。首先开发可提示的视觉分割任务,并设计一个能够执行此任务的模型 (SAM 2)。使用 SAM 2 来帮助创建视频对象分割数据集 (SA-V),该数据集比目前存在的任何数据集都要大一个数量级,并用它来训练 SAM 2 以实现最先进的性能。

可提示的视觉分割

SAM 2 支持选择和细化任何视频帧中的对象。

设计了一个可提示的视觉分割任务,将图像分割任务推广到视频领域。SAM 经过训练,可以将图像中的点、框或蒙版作为输入,以定义目标对象并预测分割蒙版。借助 SAM 2,训练它接受视频任意帧中的输入提示,以定义要预测的时空蒙版(即“蒙版小片”)。SAM 2 根据输入提示立即预测当前帧上的蒙版,并将其在时间上传播以生成所有视频帧中的目标对象的蒙版小片。一旦预测了初始蒙版小片,就可以通过在任意帧中向 SAM 2 提供额外提示来迭代细化它。这可以根据需要重复多次,直到获得所需的蒙版小片。

统一架构中的图像和视频分割

从SAM 到 SAM 2 的架构演变:

SAM 2 架构可视为 SAM 从图像到视频领域的推广。SAM 2 可通过点击(正或负)、边界框或掩码来提示,以定义给定帧中对象的范围。轻量级掩码解码器采用当前帧的图像嵌入和编码提示来输出该帧的分割掩码。在视频设置中,SAM 2 将此掩码预测传播到所有视频帧以生成掩码。然后可以在任何后续帧上迭代添加提示以优化掩码预测。

为了在所有视频帧中准确预测掩码,引入了一种记忆机制,由记忆编码器、记忆库和记忆注意模块组成。当应用于图像时,记忆组件为空,模型的行为类似于 SAM。对于视频,记忆组件可以存储有关该会话中对象和先前用户交互的信息,从而使 SAM 2 能够在整个视频中生成掩码预测。如果在其他帧上提供了其他提示,SAM 2 可以根据存储的对象记忆上下文有效地纠正其预测。

记忆编码器根据当前掩码预测创建帧记忆,并将其放置在记忆库中,用于分割后续帧。记忆库由来自前一帧和提示帧的记忆组成。记忆注意操作从图像编码器获取每帧嵌入,并在记忆库上对其进行条件处理以生成嵌入,然后将其传递给掩码解码器以生成该帧的掩码预测。对所有后续帧重复此操作。

采用流式架构,这是 SAM 在视频领域的自然推广,一次处理一个视频帧并将有关分割对象的信息存储在内存中。在每个新处理的帧上,SAM 2 使用记忆注意模块来关注目标对象的先前记忆。这种设计允许实时处理任意长的视频,这不仅对于收集 SA-V 数据集的注释效率很重要,而且对于现实世界的应用(例如机器人技术)也很重要。

SAM 引入了在图像中分割对象存在歧义时输出多个有效掩码的功能。例如,当一个人点击自行车轮胎时,模型可以将这次点击解释为仅指轮胎或整辆自行车,并输出多个预测。在视频中,这种歧义可以扩展到视频帧中。例如,如果在一帧中只有轮胎可见,则点击轮胎可能只与轮胎有关,或者随着自行车的更多部分在后续帧中变得可见,这次点击可能是针对整辆自行车的。为了处理这种歧义,SAM 2 在视频的每个步骤中创建多个掩码。如果进一步的提示不能解决歧义,模型将选择置信度最高的掩码在视频中进一步传播。

SAM 2 架构中的遮挡头用于预测物体是否可见,即使在物体暂时被遮挡时也有助于分割物体。

在图像分割任务中,只要有积极的提示,帧中总会有一个有效的对象可供分割。在视频中,特定帧上可能不存在有效对象,例如由于对象被遮挡或从视野中消失。为了解释这种新的输出模式,添加了一个额外的模型输出(“遮挡头”),用于预测当前帧中是否存在感兴趣的对象。这使 SAM 2 能够有效地处理遮挡。

SA-V:构建最大的视频分割数据集在这里插入图片描述

将“分割任何内容”功能扩展到视频的挑战之一是用于训练模型的注释数据有限。当前的视频分割数据集很小,缺乏对各种对象的充分覆盖。现有的数据集注释通常覆盖整个对象(例如人),但缺少对象部分(例如人的夹克、帽子、鞋子),并且数据集通常以特定对象类别为中心,例如人、车辆和动物。

为了收集大量多样化的视频分割数据集,构建了一个数据引擎,利用带有人工注释者的交互式模型在环设置。注释者使用 SAM 2 以交互方式注释视频中的 masklet,然后使用新注释的数据依次更新 SAM 2。多次重复此循环,以迭代方式改进模型和数据集。与 SAM 类似,不对注释的 masklet 施加语义约束,而是同时关注整个对象(例如,一个人)和对象部分(例如,一个人的帽子)。

使用 SAM 2,收集新的视频对象分割掩码的速度比以往更快。使用的SAM 2 在循环中进行注释的速度比使用 SAM 每帧的速度快约 8.4 倍,也比将 SAM 与现成的跟踪器相结合的速度快得多。

发布的 SA-V 数据集比现有的视频对象分割数据集包含多一个数量级的注释和大约 4.5 倍的视频。

SA-V 数据集的亮点包括:

  • 规模: 50.9K 个视频,642.6K 个 masklet(35.5M 个 mask),比任何现有视频分割数据集大 53 倍。
  • 多样性:涵盖不同的场景(室内、室外)、物体(整个物体和部分)和运动模式,包括遮挡和重现。
  • 地理和人口统计代表性:视频由来自 47个国家的众包工作者收集,确保涵盖广泛的真实场景并最大限度地减少偏见。

结果

这两个模型都是用第一帧中的 T 恤蒙版初始化的。对于基线,使用来自 SAM 的蒙版。与过度分割并包括人的头部而不是仅跟踪 T 恤的基线相比,SAM 2 能够在整个视频中准确跟踪物体部分。

为了创建统一的图像和视频分割模型,将图像视为单帧视频,在图像和视频数据上联合训练 SAM 2。利用去年作为 Segment Anything 项目的一部分发布的 SA-1B 图像数据集、SA-V 数据集以及额外的内部许可视频数据集。

SAM 2(右)提高了 SAM(左)图像中的物体分割精度。

在研究论文中详述的重点包括:

SAM 2 在 17 个零样本视频数据集的交互式视频分割方面表现明显优于以前的方法,并且所需的人机交互减少了大约三倍。
SAM 2 在 23 个数据集零样本基准测试套件上的表现优于 SAM,而且速度快了六倍。
与之前的最先进模型相比,SAM 2 在现有的视频对象分割基准(DAVIS、MOSE、LVOS、YouTube-VOS)上表现出色。
使用 SAM 2 进行推理感觉很实时,速度大约为每秒 44 帧。
循环中使用 SAM 2 进行视频分割注释的速度比使用 SAM 进行手动每帧注释快 8.4 倍。
必须努力打造适合所有人的 AI 体验。为了衡量 SAM 2 的公平性,对特定人口群体的模型性能进行了评估。结果表明,该模型在感知性别的视频分割方面性能差异很小,在评估的三个感知年龄组中差异很小:18-25 岁、26-50 岁和 50 岁以上。

不足

虽然 SAM 2 在图像和短视频中分割对象方面表现出强大的性能,但模型性能还可以进一步提高——尤其是在具有挑战性的场景中。

SAM 2 可能会在摄像机视点发生剧烈变化、长时间遮挡、场景拥挤或视频过长时丢失对物体的跟踪。在实践中缓解了这个问题,方法是将模型设计为交互式的,并允许在任何帧中通过单击校正进行手动干预,以便恢复目标物体。

SAM 2 有时会混淆拥挤场景中的多个看起来相似的物体:

当仅在一帧中指定目标物体时,SAM 2 有时会混淆物体,无法正确分割目标,如上图视频中的马匹所示。在许多情况下,通过在未来帧中添加额外的细化提示,可以完全解决此问题,并在整个视频中获得正确的 masklet。

虽然 SAM 2 支持同时分割多个单独对象,但模型的效率会大大降低。在底层,SAM 2 单独处理每个对象,仅使用共享的每帧嵌入,而无需对象间通信。虽然这简化了模型,但合并共享的对象级上下文信息可能有助于提高效率。

SAM 2 的预测可能会错过快速移动物体的精细细节:

对于复杂的快速移动物体,SAM 2 有时会错过精细的细节,并且预测在各个帧之间可能不稳定(如上图自行车手的视频所示)。在同一帧或其他帧中添加进一步的提示来优化预测只能部分缓解此问题。在训练期间,如果模型预测在帧之间抖动,不会对模型预测施加任何惩罚,因此无法保证时间平滑度。改进此功能可以促进需要详细定位精细结构的实际应用。

最后,我们可以总结一下 SAM 2 的主要贡献:

  • 将可提示的分割扩展到视频:允许用户使用熟悉的提示(点击、框、蒙版)与视频进行交互。
  • 引入具有内存的流式架构:能够实时处理任意长度的视频并保持对象的时间上下文。
  • 提供SA-V数据集:提供迄今为止最大、最多样化的视频分割数据集,加速该领域的研究。
    未来,SAM 2 可以作为更大型 AI 系统的一部分,通过 AR 眼镜识别日常物品,并向用户提供提醒和说明。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐