Segment Anything


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

项目页面:https://github.com/facebookresearch/segment-anything

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


目录

1. 引言

2. 分割一切任务

3. 分割一切模型

4. 分割一切数据引擎

5. 分割一切数据集

6. 分割一切 RAI 分析

7. 零样本迁移实验

8. 讨论


1. 引言

在自然语言处理中,基于网络规模数据预训练的大型语言模型(LLM)通过强大的零样本和少样本泛化能力引发了革命。这些 “基础模型” 可以泛化到训练时未见过的任务和数据分布,这种能力通常通过提示工程实现。当模型规模、数据集大小和总计算量增加时,这种零样本和少样本性能会出奇地好。

计算机视觉领域也探索了基础模型,最突出的例子是像 CLIP 这样的模型,它们通过对比学习将文本和图像编码器对齐,从而实现零样本泛化。然而,计算机视觉包含的问题远不止于此,许多问题缺乏充足的训练数据。

本文的目标是构建一个用于图像分割的基础模型:开发一个可提示的模型,并在一个广泛的数据集上,通过一个能实现强大泛化能力的任务进行预训练,从而通过提示工程,解决新数据分布上的各种下游分割问题。

该计划的成功取决于三个相互关联的组成部分:任务模型数据。本文通过解决以下问题来构建它们:

  • 什么样的任务能实现零样本泛化?

  • 相应的模型架构是什么?

  • 什么数据能够支撑这个任务和模型?

本文通过引入一个 可提示的分割任务、一个 分割一切模型(SAM) 和一个 数据引擎 来解决这些问题。数据引擎通过迭代使用模型辅助数据收集和新数据改进模型,最终创建了包含超过 1B 掩码的 SA-1B 数据集

2. 分割一切任务

受 NLP 启发,本文为分割定义了一个类似的任务。

任务:本文将 “提示” 的概念引入分割。

  • 提示可以是前景/背景点、粗略的框或掩码(mask)、自由形式文本,或任何指示图像中要分割的内容的信息。
  • 可提示的分割任务的目标是:给定任何提示,返回一个有效的分割掩码。“有效” 意味着即使提示模糊,可能指向多个对象,输出也至少应该是其中一个对象的合理掩码(如下图所示)。

预训练:这个任务催生了一个自然的预训练算法:为每个训练样本模拟一系列提示(如点、框、掩码),并将模型的掩码预测与真实情况进行比较。本文的目标始终是为任何提示预测一个有效掩码,即使提示是模糊的。

零样本迁移:预训练任务使模型能够在推理时对任何提示做出恰当响应。因此,下游任务可以通过设计适当的提示来解决。例如,如果有一个猫的检测器,将其输出的框作为提示输入本文的模型,就可以实现猫的实例分割。

讨论:本文的目标是训练一个能力广泛的模型,能够通过提示工程适应许多(尽管不是全部)现有的和新的分割任务。这种能力是任务泛化的一种形式,与多任务分割系统(在固定的任务集上训练和测试)有本质区别。

3. 分割一切模型

SAM 由三个组件构成,如上图所示:一个图像编码器、一个灵活的提示编码器和一个快速的掩码解码器。

图像编码器:基于可扩展性和强大的预训练方法,本文使用 MAE 预训练的视觉 Transformer(ViT),并对其进行了最小化调整以处理高分辨率输入。图像编码器每张图像运行一次,可以在提示模型之前完成。

提示编码器:本文考虑两种提示:稀疏提示(点、框、文本)和密集提示(掩码)。点和框通过位置编码和可学习的 embedding 表示;文本使用 CLIP 的文本编码器;密集提示(掩码)通过卷积转为 embedding。

掩码解码器:掩码解码器高效地将图像 embedding、提示 embedding 和一个输出 token 映射到一个掩码。它基于 Transformer 解码器块的修改版本,随后是一个动态掩码预测头。

  • 双层解码器通过交叉注意更新图像 embedding 和提示 token。
  • 然后对图像 embedding 进行放大,利用更新后的输出 token 动态预测掩码。
  • 为了图形清晰,没有说明:在每个注意层,将位置编码添加到图像嵌入中,并将整个原始提示 token(包括位置编码)重新添加到 token query 和 key 中。

解决模糊性:对于单个模糊提示,模型可能会平均多个有效掩码。为此,本文修改模型,使其为单个提示预测多个输出掩码(默认 3 个)。训练时,本文仅反向传播这些掩码中损失最小的那个。

效率:给定预计算的图像 embedding,提示编码器和掩码解码器可以在浏览器 CPU 上约 50ms 内运行,实现实时的交互式提示。

4. 分割一切数据引擎

由于网络上分割掩码不丰富,本文构建了一个数据引擎来收集包含 1.1B 掩码的数据集 SA-1B。该引擎分为三个阶段:

1)辅助手动阶段

  • 专业标注员使用由 SAM 驱动的基于浏览器的交互式分割工具,通过点击前景/背景点来标注掩码。
  • 随着标注数据的增加,图像编码器从 ViT-B 扩展到了 ViT-H,其他架构也有相应的改进。
  • 后续平均标注时间从 34 秒降至 14 秒,每张图像的掩码数从 20 增至 44。
  • 此阶段收集了 120K 张图像上的 4.3M 掩码。

2)半自动阶段

  • 为了增加掩码多样性,首先自动检测出可信的掩码,然后让标注员在预填这些掩码的图像上标注任何未标注的附加对象。
  • 可信掩码使用训练的边界框检测器检测。
  • 此阶段在 180K 张图像上额外收集了 5.9M 掩码,每张图像的平均掩码数增至 72 个。

