type
status
password
date
slug
summary
category
URL
tags
icon

- 论文地址:https://arxiv.org/abs/2304.02643
- 项目地址:https://github.com/facebookresearch/segment-anything
- Demo 与数据集SA-1B地址:https://segment-anything.com/
Meta 发布的新模型名叫 Segment Anything Model (SAM) 。他们在博客中介绍说,「SAM 可以分割任务物体,甚至包括在训练过程中没有遇到过的物体和图像类型。泛化能力强开箱即用,无需额外的训练。」
一、引言
大型语言模型可以通过 提示工程(prompt engineering) 为当前任务生成一个有效的文本响应。具有强大的zero shot和few shot性能。
计算机视觉中也探索了通用模型。例如,CLIP和ALIGN 等文本对齐模型。又如图像生成(如DALL·E)。
我们的目标是开发一个可提示的图像分割的通用模型,并构建了迄今为止最大的分割数据集 —— 在 1100 万张图像上标注了超过 10 亿个掩码。

1.1、任务
在NLP和CV中,通用模型可以通过使用“提示(prompt)”技术执行新的任务。受到启发,提出了提示分割任务,其目标是在给定任何分割提示下返回一个有效的分割掩码(见图1a)。提示只是指定要在图像中分割的内容,就可以输出至少一个合理对象的mask。
1.2、模型
模型包括:一个强大的图像编码器计算图像嵌入,一个提示编码器嵌入提示,然后将两个信息源组合在一个轻量级掩码解码器中来预测分割掩码。(见图1b)。
1.3、数据引擎data engine
在线获取数据缺少mask标注。我们的方案是构建一个“数据引擎”,也就是说,我们一边标注一边开发模型(见图1c)。分三个阶段:辅助手动、半自动和全自动。在第一阶段,SAM协助标注人员对掩码进行标注,类似于经典的交互式分割设置。在第二阶段,SAM可以通过提示对象位置来,自动为一部份对象生成掩码,标注人员标注其余的对象。在最后一个阶段,我们用规则网格的前景点对 SAM 进行提示,平均每张图像产生100个高质量的掩模。
1.4、数据集
我们最终的数据集,SA-1B,包括来自11M张图像和1B个掩码。
二、segment anything任务
2.1、任务
将prompt从NLP转换为分割。其中prompt可以是一组前景/背景点、一个粗糙的框或掩码、自由形式的文本(指示在图像中分割什么的任何信息),根据提示返回一个有效的分割掩码。“有效”意味着,即使提示模棱两可,可以引用多个对象(例如衬衫与人的例子),输出也至少是其中一个合理的掩码。类似于期望一个语言模型对一个模糊的提示输出一个一致的响应。该任务导向了一种自然的预训练算法和一种通过提示将zero shot 转移到下游分割任务的通用方法。
2.2、预训练
为每个训练样本模拟一系列提示(如点、框、掩码),并将模型的掩码预测结果与真值对比。我们的目标是:对于任何提示,即使存在歧义,模型都能始终预测出有效掩码。
2.3、zero shot transfer
训练前任务赋予了模型在推理时对任何提示做出适当反应的能力,因此下游任务可以通过工程设计适当的提示来解决。例如,若已有猫的边界框检测器,可将检测器输出的边界框作为提示输入我们的模型,从而完成猫的实例分割。
三、Segment Anything 模型
如图4所示,SAM包括:image encoder、prompt encoder和mask decoder。我们基于Vision Transformer构建该模型,并对实时性能进行了权衡。

3.1、图像编码器
出于可扩展性和强预训练方法的考虑,我们使用经 MAE [47] 预训练的视觉 Transformer(ViT)[33],并对其进行最小化适配以处理高分辨率输入 [62]。图像编码器每张图像仅运行一次,可在提示模型前预先计算。


