您现在的位置是:首页 >其他 >论文解读:Segment Anything网站首页其他

论文解读:Segment Anything

万里鹏程转瞬至 2024-09-28 00:01:02
简介论文解读:Segment Anything

Segment Anything

发表时间:2023
论文地址:https://arxiv.org/abs/2304.02643
项目地址:https://github.com/facebookresearch/segment-anything

介绍了Segment Anything(SA)项目:一个新的任务、模型集和数据集的图像分割。在数据收集循环中使用模型迭代,我们建立了迄今为止(迄今为止)最大的分割数据集,在11M许可和尊重隐私的图像上有超过10亿个mask。该模型的设计和训练是及时的,因此它可以0样本转移到新的图像分布和任务。我们评估了它在许多任务上的能力,发现它的zero-shot性能令人印象深刻——可以与之前的完全监督结果竞争,甚至更好。我们正在https://segment-anything.com 上发布1B掩模和11M图像的片段Segment Anything(SAM)和相应的数据集(SA-1B),以促进对计算机视觉基础模型的研究。

基本解读

研究目标

将研究目光聚焦于基础模型,将应用领域无限推广,意图实现zero-shot或few-shot泛化(参考NL计算)。论文整体篇幅都在介绍SAM的体系结构其泛化能力(在第7节,但具体详情在附件中),以证明其存在无限的泛化能力。

关键知识

SAM是一个项目体系,而非某个网络模型。其核心是对数据的利用,对模型输入输出格式的调整。其网络模型均依赖VIT模型,其结构体系为提示分割模型(与普通语义分割模型多了提示这一层)。SAM参考NLP,认为其具备强大的下游泛化能力是因为提示输入,其认为分割任务的提示输入为点、推荐框、mask和文本(对于文本输入的理解使用CLIP编码器),通过给定提示输入来明确分割对象。

体系结构

包含数据处理、训练体系、模型架构三方面。

数据处理

包含对训练数据和输入数据,训练数据是SA-1B(平均分辨率为3300×4950,为降低存储压力将短边缩放到1500),包括来自11M(1100万)的图像的超过1个B的mask(平均每个图像超过100个mask),由数据引擎迭代生成mask,比任何现有的数据集多400倍的标注(Meta团队还分析了由训练数据分布所导致潜在的种群歧视问题,其表明SA-1B在数据量上存在国别差异,但是在类型分布上没有差异,在性别上没有差异,但是在皮肤年龄上存在细微性能差异,但是在多点输入下基本上没有性能差异)。
Meta团队分析的SA-1B数据集与其它数据集(LVIS、COCO、ADE20K、Open Image)的差异,发现SA-1B数据集分辨率较高,且每个图像中mask数据较多,此外在mask size、mask准确性上基本一致。

训练体系

主要是对训练数据的利用和模型的迭代。共为三个阶段:辅助手动、半自动和全自动。

在第一阶段,SAM协助标注人员对掩码进行标注,类似于经典的交互式分割设置(模型使用常见的语义分割模型进行预训练,上线即具备初级的语义分割能力,使用了用MAE方法训练的VIT模型)。由专业的标注团队使用SAM提供的网站输入提示点,并修正模型输出的mask,这里本质上可以看做为一种强化学习。该阶段进行了6次的迭代(标注与训练),最终使得模型输出的mask修正成本远低于标注成本。模型训练时的mask数量从22增加到了44,该阶段在12万个图像中收集到430万个mask。

第二阶段,SAM通过提示输入为特定位置生成mask,标注员专注于对其余对象的标注,从而帮助增加掩码的多样性。每张图片的平均mask数量从44个增加到72个。

最后一个阶段,标注是全自动的,用一个规则的前景点网络提示SAM,平均每张图像产生∼100个高质量的掩模(设计歧义感知模型,如果点位于一个部分或子部分上,我们的模型将返回该子部分、部件和整个对象)。并由IOU预测模块,输出每个mask的iou,最后由NMS滤除副本(为了进一步提高较小掩模的质量,我们还处理了多个重叠的放大图像crop)。对数据集中的所有11M幅图像应用了全自动掩模生成,总共产生了1.1B个高质量的掩模。为研制自动标注的质量,随机抽取了500个图像(越50k个mask),94%的图像对IoU大于90%,97%的图像对的IoU大于75%

模型架构

其模型结构由图像编码器、提示编码器和mask解码器组成,同时为了降低训练成本,一个编码的图像特征会应对到多个提示输入。在web部署时,图像特征编码为服务器后端,而提示编码器和mask解码器则在web前端上,基于此架构可实现在线实时交互操作(以∼50毫秒的速度生成预测掩码)。

针对于歧义情况,设计了多个mask输出来进行匹配,即一个提示输入对应三个mask输出,分别为子部件、部件和整体级输出。

1、Introduction

在互联网规模的数据集上预先训练的大型语言模型,用zero-shot和few-shot泛化[10]正在彻底改变NLP。这些“基础模型”[8]可以推广到超出训练期间看到的任务和数据分布。该功能通常是通过提示工程来实现的,其中手工制作的文本被用来提示语言模型为手头的任务生成一个有效的文本响应。当使用来自web的大量文本语料库进行缩放和训练时,这些模型的zero-shot和few-shot性能与微调模型[10,21]相比(在某些情况下甚至匹配)。经验趋势表明,这种行为随着模型规模、数据集大小和总训练计算的改善而提升。

