SAM 2: Segment Anything in Images and Videos


论文地址:https://arxiv.org/abs/2408.00714

项目页面:https://github.com/facebookresearch/sam2

进 Q 学术交流群:922230617 或加 CV_EDPJ 进 W 交流群


目录

1. 引言

3. 任务:可提示视觉分割 (PVS)

4. 模型

5. 数据

5.1 数据引擎

5.2 SA-V 数据集

6. 零样本实验

6.1 可提示视频分割

6.2 半监督视频对象分割(VOS)

6.3 图像分割

7. 半监督 VOS 中的 SOTA 对比

8. 局限性


1. 引言

本文推出了 Segment Anything Model 2 (SAM 2),一个统一的视频和图像分割模型。本文的工作包括一个任务、一个模型和一个数据集。

本文专注于 可提示视觉分割 (Promptable Visual Segmentation,PVS) 任务,它将图像分割推广到视频领域。该任务接受视频任一帧上的点、框或掩码作为输入,以定义一个感兴趣的区域,并预测其 时空掩码(即 'masklet')。一旦预测出一个 masklet,可以通过在额外帧上提供提示来迭代地细化它。

SAM 2 采用简单的 Transformer 架构,并具备 流式记忆(streaming memory)能力,可实现实时视频处理。

  • 该架构是 SAM 在视频领域的自然推广。它逐帧处理视频,生成感兴趣对象的分割掩码。
  • 它配备了一个记忆注意力模块,用于存储有关对象和先前交互的信息,使其能够生成整个视频的 masklet 预测,并基于先前观察到的对象记忆上下文有效地修正这些预测。
  • 当应用于图像时,记忆为空,模型的行为与 SAM 相同。

(2023|ICCV|Meta,SAM,可提示(点、框、掩码)分割任务,数据引擎和数据集/SA-1B)分割一切

本文构建了一个数据引擎,通过使用模型与标注员交互的循环来生成训练数据,收集了迄今为止最大的视频分割数据集。

  • 本文最终的 Segment Anything Video (SA-V) 数据集 包含 50.9K 个视频中的 35.5M 个掩码,掩码数量比任何现有视频分割数据集多 53 倍
  • SA-V 具有挑战性,包含在整个视频中会被遮挡并重新出现的小物体和部件。

在本文的数据上训练的 SAM 2 在各种任务中均表现出色。

  • 在视频分割中,本文观察到,与先前方法相比,使用 3倍 更少的交互即可获得更高的准确性。
  • 在图像分割中,本文的模型比 Segment Anything Model (SAM) 更准确,且速度快 6 倍

3. 任务:可提示视觉分割 (PVS)

本文的 PVS 任务允许在视频的任一帧上向模型提供提示。

  • 提示可以是正/负点击、框或掩码,用于定义要分割的对象或修正模型预测的结果。
  • 为了提供交互式体验,在接收到特定帧上的提示后,模型应立即响应该帧的有效分割掩码。
  • 在接收到初始提示后,模型应将这些提示传播到整个视频,以获得目标对象的 masklet。
  • 可以在任何帧上提供额外提示来细化整个视频的分割。

SAM 2 被用作 PVS 任务的数据收集工具,用于构建本文的 SA-V 数据集。

图 2:采用 SAM 2 的交互式分割。

  • 步骤 1(选择):在第 1 帧中,向 SAM 2 提出提示,以获取目标物体(舌头)的分割区域(绿色/红色圆点分别表示积极/消极提示)。SAM 2 会自动将该分割区域传播到后续帧(蓝色箭头所示),从而形成一个 masklet。如果 SAM 2 在第 2 帧后丢失了该物体,可以在新帧中提供额外的提示来修正掩码套件(红色箭头所示)。
  • 步骤 2(细化):在第 3 帧中单击一次即可恢复该物体并将其传播以获得正确的 masklet。SAM + 视频跟踪的方法,在第 3 帧中需要多次点击(如同第 1 帧)才能正确重新标注该物体,因为分割是从头开始重新进行的。而借助 SAM 2 的记忆功能,只需单击一次即可恢复舌头。

4. 模型

SAM 2 可以看作是 SAM 在视频(和图像)领域的推广。

  • 它在单个帧上接收点、框和掩码提示,以定义要分割的对象的空间范围。
  • 在空间上,模型的行为类似于 SAM。
  • 一个轻量级的可提示掩码解码器接收图像嵌入和提示(如果有),并输出该帧的分割掩码。
  • 可以在一帧上迭代添加提示以细化掩码。

SAM 2 解码器使用的帧嵌入并非直接来自图像编码器,而是以过去的预测和提示帧的记忆为条件。

  • 提示帧也可能来自当前帧的 "未来"。
  • 记忆编码器根据当前预测创建帧的记忆,并将其放入记忆库供后续帧使用。
  • 记忆注意力操作从图像编码器获取每帧嵌入,并根据记忆库对其进行条件化,然后掩码解码器将其用于形成预测。