3.1.1、网络结构
3.2、提示编码器
两类提示:稀疏提示(点、框、文本)和密集提示(掩码)。点和框通过位置编码 [95] 与每种提示类型的Embedding相加;自由文本通过 CLIP [82] 的现成文本编码器表示。密集提示(即掩码)通过卷积嵌入,并与图像嵌入逐元素相加。
3.2.1、点
通过点的位置编码与一个前后景相关的learned embedding相加得到;若不存在点提示,则用一个learned embedding表示无点。label=0 代表前景,label=1 代表背景,label=-1 对应无点提示。
3.2.2、box
每个box中包括左上、右下2个点,首先计算点的位置编码,然后与左上、右下相关的learned embedding相加。
具体代码实现中只能使用1个box
3.2.3、文本
通过 CLIP 的文本编码器生成 [CLS] 标记的嵌入向量,再通过 1×1 卷积投影到 256 维(与其他提示嵌入维度一致)。原始SAM项目代码中没有相关实现
也可以使用所有token的平均值
3.2.4、mask-prompt
最多支持一个mask类型的prompt,并且该mask只能是256x256尺寸,因为仅仅使用mask模型没有办法感知到位置信息,因此至少需要一个正样本点或者一个框才能正确分割。对输入的mask会使用两个连续卷积结构进行4倍下采样生成64x64x256的特征,然后再与sparse-prompt-embedding合并。
3.2.4、位置编码
对坐标进行标准化,然后乘上一个可训练参数,再去sin和cos做编码。
矩阵相乘。将(x,y)映射到64维编码。
3.3、掩码解码器
掩码解码器有效地将图像的Embedding、提示Embedding和输出token映射到掩码。该设计的灵感来自于DETR,采用改进的 Transformer 解码器块 [103],后跟动态掩码预测头。我们改进的解码器块通过提示自注意力和双向交叉注意力(提示到图像嵌入、图像嵌入到提示)更新所有嵌入。经过两个块的处理后,我们对图像嵌入进行上采样,再通过一个 MLP 将输出令牌映射为动态线性分类器,进而计算每个图像位置的前景概率。
3.4、歧义处理
若模型仅输出一个掩码,在遇到歧义提示时,可能会对多个有效掩码取平均。为解决这一问题,我们对模型进行修改,使其能对单个提示预测多个输出掩码(见图 3,绿色点为输入的提示点)。我们发现 3 个输出掩码足以应对大多数常见情况(嵌套掩码通常最多三层:整体、部分、子部分)。训练时,我们仅对掩码的最小损失进行反向传播 [15, 45, 64]。为对掩码排序,模型会为每个掩码预测一个置信度分数(即估计的交并比)。