尽管程度较小,基础模型也在计算机视觉中得到了探索。也许最突出的是文生图模型。例如,CLIP [82]和ALIGN [55]使用对比性学习来训练文本和图像编码器来对齐这两种模式。一旦经过训练,工程文本提示可以使zero-shot泛化到新的视觉概念和数据分布。这些编码器还可以有效地与其他模块进行组合,以实现下游任务,如图像生成(例如,DALL·E[83])。虽然在视觉和语言编码器方面已经取得了很大的进展,但计算机视觉包括了超出这个范围的广泛问题,而对于其中许多问题,并不存在丰富的训练数据。

在这项工作中,我们的目标是建立一个图像分割的基础模型。也就是说,我们寻求开发一个可提示的模型,并使用一个能够实现强大泛化的任务,在一个广泛的数据集上对其进行预训练。利用这个模型,我们的目标是解决新数据分布上的一系列下游分割问题。

这个计划的成功取决于三个组成部分:任务、模型和数据。为了开发它们,我们解决了以下关于图像分割的问题:
1、是什么任务可以实现zero-shot泛化?
2、相应的模型体系结构是什么?
3、哪些数据可以支持这项任务和模型?

这些问题被纠缠在一起,需要一个全面的解决方案。我们首先定义了一个快速的分割任务,该任务足够通用,可以提供一个强大的预训练目标,并实现广泛的下游应用。该任务需要一个支持灵活提示的模型,并可以在输入提示时实时输出分割掩码,以允许交互式使用。为了训练我们的模型,我们需要一个多样化的、大规模的数据来源。不幸的是,没有用于分割的互联网规模的数据源;为了解决这个问题,我们构建了一个“数据引擎”,也就是说,我们在使用我们的高效模型来帮助数据收集和使用新收集的数据来改进模型之间进行迭代。接下来,我们将介绍每个相互关联的组件,然后是我们创建的数据集和证明我们的方法的有效性的实验。


任务:在自然语言处理和最近的计算机视觉中,基础模型是一个很有前途的发展,它可以通过使用“提示”技术对新的数据集和任务执行zero-shot或few-shot学习。受这方面工作的启发,我们提出了提示分割任务,其目标是在给定任何分割提示下返回一个有效的分割掩码(见图1a)。提示只是指定要在图像中分割的内容,例如,提示可以包括标识对象的空间或文本信息。有效的输出mask的要求,意味着提示是模棱两可的,可以指多个对象(例如,点衬衫可能表示衬衫或穿它的人),输出应该是一个合理的至少一个对象的mask。我们使用提示分割任务作为训练前的目标,并通过提示工程来解决一般的下游分割任务。

1、zero-shot强泛化的分割任务为提示分割任务,即用户输入提示(空间位置或文本)模型输出既定分割对象;
2、提示分割指令存在一定歧义性,无法有效确定要分割的尺度,是局部还是全局(如衣服和人体);
3、针对于歧义情况,提示分割模型应该输出一个合理的对象级mask,不能掺杂其他对象(例如,分割人体时把手提包囊括了一半)

模型:快速的分割任务和现实世界目标的广泛性对模型架构施加了约束。特别是,模型必须支持灵活的提示,需要平摊实时计算掩模的成本以允许交互使用,并且必须能意识到歧义(不做混淆对象的mask输出)。令人惊讶的是,我们发现一个简单的设计满足所有三个约束条件:一个强大的图像编码器计算图像嵌入,一个提示编码器嵌入提示输入,然后将两个信息源组合在一个轻量级掩码解码器中来预测分割掩码。我们将此模型称为Segment Anything Model,或SAM(见图1b)。通过将SAM分离为一个图像编码器和一个快速提示编码器和掩码解码器,相同的图像嵌入可以在不同的提示输入中被重用(及其成本摊销)。给定一个图像嵌入,提示编码器和掩码解码器在web浏览器中以∼50毫秒的生成预测掩码。我们关注点、框和掩码提示,并使用自由形式的文本提示显示初始结果。为了使SAM感知到歧义,我们将其设计为预测一个提示的多个mask,允许SAM自然地处理歧义,比如衬衫和人的例子。

1、将模型结构设计为图像编码器、提示编码器、mask解码器;
2、针对一个图像编码器的输出特征图,可以使用不同的提示编码器来重用其特征,以平摊特征编码成本;
3、针对于歧义情况,设计了多个mask输出来进行匹配,即一个提示输入多个mask输出

数据引擎:为了实现对新数据分布的强泛化,我们发现有必要在大量和不同的掩码集上训练SAM,而不是在已经存在的任何分割数据集上。虽然基础模型的一个典型方法是在线获取数据[82],但掩模本身并不丰富,因此我们需要一种替代策略。我们的解决方案是构建一个“数据引擎”,也就是说,我们与循环中的模型数据集标注共同开发我们的模型(见图1c)。我们的数据引擎有三个阶段:辅助手动、半自动和全自动。在第一阶段,SAM协助标注器对掩码进行标注,类似于经典的交互式分割设置。在第二阶段,SAM可以通过提示可能的对象位置来为对象的子集自动生成掩码,标注器专注于对其余对象的标注,从而帮助增加掩码的多样性。在最后一个阶段,我们用一个规则的前景点网格提示SAM,平均每张图像产生∼100个高质量的掩模。

1、基于web尺度数据进行训练(使用在线生成策略),而非使用现有的语义分割数据集;
2、先由SAM协助进行语义分割mask生成,然后让SAM通过提示输入为特定位置生成mask,最后使用规则的前景点做提示输入;