3)全自动阶段

  • 在模型得到充分改进并开发出能感知模糊性的模型后,本文实现了全自动标注。
  • 本文用一个 32x32 的规则点网格提示模型,为每个点预测一组可能对应于有效对象的掩码;
  • 然后通过预测的 IoU 选择可信掩码,并选择唯一的稳定掩码(如果将概率图在 0.5 - δ 和 0.5 + δ 这两个阈值下进行处理能够得到相似的掩码,就认为该掩码是稳定的);
  • 然后应用非极大值抑制(non-maximal suppression,NMS)去除重复;
  • 为了进一步提升较小尺寸 mask 的质量,还对多张重叠的放大图像的截取部分进行了处理。
  • 此阶段在全部 11M 张图像上生成了 1.1B 高质量掩码。

5. 分割一切数据集

SA-1B 包含 11M 张多样化、高分辨率、经授权且保护隐私的图像,以及 1.1B 个高质量分割掩码。

图像:本文从与摄影师直接合作的供应商处获得授权。图像分辨率高(平均 3300×4950 像素),发布时下采样至短边 1500 像素。图像中的人脸和车牌已被模糊处理。

掩码:99.1% 的掩码是全自动生成的。质量评估显示,94% 的自动掩码与专业校正掩码的 IoU 大于 90%。与现有数据集相比,SA-1B 在图像数量上是第二大的 Open Images 的 11 倍,掩码数量是其 400 倍。SA-1B 的掩码在空间分布、尺寸分布和形状复杂性(凹度)上均展现出良好的多样性和高质量。

6. 分割一切 RAI 分析

本文进行了负责任的人工智能分析,重点关注 SA-1B 的地理和收入分布,以及 SAM 在不同人群属性上的公平性。

地理和收入代表性:SA-1B 中欧洲、亚洲及大洋洲以及中等收入国家的图像比例显著高于 COCO和Open Images。非洲和低收入国家在所有数据集中代表性均不足。尽管如此,SA-1B 中非洲地区的掩码数量(28M)仍远超以往任何数据集的掩码总数。

分割人群的公平性:本文评估了 SAM 在感知性别、年龄组和肤色上的性能。结果显示,SAM 在不同群体间的表现相似,置信区间大多重叠,表明在这些维度上未发现显著的性能差异。然而,在对衣物的分割分析中,发现了基于感知性别的潜在偏差迹象。

7. 零样本迁移实验

本文在五个任务上评估了 SAM 的零样本迁移(zero-shot transfer)能力。

零样本单点有效掩码评估:在 23 个多样化数据集上,SAM 从单个前景点生成掩码。

  • 如上图 a 所示,自动评估(mIoU)显示 SAM 在 16 个数据集上优于最强基线 RITM。
  • 如上图 b 所示,人工评估(1-10分)中,SAM 的掩码质量评分(7-9 分)显著高于 RITM 和单输出的 SAM 变体,表明其在处理单点模糊提示时能生成高质量掩码。

零样本边缘检测:在 BSDS500 数据集上,通过简单的自动掩码生成流程,SAM 能够产生合理的边缘图。虽然由于未学习数据集特定偏差,其精度低于最先进的专用方法,但召回率(recall)很高,性能优于传统的零样本方法。

零样本对象提议生成:在 LVIS v1 数据集上,SAM 作为对象提议生成器,在中大型对象以及罕见和常见对象上的平均召回率(AR)超过了经过 LVIS 训练的强检测基线(ViTDet-H)。

零样本实例分割:将 SAM 与对象检测器(ViTDet)组合,用检测框提示 SAM 进行零样本实例分割。虽然自动指标(AP)上 SAM 落后于 ViTDet,但人工评估显示 SAM 生成的掩码质量更高,边界更清晰,表明 ViTDet 可能学习了训练数据中的特定偏差(如低质量掩码、无孔多边形等)。

文本到掩码:作为概念验证,本文利用 CLIP 对齐的图像和文本 embedding,使 SAM 能够响应文本提示。训练时使用 CLIP 图像 embedding 作为提示,推理时则使用 CLIP 文本编码器生成的文本 embedding。结果显示 SAM 能根据 “一个轮子” 或 “海狸牙齿格栅” 等简单或复杂的文本提示分割对象。

消融研究:数据引擎的每个阶段都带来了性能提升,且仅使用全自动阶段的数据训练即可达到与使用所有阶段数据相近的效果。使用约 10% 的 SA-1B 数据(约 1M 图像)即可获得与使用完整数据集相当的性能。图像编码器从 ViT-B 扩展到 ViT-H 带来显著提升,但从 ViT-L 到 ViT-H 的提升边际递减。

8. 讨论

基础模型:SAM 符合 “在广泛数据上训练并能适应各种下游任务” 的基础模型定义。与强调自监督学习的基础模型不同,SAM 的能力主要来自大规模监督训练,这得益于本文的数据引擎能够扩展可用标注。

组合性:SAM 旨在成为一个可靠的接口,可以轻松地与其他组件组合。例如,它可以与检测器组合进行实例分割,或与眼动追踪设备结合,在新领域实现应用,而无需额外训练。

局限性:SAM 并非完美,可能会遗漏细微结构、偶尔产生小的断开组件、边界不如某些计算密集型方法锐利。它专为通用性和广度设计,而非追求最高的交互式分割 IoU。文本到掩码任务目前还不够鲁棒。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