3.5、效率
模型设计在很大程度上以效率为核心目标。给定预计算的图像嵌入后,提示编码器和掩码解码器在网页浏览器的 CPU 上运行时间约为 50 毫秒。这种运行时性能支持流畅、实时的交互式提示操作。
3.6、损失和训练
模型使用DETR中的focal loss和dice loss的线性组合来监督掩模预测。我们使用混合几何提示进行训练。通过在每个掩码的11轮中随机采样提示,来模拟一个交互式设置,允许SAM无缝地集成到我们的数据引擎中。
四、Segment Anything 数据引擎
建立了一个数据引擎来支持收集1.1B掩码数据集:SA-1B。数据引擎分为三个阶段:
4.1、模型辅助手动注释阶段
第一阶段类似经典的交互式分割:一组专业标注人员使用基于 SAM 的浏览器交互式分割工具,通过点击前景 / 背景对象点标注掩码。掩码可通过像素级 “画笔” 和 “橡皮擦” 工具进行细化。我们的模型辅助标注直接在浏览器中实时运行(基于预计算的图像嵌入),实现了真正的交互式体验。我们未对标注对象施加语义限制,标注人员可自由标注 “stuff”(如地面、天空等无明确边界的事物)和 “things”(如具体物体)[1]。我们建议标注人员标注可命名或描述的对象,但不收集这些名称或描述。标注人员按对象的显著性顺序标注,若一个掩码的标注时间超过 30 秒,则建议切换到下一张图像。
在该阶段初期,SAM 使用常见的公开分割数据集进行训练。标注足够数据后,仅使用新标注的掩码重新训练 SAM。随着掩码数量增加,图像编码器从 ViT-B 扩展到 ViT-H,其他架构细节也不断优化;我们共重新训练模型 6 次。随着模型性能提升,每个掩码的平均标注时间从 34 秒减少到 14 秒。值得注意的是,14 秒的标注速度比 COCO 数据集 [66] 的掩码标注快 6.5 倍,仅比使用极点标注边界框 [76,71] 慢 2 倍。同时,每张图像的平均掩码数量从 20 个增加到 44 个。总体而言,该阶段从 12 万张图像中收集了 430 万个掩码。
4.2、包含自动预测掩码和模型辅助注释的半自动阶段
该阶段旨在增加掩码的多样性,以提升模型 “分割万物” 的能力。为让标注人员专注于非显著对象,我们首先自动检测高置信度掩码,然后向标注人员展示预填充这些掩码的图像,要求他们标注所有未标注的额外对象。为检测高置信度掩码,我们在第一阶段的所有掩码上训练了一个边界框检测器 [84],类别设为通用的 “对象”。该阶段额外收集了 590 万个掩码(来自 18 万张图像),总掩码数量达到 1020 万个。与第一阶段相同,我们定期使用新收集的数据重新训练模型(共 5 次)。由于这些对象更难标注,每个掩码的平均标注时间回升至 34 秒(不含自动生成的掩码)。每张图像的平均掩码数量从 44 个增加到 72 个(含自动生成的掩码)。
4.3、全自动阶段
在最后阶段,标注完全自动化。这得益于模型的两大改进:首先,该阶段初期已收集足够多的掩码(包括前一阶段的多样化掩码),模型性能大幅提升;其次,我们已开发出歧义感知模型,即使在歧义场景下也能预测有效掩码。具体而言,我们用 32×32 的规则网格点提示模型,对每个点预测一组可能对应有效对象的掩码。借助歧义感知模型,若点落在某个部分或子部分上,模型会返回子部分、部分和整体对象的掩码。我们使用模型的交并比预测模块筛选高置信度掩码;此外,仅保留稳定掩码(若在 和 阈值下对概率图进行二值化后得到的掩码相似,则视为稳定掩码)。最后,在筛选出高置信度和稳定的掩码后,我们应用非极大值抑制(NMS)去除重复掩码。为进一步提升小掩码的质量,我们还对图像进行多次重叠放大裁剪处理。该阶段的更多细节见附录 B。我们对数据集中的 1100 万张图像应用全自动掩码生成,共得到 11 亿个高质量掩码。
五、Segment Anything 数据集
我们的数据集SA-1B包含1100万张多样化、高分辨率的图像,以及通过数据引擎收集的11亿个高质量分割掩码。我们将SA-1B与现有数据集进行对比,并分析掩码质量及属性。
5.1、图像
我们从一家直接与摄影师合作的供应商处授权了1100万张新图像。这些图像分辨率较高(平均3300×4950像素),由此会给数据存储规模带来挑战。因此,我们发布的是短边调整为1500像素的下采样图像。即便经过下采样,我们的图像分辨率仍显著高于许多现有视觉数据集(例如,COCO[66]图像约为480×640像素)。需注意的是,目前大多数模型的输入分辨率要低得多。在发布的图像中,人脸和车辆牌照已做模糊处理。
5.2、掩码
我们的数据引擎生成了11亿个掩码,其中99.1%为全自动生成。因此,自动掩码的质量至关重要。我们将其与专业标注直接对比,并分析掩码属性与主流分割数据集的差异。我们的主要结论(下文分析及第7节实验均能证实)是:自动掩码质量较高,可有效用于模型训练。基于这一发现,SA-1B仅包含自动生成的掩码。
5.3、掩码质量
为评估掩码质量,我们随机抽取500张图像(约5万个掩码),并让专业标注人员使用我们的模型及像素级“画笔”“橡皮擦”编辑工具优化所有掩码。这一过程得到了自动预测掩码与专业修正掩码的配对数据。我们计算每对掩码的交并比(IoU)后发现,94%的掩码对IoU超过90%(97%的掩码对IoU超过75%)。相比之下,已有研究表明标注人员之间的一致性为85-91% IoU[44,60]。我们在第7节的实验通过人工评分进一步证实:该掩码质量相对于多种数据集而言处于较高水平,且使用自动掩码训练模型的效果几乎与使用数据引擎生成的所有掩码相当。
5.4、掩码属性
在图5中,我们绘制了SA-1B与现有最大分割数据集的对象中心空间分布。所有数据集均存在摄影师的常见偏好。我们观察到,SA-1B对图像角落的覆盖范围大于LVIS v1[44]和ADE20K[117](这两个数据集的分布与SA-1B最接近),而COCO[66]和Open Images V5[60]的中心偏差更明显。在图6(图例)中,我们按规模对比了这些数据集。SA-1B的图像数量是第二大数据集(Open Images)的11倍,掩码数量是其400倍。平均而言,SA-1B每张图像的掩码数量是Open Images的36倍。在这一指标上最接近的ADE20K数据集,每张图像的掩码数量仍比SA-1B少3.5倍。图6(左)展示了每张图像的掩码数量分布。接下来,图6(中)展示了掩码相对图像的大小(掩码面积的平方根除以图像面积):正如预期,由于SA-1B每张图像的掩码更多,小尺寸和中尺寸掩码的占比也更高。最后,为分析形状复杂度,我们在图6(右)中展示了掩码凹度(1减去掩码面积与掩码凸包面积的比值):由于形状复杂度与掩码大小相关,我们先对掩码大小进行分箱分层采样,以控制数据集的掩码大小分布,结果发现SA-1B掩码的凹度分布与其他数据集大致相似。