图像编码器

  • 采用流式(streaming)方法处理任意长视频。
  • 图像编码器仅在交互开始时运行一次,其作用是提供代表每帧的无条件 token。
  • 本文使用 MAE 预训练的 Hiera 图像编码器,它是分层的,允许本文在解码时使用多尺度特征。

记忆注意力

  • 作用是使当前帧特征以过去帧的特征和预测以及任何新提示为条件。
  • 本文堆叠 L 个 Transformer 块,每个块执行自注意力,然后对存储在记忆库中的记忆(提示/非提示帧)和对象指针进行交叉注意力,最后通过 MLP。
  • 本文使用标准的自注意力和交叉注意力操作。

提示编码器

  • 提示编码器与 SAM 相同,可由点击、框或掩码提示。
  • 稀疏提示由位置编码与针对每种提示类型学习得到的嵌入相加而成
  • 掩码通过卷积运算转换为嵌入,并与帧嵌入相加。

掩码解码器:解码器设计主要遵循 SAM。

  • 本文堆叠 "双向" Transformer 块来更新提示和帧嵌入。
  • 对于模糊提示,模型会预测多个掩码。
  • 为了支持 PVS 任务中某些帧上可能没有有效对象的情况,本文增加了一个额外的头部来预测目标对象是否在当前帧存在。
  • 另一个新颖之处是来自分层图像编码器的跳跃连接,用于将高分辨率嵌入纳入掩码解码。

记忆编码器:通过卷积模块对输出掩码进行下采样,并与图像编码器的无条件帧嵌入逐元素相加,然后通过轻量级卷积层以融合信息(未在图中显示)。

记忆库

  • 通过维持一个最多包含 N 个最近帧记忆的 FIFO 队列和一个最多包含 M 个(用于被提示帧的)提示信息的 FIFO 队列,来保留关于视频中目标对象的过去预测信息。
  • 此外,本文还存储对象指针列表,作为要分割对象的高级语义信息的轻量级向量。
  • 记忆注意力会交叉关注空间记忆特征和这些对象指针。

训练

  • 模型在图像(SA-1B)和视频数据(Internal,SA-V)上联合训练,训练参数如下图所示。
  • 本文模拟交互式提示过程。
  • 本文采样 8 帧序列,随机选择最多 2 帧进行提示,并在训练期间使用真实 masklet 和模型预测采样修正点击。
  • 训练任务是顺序地(且 "交互式地")预测真实 masklet。

5. 数据

本文构建了一个数据引擎来收集大规模、多样化的视频分割数据集,采用了带有标注员的人工交互式模型循环设置。

5.1 数据引擎

第一阶段:逐帧使用 SAM:使用基于图像的交互式 SAM 辅助人工标注。

  • 标注员需要在视频的每一帧中使用 SAM 以及像素级精确的手动编辑工具来标注目标对象的掩码。没有跟踪模型辅助传播。
  • 过程缓慢,平均每帧标注时间 37.8 秒。此阶段收集了 1.4K 视频中的 16K 个 masklet。

第二阶段:SAM + SAM 2 Mask:将 SAM 2 引入循环,但此版本的 SAM 2 仅接受掩码作为提示(称为 SAM 2 Mask)。

  • 标注员使用 SAM 等工具生成第一帧的空间掩码,然后用 SAM 2 Mask 将其传播到其他帧以获取完整的时空 masklet。标注员可以在后续帧中手动修正 SAM 2 Mask 的预测。
  • SAM 2 Mask 最初在第一阶段数据和公开数据集上训练,并在第二阶段使用收集的数据重新训练了两次。
  • 此阶段收集了 63.5K 个 masklet,标注时间降至 7.4 秒/帧。

第三阶段:SAM 2:使用完整功能的 SAM 2,它接受多种类型的提示。

  • SAM 2 利用跨时间维度的对象记忆来生成掩码预测。标注员只需在中间帧提供偶尔的修正点击,而无需从头开始标注。
  • 此阶段使用收集到的标注重新训练了五次 SAM 2。
  • 标注时间降至 4.5 秒/帧,收集了 197K 个 masklet。

质量验证:引入单独的验证步骤,由另一组标注员评估每个 masklet 的质量。不满意的 masklet 返回精炼,跟踪定义不明确对象的 masklet 则被完全拒绝。

自动 masklet 生成(Auto):为了增加标注的多样性,本文用自动生成的 masklet 补充人工标注。本文使用 SAM 2 在第一帧用规则网格点进行提示来生成候选 masklet,然后通过验证步骤过滤。自动 masklet 覆盖了显著的中心对象以及背景中不同大小和位置的对象。

上表展示了在每个阶段结束时基于现有数据训练的 SAM 2 的性能比较(保持迭代次数不变),从而仅衡量额外数据的影响。

  • 使用自己的 SA-V 验证集以及 9 个零样本基准进行评估,并使用标准的 J&F 准确率指标(数值越高越好),在第一个帧上进行 3 次提示操作。
  • 注意到,在逐步纳入每个阶段的数据后,不仅在本域的 SA-V 验证集上,而且在 9 个零样本基准上都有持续的性能提升。