数据集:我们最终的数据集,SA-1B,包括来自11M许可和隐私保护图像的超过1个B的掩码(见图2)。SA-1B,使用我们的数据引擎实现自动生成数据集,比任何现有的分割数据集[66,44,117,60]多400×的掩模,正如我们广泛验证的,掩模是高质量和多样性的。除了用于训练SAM的稳健和通用之外,我们还希望SA-1B成为一个有价值的研究资源,旨在建立新的基础模型。

研究反馈:我们研究和报告了在使用SA-1B和SAM时潜在的公平问题和偏差。SA-1B的图像跨越了地理上和经济上不同的国家,我们发现SAM在不同的人群群体中表现相似。我们共同希望,这将使我们的工作对现实世界的用例更加公平。我们在附录中提供了模型卡和数据集卡。

实验:我们广泛地评估了SAM。首先,使用23个分割数据集进行测试,我们发现SAM从单个前景点产生高质量的掩模,通常只略低于手动标注的GT。其次,我们发现,在zero-shot使用提示工程传输协议下,在各种下游任务中,包括边缘检测、目标建议生成、实例分割和文本到掩码预测的初步探索。这些结果表明,SAM可以通过即时工程来解决除了SAM的训练数据之外的其他涉及对象和图像分布的各种任务。然而,正如我们在8中所讨论的那样,还有改进的空间。

成品:我们正在为研究目的发布SA-1B数据集,并在https://segment-anything.com 上的许可开放许可(Apache 2.0)下提供SAM。我们还通过以下网站 https://segment-anything.com/demo 在线演示展示了SAM的能力。

2、Segment Anything Task

我们从NLP中获得灵感,其中next token prediction预测任务用于基础模型的预训练,并通过提示工程[10]来解决不同的下游任务。为了建立一个分割的基础模型,我们的目标是定义一个具有类似能力的任务。

Task: 我们首先将提示的概念从NLP迁移为分割,其中提示可以是一组前景/背景点、一个粗糙的框或掩码、自由形式的文本,或者,一般来说,指示在图像中分割什么的任何信息。那么,可提示的分割任务是给定任何提示返回一个有效的分割掩码。“有效”掩码的要求仅仅意味着,即使提示模棱两可,可以引用多个对象(例如,回忆衬衫和人的例子,见图3),这些对象至少应该是一个合理的掩码。这一要求类似于期望一个语言模型对一个模糊的提示输出一个一致的响应。我们选择这个任务,是因为它导致了一种自然的预训练算法和一种通过提示将zero-shot转移到下游分割任务的通用方法。

Pre-training: 可提示的分割任务提出了一种自然的预训练算法,该算法为每个训练样本模拟一系列提示(例如,点、盒子、掩码),并将模型的掩码预测与GT进行比较。我们在交互式分割[109,70]中采用了这种方法,尽管与交互式分割(在足够的用户输入后最终预测一个有效的掩码)的目的不同,但我们的目标是总是预测任何提示的有效掩码,即使提示是模糊的。这确保了预先训练好的模型在涉及歧义的用例中是有效的,包括根据我们的数据引擎4所需要的自动标注。我们注意到,在这项任务中表现良好是具有挑战性的,需要专门的建模和训练损失选择。

Zero-shot transfer: 直观地说,我们的预训练任务赋予了模型在推理时对任何提示做出适当反应的能力,因此下游任务可以通过工程设计适当的提示来解决。例如,如果你有一个猫的边界盒检测器,猫的实例分割可以通过提供检测器的盒输出作为我们的模型的提示来解决。一般来说,一个广泛的实际分割任务可以被转换为提示输入。除了自动数据集标记外,我们还在第7节中进行了实验探索。

Related tasks: 分割是一个广泛的领域:有交互式分割[57,109]、边缘检测[3]、超级像素化[85]、对象建议生成[2]、前景分割[94]、语义分割[90]、实例分割[66]、泛光分割[59]等。我们快速的快速分割任务的目标是产生一个能力广泛的模型,可以通过提示工程来适应许多(虽然不是全部)现有的和新的分割任务。该能力是任务泛化[26]的一种形式。请注意,这与以前在多任务分割系统上的工作不同。在多任务系统中,单个模型执行一组固定的任务,如联合语义、实例和全景分割[114,19,54],但训练和测试任务是相同的。在我们的工作中,一个重要的区别是,一个训练为可提示分割的模型可以作为一个更大的系统中的一个组件,在推理时执行一个新的、不同的任务,例如,执行实例分割,一个可提示分割模型与现有的对象检测器相结合。

Discussion: 提示和组合是一种强大的工具,它使单个模型能够以可扩展的方式使用,并有可能完成在模型设计时未知的任务。这种方法类似于其他基础模型的使用方式,例如,CLIP [82]如何是DALL·E[83]图像生成系统的文本-图像对齐组件。我们预计,可组合系统设计,由提示工程等技术驱动,将比专门为一组固定任务训练的系统提供更广泛的应用。通过合成的镜头来比较快速和交互式分割也很有趣:虽然交互式分割模型是针对人类用户设计的,但训练为快速分割的模型也可以组合成一个更大的算法系统,正如我们将演示的那样。

3、Segment Anything Model

接下来,我们将描述用于快速分割的分段任何东西模型(SAM)。SAM有三个组件,如图4所示:图像编码器、灵活的提示编码器和快速掩码解码器。我们建立在转换视觉模型[14,33,20,62]上,对(摊销)实时性能进行特定的权衡。我们在这里高级描述这些组件,在附件A中详细说明。