六、Segment Anything RAI分析
接下来,我们通过研究使用 SA-1B 和 SAM 时潜在的公平性问题及偏差,对我们的工作进行了负责任的AI(RAI)分析。我们关注SA-1B的地理和收入分布,以及 SAM 在人类相关受保护属性上的公平性。
6.1、地理和来源
我们使用标准方法推断图像的拍摄国家(详见附录 C)。图 7 中,我们可视化了 SA-1B 中各国的图像数量分布(左图)以及图像数量最多的 50 个国家(右图)。值得注意的是,图像数量前三名的国家来自世界不同地区。接下来,表 1 对比了 SA-1B、COCO [66] 和 Open Images [60] 的地理和收入分布:SA-1B 在欧洲、亚太地区以及中等收入国家的图像占比显著更高。所有数据集对非洲以及低收入国家的覆盖均不足。需要说明的是,在 SA-1B 中,包括非洲在内的所有地区都至少有 2800 万个掩码,是以往任何数据集总掩码数量的 10 倍以上。最后,我们观察到不同地区和收入群体的平均每张图像掩码数量(未展示)较为一致(94-108 个)。

6.2、群体分割的公平性
我们通过测量 SAM 在不同群体间的性能差异,研究了感知性别、年龄组和肤色相关的潜在公平性问题。我们使用 “更具包容性的人体标注(MIAP)” 数据集 [87] 评估性别和年龄,使用专有数据集评估肤色(详见附录 C)。评估采用模拟交互式分割方式,随机采样 1 个和 3 个点(详见附录 D)。表 2(左上)展示了感知性别相关结果:尽管已有研究表明女性在检测和分割数据集中代表性不足 [115],但我们观察到 SAM 在不同性别群体上的表现基本一致。表 2(左下)重复了年龄相关分析:尽管已有研究表明年轻和年老人群在大规模数据集中代表性不足 [110],但 SAM 在感知为 “年长” 的人群上表现最佳(尽管置信区间较大)。最后,表 2(右)展示了肤色相关分析:由于 MIAP 不含肤色标注,我们使用标注了感知 Fitzpatrick 肤色类型 [36] 的专有数据集(范围 1-6,1 为最浅肤色,6 为最深肤色)。尽管均值略有差异,但我们未发现不同肤色群体间的显著性能差异。我们认为这一结果与任务性质相关,但需注意当 SAM 作为更大系统的组件时,可能会出现偏差。最后,附录 C 中扩展了服装分割分析,发现感知性别相关的潜在偏差。
七、Zero-Shot Transfer 实验
在本节中,我们将展示 SAM(万物分割模型)的零样本迁移实验。我们考虑了五项任务,其中四项与训练 SAM 所用的可提示分割任务存在显著差异。这些实验将评估 SAM 在训练时未见过的数据集和任务上的表现。
我们的实验首先验证可提示分割的核心目标:从任意提示生成有效掩码。我们重点关注单个前景点这一挑战性场景,因为与其他更具体的提示相比,单点提示更可能存在歧义。接下来,我们将展示一系列实验,这些实验涵盖从低阶到高阶的图像理解任务,大致与该领域的发展历程相平行。具体而言,我们通过提示 SAM 完成以下任务:(1)边缘检测;(2)全图分割(即对象提议生成);(3)检测对象分割(即实例分割);(4)作为概念验证的基于自由文本的对象分割。这四项任务与训练 SAM 所用的可提示分割任务差异显著,均通过提示工程实现。我们的实验最后以消融实验收尾。实现说明:除非另有说明,(1)SAM 使用经 MAE [47] 预训练的 ViT-H [33] 图像编码器;(2)SAM 在 SA-1B 上训练,需注意该数据集仅包含数据引擎最终阶段自动生成的掩码。有关模型和训练的其他细节(如超参数),请参见附录 A。
7.1、zero shot 单点有效掩模评估
7.1.1、任务
我们评估从单个前景点分割对象的能力。由于单点可能对应多个对象,这项任务的定义并不明确。大多数数据集的真值掩码并未枚举所有可能的掩码,这可能导致自动评估指标不可靠。因此,我们在标准 mIoU 指标(即预测掩码与真值掩码的交并比均值)之外,补充了一项人工研究 —— 标注人员对掩码质量从 1(无意义)到 10(像素级完美)进行评分。详见附录 D.1、E 和 G。
默认情况下,我们从真值掩码的 “中心” 采样点(位于掩码内部距离变换的最大值处),由于 SAM 能够预测多个掩码,我们默认仅评估模型最置信的掩码。所有基线方法均为单掩码方法。我们主要与 RITM [92] 进行对比,这是一种性能强劲的交互式分割模型,在我们的基准测试中表现优于其他强基线 [67,18]。
7.1.2、数据集
我们使用新整理的包含 23 个数据集的套件,这些数据集具有多样化的图像分布。图 8 列出了这些数据集并展示了每个数据集的样本(更多细节见附录表 7)。我们使用所有 23 个数据集进行 mIoU 评估。对于人工研究,我们使用图 9b 中列出的子集(由于此类研究对资源需求较高)。该子集既包括 SAM 在自动指标上优于 RITM 的数据集,也包括 SAM 表现不及 RITM 的数据集。

