SAM 2: Segment Anything in Images and Videos
abstract
- 我们提出了 Segment Anything Model 2 (SAM 2),这是一个用于解决图像和视频中可提示的视觉分割的基础模型。我们构建了一个数据引擎,通过用户交互改进模型和数据,以收集迄今为止最大的视频分割数据集。我们的模型是一个简单的 Transformer 架构,具有用于实时视频处理的流内存。在我们的数据上训练的 SAM 2 在各种任务中都提供了强大的性能。在视频分割中,我们观察到了更高的准确性,使用的交互比以前的方法少了 3 倍。在图像分割中,我们的模型比 Segment Anything Model (SAM) 更准确,速度快 6 倍。我们相信,我们的数据、模型和见解将成为视频分割和相关感知任务的重要里程碑。我们正在发布我们的模型、数据集和交互式演示的一个版本。
- Demo: https://sam2.metademolab.com
- Code: https://github.com/facebookresearch/segment-anything-2
- Website: https://ai.meta.com/sam2
Introduction
Segment Anything (SA) 引入了可快速分割图像的基础模型。然而,图像只是现实世界的静态快照,其中的视觉片段可以表现出复杂的运动,并且随着多媒体内容的快速增长,现在很大一部分内容都以时间维度记录,尤其是在视频数据中。AR/VR、机器人技术、自动驾驶汽车和视频编辑中的许多重要应用都需要超越图像级分割的时间定位。我们相信通用的视觉分割系统应该适用于图像和视频。
视频分割旨在确定实体的时空范围,这带来了图像之外的独特挑战。由于运动、变形、遮挡、光线变化和其他因素,实体的外观可能会发生显著变化。由于相机运动、模糊和分辨率较低,视频的质量通常低于图像。此外,有效处理大量帧是一项关键挑战。虽然 SA 成功解决了图像分割问题,但现有的视频分割模型和数据集在提供“分割视频中的任何内容”的类似能力方面还存在不足。
我们引入了 Segment Anything Model 2 (SAM 2),这是一个用于视频和图像分割的统一模型(我们将图像视为单帧视频)。我们的工作包括任务、模型和数据集(见图 1)。我们专注于可提示的视觉分割 (PVS) 任务,该任务将图像分割推广到视频领域。该任务将视频任意帧上的点、框或掩码作为输入,以定义要预测时空掩码(即“掩码片段”)的感兴趣片段。一旦预测出掩码片段,就可以通过在额外帧中提供提示来迭代地对其进行细化。
-  - 图 1:我们引入了 Segment Anything Model 2 (SAM 2),旨在使用基础模型 (b) 解决可提示的视觉分割任务 (a),该模型在我们的数据引擎收集的大规模 SA-V 数据集上进行训练 ©。SAM 2 能够通过存储先前提示和预测的流式内存,通过一个或多个视频帧上的提示(点击、框或蒙版)以交互方式分割区域。
-  可在单幅图像和视频帧中生成感兴趣对象的分割掩码。SAM 2 配备了一个内存,用于存储有关对象和先前交互的信息,这使它能够在整个视频中生成掩码预测,并根据先前观察到的帧中存储的对象内存上下文有效地纠正这些预测。我们的流式架构是 SAM 在视频领域的自然推广,一次处理一个视频帧,配备了一个记忆注意模块来关注目标对象的先前记忆。当应用于图像时,内存为空,模型的行为与 SAM 类似。
我们采用数据引擎 (§5) 来生成训练数据,方法是使用我们的模型与注释器循环交互地注释新数据和具有挑战性的数据。与大多数现有视频分割数据集不同,我们的数据引擎不限于特定类别的对象,而是旨在提供训练数据,以分割具有有效边界的任何对象,包括部分和子部分。与现有模型辅助方法相比,我们的数据引擎在循环中使用 SAM 2 的速度在同等质量下提高了 8.4 倍。我们最终的 Segment Anything Video (SA-V) 数据集 (§5.2) 包含 50.9K 个视频中的 35.5M 个掩码,比任何现有视频分割数据集的掩码多 53 倍。SA-V 具有挑战性,因为小物体和部分在整个视频中被遮挡并重新出现。我们的 SA-V 数据集在地理上是多样化的,对 SAM 2 的公平性评估表明,基于感知性别的视频分割性能差异最小,我们评估的三个感知年龄组之间的差异很小。
我们的实验 (§6) 表明,SAM 2 为视频分割体验带来了重大改变。SAM 2 可以实现更好的分割精度,同时使用的交互比之前的方法少 3 倍。此外,在多种评估设置下,SAM 2 在已建立的视频对象分割基准测试中的表现优于之前的工作,并且在图像分割基准测试中与 SAM 相比提供了更好的性能,同时速度提高了 6 倍。通过众多零样本基准测试(包括 17 个视频分割基准测试和 37 个单图像分割基准测试)观察到,SAM 2 在各种视频和图像分布中都表现出色。
我们根据宽松的开放许可发布我们的工作,包括 SA-V 数据集(CC by 4.0)、模型 SAM 2(Apache 2.0)的版本,以及 https://sam2.metademolab.com 上的交互式在线演示。
Related work
图像分割。Segment Anything引入了一种可提示的图像分割任务,其目标是在给定输入提示(例如边界框或指向感兴趣对象的点)的情况下输出有效的分割掩码。在 SA-1B 数据集上训练的 SAM 允许使用灵活提示进行零样本分割,从而使其能够应用于广泛的下游应用。 最近的工作通过提高其质量扩展了 SAM。例如,HQ-SAM通过引入高质量输出标记并在细粒度掩码上训练模型来增强 SAM。另一项工作重点是提高 SAM 的效率,以便在现实世界和移动应用中更广泛地使用,例如 EfficientSAM、MobileSAM和 FastSAM。 SAM 的成功使其得到了广泛的应用,例如医学成像、遥感、运动分割和伪装物体检测。
交互式视频对象分割 (iVOS)。交互式视频对象分割已成为一项关键任务,可在用户指导下(通常以涂鸦、点击或边界框的形式)有效获取视频中的对象分割(masklets)。一些早期方法部署基于图的优化来指导分割注释过程。较新的方法通常采用模块化设计,将用户输入转换为单个帧上的掩码表示,然后将其传播到其他帧。我们的工作与这些工作有着相似的目标,即在视频中分割对象并实现良好的交互体验,并且我们建立了一个强大的模型以及一个庞大而多样化的数据集来实现这一目标。
具体来说,DAVIS 交互式基准 允许通过在多个帧上进行涂鸦输入来交互式分割对象。受 DAVIS 交互式基准的启发,我们还在 §6.1 中为可提示视频分割任务采用了交互式评估设置。
对于交互式视频分割,基于点击的输入更容易收集。最近的研究结合使用了图像上的 SAM 和基于掩码或点的视频跟踪器。然而,这些方法有局限性:跟踪器可能不适用于所有对象,SAM 可能对视频中的图像帧表现不佳,并且没有机制可以交互式地改进模型的错误,除了在错误的帧上使用 SAM 从头开始重新注释并从那里重新开始跟踪。
半监督视频对象分割 (VOS)。半监督 VOS 通常以第一帧中的对象掩码作为输入开始,必须在整个视频中准确跟踪该掩码。之所以称为“半监督”,是因为输入掩码可以看作是仅适用于第一帧的对象外观的监督信号。这项任务因其与各种应用(包括视频编辑、机器人技术和自动背景去除)的相关性而引起了广泛关注。
早期基于神经网络的方法通常对视频的第一帧或所有帧进行在线微调,以使模型适应目标对象。 使用离线训练的模型可以实现更快的推理,这些模型仅以第一帧为条件,或者还集成了前一帧。 这种多重条件已扩展到具有 RNN和交叉注意的所有帧。最近的方法扩展了单个视觉 Transformer 以联合处理当前帧以及所有先前帧和相关预测,从而产生了一个简单的架构,但推理成本过高。半监督 VOS 可以看作是我们的可提示视觉分割 (PVS) 任务的一个特例,因为它相当于仅在第一个视频帧中提供掩码提示。然而,在第一帧中注释所需的高质量对象掩码在实践中具有挑战性且耗时。
视频分割数据集。已经提出了许多数据集来支持 VOS 任务。早期的 VOS 数据集,例如 DAVIS,包含高质量注释,但其有限的大小不允许训练基于深度学习的方法。YouTube-VOS涵盖了 4 千多个视频中的 94 个对象类别,是 VOS 任务的第一个大规模数据集。随着算法变得越来越好并且基准性能开始饱和,研究人员开始研究通过特别关注遮挡、长视频、极端变换)、物体多样性或场景多样性来增加 VOS 任务的难度。
我们发现,当前的视频分割数据集缺乏足够的覆盖范围,无法实现“分割视频中的任何内容”的功能。它们的注释通常涵盖整个对象(而不是部分),数据集通常以特定对象类别为中心,例如人、车辆和动物。与这些数据集相比,我们发布的 SA-V 数据集不仅关注整个对象,还广泛覆盖对象部分,并包含超过一个数量级的掩码。
Task: promptable visual segmentation
PVS 任务允许在视频的任意帧上向模型提供提示。提示可以是正/负点击、边界框或蒙版,用于定义要分割的对象或优化模型预测的对象。为了提供交互式体验,在特定帧上收到提示后,模型应立即响应该帧上对象的有效分割蒙版。在收到初始(一个或多个)提示(在同一帧或不同帧上)后,模型应传播这些提示以获取整个视频中对象的蒙版,其中包含每个视频帧上目标对象的分割蒙版。可以在任意帧上向模型提供其他提示,以优化整个视频中的片段(图 2 中的示例)。有关该任务的详细信息,请参阅 §A。
-  - 图 2 使用 SAM 2 进行交互式分割。步骤 1(选择):我们在第 1 帧中提示 SAM 2 获取目标对象(舌头)的片段。绿点/红点分别表示正/负提示。SAM 2 会自动将该片段传播到后续帧(蓝色箭头)以形成 masklet。如果 SAM 2 丢失了对象(第 2 帧之后),我们可以通过在新帧中提供额外提示(红色箭头)来更正 masklet。步骤 2(细化):在第 3 帧中单击一次就足以恢复对象并将其传播以获得正确的 masklet。分离的 SAM + 视频跟踪器方法需要在第 3 帧(如第 1 帧)中单击几次才能在从头开始重新分割时正确地重新注释对象。借助 SAM 2 的记忆,单击一次即可恢复舌头。
-  中介绍的 SAM 2 用作 PVS 任务的数据收集工具,用于构建我们的 SA-V 数据集 (§5)。通过模拟涉及跨多帧注释的交互式视频分割场景、注释仅限于第一帧的传统半监督 VOS 设置以及 SA 基准上的图像分割,在线和离线设置中对该模型进行了评估 (§6)。
Model
我们的模型可以看作是 SAM 在视频(和图像)领域的推广。SAM 2(图 3)支持在单个帧上使用点、框和掩码提示来定义视频中要分割的对象的空间范围。对于图像输入,该模型的行为类似于 SAM。可提示的轻量级掩码解码器接受当前帧上的帧嵌入和提示(如果有),并输出该帧的分割掩码。可以迭代地在帧上添加提示以细化掩码。
-  - 图 3 SAM 2 架构。对于给定帧,分割预测取决于当前提示和/或先前观察到的记忆。视频以流式方式处理,图像编码器一次处理一个帧,并与先前帧中的目标对象记忆交叉关注。掩码解码器(可选地也接受输入提示)预测该帧的分割掩码。最后,记忆编码器转换预测和图像编码器嵌入(图中未显示)以用于未来的帧。
- 。我们使用 MAE 预训练的 Hiera 图像编码器,它是分层的,允许我们在解码过程中使用多尺度特征。
记忆注意。记忆注意的作用是根据过去帧的特征和预测以及任何新提示来调节当前帧的特征。我们堆叠 L 个 Transformer 块,第一个块将当前帧的图像编码作为输入。每个块执行自注意,然后对存储在存储库中的(提示/非提示)帧和对象指针(见下文)的记忆进行交叉注意(见下文),然后是 MLP。我们使用原始注意操作进行自注意和交叉注意,这使我们能够从高效注意内核的最新发展中受益。
提示编码器和掩码解码器。我们的提示编码器与 SAM 的相同,可以通过点击(正或负)、边界框或掩码来提示,以定义给定帧中对象的范围。稀疏提示由位置编码表示,并与每个提示类型的学习嵌入相加,而掩码则使用卷积嵌入并与帧嵌入相加
我们的解码器设计在很大程度上遵循 SAM。我们堆叠“双向”转换器块来更新提示和帧嵌入。与 SAM 一样,对于可能存在多个兼容目标掩码的模糊提示(即单击),我们会预测多个掩码。这种设计对于确保模型输出有效掩码非常重要。在视频中,模糊性可以扩展到视频帧之间,模型会在每个帧上预测多个掩码。如果没有后续提示解决模糊性,则模型仅传播当前帧具有最高预测 IoU 的掩码。
与 SAM 不同,在 SAM 中,只要给出肯定的提示,就总会有一个有效的对象可供分割,而在 PVS 任务中,某些帧上可能不存在有效对象(例如由于遮挡)。为了解释这种新的输出模式,我们添加了一个额外的头,用于预测当前帧上是否存在感兴趣的对象。 与 SAM 的另一个不同之处在于,我们使用来自分层图像编码器的跳过连接(绕过记忆注意)来合并高分辨率信息以进行掩码解码(参见 §C)。
记忆编码器。记忆编码器通过使用卷积模块对输出掩码进行下采样,并将其与来自图像编码器的无条件帧嵌入逐个元素相加(图 3 中未显示),然后使用轻量级卷积层融合信息,从而生成记忆。
记忆库。记忆库通过维护最多包含 N 个最近帧的 FIFO 队列来保留有关视频中目标对象的过去预测的信息,并将来自提示的信息存储在最多包含 M 个提示帧的 FIFO 队列中。例如,在初始掩码是唯一提示的 VOS 任务中,记忆库始终保留第一帧的记忆以及最多包含 N 个最近(未提示)帧的记忆。这两组记忆都存储为空间特征图。
除了空间记忆之外,我们还根据每帧的掩码解码器输出标记 存储了对象指针列表作为轻量级向量,用于存储要分割对象的高级语义信息。我们的记忆注意力同时关注空间记忆特征和这些对象指针。
我们将时间位置信息嵌入到 N 个最近帧的记忆中,从而允许模型表示短期物体运动,但不能嵌入到提示帧的记忆中,因为来自提示帧的训练信号更稀疏,并且更难以推广到推理设置,其中提示帧可能来自与训练期间看到的非常不同的时间范围。
训练。该模型在图像和视频数据上联合训练。与之前的工作sam类似,我们模拟了模型的交互式提示。我们采样 8 帧序列并随机选择最多 2 帧来提示,并概率性地接收使用地面实况 masklet 和模型预测在训练期间采样的校正点击。训练任务是按顺序(和“交互式”)预测地面实况 masklet。对模型的初始提示可以是概率为 0.5 的地面实况 mask、概率为 0.25 的从地面实况 masklet 采样的正点击或概率为 0.25 的边界框输入。有关更多详细信息,请参阅 §C。
Data
- 为了开发“分割视频中的任何内容”的能力,我们构建了一个数据引擎来收集大量多样化的视频分割数据集。我们在循环设置中使用了一个交互式模型,其中有人工注释者。 与 sam 类似,我们不对带注释的 masklet 施加语义约束,而是同时关注整个对象(例如,一个人)和部分(例如,一个人的帽子)。我们的数据引擎经历了三个阶段,每个阶段都根据为注释者提供的模型辅助级别进行分类。接下来,我们将描述每个数据引擎阶段和我们的 SA-V 数据集。
Data engine
第 1 阶段:每帧 SAM。初始阶段使用基于图像的交互式 SAM 来协助人工注释。注释者的任务是使用 SAM 和像素精确的手动编辑工具(例如“画笔”和“橡皮擦”)以每秒 6 帧(FPS)的速度注释视频中每帧中的目标对象的蒙版。没有涉及跟踪模型来协助将蒙版时间传播到其他帧。 由于这是一种每帧方法,并且所有帧都需要从头开始进行蒙版注释,因此该过程很慢,在我们的实验中,每帧的平均注释时间为 37.8 秒。但是,这可以产生每帧的高质量空间注释。在此阶段,我们在 1.4K 视频中收集了 16K 个蒙版。我们进一步使用此方法来注释我们的 SA-V 验证集和测试集,以减轻 SAM 2 在评估过程中的潜在偏差。
第 2 阶段:SAM + SAM 2 Mask。第二阶段将 SAM 2 添加到循环中,其中 SAM 2 仅接受掩码作为提示。我们将此版本称为 SAM 2 Mask。注释者使用 SAM 和其他工具(如第 1 阶段)在第一帧中生成空间掩码,然后使用 SAM 2 Mask 将注释的掩码在时间上传播到其他帧以获得完整的时空掩码。在任何后续视频帧中,注释者都可以通过使用 SAM(“画笔”和/或“橡皮擦”)从头注释掩码来空间修改 SAM 2 Mask 所做的预测,然后使用 SAM 2 Mask 重新传播,重复此过程直到掩码正确。SAM 2 Mask 最初是在第 1 阶段数据和公开可用的数据集上进行训练的。在第 2 阶段,我们使用收集的数据在注释循环中重新训练和更新了 SAM 2 Mask 两次。在第 2 阶段,我们收集了 63.5K 个掩码。注释时间降至 7.4 秒/帧,比第 1 阶段速度提高了约 5.1 倍。尽管注释时间有所改善,但这种解耦方法需要从头开始注释中间帧中的掩码,而无需先前的记忆。然后,我们进一步开发了功能齐全的 SAM 2,能够在统一模型中执行交互式图像分割和掩码传播。
第 3 阶段:SAM 2。在最后阶段,我们使用功能齐全的 SAM 2,它可以接受各种类型的提示,包括点和掩码。SAM 2 受益于跨时间维度的物体记忆来生成掩码预测。这意味着注释者只需偶尔向 SAM 2 提供细化点击即可编辑中间帧中的预测掩码,而不是使用没有此类记忆上下文的空间 SAM 从头开始注释。在第 3 阶段,我们使用收集到的注释对 SAM 2 进行了五次重新训练和更新。在 SAM 2 循环中,每帧的注释时间缩短至 4.5 秒,比第 1 阶段快了 8.4 倍。在第 3 阶段,我们收集了 197.0K 个掩码。
质量验证。为了保持注释的高标准,我们引入了一个验证步骤。一组单独的注释者负责验证每个注释的 masklet 的质量是“满意”(在所有帧中正确且一致地跟踪目标对象)还是“不满意”(目标对象定义明确,边界清晰,但 masklet 不正确或不一致)。不满意的 masklet 被送回注释管道进行改进。任何跟踪定义不明确的对象的 masklet 都被完全拒绝。
自动生成 masklet。确保注释的多样性对于实现我们模型的任何功能都很重要。由于人类注释者通常可能更关注显著对象,我们使用自动生成的 masklet(称为“自动”)来增强注释。这具有双重目的,既可以增加注释的覆盖范围,又可以帮助识别模型失败案例。为了生成自动 masklet,我们在第一帧中用规则的点网格提示 SAM 2,并生成候选 masklet。然后将它们发送到 masklet 验证步骤进行筛选。标记为“满意”的自动 masklet 被添加到 SA-V 数据集中。被标识为“不满意”(即模型失败案例)的 masklet 被采样并呈现给注释者,以便在循环中使用 SAM 2 进行改进(数据引擎的第 3 阶段)。这些自动 masklet 不仅覆盖了大型显著中心对象,还覆盖了背景中大小和位置各异的对象。
分析。表 1 显示了通过受控实验对每个数据引擎阶段中的注释协议进行的比较(详见 §D.2.2)。我们比较了每帧的平均注释时间、每个 masklet 手动编辑帧的平均百分比以及每点击帧的平均点击次数。对于质量评估,我们将第 1 阶段的掩模对齐分数定义为与第 1 阶段中相应掩模相比 IoU 超过 0.75 的掩模百分比。选择第 1 阶段的数据作为参考,因为它具有每帧高质量的手动注释。第 3 阶段在循环中使用 SAM 2 可提高效率并实现可比质量:它比第 1 阶段快 8.4 倍,每帧编辑帧百分比和点击次数最低,并且对齐效果更好。
-  - 表 1 数据引擎阶段的演变显示了每帧的平均注释时间、每个 masklet 编辑帧的平均百分比、每个点击帧的手动点击次数以及按 mask 大小与阶段 1 的 mask 对齐。
- 上进行评估,使用标准 J&F 准确度指标(越高越好)在第一帧上单击 3 次进行提示。 我们注意到,在迭代地包含每个阶段的数据后,不仅在域内 SA-V 验证集上,而且在 9 个零样本基准上,都出现了持续的改进。
表 2 通过添加来自每个数据引擎阶段的数据来提高分割准确率(J 和 F 指标)。“VOS”是一组视频对象分割数据集。详细信息请参见 §E。
SA-V dataset
使用我们的数据引擎收集的 SA-V 数据集包含 50.9K 个视频和 642.6K 个 masklet。在表 3 中,我们将 SA-V 组成与常见 VOS 数据集在视频、masklet 和 mask 数量方面进行了比较。 值得注意的是,带注释的 mask 数量比任何现有 VOS 数据集都多 53 倍(不带 auto 时为 15 倍),为未来工作提供了大量资源。我们将根据宽松的许可发布 SA-V。
表 3 我们的数据集与开源 VOS 数据集在视频数量、持续时间、masklet 数量、mask、帧数和消失率方面的比较。SA-V Manual 仅包含手动注释的标签。SA-V Manual+Auto 将手动注释的标签与自动生成的 masklet 相结合。
视频。我们收集了一组由众包工作者拍摄的 50.9K 个新视频。视频包含 54% 的室内场景和 46% 的室外场景,平均时长为 14 秒。视频呈现了“野外”的多样化环境,涵盖了各种日常场景。我们的数据集比现有的 VOS 数据集包含更多的视频,如图 5 所示,视频涵盖了 47 个国家/地区,由不同的参与者(自我报告的人口统计数据)拍摄。
图 5 数据集分布:(a)masklets 大小分布(按视频分辨率标准化)、(b)视频的地理多样性,以及(c)录制视频的众包工作者自我报告的人口统计数据。
marklets。注释包括使用我们的数据引擎收集的 190.9K 个手动掩模片注释和 451.7K 个自动掩模片。图 4 显示了叠加了掩模片的示例视频(手动和自动)。SA-V 的掩模比最大的 VOS 数据集多 53 倍(没有自动注释时为 15 倍)。SA-V 手册中的消失率(在至少一帧中消失然后重新出现的带注释掩模片的百分比)为 42.5%,在现有数据集中具有竞争力。图 5a 显示了与 DAVIS、MOSE 和 YouTubeVOS 的掩模尺寸分布(按视频分辨率标准化)的比较。 超过 88% 的 SA-V 掩模的标准化掩模面积小于 0.1。
图 4 SA-V 数据集中叠加了 masklet 的示例视频(手动和自动)。每个 masklet 都有独特的颜色,每行代表一个视频中的帧,每个帧之间间隔 1 秒。
SA-V 训练、验证和测试分割。我们根据视频作者(及其地理位置)对 SA-V 进行分割,以确保相似对象的重叠最小。为了创建 SA-V 验证和 SA-V 测试集,我们在选择视频时专注于具有挑战性的场景,并要求注释者识别快速移动、被其他物体复杂遮挡以及消失/重新出现模式的具有挑战性的目标。这些目标使用 §5.1 中的数据引擎第 1 阶段设置以 6 FPS 进行注释。SA-V 验证分割中有 293 个 masklet 和 155 个视频,SA-V 测试分割中有 278 个 masklet 和 150 个视频。
内部数据集。我们还使用了内部可用的授权视频数据来进一步扩充我们的训练集。 我们的内部数据集包括第 2 阶段和第 3 阶段注释的 62.9K 个视频和 69.6K 个 masklet(参见 §5.1)用于训练,以及使用第 1 阶段注释的 96 个视频和 189 个 masklet 用于测试(内部测试)。有关数据引擎和 SA-V 数据集的更多详细信息,请参阅附录 D。
Zero-shot experiments
- 在这里,我们将 SAM 2 与之前在零样本视频任务(§6.1)和图像任务(§6.2)上的工作进行了比较。我们报告了视频的标准 J &F 指标 和图像任务的 mIoU 指标。除非另有说明,本节中报告的结果遵循我们的默认设置,使用分辨率为 1024 的 Hiera-B+ 图像编码器,并在表 7 中的完整数据集组合(即 SAM 2 (Hiera-B+))上进行训练(详情另见 §C.2)。
表 7 VOS 与先前工作的比较。SAM 2 在基于第一帧 GT 掩码提示的视频分割方面在准确度(J &F、G)和速度(FPS)方面表现良好。SAM 2 在 SA-V val/test 上的表现明显更好。 所有 FPS 估计值均基于 A100 GPU。除我们的模型之外的其他模型的 FPS 估计值取自 Putting the object back into video object segmentation。
Video tasks
Promptable video segmentation
我们首先评估可提示视频分割,这涉及模拟与用户体验相似的交互式设置。我们有两种设置:离线评估,即对视频进行多次遍历,以根据最大模型误差选择要交互的帧;在线评估,即在一次前向遍历视频时对帧进行注释。这些评估是在 9 个密集注释的零样本视频数据集上使用 Nclick = 每帧 3 次点击进行的(有关详细信息,请参阅 §E.1)。
我们基于两个最先进的视频对象分割模型 XMem++和 Cutie ,创建了两个强大的基线,SAM+XMem++ 和 SAM+Cutie。我们使用 XMem++ 根据一个或多个帧上的掩码输入生成视频分割。SAM 用于提供初始掩码或细化输出(通过将当前分割作为掩码提示提供给 SAM)。对于 SAM+Cutie 基线,我们修改了 Cutie 以允许在多个帧上获取掩码输入。
在图 6 中,我们报告了 Nframe = 1, . . . , 8 个交互帧的平均 J &F 准确率。无论是离线还是在线评估设置,SAM 2 的表现都优于 SAM+XMem++ 和 SAM+Cutie。在所有 9 个数据集中(参见 §E.1 中每个数据集的结果),SAM 2 都优于这两种方法,这证实了 SAM 2 能够通过几次点击生成高质量的视频分割,同时还允许通过进一步的提示继续细化结果。总体而言,SAM 2 可以生成更好的分割准确率,交互次数减少了 3 倍以上。
图 6 在交互式离线和在线评估设置中 9 个数据集的零样本准确率。
Semi-supervised video object segmentation
接下来,我们评估半监督视频对象分割 (VOS) 设置 ,仅在视频的第一帧上使用点击、框或蒙版提示。使用点击提示时,我们会在第一视频帧上以交互方式采样 1、3 或 5 次点击,然后根据这些点击跟踪对象。
与 §6.1.1 中的交互式设置类似,我们与 XMem++ 和 Cutie 进行比较,使用 SAM 进行点击和框提示,并在使用掩码提示时使用其默认设置。我们报告标准 J &F 准确度,但 VOST除外,我们按照其协议报告 J 指标。结果见表 4。使用各种输入提示,SAM 2 在 17 个数据集上的表现均优于两个基线。结果强调,SAM 2 在具有掩码输入的传统非交互式 VOS 任务中也表现出色,这些其他作品是专门为此设计的。更多详细信息请参见 §E.1.3。
表 4 使用不同提示在半监督 VOS 评估下对 17 个视频数据集的零样本准确率。 该表显示了第一个视频帧中每种提示类型(1、3 或 5 次点击、边界框或地面实况掩码)的平均 J &F(‡:在这种情况下,我们直接使用掩码作为 XMem++ 或 Cutie 的输入,而不使用 SAM)。
Fairness evaluation
- 我们评估 SAM 2 在各个人口群体中的公平性。 我们在 EgoExo4D 数据集中收集了人物类别的注释,其中包含视频主体提供的自我报告的人口统计信息。我们采用与 SA-V 验证集和测试集相同的注释设置,并将其应用于第三人称 (exo) 视频的 20 秒剪辑。我们使用第一帧上的 1 次、3 次点击和地面实况掩码来评估此数据上的 SAM 2。
- 表 5 显示了 SAM 2 在跨性别和年龄分割人物时的 J & F 准确度比较。在 3 次点击和使用真实蒙版提示时,差异很小。我们手动检查 1 次点击预测,发现模型经常预测某个部位的蒙版而不是人物。当将比较限制在人物被正确分割的剪辑上时,1 次点击的差距大幅缩小(J & F 男性 94.3,女性 92.7),这表明差异可以部分归因于提示中的歧义。在附录 G 中,我们提供了 SA-V 的模型、数据和注释卡。
表 5 SAM 2(在 J&F 度量下)对受保护人口群体的公平性评估。
Image tasks
我们在 37 个零样本数据集上对 SAM 2 的 Segment Anything 任务进行了评估,其中包括 SAM 之前用于评估的 23 个数据集。表 6 报告了 1 次点击和 5 次点击的 mIoU,我们在单个 A100 GPU 上按数据集域和模型速度(以每秒帧数 (FPS) 为单位)显示了平均 mIoU。
表 6: 37 个数据集上 Segment Anything (SA) 任务的零样本准确率。该表显示了 SAM 2 与 SAM 在各个领域(图像/视频)的平均 1 次和 5 次点击 mIoU 对比。我们报告了 SAM (SA-23) 使用的 23 个数据集的平均指标以及 14 个额外零样本视频数据集的平均指标(详见 §E.3)。
第一列(SA-23 All)显示了 SAM 的 23 个数据集的准确率。SAM 2 的准确率(1 次点击 58.9 mIoU)高于 SAM(1 次点击 58.1 mIoU),并且无需使用任何额外数据,同时速度提高了 6 倍。这主要归功于 SAM 2 中更小但更有效的 Hiera 图像编码器。
底部一行显示了在我们的 SA-1B 和视频数据组合上进行训练如何进一步将 23 个数据集的平均准确率提高到 61.4%。我们还看到 SA-23(视频数据集以图像形式评估)和我们添加的 14 个新视频数据集的视频基准测试取得了显著的进步。
总体而言,研究结果凸显了 SAM 2 在交互式视频和图像分割方面的双重能力,这一优势源自我们涵盖视觉领域视频和静态图像的多样化训练数据。更详细的结果(包括按数据集细分)请参见§E.3。
Comparison to state-of-the-art in semi-supervised VOS
我们主要关注的是通用的交互式 PVS 任务,但我们也解决了特定的半监督 VOS 设置(其中提示是第一帧上的地面实况掩码),因为它是一种历史上常见的协议。我们在表 7 中展示了与现有最先进技术的比较,报告了使用标准协议的准确性。我们评估了具有不同图像编码器大小(Hiera-B+/-L)的两个版本的 SAM 2,并进行了不同的速度与准确性权衡。SAM 2 在准确性和推理速度(最后一列显示的 FPS)方面都比现有最佳方法有显著的改进。为了获得最佳整体效果,我们观察到使用更大的图像编码器可以全面显著提高准确性。
表 7: VOS 与先前工作的比较。SAM 2 在基于第一帧地面实况掩码提示的视频分割方面在准确度(J &F、G)和速度(FPS)方面表现良好。SAM 2 在 SA-V val/test 上的表现明显更好。 所有 FPS 估计值均基于 A100 GPU。除我们的模型之外的其他模型的 FPS 估计值取自 Putting the object back into video object segmentation。
我们还评估了 SA-V 验证集和测试集上的现有工作,这些工作衡量了“任何”对象类的开放世界片段的性能。当与此基准进行比较时,我们发现大多数以前的方法的峰值准确度大致相同。以前工作在 SA-V 验证集和 SA-V 测试中的最佳性能明显较低,这表明与“分割视频中的任何内容”能力存在差距。最后,我们看到 SAM 2 还在长期视频对象分割方面取得了显着的进步,如 LVOS 基准测试结果所示。
Data and model ablations
- 本节介绍了为 SAM 2 的设计决策提供参考的消融。我们对我们的 MOSE 开发集(“MOSE dev”)进行了评估,该集包含从 MOSE 训练分割中随机抽取的 200 个视频,这些视频从我们的消融、SA-V val 和 9 个零样本视频数据集的平均值中排除。作为比较指标,我们报告第一帧 3 次点击输入下的 J &F,作为 1 次点击方案和 VOS 样式掩码提示之间的平衡。此外,我们报告了 SAM 用于图像 SA 任务的 23 个数据集基准上的平均 1 次点击 mIoU。除非另有说明,否则我们以 512 分辨率和 SA-V 手册以及 SA-1B 的 10% 子集运行消融。更多详细信息请参阅 §C.2。
Data ablations
数据混合消融。在表 8 中,我们比较了在不同数据混合上训练时 SAM 2 的准确率。 我们在 SA-1B 上进行预训练,然后为每种设置训练一个单独的模型。我们固定迭代次数(200k)和批量大小(128),只有训练数据在实验之间发生变化。我们报告了 SA-V 验证集、MOSE、9 个零样本视频基准和 SA-23 任务(§6.2)的准确率。第 1 行显示,纯粹在 VOS 数据集(Davis、MOSE、YouTubeVOS)上训练的模型在域内 MOSE dev 上表现良好,但在包括 9 个零样本 VOS 数据集(59.7 J &F)在内的所有其他数据集上表现不佳。
表 8 我们在不同的数据混合上训练我们的模型,包括 VOS(Davis、MOSE、YouTubeVOS)以及内部训练、SA-V 和 SA-1B 的子集。我们报告在 SA-V val 和内部测试、MOSE 和 9 个零样本数据集上在第一帧中点击 3 次时的 J &F 准确率,以及在 SA-23 数据集上的平均 1 次点击 mIoU。
我们观察到将我们的数据引擎数据添加到训练组合中会带来巨大的好处,包括 9 个零样本数据集(第 11 行 vs. 第 1 行)上的平均性能提升 +12.1%。这可以归因于 VOS 数据集的有限覆盖范围和大小。添加 SA-1B 图像可提高图像分割任务的性能(第 3 行 vs. 第 4 行、第 5 行 vs. 第 6 行、第 9 行 vs. 第 10 行、第 11 行 vs. 第 12 行),而不会降低 VOS 能力。仅在 SA-V 和 SA-1B(第 4 行)上进行训练足以在除 MOSE 之外的所有基准测试中获得强劲的性能。 总体而言,我们在混合所有数据集时获得了最佳结果:VOS、SA-1B 和我们的数据引擎数据(第 12 行)。
数据量消融。接下来,我们研究缩放训练数据的影响。SAM 2 在 SA-1B 上进行预训练,然后在不同大小的 SA-V 上进行训练。我们报告了 3 个基准的平均 J &F 分数(在第一帧中提示 3 次点击时):SA-V val、零样本和 MOSE dev。图 7 显示了所有基准上训练数据量与视频分割准确率之间的一致幂律关系。
图 7 SAM 2 的性能与 SA-V 量的关系。我们报告了 SA-V val(左)、9 个零样本数据集(中)和 MOSE dev(右)上第一帧中 3 次点击提示的 J&F 准确率。
数据质量消融。在表 9 中,我们试验了质量过滤策略。我们从 SA-V 中对 50k 个 masklet 进行子采样,可以是随机的,也可以是注释者编辑最多的 masklet。 基于编辑帧数的过滤仅使用 25% 的数据就能获得出色的性能,并且优于随机采样。但是,它比使用所有 190k 个 SA-V masklet 更差。
表 9 我们在 SA-V 手册数据的不同子集上训练我们的模型:50k 个随机采样的 masklet、50k 个包含最多编辑帧的 masklet 和完整的 SA-V 数据集(190k 个 masklet)。
Model architecture ablations
- 这里我们展示了指导设计决策的模型简化。我们报告了视频 (J &F) 和图像 (mIoU) 任务的分割准确度以及视频分割速度 (FPS)。我们发现图像和视频组件的设计选择在很大程度上是分离的——这可以归因于我们的模块化设计和训练策略。、
表 10 容量消融。我们根据输入大小(分辨率、帧数)、内存大小(内存数量、内存通道暗淡)和模型大小(内存注意、图像编码器)消融建模容量。消融默认为灰色。
Capacity ablations
输入大小。在训练期间,我们采样固定分辨率和固定长度的帧序列(此处用 # 帧表示)。我们在表 10a、10b 中消除了它们的影响。更高的分辨率可显著改善图像和视频任务。增加帧数可显著提高视频基准测试的准确性,我们使用默认值 8 来平衡速度和准确性。
内存大小。增加(最大)内存数量 N 通常有助于提高性能,尽管可能会有一些差异,如表 10c 所示。我们使用默认值 6 个过去帧来在时间上下文长度和计算成本之间取得平衡。使用较少的内存通道不会导致性能下降,如表 10d 所示,同时使存储所需的内存减少 4 倍。
模型大小。主干或记忆注意的容量越大,结果就越好,如表 10e、10f 所示。扩展主干可以提高图像和视频指标,而扩展记忆注意只会改善视频指标。我们默认使用 B+ 主干,它在速度和准确性之间提供了合理的平衡;我们注意到,即使使用 B+ 主干,SAM 2 也已经能够显著胜过 SAM ViT-H(见表 6)。
Relative positional encoding
- 默认情况下,我们始终在图像编码器和内存注意中使用绝对位置编码。 在本节中,我们研究相对位置编码设计选择。在这里,我们还对 LVOSv2 进行了评估,在第一帧上进行了 3 次点击,作为长期视频对象分割的基准。
- SAM 效仿 【Exploring plain vision transformer backbones for object detection】 的做法,在所有骨干层中添加相对位置偏差 (RPB),而 Bolya 等人 则在此基础上进行了改进,移除了除全局注意层之外的所有 RPB,同时采用了“绝对获胜”位置编码,从而显著提高了速度。我们进一步改进了这一点,从骨干层中移除了所有 RPB,在 SA-23 上没有性能回归,在视频基准测试中回归最小(见表 11),同时在 1024 分辨率下显著提高了速度。我们还发现在记忆注意中使用 2d-RoPE 是有益的。
表 11 相对位置编码。我们在内存注意中使用 2d-RoPE,同时默认从图像编码器中删除 RPB(灰色)。尽管此表中 512 分辨率下的 FPS 相似,但删除 RPB 允许我们启用 FlashAttention-2 ,这在 1024 分辨率下可显着提高速度。在 1024 的更高分辨率下,2d-RoPE(第 1 行)和无 RoPE 基线(第 3 行)之间的 FPS 差距变得更小。
Memory architecture ablations
循环记忆。我们研究了将记忆特征输入 GRU 然后再将其添加到记忆库的有效性。与 §8.2.2 类似,我们还对 LVOSv2 进行了评估,将其作为长期对象分割的额外基准。虽然先前的研究通常使用 GRU 状态作为将记忆纳入跟踪过程的一种手段,但我们在表 12 中的发现表明,这种方法并没有带来任何改进(LVOSv2 略有改进)。相反,我们发现将记忆特征直接存储在记忆库中就足够了,这既简单又高效。
表 12 内存设计上的改进。我们默认使用对象指针(灰色),并研究循环 GRU 内存。
对象指针。我们从其他帧中的掩码解码器输出中消除了交叉关注对象指针向量的影响(参见 §4)。表 12 中显示的结果表明,虽然交叉关注对象指针不会提高 9 个零样本数据集的平均性能,但它显著提高了 SA-V val 数据集以及具有挑战性的 LVOSv2 基准(验证分割)上的性能。因此,我们默认将对象指针与存储库一起交叉关注。
Conclusion
- 我们基于三个关键方面展示了 Segment Anything 在视频领域的自然演进:(i) 将可提示的分割任务扩展到视频,(ii) 使 SAM 架构能够在应用于视频时使用内存,以及 (iii) 用于训练和基准测试视频分割的多样化 SA-V 数据集。 我们相信 SAM 2 标志着视觉感知领域的重大进步,将我们的贡献定位为里程碑,将推动该领域的进一步研究和应用。
A Details on the PVS Task
可提示的视觉分割 (PVS) 任务可以看作是分割任何内容 (SA) 任务从静态图像到视频的扩展。在 PVS 设置中,给定一个输入视频,模型可以对视频中的任何帧进行不同类型的输入(包括点击、框或蒙版)的交互提示,目的是分割(和跟踪)整个视频中的有效对象。在与视频交互时,模型会在被提示的帧上提供即时响应(类似于 SAM 在图像上的交互式体验),并且还会近乎实时地返回整个视频中对象的分割。与 SAM 类似,重点是具有明确边界的有效对象,我们不考虑没有视觉边界的区域。图 8 说明了该任务。
图 8 可提示的视觉分割任务 (PVS) 的图示。之前研究过的任务,如分割任何事物 (SA) 和半监督视频对象分割 (VOS) 可以看作是 PVS 任务的特殊情况。
PVS 与静态图像和视频领域的多项任务相关。在图像上,SA 任务可以被视为 PVS 的一个子集,视频被缩减为单帧。同样,传统的半监督和交互式 VOS任务是 PVS 的特殊情况,分别仅限于在第一帧上提供的掩码提示和在多个帧上涂鸦以在整个视频中分割对象。 在 PVS 中,提示可以是点击、掩码或框,重点是增强交互式体验,从而能够以最少的交互轻松细化对象的分割。
B Limitations
SAM 2 在静态图像和视频领域都表现出色,但在某些情况下会遇到困难。该模型可能无法在镜头变化时分割物体,并且在拥挤的场景、长时间遮挡后或延长的视频中可能会丢失或混淆物体。为了缓解这个问题,我们设计了在任何帧中提示 SAM 2 的功能:如果模型丢失物体或出错,在大多数情况下,对其他帧的细化点击可以快速恢复正确的预测。SAM 2 还难以准确跟踪细节非常细小或精细的物体,尤其是在它们快速移动时。另一个具有挑战性的场景是附近有外观相似的物体(例如,多个相同的杂耍球)。将更明确的运动建模纳入 SAM 2 可以减轻此类情况下的错误。
虽然 SAM 2 可以同时跟踪视频中的多个对象,但 SAM 2 会单独处理每个对象,仅使用共享的每帧嵌入,而无需对象间通信。虽然这种方法很简单,但结合共享的对象级上下文信息可以帮助提高效率。
我们的数据引擎依靠人工注释者来验证 masklet 质量并选择需要校正的帧。 未来的发展可能包括自动化此过程以提高效率。
C SAM 2 details
C.1 Architecture
在这里我们讨论进一步的架构细节,扩展§4 中的模型描述。图像编码器。我们使用特征金字塔网络 融合来自 Hiera 图像编码器第 3 阶段和第 4 阶段的步长 16 和 32 特征,以生成每个帧的图像嵌入。此外,第 1 阶段和第 2 阶段的步长 4 和 8 特征未用于记忆注意,而是添加到掩码解码器中的上采样层,如图 9 所示,这有助于生成高分辨率分割细节。我们遵循 【Window attention is bugged: How not to interpolate position embeddings】 在 Hiera 图像编码器中使用窗口绝对位置嵌入。RPB 提供了跨主干中窗口的位置信息,取而代之的是,我们采用一种更简单的方法,即插值全局位置嵌入以跨窗口。我们不使用任何相对位置编码。我们训练具有不同图像编码器大小的模型——T、S、B+ 和 L。仅在图像编码器层的子集中使用全局注意力(见表 13)。
表 13 SAM 2 预训练和完整训练的超参数和详细信息。请注意,某些设置会随图像编码器大小(T、S、B+、L)而变化。
图 9 掩码解码器架构。该设计主要遵循 SAM,我们在上采样期间还包含来自图像编码器的步幅 4 和步幅 8 特征。我们还使用与输出掩码相对应的掩码标记作为对象指针,并生成遮挡分数,该分数指示感兴趣的对象在当前帧中是否可见。
记忆注意。除了正弦绝对位置嵌入之外,我们还在自注意和交叉注意层中使用 2d 空间旋转位置嵌入 (RoPE) 。对象指针标记被排除在 RoPE 之外,因为它们没有特定的空间对应关系。默认情况下,记忆注意使用 L = 4 层。
提示编码器和掩码解码器。提示编码器设计遵循 SAM,接下来我们将讨论掩码解码器设计变更的更多细节。我们使用与输出掩码对应的掩码标记作为帧的对象指针标记,该标记放置在存储库中。如第 4 节所述,我们还引入了一个遮挡预测头。这是通过在掩码和 IoU 输出标记中添加一个附加标记来实现的。将一个附加 MLP 头应用于这个新标记以产生一个分数,该分数指示感兴趣的对象在当前帧中可见的可能性(如图 9 所示)。
SAM 引入了在图像中分割对象存在歧义时输出多个有效掩码的功能。例如,当一个人点击自行车轮胎时,模型可以将这次点击解释为仅指轮胎或整辆自行车,并输出多个预测。在视频中,这种歧义可以扩展到视频帧中。例如,如果在一帧中只有轮胎可见,则点击轮胎可能仅与轮胎有关,或者随着自行车的更多部分在后续帧中变得可见,这次点击可能是针对整辆自行车的。为了处理这种歧义,SAM 2 在视频的每个步骤中预测多个掩码。如果进一步的提示不能解决歧义,模型将选择当前帧中预测 IoU 最高的掩码以在视频中进一步传播。
记忆编码器和记忆库。我们的记忆编码器不使用额外的图像编码器,而是重用 Hiera 编码器生成的图像嵌入,并将其与预测的掩码信息融合以生成记忆特征(如第 4 节所述)。这种设计允许记忆特征受益于图像编码器生成的强表示(尤其是当我们将图像编码器缩放到更大尺寸时)。此外,我们将记忆库中的记忆特征投影到 64 维,并将 256 维对象指针拆分为 4 个 64 维标记,以便交叉注意记忆库。