Image encoder:基于可伸缩性和强大的预训练方法,我们使用了一个MAE [47]预训练的ViT模型[33],最小限度地适用于处理高分辨率输入[62]。图像编码器对每张图像运行一次,可以在提示模型之前进行应用。

Prompt encoder:我们考虑两种提示输入:稀疏(点、框、文本)和密集(掩码)。我们通过位置编码[95]来表示point和boxes,其中包括每个提示类型的学习嵌入和自由形式的文本与来自CLIP的现成文本编码器。密集的提示(即掩码)使用卷积嵌入,并通过图像嵌入进行元素求和嵌入。

Mask decoder: 掩码解码器有效地将图像嵌入、提示嵌入和输出令牌映射到掩码。该设计的灵感来自于[14,20],采用了对Transformer decoder block[103]的修改,然后是一个动态掩模预测头。我们修改后的解码器块在两个方向上使用提示式的自我注意和交叉注意(提示到图像的嵌入,反之亦然)来更新所有的嵌入。在运行两个块后,我们对图像嵌入进行上采样,MLP将输出标记映射到动态线性分类器,该分类器计算每个图像位置的掩模前景概率。

Resolving ambiguity: 对于一个输出,如果给出一个模糊的提示,该模型将平均多个有效的掩码。为了解决这个问题,我们修改了模型,以预测单个提示的多个输出掩码(见图3)。我们发现3个掩模输出足以解决大多数常见的情况(嵌套掩模通常最多有三个深度:整体、部分和子部分)。在训练期间,我们只支持mask上的最小损失[15,45,64]。为了对掩码进行排名,该模型预测了每个掩码的置信度分数(即估计的IoU)。

Efficiency: 整个模型的设计在很大程度上是由效率驱动的。给定一个预先计算的图像嵌入,提示编码器和掩码解码器运行在一个web浏览器中,在CPU上,∼运行时间为50毫秒。这种运行时性能使我们的模型能够无缝、实时地交互提示。

Losses and training: 我们使用[14]中使用的focal loss[65]和dice loss[73]的线性组合来监督掩模预测。我们使用混合的几何提示来训练可提示的分割任务(文本提示见7.5)。在[92,37]之后,我们通过在每个掩码的11轮中随机采样提示来模拟一个交互式设置,允许SAM无缝地集成到我们的数据引擎中。

4. Segment Anything Data Engine

由于分割掩码在互联网上并不丰富,我们建立了一个数据引擎来支持收集我们的1.1B掩码数据集,SA-1B。数据引擎分为三个阶段: (1)模型辅助手动标注阶段,(2)包含自动预测掩码和模型辅助标注的半自动阶段,(3)全自动阶段,在此阶段中,我们的模型生成掩码而无需标注器输入。接下来我们将详细介绍每个一个步骤。

辅助手动阶段:在第一阶段,类似于经典的交互式分割,一个专业标注团队通过使用由SAM提供的基于浏览器的交互式分割工具,通过点击前景/背景对象点来标记掩码。mask可以使用像素精确的“笔刷”和“橡皮擦”工具来改进。我们的模型辅助标注直接在浏览器中实时运行(使用预先计算的图像嵌入),从而实现真正的交互体验。我们没有对标记对象施加语义约束,标注者可以自由地将目标进行标注。我们建议标注者标记他们可以命名或描述的对象,但没有收集这些名称或描述。标注者被要求按突出程度的顺序标记物体,并被鼓励在一个mask花费超过30秒标注后继续进行下一幅图像。

在这一阶段的开始,SAM使用常见的公共分割数据集进行训练。在进行足够的数据标注后,只使用新标注的掩码进行重新训练。随着更多的掩模被收集到,图像编码器从ViT-B缩放到ViT-H,其他建筑细节不断演变;我们总共对模型进行了6次再训练。随着模型的改进,每个mask的平均标注时间从34秒减少到14秒。我们注意到,14秒比COCO[66]的掩码标注快6.5×,仅比使用极端点[76,71]的边界框标记慢2×。随着SAM的改进,每幅图像的平均掩模数量从20个增加到44个。总的来说,我们在这个阶段从12万张图像中收集了430万个mask

半自动级: 在这个阶段,我们的目标是增加mask的多样性,以提高我们的模型分割任何东西的能力。为了将标注器集中在不太突出的对象上,我们首先自动检测到较为突出的mask。然后,我们提供了预先填充了这些掩码的图像的标注器,并要求它们标注任何其他未标注的对象。为了检测突出的掩模,我们使用一个通用的“对象”类别,在所有的第一级掩模上训练了一个边界框检测器[84]。在这一阶段,我们在18万张图像中收集了额外5.9M的mask(总共有10.2M的mask)。与第一阶段一样,我们定期对新收集的数据重新训练我们的模型(5次)。每个掩码的平均标注时间为34秒(不包括自动掩码),因为这些对象更具挑战性。每张图片的平均mask数量从44个增加到72个(包括自动mask)。