7.1.3、结果
首先,我们在全部 23 个数据集上使用 mIoU 进行自动评估。我们在图 9a 中对比了每个数据集上 SAM 与 RITM 的结果。SAM 在 23 个数据集中的 16 个上取得了更高结果,优势最大可达约 47 个 IoU 点。我们还展示了 “理想” 结果 —— 通过将 SAM 的 3 个掩码与真值对比,选择最相关的掩码(而非选择最置信的掩码)。这揭示了歧义对自动评估的影响:特别是在通过理想方式解决歧义后,SAM 在所有数据集上均优于 RITM。
人工研究的结果如图 9b 所示。误差线为平均掩码评分的 95% 置信区间(所有差异均具有统计学意义;详见附录 E)。我们观察到,标注人员对 SAM 生成的掩码质量评分始终显著高于最强基线 RITM。经过消融的 “非歧义感知” 版本 SAM(仅输出单个掩码)的评分始终较低,但仍高于 RITM。SAM 的平均评分在 7 到 9 之间,这与定性评分指南相符:“高分(7-9):对象可识别,误差小且少见(例如,遗漏小的、被严重遮挡的不相连部分……)”。这些结果表明,SAM 已学会从单个点分割出有效掩码。需要注意的是,对于像 DRAM 和 IBD 这样的数据集,尽管 SAM 在自动指标上表现较差,但在人工研究中获得了持续更高的评分。

7.2、零样本边缘检测
7.2.1、方法
我们使用 BSDS500 [72,3] 评估 SAM 在经典低阶任务 —— 边缘检测上的表现。我们使用自动掩码生成流程的简化版本:具体而言,我们用 16×16 的规则网格前景点提示 SAM,生成 768 个预测掩码(每个点 3 个)。通过 NMS 去除冗余掩码。然后,对剩余掩码的未阈值化概率图应用 Sobel 滤波,并进行标准轻量级后处理(包括边缘 NMS,详见附录 D.2)。
7.2.2、结果
我们在图 10 中可视化了代表性边缘图(更多示例见图 15)。定性来看,尽管 SAM 未针对边缘检测训练,但它能生成合理的边缘图。与真值相比,SAM 预测的边缘更多,包括 BSDS500 中未标注但合理的边缘。这种偏向在定量结果中有所体现(表 3):50% 精度下的召回率(R50)较高,但精度有所牺牲。SAM 自然落后于那些学习了 BSDS500 偏向(即知道应抑制哪些边缘)的最先进方法。尽管如此,与开创性深度学习方法(如同样在 BSDS500 上训练的 HED [108])相比,SAM 表现良好,且显著优于以往(尽管确实过时)的零样本迁移方法。

7.3、零样本文本到掩码
7.3.1、方法
最后,我们考虑更高阶任务:基于自由文本分割对象。该实验验证 SAM 处理文本提示的能力。尽管之前实验使用的是完全相同的 SAM,但为实现该任务,我们调整了 SAM 的训练流程以使其具备文本感知能力 —— 且无需新的文本标注。具体而言,对于每个面积大于 100 像素的人工收集掩码,我们提取 CLIP 图像嵌入。然后在训练期间,我们将提取的 CLIP 图像嵌入作为 SAM 的首个交互提示。核心思路是:由于 CLIP 的图像嵌入经过训练与文本嵌入对齐,因此我们可使用图像嵌入训练,却在推理时使用文本嵌入。即推理时,我们将文本输入 CLIP 文本编码器,然后将生成的文本嵌入作为提示输入 SAM(详见附录 D.5)。
7.3.2、结果
我们在图 12 中展示了定性结果。SAM 能够基于简单文本提示(如 “a wheel”)和短语(如 “beaver tooth grille”)分割对象。当 SAM 仅通过文本提示无法正确识别对象时,额外添加一个点通常能修正预测,这与 [31] 类似。