5.2 SA-V 数据集

通过数据引擎收集的 SA-V 数据集包含 50.9K 个视频和 642.6K 个 masklet。标注的掩码数量比任何现有视频对象分割(VOS)数据集多 53 倍。

视频:由众包人员拍摄的 50.9K 个新视频,54% 室内,46% 室外,平均时长 14 秒,覆盖各种日常场景。

Masklet:包括 190.9K 个手动标注和 451.7K 个自动生成的 masklet。SA-V Manual 中 masklet 的消失率(至少在一帧中消失然后重新出现)为 42.5%。视频 masklet 示例如下图所示。

划分:本文根据视频作者及其地理位置划分训练/验证/测试集,以最小化对象重叠。

内部数据集(Internal)

  • 本文还利用内部可获取的授权视频数据来进一步扩充训练集。
  • 本文的内部数据集包含在第二阶段和第三阶段中标注的 62.9K 个视频和 69.6K 个 masklet 用于训练;以及在第一阶段中标注的 96 个视频和 189 个 masklet(用于测试,即内部测试集)。

6. 零样本实验

本文对比了 SAM 2 与先前工作在零样本(zero-shot)视频和图像任务上的表现。除非特别说明,结果使用默认设置。

6.1 可提示视频分割

本文在 9 个密集标注的零样本视频数据集上模拟交互式设置进行评估。

本文创建了两个强基线:SAM + XMem++ 和 SAM + Cutie。

  • 实验结果显示,SAM 2 在离线(多次遍历视频)和在线(单次遍历)评估设置中均优于基线。
  • 总体而言,SAM 2 可以用(>3 倍)更少的交互生成更好的分割精度。

6.2 半监督视频对象分割(VOS)

本文在 17 个视频数据集上评估半监督视频对象分割 (video object segmentation,VOS)设置(提示仅在第一帧)。

对比 XMem++ 和 Cutie,使用点击、框或掩码提示。SAM 2 在所有提示类型和数据集上均优于这两种方法,表明它在传统的非交互式 VOS 任务上也表现出色。

6.3 图像分割

本文在 37 个零样本数据集上评估 SAM 2 的图像分割能力(1-click / 5-click)。

SAM 2 在 SA-1B 上训练后,1-click 平均 mIoU (58.9) 超过了 SAM (58.1),且速度快 6 倍。使用本文的混合数据训练后,精度进一步提升至 61.9%。在视频数据集中抽取的图像上,SAM 2 也显示出巨大优势。

【注:SA-1B 是 SAM 使用的数据集,包含 1B 分割掩码。

混合数据包含 SA-1B 和视频数据。

SAM2 有更好的性能,除了架构方面的改进(Hiera 图像编码器)外,还有一个可能的原因是:

  • SAM2 使用基于视频的 masklet 数据,包含同一个对象在一个场景中的多视角(方位、大小/远近)数据,使得训练后的模型对该场景(以及相似场景)的理解更为透彻,从而获得性能提升。
  • 在 14 个新视频上的的分割性能也显著地高(69.6),展示了其泛化能力。
  • 该 insight 也符合用于分割的多视角数据扩充的可行性。

但是,最后一行在 SA-23 Video 的低谷(60.1)不清楚是什么原因,文中并未给出解释。

7. 半监督 VOS 中的 SOTA 对比

本文将 SAM 2 与现有 SOTA 在半监督 VOS 设置下进行对比。SAM 2 在多个基准测试上均显著优于现有最佳方法。在 SA-V 验证/测试集上的评估显示,先前工作的最佳性能远低于 SAM 2,这凸显了 "分割视频中任何内容" 能力的差距。

8. 局限性

SAM 2 在静态图像和视频领域都表现出色,但在某些情况下也会遇到困难。

  • 该模型在镜头切换时无法对物体进行分割,并且在拥挤场景中可能会丢失或混淆物体,在长时间遮挡或较长视频中也会出现这种情况。为了解决这个问题,设计了在任何帧中提示 SAM 2 的功能:如果模型丢失了物体或出现错误,通过在其他帧上点击修正操作,在大多数情况下可以迅速恢复正确的预测。
  • SAM 2 还难以准确跟踪具有非常细小或精细细节的物体,尤其是在它们快速移动的情况下。
  • 另一个具有挑战性的场景是当附近存在外观相似的物体(例如多个相同的抛接球)时。
  • 将更明确的运动建模纳入 SAM 2 可以在这些情况下减少错误。

虽然 SAM 2 能够同时跟踪视频中的多个物体,但它会分别处理每个物体,仅利用共享的每帧嵌入信息,而不进行物体间的通信。虽然这种方法简单,但纳入共享的物体级上下文信息可能会有助于提高效率。

本文的数据引擎依靠人工标注员来验证掩码图的质量并选择需要修正的帧。未来的发展可能会包括自动化这一过程以提高效率。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