全自动阶段:在最后一个阶段,标注是全自动的。这是可行的,因为对我们的模型有两个主要的增强。首先,在这一阶段的开始,我们已经收集了足够的mask来极大地改进模型,包括前一阶段的不同mask。其次,在这个阶段,我们已经开发了模糊感知模型,它允许在模糊情况下预测出有效mask。具体来说,我们用一个32×32规则点网格提示模型,为每个点预测一组可能对应于有效对象的掩模。对于歧义感知模型,如果点位于一个部分或子部分上,我们的模型将返回该子部分、部件和整个对象。我们模型的IoU预测模块用于选择自信的掩模;此外,我们只识别和选择了稳定的掩模(我们认为掩模是稳定的,如果在0.5−δ和0.5 + δ会产生类似的掩模)。最后,在选择了自信和稳定的掩模后,我们应用非最大抑制(NMS)来过滤副本。为了进一步提高较小掩模的质量,我们还处理了多个重叠的放大图像crop。有关此阶段的详细信息,请参见附件B。我们对数据集中的所有11M幅图像应用了全自动掩模生成,总共产生了1.1B个高质量的掩模。接下来,我们将描述和分析所得到的数据集,SA-1B。

5. Segment Anything Dataset

我们的数据集SA-1B由11M多样化、高分辨率、许可和隐私保护图像和由我们的数据引擎收集的1.1B高质量分割掩码组成。我们将SA-1B与现有的数据集进行了比较,并分析了掩模的质量和性质。我们正在发布SA-1B,以帮助未来开发计算机视觉的基础模型。我们注意到,SA-1B将在某些研究用途的有利许可协议下发布,并为研究人员提供保护。

Images 我们从一家直接与摄影师合作的供应商那里获取了1100万张新图片的授权。这些图像是高分辨率的(平均3300×4950像素),由此产生的数据大小可能会带来可访问性和存储挑战。因此,我们将发布其最短边设置为1500像素的降采样图像。即使在降采样后,我们的图像的分辨率也明显高于许多现有的视觉数据集(例如,COCO [66]图像为∼480×640像素)。请注意,现在的大多数模型都在更低的分辨率输入上运行。在公布的图片中,面部和车牌已经模糊了。

Masks 我们的数据引擎产生了1.1B个掩码,其中99.1%是完全自动生成的。因此,自动标注的质量至关重要。我们将它们直接与专业注释进行比较,并查看与突出的掩码预测与现有分割数据集进行比较。我们的主要结论,在实验7中。是我们的自动标注是高质量和有效的,可用于训练模型。基于这些发现,SA-1B只包括自动生成的mask。

Mask quality. 为了估计掩模的质量,我们随机抽取了500张图像(∼50k掩模),并要求我们的专业注释者提高这些图像中所有掩模的质量。标注者使用我们的模型和像素精确的“刷”和“橡皮擦”编辑工具。这一过程产生了成对的自动预测和专业矫正的maks。我们计算了每对之间的IoU,发现94%的图像对IoU大于90%(97%的对的IoU大于75%)。为了进行比较,之前的工作估计了85-91%的IoU [44,60]之间的一致性。我们在7个实验中通过人类评级证实,相对于各种数据集,掩模质量很高,并且在自动掩模上训练我们的模型几乎与使用数据引擎产生的所有掩模一样好

Mask properties 在图5中,我们绘制了SA-1B中目标中心与现有最大的分割数据集相比的空间分布。在所有的数据集中,都存在着常见的摄影师偏见。我们观察到,与分布最相似的两个数据集LVIS v1 [44]和ADE20K [117]相比,SA-1B具有更大的图像角覆盖范围,而COCO [66]和Open Images V5 [60]具有更突出的中心偏差。在图6(图例)中,我们按大小比较了这些数据集。SA-1B比第二大的开放图像拥有多11×的图像和多400×的掩模。平均而言,它的每幅图像比开放图像多36×。在这方面,最接近的数据集,ADE20K,每幅图像的掩码仍然少了3.5×。图6(左)绘制了掩模图像分布。接下来,我们查看图6(中间)中的图像相对掩模大小(掩模面积除以图像面积的平方根)。正如预期的那样,由于我们的数据集对每幅图像有更多的掩码,因此它也倾向于包含更大比例的中小和相对大小的掩码。最后,为了分析形状的复杂性,我们观察了图6(右)中的掩模凹度(1减去掩模面积除以掩模的凸壳面积)。由于形状复杂性与掩模大小相关,我们通过首先对装箱的掩模大小进行分层采样来控制数据集的掩模大小分布。我们观察到,我们的掩模的凹度分布与其他数据集大致相似。

6. Segment Anything RAI Analysis

接下来,我们通过调查使用SA-1B和SAM时潜在的公平问题和偏见,对我们的工作进行了负责任的AI(RAI)分析。我们关注SA-1B的地理和收入分布,以及SAM在受保护属性中的公平性。我们还提供了数据集、数据注释和模型卡在附件F中。

Geographic and income representation: 我们推断这些国家的图像是用标准方法拍摄的(见附件C)。在图7中,我们可视化了SA-1B中每个国家(左)和图像最多的50个国家(右)的图像计数。我们注意到,前三个国家来自世界不同的地区。接下来,在表1中,我们比较了SA-1B、COCO [66]和开放图像[60]的地理代表和收入代表。SA-1B在欧洲、亚洲、大洋洲以及中等收入国家的图像中所占的比例要高得多。所有的数据集都没有充分代表非洲和低收入国家。我们注意到,在SA-1B中,包括非洲在内的所有地区至少有2800万个mask,比以往任何数据集的mask总数多10个×。最后,我们观察到每张图像的平均mask数量(未显示)在不同地区和收入之间是相当一致的(每张图像为94-108张)。
图像数量在国别上存在不平衡,但是在mask分布上是类似的

