论文地址:Segment Anything
源码地址:github仓库
【1】摘要
我们介绍了任何片段(SA)项目:一个新的任务,模型和数据集的图像分割。在数据收集循环中使用我们的高效模型,我们建立了迄今为止(到目前为止)最大的分割数据集,在1100万张许可和尊重隐私的图像上拥有超过10亿个掩模。该模型被设计和训练为提示,因此它可以将零拍摄转移到新的图像分布和任务。我们评估了它在许多任务中的能力,发现它的零射击性能令人印象深刻-通常与之前的完全监督结果相竞争甚至优于。我们正在https://segment-anything.com上发布分段任意模型(SAM)和对应的1b个掩模和11M张图像的数据集(SA-1B),以促进对计算机视觉基础模型的研究。
【2】介绍
在网络规模数据集上预训练的大型语言模型具有强大的零概率和少概率泛化能力,正在彻底改变NLP。这些“基础模型”可以推广到训练期间看到的任务和数据分布之外的任务和数据分布。此功能通常通过提示工程实现,其中使用手工编写的文本来提示语言模型为手头的任务生成有效的文本响应。当使用来自网络的大量文本语料库进行缩放和训练时,这些模型的零和少镜头性能与微调模型(在某些情况下甚至匹配)相比惊人地好。经验趋势表明,这种行为随着模型规模、数据集大小和总训练计算量的增加而改善。
基础模型也在计算机视觉中进行了探索,尽管程度较低。也许最突出的插图是对齐来自网络的配对文本和图像。例如,CLIP和ALIGN b使用对比学习来训练对齐两种模式的文本和图像编码器。经过训练后,工程文本提示可以对新的视觉概念和数据分布进行零概率泛化。这种编码器还可以与其他模块有效组合,以实现下游任务,例如图像生成(例如DALL·E)。虽然在视觉和语言编码器方面已经取得了很大的进展,但计算机视觉包括超出这个范围的广泛问题,并且对于其中的许多问题,没有丰富的训练数据。
在这项工作中,我们的目标是建立一个图像分割的基础模型。也就是说,我们寻求开发一个提示模型,并使用一个能够实现强大泛化的任务在广泛的数据集上对其进行预训练。有了这个模型,我们的目标是使用即时工程解决新数据分布上的一系列下游分割问题。
该计划的成功取决于三个组成部分:任务、模型和数据。为了开发它们,我们解决了以下关于图像分割的问题:
- 什么任务可以实现零概率泛化?
- 相应的模型体系结构是什么?
- 哪些数据可以为这项任务和模型提供支持?
这些问题纠缠在一起,需要综合解决。我们首先定义一个提示的分割任务,它足够通用,可以提供一个强大的预训练目标,并支持广泛的下游应用程序。此任务需要一个支持灵活提示的模型,并且可以在提示时实时输出分段掩码以允许交互使用。为了训练我们的模型,我们需要一个多样化的、大规模的数据源。不幸的是,没有网络规模的数据来源的分割;为了解决这个问题,我们构建了一个“数据引擎”,也就是说,我们在使用我们的高效模型来协助数据收集和使用新收集的数据来改进模型之间进行迭代。接下来我们介绍每个相互关联的组件,然后是我们创建的数据集和证明我们方法有效性的实验。
下面是介绍本模型的具体内容
任务【2】
在NLP和最近的计算机视觉中,基础模型是一个很有前途的发展,它可以通过使用“提示”技术对新的数据集和任务执行零射击和少射击学习。受这一行工作的启发,我们提出了提示分割任务,其目标是给定任何分割提示返回有效的分割掩码(见图1a)。提示符只是指定图像中要分割的内容,例如,提示符可以包括识别对象的空间或文本信息。有效输出掩码的要求意味着,即使提示是模糊的,并且可能引用多个对象(例如,衬衫上的一个点可能表示衬衫或穿着它的人),输出也应该是这些对象中至少一个对象的合理掩码。我们使用提示分割任务作为预训练目标,并通过提示工程解决一般的下游分割任务。
使用prompt的类型:
- 一组前景、背景标记点
- 粗略的标记框或者掩码
- 自由格式的文字(文章中提到效果并不稳定,官方demo中并未展示)
模型【3】
可提示的分割任务和实际使用的目标对模型体系结构施加了约束。特别是,模型必须支持灵活的提示,需要在平摊实时中计算掩码以允许交互使用,并且必须具有歧义意识。令人惊讶的是,我们发现一个简单的设计满足所有三个约束:一个强大的图像编码器计算图像嵌入,一个提示编码器嵌入提示,然后将两个信息源组合在一个轻量级的掩码解码器中,该解码器预测分割掩码。我们将此模型称为分段任意模型(Segment Anything model,简称SAM)(见图1b)。通过将SAM分为图像编码器和快速提示编码器/掩码解码器,可以使用不同的提示重复使用相同的图像嵌入(并平摊其成本)。给定图像嵌入,提示编码器和掩码解码器在web浏览器中从提示符预测掩码,时间为~ 50ms。我们将重点放在点、框和掩码提示上,并使用自由格式的文本提示来呈现初始结果。为了使SAM能够感知歧义,我们将其设计为预测单个提示的多个掩码,从而允许SAM自然地处理歧义,例如衬衫与人的例子。
数据引擎【4】
为了实现对新数据分布的强泛化,我们发现有必要在一个大而多样的掩码集上训练SAM,而不仅仅是已经存在的任何分割数据集。虽然基础模型的典型方法是在线获取数据,但掩模并不自然丰富,因此我们需要一种替代策略。我们的解决方案是建立一个“数据引擎”,也就是说,我们与模型在循环数据集注释共同开发我们的模型(见图1c)。我们的数据引擎有三个阶段:辅助手动、半自动和全自动。在第一阶段,SAM帮助注释者注释掩码,类似于经典的交互式分段设置。在第二阶段,SAM可以通过提示可能的对象位置来自动为对象子集生成掩码,而注释器则专注于注释剩余的对象,从而帮助增加掩码的多样性。在最后阶段,我们用前景点的规则网格提示SAM,平均每张图像产生约100个高质量掩模。
数据引擎主要用于解决图像分割任务中训练数据不足和掩码数据获取困难的问题,以支持模型训练并提升其泛化能力。
- 获取多样化大规模掩码数据:要实现模型对新数据分布的强泛化,需在大量多样的掩码数据上训练 SAM。但现有分割数据集规模和多样性不足,且掩码数据在网络上不丰富,无法像基础模型通常那样在线获取。数据引擎通过三个阶段收集数据,最终构建出 SA-1B 数据集,包含 11 亿个掩码,满足了模型训练对数据量和多样性的需求。
- 提高数据标注效率和质量:辅助手动阶段,SAM 辅助注释人员标注,类似交互式分割设置,能实时在浏览器中运行,提高标注效率,平均标注时间从 34 秒降至 14 秒。半自动阶段,SAM 自动生成部分掩码,注释人员标注剩余物体,提高了掩码多样性。全自动阶段,通过对模型的改进和一系列处理,如用规则点网格提示、筛选稳定掩码等,生成高质量掩码。
- 促进模型与数据协同发展:数据引擎采用模型在循环中的数据集注释方式,即模型与数据共同开发。在数据收集过程中,模型不断得到改进,如从 ViT-B 到 ViT-H 的升级,模型改进又反作用于数据收集,提高数据质量和收集效率,形成良性循环,推动模型和数据的协同发展
数据集【5】
我们的最终数据集SA-1B包括来自1100万张授权和隐私保护图像的超过1B个掩码(见图2)。SA-1B是使用我们的数据引擎的最后阶段完全自动收集的,其掩码比任何现有的分割数据集都多400倍,并且经过我们的广泛验证,掩码具有高质量和多样性。除了将SA-1B用于训练SAM具有鲁棒性和通用性之外,我们希望SA-1B成为旨在建立新基础模型的研究的宝贵资源。
图2:来自我们新引入的数据集SA-1B的带有叠加掩码的示例图像。SA-1B包含11M不同的、高分辨率的、许可的和隐私保护的图像和1.1B高质量的分割蒙版。这些掩码是由SAM完全自动标注的,正如我们通过人工评分和大量实验验证的那样,它们具有高质量和多样性。我们根据每个图像的掩模数量对图像进行分组,以实现可视化(平均每个图像有~ 100个掩模)。
Segment Anything Task
我们从NLP中获得灵感,其中下一个令牌预测任务用于基础模型预训练,并通过提示工程[10]解决各种下游任务。为了建立分割的基础模型,我们的目标是定义一个具有类似功能的任务。
任务。我们首先将提示的概念从NLP翻译到分割,其中提示可以是一组前景/背景点,一个粗略的框或蒙版,自由格式的文本,一般来说,指示图像中要分割的任何信息。因此,提示分段任务是在给定任何提示的情况下返回一个有效的分段掩码。“有效”掩码的要求仅仅意味着,即使提示是模糊的,并且可以引用多个对象(例如,回想一下衬衫与人的例子,参见图3),输出也应该是这些对象中至少一个的合理掩码。这个需求类似于期望语言模型对不明确的提示输出一致的响应。我们之所以选择这个任务,是因为它带来了一种自然的预训练算法和一种通过提示将零射击转移到下游分割任务的通用方法。
预训练(Pre-training)
提示分割任务提出了一种自然的预训练算法,该算法为每个训练样本模拟一系列提示(例如,点、框、掩码),并将模型的掩码预测与基本事实进行比较。我们从交互式分割中采用了这种方法,尽管与交互式分割不同,交互式分割的目的是在足够的用户输入后最终预测一个有效的掩码,但我们的目标是为任何提示预测出有效的掩码,即使提示是模糊的。这确保了预训练模型在涉及歧义的用例中是有效的,包括我们的数据引擎【4】所要求的自动注释。我们注意到,在这个任务中表现良好是具有挑战性的,需要专门的建模和训练损失选择,我们在【3】中讨论过。
Zero-shot转移 (Zero-shot transfer)
直观地说,我们的预训练任务赋予了模型在推理时对任何提示作出适当响应的能力,因此下游任务可以通过设计适当的提示来解决。例如,如果有一个猫的边界框检测器,猫实例分割可以通过提供检测器的框输出作为提示给我们的模型来解决。一般来说,许多实际的分割任务都可以作为提示。除了自动数据集标记,我们在【7】的实验中探索了五个不同的示例任务。
相关任务 (Related tasks)
分割是一个非常广阔的领域,有交互式分割、边缘检测、超像素化、目标建议生成、前景分割、语义分割、实例分割、全视分割等。我们的提示分割任务的目标是产生一个广泛的功能模型,可以通过提示工程适应许多(尽管不是全部)现有的和新的分割任务。这种能力是任务泛化的一种形式。请注意,这与之前在多任务分割系统上的工作不同。在多任务系统中,单个模型执行一组固定的任务,例如联合语义分割、实例分割和全视分割,但训练和测试任务是相同的。我们工作中的一个重要区别是,训练用于提示分割的模型可以作为更大系统中的组件在推理时间执行新的不同任务,例如,执行实例分割,提示分割模型与现有的对象检测器相结合。
讨论 (Discussion)
提示和组合是功能强大的工具,可以以可扩展的方式使用单个模型,从而潜在地完成模型设计时未知的任务。这种方法类似于其他基础模型的使用方式,例如CLIP是DALL·E图像生成系统的文本-图像对齐组件。我们预计,可组合的系统设计,由提示工程等技术提供动力,将比专门为固定任务集训练的系统实现更广泛的应用。通过组合的镜头来比较提示式和交互式分割也是很有趣的:虽然交互式分割模型是为人类用户设计的,但正如我们将演示的那样,为提示式分割训练的模型也可以组成一个更大的算法系统。
【3】Segment Anything Model
接下来,我们描述了分段任意模型(SAM),用于提示分段。SAM有三个组件,如上图所示:一个图像编码器,一个灵活的提示编码器和一个快速掩码解码器。我们建立在Transformer视觉模型的基础上,对(平摊)实时性能进行了特定的权衡。我们在这里高层次地描述这些组件。
Image encoder。在可扩展性和强大的预训练方法的激励下,我们使用了MAE[47]预训练视觉变压器(ViT),该最小适应于处理高分辨率输入。图像编码器每个图像运行一次,可以在提示模型之前应用。
Prompt encoder。我们考虑两组提示:稀疏(点、框、文本)和密集(掩码)。我们通过位置编码来表示点和框,并对每个提示类型和使用CLIP的现成文本编码器的自由格式文本进行学习嵌入求和。密集提示(即掩码)使用卷积嵌入,并在图像嵌入中按元素求和。
Mask decoder 掩码解码器有效地将图像嵌入、提示嵌入和输出令牌映射到掩码。该设计受到的启发,采用了对Transformer解码器块的修改,然后是动态掩码预测头。我们改进的解码器块在两个方向上使用提示自注意和交叉注意(提示到图像嵌入,反之亦然)来更新所有嵌入。在运行两个块之后,我们对图像嵌入进行上采样,MLP将输出标记映射到动态线性分类器,然后该分类器计算每个图像位置的掩码前景概率。
Resolving ambiguity 对于一个输出,如果给出一个模糊的提示,该模型将平均多个有效掩码。为了解决这个问题,我们修改了模型来预测单个提示符的多个输出掩码(参见图3)。我们发现3个掩码输出足以解决大多数常见情况(嵌套掩码通常最多有三个深度:整体,部分和子部分)。在训练期间,我们只在面罩上进行最小损失。为了对掩码进行排序,该模型预测每个掩码的置信度分数(即估计的借据)。
Efficiency。整体模型设计很大程度上是由效率驱动的。给定预先计算的图像嵌入,提示编码器和掩码解码器在web浏览器中运行,在CPU上,大约50ms。这种运行时性能支持模型的无缝、实时交互式提示。
Losses and training。我们中使用的焦损失和骰子损失的线性组合来监督掩膜预测。我们使用几何提示的混合来训练可提示的分割任务(文本提示见§7.5)。接下,我们通过在每个掩码中随机抽取11轮提示来模拟交互式设置,从而使SAM无缝地集成到我们的数据引擎中。
【4】Segment Anything Data Engine
由于分割掩码在互联网上并不丰富,我们构建了一个数据引擎来收集我们的1.1B掩码数据集SA-1B。数据引擎有三个阶段:(1)模型辅助的手动注释阶段,(2)混合了自动预测掩码和模型辅助注释的半自动阶段,以及(3)我们的模型在没有注释器输入的情况下生成掩码的全自动阶段。接下来我们将详细介绍每一个。
【4.1】Assisted-manual stage
在第一阶段,类似于经典的交互式分割,一个专业的注释者团队使用基于浏览器的交互式分割工具,通过点击前景/背景对象点来标记蒙版。可以使用像素精确的“笔刷”和“橡皮擦”工具来改进蒙版。我们的模型辅助注释直接在浏览器中实时运行(使用预先计算的图像嵌入),从而实现真正的交互式体验。我们没有对标记对象施加语义约束,注释器可以自由地标记“东西”和“东西”。我们建议注释者标记他们可以命名或描述的对象,但没有收集这些名称或描述。注释者被要求按突出顺序标记对象,并被鼓励在一个蒙版超过30秒的注释时间后继续进行下一个图像。
在这一阶段的开始,SAM使用公共分割数据集进行训练。在充分标注数据后,SAM仅使用新标注的掩码进行再训练。随着蒙版收集的增加,图像编码器从ViT-B缩放到ViT-H,其他建筑细节也随之演变;我们总共重新训练了我们的模型6次。随着模型的改进,每个掩码的平均注释时间从34秒减少到14秒。我们注意到,14秒比COCO的掩码标注快6.5倍,只比带极值点的边界盒标注慢2倍。随着SAM的改进,每张图像的平均掩模数从20个增加到44个。总的来说,我们在这个阶段从120k张图像中收集了430万个遮罩。
【4.2】Semi-automatic stage
在这个阶段,我们的目标是增加面具的多样性,以提高我们的模型分割任何东西的能力。为了将注释器集中在不太突出的对象上,我们首先自动检测自信掩码。然后,我们向注释者展示预先填充了这些蒙版的图像,并要求他们注释任何其他未注释的对象。为了检测自信蒙版,我们使用通用的“对象”类别在所有第一阶段蒙版上训练了一个边界盒检测器[84]。在这个阶段,我们在18k张图片中收集了额外的590万个遮罩(总共1020万个遮罩)。与第一阶段一样,我们定期在新收集的数据上重新训练模型(5次)。每个蒙版的平均注释时间恢复到34秒(不包括自动蒙版),因为这些对象的标记更具挑战性。每张图像的平均掩模数量从44个增加到72个(包括自动掩模)。
【4.3】Fully automatic stage.
在最后阶段,注释是全自动的。这是可行的,因为我们的模型有两个主要的改进。首先,在这一阶段的开始,我们收集了足够的遮罩来极大地改进模型,包括前一阶段的各种遮罩。其次,在这个阶段,我们已经开发了模糊感知模型,它允许我们预测有效的掩码,即使在模糊的情况下。具体来说,我们用32×32规则的点网格提示模型,并为每个点预测一组可能对应于有效对象的掩码。使用模糊感知模型,如果一个点位于部件或子部件上,我们的模型将返回子部件、部件和整个对象。我们的模型的IoU预测模块用于选择置信掩码;此外,我们只识别和选择稳定的掩模(如果在0.5−δ和0.5 δ的概率图上设置阈值导致相似的掩模,我们认为掩模是稳定的)。最后,在选择自信和稳定的掩码后,我们使用非最大抑制(NMS)来过滤重复。为了进一步提高小蒙版的质量,我们还处理了多个重叠的放大图像裁剪。关于这一阶段的进一步细节,见§B。我们对数据集中的所有11M张图像应用了全自动蒙版生成,总共产生了11亿个高质量的蒙版。接下来,我们描述和分析结果数据集SA-1B。
【5】Segment Anything Dataset
我们的数据集SA-1B由11M不同的、高分辨率的、授权的、保护隐私的图像和1.1B高质量的分割掩码组成,这些图像是由我们的数据引擎收集的。我们将SA-1B与现有数据集进行比较,并分析掩码质量和属性。我们正在发布SA-1B,以帮助计算机视觉基础模型的未来发展。我们注意到SA-1B将在有利的许可协议下发布,用于某些研究用途,并保护研究人员。
图像
图像。我们从一个直接与摄影师合作的供应商那里获得了一套新的1100万张图片。这些图像都是高分辨率的(平均为3300×4950像素),由此产生的数据大小可能带来可访问性和存储方面的挑战。因此,我们发布下采样图像,其最短边设置为1500像素。即使在降采样之后,我们的图像的分辨率也明显高于许多现有的视觉数据集(例如,COCO图像的分辨率为~ 480×640像素)。请注意,目前大多数模型在分辨率低得多的输入上运行。在公布的照片中,人脸和车牌已经被模糊处理。
掩码
我们的数据引擎产生了11亿个掩码,其中99.1%是完全自动生成的。因此,自动口罩的质量至关重要。我们直接将它们与专业注释进行比较,并查看各种掩码属性如何与突出的分割数据集进行比较。正如下面的分析和§7中的实验所证明的那样,我们的主要结论是,我们的自动掩码对于训练模型是高质量和有效的。基于这些发现,SA-1B只包括自动生成的掩模。
掩码质量
为了估计掩码质量,我们随机采样了500张图像(~ 50k掩码),并要求我们的专业注释员提高这些图像中所有掩码的质量。注释者使用我们的模型和像素精确的“画笔”和“橡皮擦”编辑工具。这个过程产生了一对自动预测和专业校正的口罩。我们计算了每对对之间的IoU,发现94%的对的IoU大于90%(97%的对的IoU大于75%)。相比之下,先前的研究估计注释者之间的一致性为85-91% IoU[44,60]。我们在§7中的实验通过人类评分证实,相对于各种数据集,掩码质量很高,并且在自动掩码上训练我们的模型几乎与使用数据引擎生成的所有掩码一样好。
掩码属性
在图5中,我们绘制了与现有最大的分割数据集相比,SA-1B中目标中心的空间分布。所有数据集中都存在常见的摄影师偏差。我们观察到,与LVIS v1和ADE20K这两个分布最相似的数据集相比,SA-1B具有更大的图像角点覆盖率,而COCO和Open Images V5具有更突出的中心偏差。在图6(图例)中,我们按大小比较了这些数据集。SA-1B拥有比第二大Open images多11倍的图像和400倍的蒙版。平均而言,它比Open Images拥有更多36倍的蒙版。在这方面最接近的数据集ADE20K,每张图像的掩模仍然少3.5倍。图6(左)为掩模-图像分布。接下来,我们在图6(中)中查看图像相对掩码大小(掩码面积除以图像面积的平方根)。正如预期的那样,由于我们的数据集每个图像有更多的掩模,它也倾向于包含更大比例的中小型相对大小的掩模。最后,为了分析形状复杂度,我们查看图6(右)中的掩模凹度(1减去掩模面积除以掩模凸壳面积)。由于形状复杂性与掩码大小相关,我们通过首先从分类掩码大小进行分层抽样来控制数据集的掩码大小分布。我们观察到掩模的凹凸度分布与其他数据集大致相似。
【6】Segment Anything RAI Analysis
接下来,我们通过调查使用SA-1B和SAM时潜在的公平问题和偏见,对我们的工作进行负责任的AI (RAI)分析。我们关注的是SA-1B的地理和收入分布,以及SAM在人们受保护属性中的公平性。我们还在§F中提供了数据集、数据注释和模型卡。
地域和收入代表性
我们推断国家图像是使用标准方法拍摄的(见§C)。在图7中,我们可视化了SA-1B中每个国家的图像计数(左)和图像最多的50个国家(右)。我们注意到,排名前三的国家来自世界不同地区。接下来,在表1中,我们比较了SA-1B、COCO[66]和Open Images[60]的地理和收入代表性。SA-1B在欧洲、亚洲和大洋洲以及中等收入国家的图像比例要高得多。所有数据集都没有充分代表非洲和低收入国家。我们注意到,在SA-1B中,包括非洲在内的所有地区至少有2800万个掩码,比以往任何数据集的掩码总数多10倍。最后,我们观察到,每张图像(未显示)的平均掩码数量在地区和收入之间相当一致(每张图像94-108)。
公平地划分人群
我们通过测量各组间的SAM表现差异来研究感知性别表现、感知年龄和感知肤色之间潜在的公平问题。我们使用更包容的人注释(More Inclusive Annotations for People, MIAP)数据集进行性别表示和年龄,使用专有的肤色数据集(见§C)。我们的评估使用模拟的交互式分割,随机采样1和3个点(见§D)。表2(左上)显示了感知性别呈现的结果。我们注意到女性在检测和分割数据集中的代表性不足,但观察到SAM在不同群体中的表现相似。我们在表2(左下)中重复了对感知年龄的分析,注意到那些被认为更年轻和更年长的人在大规模数据集中的代表性不足。SAM在那些被认为年龄较大的人身上表现最好(尽管置信区间很大)。最后,我们在表2(右)中重复了对感知肤色的分析,注意到在大规模数据集中,肤色较浅的人被过度代表,而肤色较深的人被低估[110]。由于MIAP不包含感知到的肤色注释,我们使用专有数据集,该数据集包含感知到的Fitzpatrick皮肤类型的注释,其范围从1(最浅的肤色)到6(最暗的肤色)。虽然平均数有所不同,但我们没有发现组间的显著差异。我们相信我们的发现源于任务的性质,并承认当SAM被用作更大系统的组件时可能会产生偏差。最后,在§C中,我们将分析扩展到细分服装,在那里我们发现了跨感知性别呈现的偏见迹象。
【7】零射转移实验 Zero-Shot Transfer Experiments
在本节中,我们提出了零射击转移实验与SAM,片段任何模型。我们考虑了五个任务,其中四个与用于训练SAM的提示分割任务有很大不同。这些实验在训练过程中没有看到的数据集和任务上评估SAM(我们使用的“零射击转移”遵循了CLIP中的用法)。数据集可能包括新的图像分布,例如水下或以自我为中心的图像(例如图8),据我们所知,这些图像没有出现在SA-1B中。
我们的实验从测试提示分割的核心目标开始:从任何提示产生有效的掩码。我们强调单个前景点提示的挑战性场景,因为它比其他更具体的提示更有可能模棱两可。接下来,我们提出了一系列实验,这些实验跨越低、中、高水平的图像理解,大致平行于该领域的历史发展。具体来说,我们提示SAM(1)执行边缘检测,(2)分割所有内容,即对象建议生成,(3)分割检测到的对象,即实例分割,以及(4)作为概念验证,从自由格式文本中分割对象。这四个任务与SAM训练时使用的提示分割任务有很大的不同,并且是通过提示工程实现的。我们的实验以消融研究结束。
【7.1】零射击单点有效掩模评估
任务。我们评估从单个前景点分割一个对象。这个任务是病态的,因为一个点可以指向多个对象。大多数数据集中的真实掩码没有列举所有可能的掩码,这可能使自动度量不可靠。因此,我们用一项人类研究来补充标准的mIoU度量(即,预测和真实掩模之间所有iu的平均值),其中注释者将掩模质量从1(无意义)到10(像素完美)进行评分。看到§D。1,§E和§G了解更多细节。
默认情况下,我们从地面真实掩模的“中心”(掩模内部距离变换的最大值)采样点,遵循交互式分割中的标准评估协议。由于SAM能够预测多个掩码,我们在默认情况下只评估模型最自信的掩码。基线都是单掩码方法。我们主要与RITM进行比较,RITM是一个强大的交互式细分,与其他强大的基线相比,它在我们的基准上表现最好。
数据集。我们使用了一套新编译的23个数据集,具有不同的图像分布。图8列出了数据集,并显示了每个数据集的样本(参见附录表7了解更多细节)。我们使用所有23个数据集进行mIoU评估。对于人体研究,我们使用图9b中列出的子集(由于此类研究的资源需求)。这个子集包括两个数据集,其中SAM根据自动度量优于RITM和低于RITM。
由上图所示,在 PPDLS 数据集上,SAM 比 RITM 的 IoU 高出 46.9,说明在该数据集场景下,SAM 基于单个中心点提示的分割效果显著优于 RITM ;而在 GTEA 数据集上,SAM 比 RITM 的 IoU 低 21.4 ,表明 RITM 在该数据集表现更好
纵坐标:平均掩码质量评分(Avg mask rating) ,范围从 1 - 9 ,评分越高表示掩码质量越好,其中 1 分代表 “无意义”,10 分代表 “像素完美” 。
横坐标:不同的数据集,包括 LVIS、VISOR 等
不同颜色点:紫色点代表真实情况(Ground Truth) ;橙色点代表 SAM 模型的结果;绿色点代表 SAM - single output( SAM 的单输出版本);蓝色点代表 RITM 模型的结果
结果。首先,我们看一下使用mIoU对全套23个数据集的自动评估。我们将图9a中每个数据集的结果与RITM进行比较。SAM在23个数据集中的16个数据集上产生了更高的结果,高达47 IoU。我们还提供了一个“oracle”结果,其中通过将SAM的3个掩码与基础真相进行比较来选择最相关的掩码,而不是选择最自信的掩码。这揭示了歧义对自动评估的影响。特别是,使用oracle执行歧义解析,SAM在所有数据集上的性能都优于RITM。
人体研究结果如图9b所示。误差条为平均掩码评级的95%置信区间(所有差异均显著;详情见§E)。我们观察到,注释者始终认为SAM的掩码质量大大高于最强基线RITM。具有单个输出掩码的精简版、“无歧义”版SAM的评级始终较低,但仍高于RITM。SAM的平均评分在7到9之间,这与定性评分准则相对应:“高分(7-9):对象是可识别的,错误小而罕见(例如,遗漏了一个小的,严重模糊的断开的组件,……)。”这些结果表明,SAM已经学会了从单个点分割有效掩码。请注意,对于像DRAM和IBD这样的数据集,SAM在自动指标上表现较差,但它在人类研究中始终获得较高的评级。
图9c显示了额外的基线,SimpleClick和FocalClick,它们获得的单点性能低于RITM和SAM。当点数从1增加到9时,我们观察到方法之间的差距减小。当任务变得更容易时,这是预期的;此外,SAM没有针对非常高的借据制度进行优化。最后,在图9d中,我们将默认中心点采样替换为随机点采样。我们观察到,SAM与基线之间的差距越来越大,在任何一种抽样方法下,SAM都能够获得可比的结果。
【7.2】零点边缘检测
方法。我们使用BSDS500数据集对经典的低级边缘检测任务进行了SAM评估。我们使用了一个简化版的自动掩码生成管道。具体来说,我们用16×16前景点的规则网格提示SAM,产生768个预测遮罩(每个点3个)。网管移除冗余的掩码。然后,使用无阈值掩码概率图的Sobel滤波和标准轻量级后处理(包括边缘NMS)计算边缘图。详情请参阅2)。
结果。我们在图10中可视化了代表性的边缘图(更多内容见图15)。定性地说,我们观察到即使SAM没有被训练用于边缘检测,它也能产生合理的边缘图。与基础真值相比,SAM预测了更多的边缘,包括BSDS500中没有注释的敏感边缘。这种偏差在表3中得到了定量的反映:50%精度下的召回率(R50)很高,但以精度为代价。SAM自然落后于学习BSDS500偏差的最先进的方法,即哪些边要抑制。尽管如此,与HED等开创性的深度学习方法(也在BSDS500上进行了训练)相比,SAM表现良好,并且明显优于之前的零射击转移方法,尽管这是公认的过时方法。
【7.3】 零射击目标建议
方法。接下来,我们在目标提案生成的中级任务上评估SAM。这项任务在目标检测研究中发挥了重要作用,作为先驱系统的中间步骤。为了生成对象建议,我们运行一个稍微修改过的自动掩码生成管道,并将掩码作为建议输出(参见§D)。详情请参阅3)。
我们在LVIS v1上计算标准平均召回率(AR)指标。我们专注于LVIS,因为它的大量类别提出了一个具有挑战性的测试。我们比较了作为ViTDet检测器实现的强基线(具有级联掩膜R-CNN vith)。我们注意到,这个“基线”对应于“伪装成提议生成器的检测器”(DMP)方法,该方法已被展示给游戏AR,使其成为一个真正苛刻的比较。
结果。在表4中,我们不出所料地看到,使用来自ViTDet-H的检测作为对象建议(即,游戏AR的DMP方法)总体上表现最好。然而,SAM在几个指标上做得非常好。值得注意的是,它在大中型物体以及稀有和普通物体上的表现优于ViTDet-H。事实上,SAM只在小对象和频繁对象上的表现不如ViTDet-H,因为它是在LVIS上训练的,所以与SAM不同,ViTDet-H可以很容易地学习到LVIS特定的注释偏差。我们还比较了一个模糊感知版本的SAM(“挑出”),它在所有AR指标上的表现都比SAM差得多。
【7.4】零镜头实例分割
方法。从更高级的角度来看,我们使用SAM作为实例分割器的分割模块。实现很简单:我们运行一个对象检测器(前面使用的ViTDet)并用它的输出框提示SAM。这说明了在更大的系统中组合SAM。
结果。我们比较了SAM和ViTDet在COCO和LVIS上预测的掩模,见表5。通过观察掩模AP指标,我们观察到两个数据集上的差距,其中SAM相当接近,尽管肯定落后于ViTDet。通过可视化输出,我们观察到SAM掩模通常在质量上优于ViTDet,具有更清晰的边界(参见§D)。4、图16)。为了调查这一观察结果,我们进行了一项额外的人体研究,要求注释者按照之前使用的1到10的质量等级对ViTDet口罩和SAM口罩进行评分。在图11中,我们观察到SAM在人体研究中始终优于ViTDet。
表5:实例分割结果。使用ViTDet框提示SAM进行零镜头分割。完全监督的ViTDet优于SAM,但在高质量的LVIS掩模上差距缩小。有趣的是,根据人类评级,SAM优于ViTDet(见图11)
图11:我们对ViTDet和SAM的人体研究得出的掩膜质量评级分布,两者都应用于LVIS地面真值盒。我们还报告LVIS和COCO地面真实质量。图例显示了评级均值和95%置信区间。尽管SAM的AP较低(表5),但SAM的评分高于ViTDet,这表明ViTDet利用了COCO和LVIS训练数据中的偏差。
我们假设在COCO上,掩模AP差距较大,地面真实质量相对较低(如人类研究所证实的),ViTDet学习了COCO掩模的特定偏差。SAM作为一种零射击方法,无法利用这些(通常不受欢迎的)偏差。LVIS数据集具有更高质量的ground truth,但仍然存在特定的特性(例如,掩模不包含孔,它们是简单的多边形构造)和模态掩模与模态掩模的偏差。同样,SAM没有经过训练来学习这些偏见,而ViTDet可以利用它们。
【7.5】零触发文本到掩码
方法。最后,我们考虑一个更高级别的任务:从自由格式的文本中分割对象。这个实验是SAM处理文本提示能力的概念验证。虽然我们在之前的所有实验中都使用了完全相同的SAM,但对于这个实验,SAM的训练过程进行了修改,使其具有文本感知能力,但不需要新的文本注释。具体来说,对于每个面积大于1002的手动收集掩码,我们提取CLIP图像嵌入。然后,在训练期间,我们提示SAM将提取的CLIP图像嵌入作为其第一次交互。
这里的关键观察是,因为CLIP的图像嵌入被训练为与其文本嵌入对齐,所以我们可以使用图像嵌入进行训练,但是使用文本嵌入进行推理。也就是说,在推理时,我们通过CLIP的文本编码器运行文本,然后将生成的文本嵌入作为对SAM的提示(详见§D.5)。
结果。我们在图12中显示了定性结果。SAM可以根据简单的文本提示(如“轮子”)和短语(如“海狸齿格栅”)来分割对象。当SAM未能仅从文本提示中选择正确的对象时,一个额外的点通常会修复预测。
图12:零镜头文本到掩码。SAM可以使用简单而细致的文本提示。当SAM无法做出正确的预测时,额外的点提示会有所帮助。
【7.6】消融
我们使用单中心点提示协议对我们的23个数据集套件进行了几次消融。回想一下,单点可能是模糊的,模糊可能不会在地面实况中表示,地面实况中每个点只包含一个掩码。由于SAM在零射击传输设置中运行,因此SAM的顶级掩码与数据注释指南产生的掩码之间可能存在系统偏差。因此,我们还报告了关于地面实况的最佳掩码(“预言机”)。
图13(左)绘制了SAM在使用来自数据引擎阶段的累积数据进行训练时的性能。我们观察到每个阶段都增加了mIoU。当使用所有三个阶段进行训练时,自动掩码的数量远远超过手动和半自动掩码。为了解决这个问题,我们发现在训练期间将手动和半自动掩码过采样10倍会产生最佳结果。这种设置使训练变得复杂。因此,我们测试了仅使用自动生成的掩码的第四种设置。使用这些数据,SAM的性能仅略低于使用所有数据(0.5 mIoU)。因此,默认情况下,我们仅使用自动生成的掩码来简化训练设置。
“oracle” 指从 SAM 预测的多个掩码中,选择与真实掩码最匹配的那个掩码。在实际评估时,SAM 可能会针对一个提示预测出多个掩码,而 “oracle” 就是从中找出与真实情况最相符的那一个。
通过使用 “oracle”,可以缓解单前景点提示的歧义对评估结果的影响。例如在零样本单点有效掩码评估任务中,“oracle” 结果能展示出在理想情况下,即忽略模型自身对掩码排序的不确定性时,SAM 的最佳性能表现。这样研究人员可以更清晰地了解模型在面对歧义提示时的潜力,以及当前评估指标受歧义影响的程度。
在图13(中间)中,我们查看了数据量的影响。完整的SA-1B包含11M图像,我们对其进行均匀的子采样以1M和0.1M消融。在0.1M图像中,我们观察到在所有设置下mIoU都有很大的下降。然而,对于1M图像,大约占完整数据集的10%,我们观察到与使用完整数据集相当的结果。这种数据机制仍然包括大约100M个掩码,对于许多用例来说可能是一个实用的设置。
横坐标:训练图像数量
纵坐标:23个数据集上的mloU
不同颜色的线:代表不同提示点数量的情况
体现训练图像数量对模型 mIoU 的影响。可以看到,当训练图像为 0.1M 时,所有提示点设置下 mIoU 都较低;当为 1M 时,结果与 11M 接近,说明约 10% 完整数据集规模就能达到较好性能;同时,随着提示点数量增加,mIoU 有上升趋势,且 “1 point (oracle)” 始终表现较好
最后,图13(右)显示了使用ViT-B、ViT-L和ViT-H图像编码器的结果。ViT-H比ViT-B有很大的改进,但比ViT-L只有边际增益。此时进一步的图像编码器缩放似乎没有成效。
讨论
基础模型。自机器学习的早期以来,预训练模型已经适应了下游任务[99]。近年来,随着对规模的日益重视,这种范式变得越来越重要,这种模型最近被(重新)命名为“基础模型”:即“在大规模的广泛数据上进行训练并适应广泛的下游任务”的模型[8]。我们的工作与这个定义很好地相关,尽管我们注意到图像分割的基础模型是一个固有的有限范围,因为它代表了计算机视觉的一个重要但不完整的子集。
我们还将我们的方法的一个方面与进行了对比,后者强调了自监督学习在基础模型中的作用。虽然我们的模型是用自监督技术(MAE[47])初始化的,但其绝大多数能力来自大规模监督训练。在数据引擎可以扩展可用注释的情况下,比如我们的,监督训练提供了一个有效的解决方案。
组合性。预先训练的模型可以为新功能提供动力,甚至超出训练时想象的能力。一个突出的例子是CLIP[82]如何在更大的系统中用作组件,例如DALL·E[83]。我们的目标是使用SAM使这种组合变得简单明了。我们的目标是通过要求SAM为广泛的分割提示预测有效的掩码来实现这一点。其效果是在SAM和其他组件之间创建一个可靠的接口。例如,MCC[106]可以轻松地使用SAM分割感兴趣的对象,并从单个RGB-D图像中实现对看不见的对象的强泛化以进行3D重建。
在另一个例子中,SAM可以通过可穿戴设备检测到的注视点进行提示,从而启用新的应用程序。由于SAM能够推广到以自我意识为中心的图像等新领域,这种系统无需额外培训即可工作。
局限性。虽然SAM总体上表现良好,但它并不完美。它可能会错过精细的结构,有时会产生小的断开连接的组件的幻觉,并且不会像“放大”的计算密集型方法那样产生清晰的边界,例如。一般来说,当提供许多点时,我们期望专用的交互式分割方法优于SAM,例如。与这些方法不同,SAM是为通用性和使用广度而设计的,而不是高IoU交互式分割。此外,SAM可以实时处理提示,但尽管如此,当使用重型图像编码器时,SAM的整体性能并不是实时的。
我们对文本到掩码任务的尝试是探索性的,并不完全稳健,尽管我们相信它可以通过更多的努力得到改进。虽然SAM可以执行许多任务,但尚不清楚如何设计实现语义和全景分割的简单提示。最后,还有特定领域的工具,例如[7],我们预计它们将在各自领域超越SAM。
结论。分割任何东西项目是将图像分割提升到基础模型时代的一次尝试。我们的主要贡献是一项新任务(可提示分割)、模型(SAM)和数据集(SA-1B),使这一飞跃成为可能。SAM是否达到了基础模型的地位,还有待于它在社区中的使用方式,但不管我们期待这项工作的视角如何,1B面具的发布,我们的可提示分割模型将有助于铺平前进的道路。
致谢。我们要感谢Aaron Adcock和Jitendra Malik的有益讨论。我们感谢Vaibhav Aggarwal和杨浩Li在扩展模型方面的帮助。我们感谢成阳傅、Jiabo胡和Robert Kuo在数据注释平台方面的帮助。我们感谢Allen Goodman和Bram Wasti在优化我们模型的网络版本方面的帮助。最后,我们感谢Morteza Behrooz、Ashley Gabriel、Ahuva Goldstan、Sumanth Gurram、Somya Jain、Devansh Kukreja、Joshua Lane、LiliLuong、Mallika Malhotra、William Ngan、Omkar Parkhi、Nikhil Raina、Dirk Rowe、Neil Sejoor、Vanessa Stark、Bala Varadarajan和Zachary Winstrom在制作演示、数据集查看器以及其他资产和工具方面的帮助。
附录
目录:
- §A:细分任何模型和任务细节
- §B:自动掩码生成细节
- §C: RAI附加细节
- §D:实验实施细节
- §E:人体研究实验设计
- §F:数据集、注释和模型卡
- §G:注释指南
细分任何模型和任务详细信息
图像编码器。一般来说,图像编码器可以是任何输出C×H×W图像嵌入的网络。受可扩展性和强大预训练的激励,我们使用MAE预训练的视觉转换器(ViT),以最小的适应来处理高分辨率输入,特别是具有14×14窗口注意力和四个等间距全局注意力块的ViT-H/16。图像编码器的输出是输入图像的16倍缩小嵌入。由于我们的运行时目标是实时处理每个提示,因此我们可以负担大量的图像编码器FLOP,因为它们每个图像只计算一次,而不是每个提示。
遵循标准实践,我们使用通过重新缩放图像并填充较短的一侧获得的1024×1024的输入分辨率。因此,图像嵌入是64×64。为了降低通道维度,在之后,我们使用1×1卷积得到256个通道,然后是3×3卷积,也有256个通道。每个卷积之后都是层归一化。
提示编码器。稀疏提示被映射到256维矢量嵌入,如下所示。一个点被表示为该点位置的位置编码[95]和两个学习嵌入之一的总和,这两个学习嵌入指示该点是在前景还是背景。一个框由一个嵌入对表示:(1)其左上角的位置编码与表示“左上角”的学习嵌入相加,以及(2)相同的结构,但使用表示“右下角”的学习嵌入。最后,为了表示自由格式的文本,我们使用来自CLIP的文本编码器(通常任何文本编码器都是可能的)。
我们将在本节的其余部分重点讨论几何提示,并在§D.5中深入讨论文本提示。
密集提示(即掩码)与图像具有空间对应关系。我们以比输入图像低4倍的分辨率输入掩码,然后使用两个2×2、步幅2的卷积,分别使用输出通道4和16,缩小额外的4倍。最后的1×1卷积将通道维度映射到256。每一层都由GELU激活和层归一化分开。然后按元素添加图像和掩码嵌入。如果没有掩码提示,则将表示“无掩码”的学习嵌入添加到每个图像嵌入位置。
轻量级掩码解码器。该模块高效地将图像嵌入和一组提示嵌入映射到输出掩码。为了组合这些输入,我们从Transform分割模型中获得灵感,并修改了一个标准的Transform解码器。在应用我们的解码器之前,我们首先在提示嵌入集中插入一个学习到的输出令牌嵌入,该令牌嵌入将在解码器的输出中使用,类似于中的[类]令牌。为简单起见,我们将这些嵌入(不包括图像嵌入)统称为“令牌”。
我们的解码器设计如图14所示。每个解码器层执行4个步骤:(
1)对令牌的自关注
2)从令牌(作为查询)到图像嵌入的交叉关注
3)逐点MLP更新每个令牌
4)从图像嵌入(作为查询)到令牌的交叉关注。最后一步用提示信息更新图像嵌入。
在交叉关注期间,图像嵌入被视为一组642个256维向量。每个自/交叉关注和MLP都有一个残差连接[49],层归一化,训练时的dropout]为0.1。
下一个解码器层从上一层获取更新的标记和更新的图像嵌入。我们使用两层解码器。
为了确保解码器能够访问关键的几何信息,每当它们参与关注层时,位置编码都会添加到图像嵌入中。此外,每当它们参与关注层时,整个原始提示标记(包括它们的位置编码)都会重新添加到更新的标记中。这允许强烈依赖于提示令牌的几何位置和类型。
运行解码器后,我们用两个转置的卷积层对更新后的图像嵌入进行4倍的上采样(现在它相对于输入图像缩小了4倍)。然后,标记再次参与图像嵌入,我们将更新后的输出标记嵌入传递给一个小的3层MLP,该MLP输出一个与放大后的图像嵌入的通道维度匹配的向量。最后,我们预测一个掩码,在放大后的图像嵌入和MLP的输出之间具有空间上点级乘积。
转换器使用256的嵌入维度。转换器MLP块具有2048的大内部维度,但MLP仅应用于相对较少(很少大于20)的提示标记。然而,在我们有64×64图像嵌入的交叉注意力层中,为了计算效率,我们将查询、键和值的通道维度降低了2×到128。所有注意力层使用8个头。
用于升级输出图像嵌入的转置卷积为2×2,步幅为2,输出通道尺寸为64和32,并具有GELU激活。它们通过层归一化分开。
使模型具有歧义意识。如前所述,单个输入提示可能是不明确的,因为它对应于多个有效掩码,并且模型将学习对这些掩码进行平均。我们通过一个简单的修改来消除这个问题:我们使用少量的输出令牌并同时预测多个掩码,而不是预测单个掩码。默认情况下,我们预测三个蒙版,因为我们观察到三个层(整体,部分和子部分)通常足以描述嵌套蒙版。在训练期间,我们计算真实值和每个预测掩模之间的损失(稍后描述),但只从最低损失反向传播。这是用于具有多个输出的模型的常用技术。为了在应用程序中使用,我们希望对预测的掩码进行排序,因此我们添加了一个小头部(操作额外的输出令牌),用于估计每个预测掩码与其覆盖的对象之间的IoU。
对于多个提示,歧义要少得多,并且三个输出掩码通常会变得相似。为了最大限度地减少训练时的退化损失计算,并确保单个无二义掩码接收到规则的梯度信号,我们只在给出多个提示时预测单个掩码。这是通过添加第四个输出令牌来实现的,用于额外的掩码预测。第四个掩码永远不会为单个提示返回,它是为多个提示返回的唯一掩码。
损失。我们用焦损失和骰子损失的线性组合来监督掩膜预测,焦损失与骰子损失的比例为20:1,我们观察到每个解码器层之后的辅助深度监督是没有帮助的。IoU预测头使用IoU预测和预测掩模的IoU之间的均方误差损失与地面真值掩模进行训练。它以恒定的比例因子1.0添加到掩模损失中。
训练算法。根据最近的方法,我们在训练期间模拟了一个交互式分割设置。首先,以等概率随机选择前景点或边界框作为目标蒙版。从地面真值掩模中均匀采样点。选取box作为ground truth mask的边界框,在每个坐标中加入随机噪声,标准差为box边长的10%,最大20像素。这种噪声轮廓是应用程序之间的合理折衷,例如实例分割(在目标对象周围产生一个紧密的框)和交互式分割(用户可能绘制一个松散的框)。
根据第一个提示进行预测后,从前一个掩码预测与地面真值掩码之间的误差区域中均匀选择后续点。如果误差区域为假阴性或假阳性,则每个新点分别为前景或背景。我们还提供了前一次迭代中的掩码预测,作为对模型的额外提示。为了给下一次迭代提供最大的信息,我们提供了无阈值的掩码logits而不是二值化的掩码。当返回多个掩码时,传递给下一次迭代并用于采样下一个点的掩码是具有最高预测IoU的那个。
在8个迭代采样点之后,我们发现收益递减(我们已经测试了16个)。此外,为了鼓励模型从提供的掩码中受益,我们还使用了两次迭代,其中没有额外的点被采样。其中一个迭代随机插入到8个迭代采样点之间,另一个迭代总是在最后。这总共给出了11次迭代:一次采样初始输入提示,8个迭代采样点,以及两次迭代,其中没有向模型提供新的外部信息,因此它可以学习改进自己的掩码预测。我们注意到,使用相对大量的迭代是可能的,因为我们的轻量级掩码解码器只需要不到1%的图像编码器的计算,因此,每次迭代只增加很小的开销。这与以前每次优化器更新只执行一个或几个交互步骤的交互式方法不同。
训练器。我们使用AdamW[68]优化器(β1 = 0.9, β2 = 0.999)和线性学习率预热[42]进行250次迭代和逐步学习率衰减计划。预热后的初始学习率(lr)为8e−4。我们训练了90k次迭代(~ 2 SA-1B epoch),并在60k次迭代和86666次迭代时将lr降低了10倍。批处理大小为256个图像。为了正则化SAM,我们将权重衰减(wd)设置为0.1,并以0.4的速率应用下降路径[53](dp)。我们使用分层学习率衰减[5](ld)为0.8。没有应用数据增强。我们从MAE b[47]预训练的ViT-H初始化SAM。由于大型图像编码器和1024×1024输入大小,我们将训练分布在256个gpu上。为了限制GPU内存的使用,我们在每个GPU上使用多达64个随机采样的掩码进行训练。此外,我们发现轻微过滤SA-1B掩模以丢弃任何覆盖90%以上图像的掩模,可以提高结果的质量。
对于消融和训练上的其他变化(例如,文本掩码§D.5),我们偏离上面的默认配方如下。当仅使用来自第一和第二数据引擎阶段的数据进行训练时,我们使用尺度范围为[0.1,2.0]的大规模抖动[40]来增加输入。直观地说,当训练数据更有限时,数据增强可能会有所帮助。为了训练vitb和vitl,我们使用了180k次迭代,批处理大小为128,分布在128个gpu上。ViT-B/L的lr = 8e−4/4e−4,ld = 0.6/0.8, wd = 0.1, dp = 0.6/0.4。