Fairness in segmenting people: 我们通过测量组间SAM的表现差异,调查了感知的性别表现、感知的年龄组和感知的肤色之间的潜在的公平问题。我们使用了更具包容性的人群注释(MIAP)[87]数据集,用于性别表现和年龄,以及一个专有的数据集,用于肤色(见附件C)。我们的评估使用了模拟的交互式分割,随机抽样1点和3点(见附件D)。表2(左上角)显示了所感知到的性别表现的结果。我们注意到,在检测和分割数据集[115]中,女性被证明代表不足,但观察到SAM在不同组间的表现相似。我们重复表2(左下)中对感知年龄的分析,注意到那些被认为年轻和年长的人在大规模数据集中被证明代表不足。SAM对那些被认为年龄较大的人表现最好(尽管置信区间很大)。最后,我们重复表2(右)中对感知肤色的分析,注意到在大规模数据集中,明显肤色较浅的人被证明过多,而深色肤色的人被充分代表。由于MIAP不包含感知肤色注释,我们使用一个专有数据集,其中包含感知菲茨帕特里克皮肤类型[36]的注释,范围从1(最轻肤色)到6(最暗肤色)。虽然平均值有所不同,但我们没有发现不同组之间的显著差异。我们相信我们的发现源于任务的性质,并承认当SAM作为更大系统的一个组成部分使用时,可能会出现偏差。最后,在附件C中,我们将分析扩展到分割服装,在那里我们发现了感知性别表现的偏见迹象。
对AI训练数据中潜在的种群歧视问题进行探讨分析

7. Zero-Shot Transfer Experiments

在本节中,我们将用SAM模型进行zero-shot 迁移实验。我们考虑了5个任务,其中4个与用于训练SAM的快速分割任务有显著不同。这些实验评估了在训练中没有看到的数据集和任务(我们对“zero-shot transfer”的使用是在CLIP[82]中的使用之后)。这些数据集可能包括新的图像分布,如水下或以自我为中心的图像(如图8),据我们所知,这些图像并没有出现在SA-1B中。

我们的实验首先测试了可提示分割的核心目标:从任何提示中生成一个有效的掩码。我们强调单个前景点提示是具有挑战性的场景,因为它比其他更具体的提示更有可能是模棱两可。接下来,我们提出了一系列的实验,穿越低、中、高水平的图像理解,并大致平行于该领域的历史发展。具体来说,我们提示SAM(1)执行边缘检测,(2)分割所有内容,即对象提议生成,(3)分段检测到的对象,即实例分割,以及(4)作为概念证明,从自由形式的文本中分割对象。这四个任务与SAM训练并通过提示工程实现的可提示分割任务有显著不同。我们的实验以消融研究结束。

除非另有说明: (1) SAM使用MAE [47]预训练的ViT-H [33]图像编码器,(2) SAM是在SA-1B上训练的,注意到这个数据集只包括从我们的数据引擎的最后阶段自动生成的掩码。对于所有其他模型和训练细节,如超参数,请参考附件A

7.1. Zero-Shot Single Point Valid Mask Evaluation

Task: 我们评估从单个前景点分割一个对象。这个任务是不适态的,因为一个点可以指代多个对象。大多数数据集中的GT掩码不会枚举所有可能的掩码,这可能会使自动度量不可靠。因此,我们补充了标准mIoU度量(即预测和GT掩模之间的所有IoU的平均值),在该研究中,注释者将掩码质量从1(无意义)评级到10(像素完美)。详情请参见附录D.1、E和G。
默认情况下,我们从GT掩码的“中心”(在掩码内部距离变换的最大值)中采样点,遵循交互式分割[92]中的标准评估协议。由于SAM能够预测多个掩模,所以我们默认只评估模型中最自信的掩模。基线都是单掩码方法。我们主要与RITM(一个强交互分割器) [92]进行比较,与其他强基线[67,18]相比,在我们的基准上表现最好。

Datasets: 我们使用了一套新获取的23个具有不同图像分布的数据集。图8列出了这些数据集,并显示了每个数据集的一个样本(更多细节见附录表7)。我们使用所有23个数据集来进行mIoU评估。对于人类研究,我们使用图9b中列出的子集(由于此类研究的资源需求)。这个子集包括SAM根据自动指标优于RITM的两个数据集。

Results: 首先,我们将研究使用mIoU对全部23个数据集进行的自动评估。我们将图9a中的每个数据集的结果与RITM进行了比较。SAM在23个数据集中的16个上产生了更高的结果,高达∼47IoU。我们还提出了一个“oracle”的结果,其中通过比较SAM的3个mask与地面真相来选择最相关的mask,而不是选择最自信的mask。这揭示了模糊性对自动评价的影响。特别是,通过oracle来执行模糊性解析,SAM在所有数据集上都优于RITM。

研究结果见图9b。误差条是平均掩码评级的95%置信区间(所有的差异都是显著的;详见E)。我们观察到,注释者对SAM掩码的质量评价明显高于最强的基线RITM。一个消融的、“不知道模糊性的”版本的SAM的评级一直较低,尽管仍然高于RITM。SAM的平均评分在7到9之间,这与定性评分指南相对应:“高分数(7-9):物体是可识别的,错误很小而罕见(例如,缺少一个小的,严重模糊的断开组件,……)。”这些结果表明,SAM已经学会了从单个点分割有效的掩码。请注意,对于像DRAM和IBD这样的数据集,SAM在自动标注上有点差,它在人类研究中始终获得更高的评级。

图9c显示了额外的基线,Simple点击[67]和FocalClick [18],它们获得的单点性能低于RITM和SAM。当点的数量从1增加到9时,我们观察到方法之间的差距减小。随着任务的简化,这是预期的;此外,SAM并没有针对非常高的IoU机制进行优化。最后,在图9d中,我们用随机点采样替换默认的中心点采样。我们观察到SAM和基线之间的差距增大,SAM能够在两种抽样方法下获得可比较的结果。

7.2. Zero-Shot Edge Detection

Approach: 我们使用BSDS500 [72,3]在经典的低级边缘检测任务中评估了SAM。我们使用了自动掩码生成管道的简化版本。具体来说,我们用一个16×16的前景点规则网格提示SAM,从而得到768个预测掩模(每个点3个)。冗余掩模被NMS去除。然后,使用无阈值掩码概率映射的Sobel滤波和标准的轻量级后处理来计算边缘映射,包括边缘NMS(详见附件D.2)。

Results: 我们在图10中可视化了具有代表性的边缘图(更多信息见图15)。定性地说,我们观察到,即使SAM没有进行边缘检测训练,它也能产生合理的边缘映射。与地面事实相比,SAM预测了更多的边缘,包括在BSDS500中没有注释的合理边缘。这种偏差在表3中得到了定量的反映:50%精度(R50)的召回率很高,但以精度为代价。SAM自然落后于学习BSDS500偏见的最新方法,即需要抑制的边缘。尽管如此,与领先的深度学习方法如HED[108](也在BSDS500上训练),SAM相比表现良好,并且明显优于之前的零射击转移方法,尽管公认它已经过时了。

7.3. Zero-Shot Object Proposals

Approach: 接下来,我们评估了SAM在对象提案生成[2,102]的中级任务上的作用。这项任务在目标检测研究中间步骤中发挥了重要的作用。为了生成对象建议,我们运行自动掩码生成管道的略微修改版本,并将掩码输出为proposals。详情见D.3

我们计算了LVIS v1 [44]上的标准平均召回率(AR)度量。我们关注LVIS,因为它的大量类别是一个具有挑战性的测试。我们与作为ViTDet [62]检测器(使用级联掩模R-CNN [48,11] ViT-H)实现的强基线进行了比较。我们注意到,这个“基线”对应于“探测器伪装成Proposal生成器”(DMP)方法[16],该方法被用来模拟AR,使它成为一个真正苛刻的比较。

Results: 在表4中,我们可以毫不意外地看到,使用来自ViTDet-H的检测作为对象建议(即,游戏AR的DMP方法[16])总体上表现最好。然而,SAM在几个指标上都做得非常好。值得注意的是,它在中型和大型物体以及稀有和普通物体上都优于ViTDet-H。事实上,SAM只在小对象和频繁对象上的表现低于ViTDet-H,其中ViTDet-H可以很容易地学习LVIS特定的注释偏差,因为它是在LVIS上训练的,而不像SAM。我们还比较了消融的模糊模糊版本的SAM(“single out”),它在所有AR指标上的表现都明显低于SAM。

7.4 Zero-Shot Instance Segmentation

Approach: 转向更高层次的视觉,我们使用SAM作为实例分段中心的分割模块。这个实现很简单:我们运行一个对象检测器(之前使用的ViTDet),并使用其输出框提示SAM。这说明了在一个更大的系统中组合SAM。

Results: 我们比较了表5中SAM和ViTDet对COCO和LVIS预测的掩模。查看掩模AP度量,我们观察到两个数据集上的差距,其中SAM相当接近,尽管肯定落后于ViTDet。通过可视化输出,我们观察到SAM掩模在质量上往往优于ViTDet,其边界更清晰(见D.4和图16)。为了调查这一观察结果,我们进行了另一项人类研究,要求注释者按照之前使用的1到10个质量尺度对ViTDetmask和SAMmask进行评分。在图11中,我们观察到SAM在人类研究中始终优于ViTDet。

我们推断,在COCO上,掩模AP间隙较大,地面真实质量相对较低(由人类研究证实),ViTDet学习了COCO掩模的特定偏差。SAM,作为一种零射击的方法,不能利用这些(通常不受欢迎的)偏见。LVIS数据集具有更高质量的地面真相,但仍然有特定的特性(例如,掩模不包含孔,它们是简单的多边形构造)和模态和模态掩模的偏差。同样,SAM没有被训练来学习这些偏见,而ViTDet可以利用它们。

7.5. Zero-Shot Text-to-Mask

Approach 最后,我们考虑一个更高层次的任务:从自由形式的文本中分割对象。这个实验证明了SAM处理文本提示的能力。虽然我们在之前的所有实验中都使用了完全相同的SAM,但对于这个实验,SAM的训练过程被修改以使其能够感知文本,但其方式不需要新的文本注释。具体来说,对于每个手动收集的面积大于1002的掩模,我们提取了CLIP图像嵌入。然后,在训练过程中,我们将提取的CLIP图像嵌入作为第一次交互,提示SAM。这里的关键观察结果是,由于CLIP的图像嵌入被训练成与文本嵌入对齐,所以我们可以使用图像嵌入进行训练,但要使用文本嵌入进行推理。也就是说,在推理时,我们通过CLIP的文本编码器运行文本,然后将生成的文本嵌入作为提示符提供给SAM(可见附件D.5)

Results 我们在图12中显示了定性的结果。SAM可以根据简单的文本提示如“轮子”以及“海狸齿格栅”等短语来分割对象。当SAM不能仅从文本提示中选择正确的对象时,通常会有一个点修复预测,类似于[31]。

7.6. Ablations

我们使用单中心点提示协议对我们的23个数据集套件执行了几次消融。回想一下,单个点可能是模棱两可的,模糊性可能不能在地面真相中表示,因为每个点只包含一个掩模。由于SAM在zero-shot transfer设置中运行,因此在SAM的顶级掩码与数据注释指南产生的掩码之间可能存在系统级偏差。因此,我们还报告了关于地面真相的最佳mask(“oracle”)。

图13(左)绘制了SAM在来自数据引擎阶段的累积数据上进行训练时的性能。我们观察到每个阶段都增加了mIoU。在所有三个阶段的训练中,自动mask的数量远远超过了手动和半自动mask。为了解决这个问题,我们发现在训练过程中对手动和半自动掩模进行过采样10×,效果最好。此设置使train复杂化。因此,我们测试了第四种只使用自动生成的设置。有了这些数据,SAM的性能仅略低于使用所有数据(∼0.5mIoU)。因此,在默认情况下,我们只使用自动生成的掩码来简化训练设置。

在图13(中间)中,我们观察了数据量的影响。完整的SA-1B包含11M的图像,我们均匀地将其子采样到1M和0.1M以进行消融。在0.1M的图像中,我们观察到在所有设置下,mIoU都大幅下降。然而,对于1M幅图像,约占完整数据集的10%,我们观察到的结果与使用完整数据集相当。这种数据机制,仍然包括大约100M的掩模,对于许多用例可能是一个实际的设置。

最后,图13(右)显示了使用ViT-B、ViT-L和ViT-H图像编码器的结果。ViT-H比ViT-B有了很大的改进,但比ViT-L只有边际的增益。进一步的图像编码器缩放目前并没有取得成果。

8. Discussion

Foundation models: 自机器学习[99]的早期以来,预训练的模型已经适应于下游任务。近年来,随着对规模的日益重视,这种模式变得越来越重要,这种模型最近被(重新)命名为“基础模型”:即“在大规模的广泛数据上进行训练,并适应广泛的下游任务”的模型[8]。我们的工作与这个定义很好地相关,尽管我们注意到图像分割的基础模型是一个固有的有限的范围,因为它代表了计算机视觉的一个重要的,但分数的子集。我们还将我们的方法的一个方面与[8]进行了对比,[8]强调了自我监督学习在基础模型中的作用。虽然我们的模型是用自监督技术(MAE [47])初始化的,但它的绝大部分能力来自于大规模的监督训练。在数据引擎可以扩展可用注释的情况下,如我们的那样,监督训练提供了一个有效的解决方案。

Compositionality: 预先训练过的模型可以增强新的能力,甚至超出了人们在训练时的想象。一个突出的例子是CLIP [82]如何在更大的系统中被用作一个组件,如DALL·E[83]。我们的目标是用SAM使这种组合更简单。我们的目标是通过要求SAM为广泛的分割提示预测一个有效的掩码来实现这一点。其效果是在SAM和其他组件之间创建一个可靠的接口。例如,MCC [106]可以很容易地使用SAM来分割感兴趣的对象,并实现对单个RGB-D图像的三维重建的强泛化。在另一个例子中,SAM可以通过可穿戴设备检测到的注视点而被提示,从而启用新的应用程序。由于SAM能够推广到像以自我为中心的图像这样的新领域,这样的系统不需要额外的训练就能工作。

Limitations: 虽然SAM在总体上表现得很好,但它并不完美。它可能会错过精细的结构,有时会使小的断开的组件产生幻觉,并且不会像“zoom-in”等计算密集型的方法那样清晰地产生边界,例如[18]。一般来说,当提供了许多点时,我们期望专用的交互式分割方法优于SAM,例如[67]。与这些方法不同,SAM是为通用性和使用广度而设计的,而不是高IoU交互分割。此外,SAM可以实时处理提示,但是当使用一个很重的图像编码器时,SAM的整体性能并不是实时的。我们对文本到mask任务的尝试是探索性的,并不是完全健壮的,尽管我们相信它可以通过更多的努力来改进。虽然SAM可以执行许多任务,但如何设计简单的提示来实现语义和全景分割尚不清楚。最后,还有一些特定于领域的工具,比如[7],我们希望它们在各自的领域中优于SAM。

Conclusion: SAM项目是一个试图提升图像分割为一个广泛意义上的基础模型。我们的主要贡献是一个新的任务(可提示的分割)、模型(SAM)和数据集(SA-1B),使这一飞跃成为可能。SAM是否达到了基础模型的状态还有待它在社区中的使用,但无论我们期望这项工作的视角,超过1Bmask的发布,以及我们快速的分割模型将有助于铺平道路。

Acknowledgments. We would like to thank Aaron Adcock and Jitendra Malik for helpful discussion. We thank
Vaibhav Aggarwal and Yanghao Li for help with scaling the model. We thank Cheng-Yang Fu, Jiabo Hu, and
Robert Kuo for help with data annotation platform. We
thank Allen Goodman and Bram Wasti for help in optimizing web-version of our model. Finally, we thank Morteza
Behrooz, Ashley Gabriel, Ahuva Goldstand, Sumanth Gurram, Somya Jain, Devansh Kukreja, Joshua Lane, Lilian
Luong, Mallika Malhotra, William Ngan, Omkar Parkhi,
Nikhil Raina, Dirk Rowe, Neil Sejoor, Vanessa Stark, Bala
Varadarajan, and Zachary Winstrom for their help in making the demo, dataset viewer, and other assets and tooling.

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。