当前位置: 首页 > news >正文

【SAM】Segment Anything 论文翻译笔记

项目地址

论文:https://ai.facebook.com/research/publications/segment-anything/
代码:https://github.com/facebookresearch/segment-anything
在这里插入图片描述

摘要

我们介绍了 Segment Anything (SA) 项目:用于图像分割的新任务、模型和数据集。在数据收集循环中使用我们的高效模型,我们构建了迄今为止最大的分割数据集,在 1100万 个许可和尊重隐私的图像上拥有超过 10 亿个mask。该模型的设计和训练是可提示的,因此它可以零样本迁移到新的图像分布和任务中。我们评估了它在众多任务中的能力,发现其零样本性能令人印象深刻——通常与之前的完全监督结果具有竞争力,甚至优于之前的完全监督结果。我们将在 https://segment-anything.com 发布 Segment Anything Model (SAM) 和相应的数据集 (SA-1B),其中包含 10 亿mask和 1100万 图像,以促进对计算机视觉基础模型的研究。

1.引言

在网络规模数据集上进行预训练的大语言模型正凭借强大的零样本和少样本泛化能力,给自然语言处理带来革命性变化[10]。这些 “基础模型” [8] 能够泛化到训练过程中未见过的任务和数据分布上。这种能力通常通过提示工程来实现,即使用手工编写的文本促使语言模型针对当前任务生成有效的文本回复。当利用来自网络的大量文本语料进行扩展和训练时,这些模型的零样本和少样本性能出奇地好,在某些情况下甚至与微调模型相当[10, 21]。实证趋势表明,随着模型规模、数据集大小和总训练计算量的增加,这种表现会不断提升[56, 10, 21, 51]。

基础模型在计算机视觉领域也得到了探索,尽管程度相对较小。或许最突出的例子是将来自网络的文本与图像进行配对。例如,CLIP [82]和 ALIGN [55]使用对比学习来训练文本和图像编码器,以使这两种模态对齐。一旦训练完成,精心设计的文本提示就能实现对新视觉概念和数据分布的零样本泛化。这类编码器还能与其他模块有效组合,以实现诸如图像生成(如 DALL·E [83])等下游任务。虽然在视觉与语言编码器方面已经取得了很大进展,但计算机视觉所涵盖的问题范围远不止于此,而且对于其中许多问题,并不存在大量的训练数据。

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

该计划的成功取决于三个组成部分:任务、模型和数据。为了开发它们,我们解决了以下有关图像分割的问题:

  1. 什么任务将实现零样本泛化?
  2. 对应的模型架构是什么?
  3. 哪些数据可以为这项任务模型提供动力?

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

任务 (§2)

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

注:NLP任务的基准模型可以用提示技术零样本/少样本迁移下游任务,受其启发,SAM也采用了类似的策略,提出了可提示的分割任务,其目标是在给定任何分割提示时返回有效的分割掩码(见图 1a)。通过提示(prompt)来简单指明要分割的对象,然后模型返回一个分割后的有效的mask。提示可以是空间信息,也可以是文本信息,因为提示要确保足够简单,所以就会很容易产生歧义(比如局部和总体)。而SAM要做到的目标是,即使在提示有歧义(指向多个对象)的情况下,也能至少输出其中一个歧义对象的mask,那么这个输出才称得上是有效的。作者将这种可提示的分割任务作为预训练的目标,这样就可以应用不同的提示解决不同的下游任务,实现零样本/少样本迁移。

模型 (§3)

可提示的分割任务和实际使用的目标对模型架构施加了约束。特别是,模型必须支持灵活的提示,需要实时计算mask以允许交互式使用,并且必须具有歧义意识。令人惊讶的是,我们发现一个简单的设计满足了所有三个约束:一个强大的图像编码器计算一个图像嵌入,一个提示编码器嵌入提示,然后将两个信息源组合在一个轻量级的mask解码器中,用于预测分割mask。我们将此模型称为分割一切模型或 SAM(见图 1b)。通过将 SAM 分为图像编码器和快速提示编码器/mask解码器,可以在不同的提示下重复使用相同的图像嵌入(并摊销其成本)。给定图像嵌入,提示编码器和mask解码器在 Web 浏览器中以 ∼50 毫秒的速度预测提示中的mask。我们专注于点、框和mask提示,并使用自由格式的文本提示呈现初始结果。为了使 SAM 能够感知歧义,我们将其设计为预测单个提示的多个mask,从而使 SAM 能够自然地处理歧义,例如衬衫与人的例子。

数据引擎 (§4)

为了实现对新数据分布的强泛化,我们发现有必要在一组庞大且多样化的mask上训练 SAM,而不仅仅是任何已经存在的分割数据集。虽然基础模型的典型方法是在线获取数据[82],但掩模并不自然丰富,因此我们需要一种替代策略。我们的解决方案是构建一个“数据引擎”,即我们使用模型在环数据集注释共同开发我们的模型(见图 1c)。我们的数据引擎分为三个阶段:辅助手动、半自动和全自动。

在第一阶段,SAM 协助注释者注释mask,类似于经典的交互式分割设置。

在第二阶段,SAM 可以通过提示对象可能的位置来自动生成对象子集的mask,注释器专注于注释其余对象,从而帮助增加mask多样性。

在最后阶段,我们用一个规则的前景点网格提示 SAM,平均每个图像产生约 100 个高质量的mask。

注:在线获取图片不难,但mask数量不够多,且不会凭空产生,所以需要一个方案来生成这么多mask。

数据集 (§5)

我们的最终数据集 SA-1B 包括来自 1100万许可和隐私保护图像的超过 1B mask(见图 2)。SA-1B 是使用我们数据引擎的最后阶段全自动收集的,其mask数量比任何现有分割数据集都多 400×个[66,44,117,60],并且随着我们的广泛验证,这些mask具有高质量和多样性。除了用于训练 SAM 的稳健性和通用性之外,我们还希望 SA-1B 成为旨在构建新基础模型的研究的宝贵资源。

注:SAM的厉害之处就在于,其数据引擎实现了数据标注正向循环,你可以无限制的投入更多高质量且符合规范的数据集图片来训练/微调SAM,同时SAM又产出了更多的高质量标注mask,也就是数据集和SAM是相互成就,左脚踩右脚共同进步的。

负责任的 AI (§6)

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

实验 (§7)

我们广泛评估 SAM。首先,使用一套由 23 个分割数据集组成的多样化新数据集,我们发现 SAM 从单个前景点生成高质量的掩膜,通常仅略低于手动注释的地面实况。其次,我们发现,在使用提示工程的零样本传输协议下,各种下游任务的定量和定性结果始终如一,包括边缘检测、对象建议生成、实例分割以及文本到mask预测的初步探索。这些结果表明,SAM 可以与提示工程一起开箱即用,以解决涉及 SAM 训练数据之外的对象和图像分布的各种任务。尽管如此,正如我们在第 8 节中讨论的那样,仍有改进的余地。

发布

我们将出于研究目的发布 SA-1B 数据集,并在 https://segment-anything.com 年以宽松的开放许可证 (Apache 2.0) 提供 SAM。我们还通过在线演示展示了 SAM 的功能。

2.『分割一切』任务

我们从 NLP 中汲取灵感,其中下一个 token 预测任务用于基础模型预训练,并通过提示工程解决各种下游任务[10]。为了构建细分的基础模型,我们的目标是定义具有类似功能的任务。

任务

我们首先将提示的想法从 NLP 转化为分割,其中提示可以是一组前景/背景点、粗略的框或mask、自由格式的文本,或者通常指示图像中要分割的内容的任何信息。因此,可提示的分割任务是在给定任何提示时返回有效的分割mask。“有效”mask的要求仅仅意味着,即使提示是模棱两可的并且可以引用多个对象(例如,回想一下衬衫与人的例子,并参见图 3),输出也应该是至少一个对象的合理mask。此要求类似于期望语言模型对模棱两可的提示输出连贯的响应。我们选择这个任务是因为它导致了一种自然的预训练算法,以及一种通过提示将零样本迁移到下游分割任务的通用方法。

预训练

可提示分割任务建议使用一种自然的预训练算法,该算法为每个训练样本模拟一系列提示(例如,点、框、mask),并将模型的mask预测与基本事实进行比较。我们从交互式分割[109,70]中采用了这种方法,尽管与交互式分割不同,交互式分割的目的是在足够的用户输入后最终预测有效的mask,但我们的目标是始终预测任何提示的有效mask,即使提示是模棱两可的。这确保了预训练模型在涉及歧义的用例中有效,包括我们的数据引擎 §4 要求的自动注释。我们注意到,在这项任务上表现良好具有挑战性,需要专门的建模和训练损失选择,我们将在 §3 中讨论。

注:交互式分割任务是指:通过不停与用户交互,在接受用户足够多的提示以后最终达到用户想要的分割效果 的策略。
作者改装了该策略,不再需要足够的提示,而是只要接收到提示,就要根据该提示尝试输出一个有效分割mask,这显然是非常有挑战性的任务,因为用户只会提示一次,因此需要专门建模并且挑选训练所用的损失函数。大规模预训练的优势也正体现于此,通过大规模数据和长时间的训练,让用户不需要付出过多代价就能获得很好的效果。

零样本迁移

直观地讲,我们的预训练任务赋予了模型在推理时对任何提示做出适当响应的能力,因此可以通过设计适当的提示来解决下游任务。例如,如果有一个用于猫的边界框检测器,则可以通过向我们的模型提供检测器的框输出作为提示来解决猫实例分割。通常,可以将各种实际的分割任务转换为提示。除了自动数据集标记之外,我们还在第 7 节的实验中探索了五个不同的示例任务。

相关任务

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

注:SAM实现的是一种“任务泛化”的能力,与多任务分割系统不同,多任务分割系统是多个模块组合在一起,指定模块处理指定任务;而SAM是一个通用任务解决方案,可以作为其他模块的组件,实现更多种类的分割任务,甚至不局限于分割任务。

讨论

提示和组合是强大的工具,使单个模型能够以可扩展的方式使用,从而有可能完成模型设计时未知的任务。这种方法类似于其他基础模型的使用方式,例如,CLIP [82]是 DALL·E [83] 图像生成系统。我们预计,与专门为一组固定任务训练的系统相比,由提示工程等技术提供支持的可组合系统设计将实现更广泛的应用。通过组合的视角比较可提示分割和交互式分割也很有趣:虽然交互式分割模型在设计时考虑到了人类用户,但正如我们将演示的那样,为可提示分割训练的模型也可以组合成更大的算法系统。

3.「分割一切」模块

接下来,我们将描述用于可提示分割的分割一切模型 (SAM)。SAM 有三个组件,如图 4 所示:图像编码器、灵活提示编码器和快速mask解码器。我们建立在 Transformer 视觉模型 [14, 33, 20, 62] 的基础上,对(摊销后的)实时性能进行了特定的权衡。我们在这里对这些组件进行了高层次的描述,详细信息在 §A 中。

在这里插入图片描述

图像编码器

在可扩展性和强大的预训练方法的激励下,我们使用了 MAE [47]预训练的视觉转换器(ViT)[33],该转换器至少适用于处理高分辨率输入[62]。图像编码器在每个图像运行一次,可以在提示模型之前应用。

提示编码器

我们考虑两组提示:稀疏(点、框、文本)和密集(mask)。我们用位置编码[95]表示点和框,并用 CLIP [82]的现成文本编码器对每种提示类型的学习嵌入和自由格式文本进行求和。密集提示(即mask)使用卷积嵌入,并与图像嵌入按元素求和。

mask解码器

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

解决歧义

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

效率

整体模型设计很大程度上是由效率驱动的。给定预先计算的图像嵌入,提示编码器和mask解码器在 CPU 上的 Web 浏览器中运行,运行时间约为 50 毫秒。这种运行时性能支持我们的模型的无缝、实时交互式提示。

损失和训练

我们使用[14]中使用的焦点损失[65]和骰子损失[73]的线性组合来监督掩模预测。我们使用几何提示的混合来训练可提示的分割任务(有关文本提示,请参阅 §7.5)。按照[92,37],我们通过在每个mask中随机采样 11 轮提示来模拟交互式设置,使 SAM 能够无缝集成到我们的数据引擎中。

4.「分割一切」数据引擎

由于互联网上没有太多分割mask,我们构建了一个数据引擎来收集我们的 1.1B mask数据集 SA-1B。数据引擎分为三个阶段:

(1) 模型辅助手动注释阶段,
(2) 混合了自动预测mask和模型辅助注释的半自动阶段,以及
(3) 全自动阶段,其中我们的模型无需注释者输入即可生成mask。接下来我们将详细介绍每一个。

辅助手动阶段

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

注:注释人员可以自由标记 “stuff” 和 “things”,两者的区别:
“stuff”(无固定形状的类别,如天空、草地)
“thing”(有明确个体的类别,如人、动物)

在此阶段开始时,SAM 使用常见的公共分割数据集进行训练。在充分的数据注释后,仅使用新注释的mask重新训练 SAM。随着收集到更多的mask,图像编码器从 ViT-B 缩放到 ViT-H,其他架构细节也在演变; 我们总共重新训练了 6 次模型。随着模型的改进,每个mask的平均注释时间从 34 秒减少到 14 秒。我们注意到,14 秒比 COCO[66]的mask注释快 6.5×,仅比极值点的边界框标记慢 2×[76,71]。随着 SAM 的改进,每张图像的平均mask数量从 20 个增加到 44 个。总体而言,我们在这个阶段从 120k 图像中收集了 4.3M 个mask。

注:从公共数据集开始,逐渐滚雪球,扩充数据集和模型参数量,这一步,主要是先让标注员在30秒内标注一张图片上的那些‘显眼’的事物

半自动化阶段

在这个阶段,我们旨在增加mask的多样性,以提高我们的模型对任何事物的分割能力。为了将注释者的注意力集中在不太突出的对象上,我们首先自动检测出可信的mask。然后,我们向注释者展示预先填充了这些面具的图像,并要求他们对任何额外的未注释对象进行注释。为了检测有信心的mask,我们使用通用的"对象"类别在所有第一阶段mask上训练一个边界框检测器[ 84 ]。在这一阶段我们又收集了 5 个。180k 图像 (共 10 个。2M 掩模) 中的 9M 掩模。与第一阶段一样,我们在新收集的数据上周期性地重新训练我们的模型 ( 5 次)。由于这些对象的标注难度更大,每个mask的平均标注时间回到了 34 秒 (排除自动面罩)。每幅图像的平均掩模数从 44 个到 72 个 (包括自动掩模)。

注:半自动阶段旨在增加mask多样性,先使用第一阶段的掩码训练了一个fast rcnn,从而给图片上的显眼对象打上简单的"object"标签并生成对应的bbox,用这些bbox作为输入,先给那些显眼的高置信度对象自动打上了掩码,然后直接绘制在图片上交给标注人员,让标注人员只标注其他未标注的物体,也就是由SAM自动打标,标注人员”捡漏“

全自动阶段

在最后阶段,注释完全自动化。这是可行的,因为我们的模型有两个主要的增强。首先,在这个阶段开始时,我们已经收集了足够的mask来极大地改进模型,包括上一阶段的多样化mask。其次,到这个阶段我们已经开发了模糊感知模型,它允许我们预测有效的mask,即使在模糊的情况下。具体来说,我们用一个 32 × 32 的规则网格点提示模型,并为每个点预测一组可能对应有效对象的mask。在歧义感知模型中,如果一个点位于某个部分或子部分,我们的模型将返回子部分、部分和整个对象。我们模型的 IoU 预测模块用于选择可信的mask;此外,我们只识别并选择了稳定的掩模 (我们考虑一个mask的稳定性, 如果将概率映射阈值为 0。5 - δ和 0 . 5 + δ得到类似的掩模)。最后,在选择可信且稳定的mask后,我们应用非极大值抑制 ( NMS ) 来过滤重复数据。

为了进一步提高较小mask的质量,我们还处理了多个重叠的放大图像裁剪。有关此阶段的更多详细信息,请参阅 §B。我们对数据集中的所有 1100万图像应用了全自动掩模生成,总共生成了 1.1B 的高质量掩模。接下来,我们描述和分析生成的数据集 SA-1B。

注:总结: (对应SamAutomaticMaskGenerator中的参数)
在全自动标注阶段,已经开始采用模糊感知模型,也就是模型返回子部分、部分、整体三个mask(3是由实验得出的),
全自动阶段使用的是32x32的规则点网格作为提示,(Points_per_side=32)
每个点都进行有效物体掩码预测。使用交并比(IoU)预测模块选择置信度高的掩码;(Pred_iou_thresh)
此外,只识别稳定的掩码,关于稳定的判定,是用一个0.5±sigma的阈值区间处理一次概率图,如果得到相似的掩码,说明是稳定的。(Stability_score_thresh)
最后,再用非极大值抑制(NMS)过滤重复项。(Box_nms_thresh)
针对小掩码质量优化,使用重叠放大图像裁剪。(Crop_n_layers)

5.「分割一切」数据集

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

图像

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

mask

我们的数据引擎生成了 1.1B mask,其中 99.1% 是全自动生成的。因此,自动mask的质量至关重要。我们将它们直接与专业注释进行比较,并研究各种mask属性与突出的分割数据集相比如何。我们的主要结论,如下面的分析和 §7 中的实验所证实的那样,我们的自动mask是高质量的,并且对训练模型有效。受这些发现的激励,SA-1B 仅包括自动生成的mask。

mask质量

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

mask属性

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

6.「分割一切」模型 RAI 分析

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

地理和收入代表

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

公平地细分人员

我们通过测量组间 SAM 的表现差异来调查感知性别表现、感知年龄组和感知肤色的潜在公平问题。我们使用更包容性的人注释(MIAP)[87]数据集来表示性别表现和年龄,并使用专有的肤色数据集(参见§C)。我们的评估使用模拟交互式分割,随机抽样 1 点和 3 点(参见 §D)。表 2(左上)显示了感知性别表现的结果。我们注意到,女性在检测和分割数据集中的代表性不足[115],但观察到 SAM 在各组中的表现相似。我们在表 2(左下)中重复了感知年龄的分析,并指出那些被认为更年轻和更年长的人在大规模数据集中的代表性不足[110]。

SAM 对那些被认为年龄较大的人表现最好(尽管置信区间很大)。最后,我们重复了表 2(右)中感知肤色的分析,注意到在大规模数据集中,那些明显肤色较浅的人被证明代表性过高,而那些肤色较深的人代表性不足[110]。由于 MIAP 不包含感知的肤色注释,因此我们使用了一个专有数据集,其中包含感知到的 Fitzpatrick 皮肤类型的注释[36],其范围从 1(最浅肤色)到 6(最暗肤色)。虽然均值略有不同,但我们没有发现各组之间存在显着差异。我们相信我们的发现源于任务的性质,并承认当 SAM 用作大型系统的组件时可能会出现偏差。最后,在§C 中,我们将分析扩展到服装细分,在那里我们发现了感知性别表现存在偏见的迹象。

7. 零样本迁移实验

在本节中,我们将介绍使用 SAM 的零样本传输实验。我们考虑了五项任务,其中四项任务与用于训练 SAM 的可提示分割任务有很大不同。这些实验在训练期间未看到的数据集和任务上评估 SAM(我们对“零样本传输”的使用遵循了 CLIP 中的使用[82])。数据集可能包括新的图像分布,例如水下或以自我为中心的图像(例如图 8),据我们所知,这些图像不会出现在 SA-1B 中。

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

实现。除非另有说明:(1)SAM 使用 MAE [47]预训练的 ViT-H [33]图像编码器,(2)SAM 在 SA-1B 上进行训练,请注意,该数据集仅包括从我们数据引擎的最后阶段自动生成的mask。有关所有其他模型和训练详细信息,例如超参数,请参阅 §A。

7.1 零样本单点有效mask评估

任务

我们评估从单个前景点分割对象。这项任务是错误的,因为一个点可以引用多个对象。大多数数据集中的实况mask不会枚举所有可能的mask,这可能会使自动指标不可靠。因此,我们用一项人体研究来补充标准 mIoU 指标(即预测mask和地面实况mask之间所有 IoU 的平均值),其中注释者将mask质量从 1(无意义)评为 1(无意义)到 10(像素完美)。有关更多详细信息,请参阅 §D.1、§E 和 §G。默认情况下,我们从地面实况mask的“中心”(以掩膜内部距离变换的最大值)对点进行采样,遵循交互式分割中的标准评估协议[92]。由于 SAM 能够预测多个mask,因此默认情况下,我们仅评估模型最置信的mask。基线都是单mask方法。我们主要与 RITM [92]进行比较,RITM 是一种强大的交互式分割器,与其他强基线相比,它在我们的基准上表现最好[67, 18]。

数据

我们使用了一套新收集的 23 个数据集,具有不同的图像分布。图 8 列出了数据集,并显示了每个数据集的样本(有关更多详细信息,请参见附录表 7)。我们使用所有 23 个数据集进行 mIoU 评估。对于人体研究,我们使用图 9b 中列出的子集(由于此类研究的资源需求)。根据自动指标,该子集包括 SAM 优于和低于 RITM 的数据集。

结果

首先,我们研究使用 mIoU 对全套 23 个数据集进行自动评估。我们将图 9a 中的每个数据集结果与 RITM 进行了比较。SAM 在 23 个数据集中的 16 个数据集上产生了更高的结果,高达约 47 IoU。我们还提出了一个“预言机”结果,其中 SAM 的 3 个mask中最相关的是通过将它们与基本事实进行比较来选择的,而不是选择最可靠的mask。这揭示了歧义对自动评估的影响。特别是,通过预言机执行歧义解析,SAM 在所有数据集上都优于 RITM。

人体研究结果如图 9b 所示。误差线是平均mask评级的 95% 置信区间(所有差异都是显着的,有关详细信息,请参见 §E)。我们观察到,注释者始终对 SAM mask的质量的评价远高于最强基线 RITM。具有单个输出mask的烧蚀、“不感知歧义”的 SAM 版本的额定值始终较低,但仍高于 RITM。SAM 的平均评分介于 7 到 9 之间,这对应于定性评分指南:“高分 (7-9):物体是可识别的,错误很小且罕见(例如,缺少一个小的、严重模糊的断开连接的组件,… 这些结果表明,SAM 已经学会了从单个点分割有效mask。请注意,对于 DRAM 和 IBD 等数据集,SAM 在自动指标上较差,它在人类研究中始终获得更高的评级。

图 9c 显示了其他基线 SimpleClick [67]和 FocalClick [18],它们获得的单点性能低于 RITM 和 SAM。随着点数从 1 增加到 9,我们观察到方法之间的差距减小。随着任务变得更容易,这是意料之中的; 此外,SAM 没有针对非常高的 IoU 状态进行优化。最后,在图 9d 中,我们将默认的中心点采样替换为随机点采样。我们观察到 SAM 与基线之间的差距越来越大,并且 SAM 能够在任一抽样方法下获得可比较的结果。

7.2 零样本边缘检测

方法

我们使用 BSDS500 评估了边缘检测这一经典低级任务上的 SAM[72,3]。我们使用自动mask生成管道的简化版本。具体来说,我们用 16×16 个常规前景点网格提示 SAM,从而产生 768 个预测mask(每个点 3 个)。NMS 删除冗余mask。然后,使用无阈值mask概率图的 Sobel 滤波和标准轻量级后处理(包括边缘 NMS)计算边缘图(有关详细信息,请参阅 §D.2)。
![[Pasted image 20250804142008.png]]

结果

我们在图 10 (详见图 15) 中可视化了具有代表性的边缘图。定性地,我们观察到即使 SAM 没有被训练用于边缘检测,但它产生了合理的边缘图。与真实值相比,SAM 预测到更多的边缘,包括 BSDS500 中没有标注的敏感边缘。这种偏差在表 3 中得到了定量的反映:50 %准确率的召回率 ( R50 ) 偏高,是以牺牲准确率为代价的。SAM 自然落后于学习 BSDS500 偏差的最先进的方法,即哪些边要被抑制。尽管如此,与 HED [ 108 ] (并在 BSDS500 上进行了训练) 等开创性的深度学习方法相比,SAM 表现良好,并且显著优于先前公认的过时的零样本迁移方法。

7. 3 零样本物体提议

方法

接下来,我们在物体提议生成[ 2、102]的中层任务上对 SAM 进行了评估。该任务在目标检测研究中发挥了重要作用,作为开创性系统 ( e.g. [ 102 , 41 , 84 ]) 的中间步骤。为了生成对象提案,我们运行了一个轻微修改的自动掩码生成流水线,并将掩码输出为提案 (详见§ D.3)。

我们在 LVIS v1 [44] 上计算标准平均召回率(AR)指标。我们专注于 LVIS,因为其大量的类别构成了一项具有挑战性的测试。我们与作为 ViTDet [62] 检测器(搭配级联 Mask R-CNN [48, 11] ViT-H)实现的强大基线进行比较。我们注意到,这个 “基线” 对应于 “伪装成提案生成器的检测器”(DMP)方法 [16],该方法已被证明会影响 AR,使其成为真正严格的比较。

结果

在表 4 中,我们不出所料地看到,使用 ViTDet-H 的检测结果作为目标提议(即利用平均召回率(AR)的 DMP 方法[16])总体表现最佳。然而,SAM 在几个指标上表现出色。值得注意的是,它在中等和大型物体以及稀有和常见物体上的表现优于 ViTDet-H。事实上,SAM 仅在小型物体和频繁出现的物体上表现不如 ViTDet-H,在这些方面,与 SAM 不同,ViTDet-H 由于在 LVIS 数据集上进行训练,能够轻松学习 LVIS 特定的注释偏差。我们还与一个去除模糊感知的 SAM 版本(“单一输出”)进行了比较,该版本在所有平均召回率指标上的表现都明显逊于 SAM。

7 .4. 零样本实例分割

方法

转向更高层次的视觉任务,我们将 SAM 用作实例分割器的分割模块。实现方法很简单:我们运行一个目标检测器(之前使用的 ViTDet),并将其输出的边界框作为提示提供给 SAM。这展示了在更大的系统中组合使用 SAM。

结果

我们在表 5 中比较了 SAM 和 ViTDet 在 COCO 和 LVIS 数据集上预测的掩码。观察掩码平均精度(mask AP)指标,我们发现两个数据集上都存在差距,SAM 的表现相当接近,但肯定落后于 ViTDet。通过可视化输出,我们观察到 SAM 生成的掩码在质量上通常优于 ViTDet 生成的掩码,边界更加清晰(见§D.4 和图 16)。为了深入研究这一观察结果,我们额外进行了一项人工评估研究,让注释者按照之前使用的 1 到 10 的质量等级对 ViTDet 和 SAM 生成的掩码进行评分。在图 11 中我们观察到,在人工评估研究中,SAM 始终优于 ViTDet。

我们假设在 COCO 上,掩码 AP 差距较大,地面真值质量较低的 (正如人类研究所揭示的那样),ViTDet 学习 COCO 掩码的具体偏差。作为一种零样本方法,SAM 无法利用这些 (通常是不希望的) 偏差。LVIS 数据集具有更高质量的基本真值,但仍然存在特定的特征 (例如, 掩模不包含孔洞, 它们是通过构造的简单多边形) 和模态掩码与非模态掩码的偏差。再次,SAM 没有被训练来学习这些偏差,而 ViTDet 可以利用它们。

7 .5. 零样本文本转掩码

方法

最后,我们考虑一个更高层次的任务:从自由形式的文本中分割对象。这个实验是对 SAM 处理文本提示能力的概念验证。虽然在之前所有实验中我们使用的是完全相同的 SAM,但在这个实验中,SAM 的训练过程经过修改,使其能够感知文本,但这种方式不需要新的文本注释。具体来说,对于每个手动收集的面积大于 1002 的掩码,我们提取 CLIP 图像嵌入。然后,在训练过程中,我们将提取的 CLIP 图像嵌入作为首次交互提示给 SAM。这里的关键发现是,由于 CLIP 的图像嵌入经过训练与它的文本嵌入对齐,我们可以使用图像嵌入进行训练,但在推理时使用文本嵌入。也就是说,在推理时,我们将文本输入 CLIP 的文本编码器,然后将得到的文本嵌入作为提示提供给 SAM(详见§D.5)。

结果

我们在图 12 中给出了定性结果。SAM 可以基于简单的文本提示 (如"车轮" ) 和短语 (如"海狸牙格栅" ) 分割对象。当 SAM 无法仅从文本提示符中选择正确的对象时,额外的一个点往往会修正预测,类似于[ 31 ]。

7.6消融实验

我们使用单中心点提示协议对我们的 23 个数据集套件进行了几次消融实验。请记住,单个点可能存在歧义,并且这种歧义可能不会在仅包含每个点单个掩码的真实标注中体现出来。由于 SAM 在零样本迁移设置下运行,因此 SAM 排名最高的掩码与根据数据标注指南生成的掩码之间可能存在系统性偏差。因此,我们还报告了相对于真实标注的最佳掩码(“oracle”)。

图 13(左)绘制了在数据引擎各阶段的累积数据上训练时 SAM 的性能。我们观察到每个阶段都提高了平均交并比(mIoU)。当使用所有三个阶段的数据进行训练时,自动生成的掩码数量远远超过手动和半自动生成的掩码。为了解决这个问题,我们发现训练期间将手动和半自动掩码过采样 10 倍可获得最佳结果。这种设置使训练变得复杂。因此,我们测试了第四种仅使用自动生成掩码的设置。使用此数据时,SAM 的性能仅略低于使用所有数据时的性能(约 0.5 的平均交并比)。因此,默认情况下,我们仅使用自动生成的掩码来简化训练设置。

在图 13 (中) 中,我们研究了数据量的影响。完整的 SA - 1B 包含 11M 幅图像,我们将其统一下采样为 1M 和 0。1m。在 0 .在 1M 图像中,我们观察到所有设置下的 mIoU 大幅下降。然而,对于 1M 图像,约占整个数据集的 10 %,我们观察到的结果与使用整个数据集的结果相当。这个数据格式仍然包括大约 100M 的掩码,这对于许多应用场合来说可能是一个实用的设置。
![[Pasted image 20250804141903.png]]

最后,图 13 (右) 显示了 ViT - B,ViT - L 和 ViT - H 图像编码器的结果。ViT - H 比 ViT - B 有显著提高,但比 ViT - L 仅有边际增益。进一步的图像编码器缩放在此时并没有取得显著效果。

8. 讨论

基础模型

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

组合性

预训练模型能够赋予新的能力,甚至超出训练时所能想象的能力。一个突出的例子是 CLIP [82] 如何作为更大系统(如 DALL·E [83])中的一个组件来使用。我们的目标是利用 SAM 使这种组合变得简单直接。我们旨在通过要求 SAM 为广泛的分割提示预测有效的掩码来实现这一目标。这样做的效果是在 SAM 和其他组件之间创建一个可靠的接口。例如,MCC [106] 可以轻松地使用 SAM 分割感兴趣的对象,并在从单张 RGB-D 图像进行 3D 重建时,对未见对象实现很强的泛化能力。再举一个例子,SAM 可以由可穿戴设备检测到的注视点进行提示,从而开启新的应用。由于 SAM 能够泛化到以自我为中心的图像等新领域,此类系统无需额外训练即可运行。

局限性

虽然 SAM 总体上表现良好,但并不完美。它可能会遗漏精细结构,有时会产生一些小的不相连的部件,并且无法像一些计算量更大的 “放大” 方法(如 [18])那样清晰地生成边界。一般来说,我们预计当提供许多点时,专门的交互式分割方法会优于 SAM,例如 [67]。与这些方法不同,SAM 旨在实现通用性和广泛的应用,而非高交并比(IoU)的交互式分割。此外,SAM 可以实时处理提示,但使用重型图像编码器时,SAM 的整体性能并非实时。我们对文本转掩码任务的探索并不完全稳健,尽管我们相信通过更多努力可以改进。虽然 SAM 可以执行许多任务,但目前尚不清楚如何设计简单的提示来实现语义分割和全景分割。最后,有一些特定领域的工具,如 [7],我们预计它们在各自领域的表现会优于 SAM。

结论

Segment Anything 项目是将图像分割提升到基础模型时代的一次尝试。我们的主要贡献是一个新的任务 (快速分割)、模型 ( SAM ) 和数据集 ( SA-1B ),使这一飞跃成为可能。SAM 是否达到了基金会模式的地位,还有待通过它在社区中的使用情况来看,但不管我们期待这项工作的角度如何,1B 以上面具的释放,以及我们及时的分割模型将有助于铺平前进的道路。

致谢

我们要感谢亚伦·阿德科克(Aaron Adcock)和吉滕德拉·马利克(Jitendra Malik)进行的有益讨论。感谢维布哈夫·阿加瓦尔(Vaibhav Aggarwal)和李阳浩(Yanghao Li)在模型扩展方面提供的帮助。感谢傅承阳(Cheng-Yang Fu)、胡佳博(Jiabo Hu)和罗伯特·郭(Robert Kuo)在数据标注平台方面提供的帮助。感谢艾伦·古德曼(Allen Goodman)和布拉姆·瓦斯蒂(Bram Wasti)在优化模型网络版本方面提供的帮助。最后,感谢莫尔塔扎·贝赫鲁兹(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)和扎卡里·温斯特罗姆(Zachary Winstrom)在制作演示、数据集查看器以及其他资产和工具方面提供的帮助。

附录

附录目录 :

• §A:分割一切模型与任务详情
• §B:自动掩码生成详情
• §C:负责任人工智能的更多详情
• §D:实验实施详情
• §E:人类研究实验设计
• §F:数据集、注释与模型卡片
• §G:注释指南

A. 分割一切模型与任务细节

图像编码器

一般来说,图像编码器可以是任何输出 C×H×W 图像嵌入的网络。出于可扩展性和利用强大预训练的考虑,我们采用经过最小化调整以处理高分辨率输入的 MAE[47]预训练视觉 Transformer(ViT)[33],具体为具有 14×14 窗口注意力和四个等间距全局注意力模块的 ViT-H/16,参考[62]。图像编码器的输出是输入图像下采样 16 倍的嵌入。由于我们的运行时目标是实时处理每个提示,因此我们可以承受较高的图像编码器浮点运算量(FLOPs),因为它们是每张图像仅计算一次,而非每个提示都计算。按照标准做法(例如[40]),我们使用通过缩放图像并填充较短边获得的 1024×1024 输入分辨率。因此,图像嵌入为 64×64。为降低通道维度,参考[62],我们使用 1×1 卷积将通道数降至 256,随后使用同样具有 256 个通道的 3×3 卷积。每个卷积之后都接一个层归一化[4]。

提示编码器

稀疏提示按如下方式映射到 256 维向量嵌入。一个点表示为该点位置的位置编码[95]与两个学习嵌入之一的总和,这两个学习嵌入表明该点是在前景还是背景中。一个框由一对嵌入表示:

(1) 其左上角的位置编码与表示“左上角”的学习嵌入相加,以及
(2) 相同的结构,但使用表示“右下角”的学习嵌入。

最后,为了表示自由形式文本,我们使用来自 CLIP 的文本编码器[82](一般来说任何文本编码器都可以)。在本节的其余部分,我们专注于几何提示,并在§D.5 中深入讨论文本提示。

也就是说:一个点的token是位置编码 + 前景/后景embedding其中之一 组成的复合embedding . 一个框则是由左上角和右下角两个点组成的点对表示,左上token=位置编码+左上embedding

密集提示(即掩码)与图像具有空间对应关系。我们以比输入图像低 4 倍的分辨率输入掩码,然后使用两个 2×2、步长为 2 的卷积分别将其再下采样 4 倍,输出通道分别为 4 和 16。最后一个 1×1 卷积将通道维度映射到 256。每一层之间由 GELU 激活函数[50]和层归一化隔开。然后将掩膜和图像嵌入按元素添加。如果没有掩码提示,则将学习到的表示"无掩码"的嵌入添加到每个图像嵌入位置。

注:初始mask比图像小4x,经过下采样变成256维度的embedding直接跟图片embedding相加,如果没有mask输入,用一个表示no mask的可学习embedding加到每个图像embedding位置,也就是说 无论有没有掩码输入都会有一个embedding按位加到图像embedding上

轻量级掩码解码器

该模块高效地将图像嵌入和一组提示嵌入映射到输出掩码。为了结合这些输入,我们从 Transformer 分割模型[ 14、20]中获得灵感,并修改了一个标准的 Transformer 解码器[ 103 ]。在应用解码器之前,我们首先将学习到的输出令牌嵌入插入到提示嵌入集合中,该令牌嵌入将用于解码器的输出,类似于文献[ 33 ]中的[ class ]令牌。为了简单起见,我们将这些嵌入 (不包括图像嵌入) 统称为"令牌"。

![[Pasted image 20250804110232.png]]

图 14

我们的解码器设计如图 14 所示。每个解码器层执行 4 个步骤:
( 1 ) 令牌自注意力;
( 2 ) 令牌 (作为查询) 到图像嵌入的交叉注意力;
( 3 ) 逐点 MLP 更新每个令牌;
( 4 ) 图像嵌入 (作为查询) 到令牌的交叉注意力。最后一步更新带有提示信息的图像嵌入。

在交叉注意力过程中,图像嵌入被视为由 642 个 256 维向量组成的集合。每个 self / cross - attention 和 MLP 都有一个残差连接[ 49 ],层归一化和 0 的 dropout [ 93 ]。
①训练时。下一个解码器层从上一层取更新的令牌和更新的图像嵌入。我们使用两层解码器。

注:Output token 就是类似于 Vit 中的 class token,直接加在提示词 token上,先过一个自注意力头,然后和 image embedding 过一个 token to image交叉注意力头,经过 mlp 后再经过一个 image to token 交叉注意力头,重复两个这样的 block 后,再次经过 token to image 交叉注意力头更新带有提示信息的图像 embedding

为了保证解码器能够获得关键的几何信息,当图像嵌入参与注意力层时,位置编码被添加到图像嵌入中。此外,每当更新的令牌参与一个注意力层时,将所有原始的提示令牌(包括他们的位置编码)重新添加到更新的令牌中。这允许对提示令牌的几何位置和类型都有很强的依赖性。

注:也就是类似于稠密连接,为了保持强几何信息,每次经过注意力头时就将原始提示token包括其位置编码重新加到更新后的embedding上

运行解码器后,使用两个转置卷积层 (现在它相对于输入图像缩放了 4 倍) 对更新后的图像嵌入进行 4 ×上采样。然后,令牌再次参与图像嵌入,并将更新后的输出令牌嵌入传递给一个小的 3 层 MLP,该 MLP 输出一个与放大图像嵌入的通道维度匹配的向量。最后,我们预测了一个在升尺度图像嵌入和 MLP 输出之间具有空间点乘的掩码。

Transformer采用 256 的嵌入维数。变压器 MLP 块内部维度较大,为 2048,但 MLP 仅适用于 (很少大于 20) 相对较少的提示令牌。然而,在我们有 64 × 64 图像嵌入的跨注意力层中,为了计算效率,我们将查询、键和值的通道维度降低了 2 ×到 128。所有注意力层使用 8 个头。用于放大输出图像嵌入的转置卷积大小为 2 × 2,步长为 2,输出通道维度为 64 和 32,并具有 GELU 激活。通过图层归一化进行分离。

使模型具有歧义感知能力

如前所述,单个输入提示可能存在歧义,因为它对应多个有效的掩码,而模型将学习对这些掩码求平均。我们通过一个简单的修改来解决这个问题:不再预测单个掩码,而是使用少量输出令牌并同时预测多个掩码。默认情况下,我们预测三个掩码,因为我们发现三层(整体、部分和子部分)通常足以描述嵌套掩码。在训练过程中,我们计算每个预测掩码与真实掩码之间的损失(稍后介绍),但仅从损失最小的那个进行反向传播。这是具有多个输出的模型常用的一种技术[15, 45, 64]。在实际应用中,我们希望对预测掩码进行排序,因此我们添加一个小的头部(作用于一个额外的输出令牌),用于估计每个预测掩码与其所覆盖对象之间的交并比(IoU)。

当有多个提示时,模糊性会少见得多,并且三个输出掩码通常会变得相似。为了在训练时尽量减少退化损失的计算,并确保单一明确的掩码能接收到规则的梯度信号,当给出多个提示时,我们只预测一个掩码。这通过添加第四个输出标记来进行额外的掩码预测得以实现。对于单个提示,这个第四个掩码永远不会返回,而对于多个提示,它是唯一返回的掩码。

损失

我们按照文献[20, 14],以20:1的焦点损失与骰子损失的比例,使用焦点损失[65]和骰子损失[73]的线性组合来监督掩码预测。与文献[20, 14]不同,我们发现每个解码器层之后的辅助深度监督并无帮助。交并比(IoU)预测头使用预测的 IoU 与预测掩码和真实掩码之间的 IoU 的均方误差损失进行训练。它以 1.0 的恒定缩放因子添加到掩码损失中。

训练算法

遵循近期的方法[92, 37],我们在训练过程中模拟交互式分割设置。首先,以前景点或边界框具有相等概率随机选择目标掩码。点从真实掩码中均匀采样。边界框取真实掩码的边界框,在每个坐标上添加随机噪声,标准差等于边界框边长的 10%,最大为 20 像素。这种噪声分布是在实例分割等应用(其在目标对象周围生成紧密的框)和交互式分割(用户可能绘制宽松的框)之间的合理折衷。

从这个初始提示进行预测后,后续点从先前掩码预测与真实掩码之间的误差区域中均匀选择。如果误差区域是假阴性或假阳性,则每个新点分别为前景或背景。我们还将前一次迭代的掩码预测作为额外提示提供给模型。为了给下一次迭代提供最大信息,我们提供未阈值化的掩码对数几率而不是二值化的掩码。当返回多个掩码时,传递到下一次迭代并用于采样下一个点的掩码是预测交并比(IoU)最高的那个。

我们发现在 8 个迭代采样点 (我们测试了 16 个) 之后收益递减。此外,为了鼓励模型从所提供的掩膜中受益,我们还使用了两个更多的迭代,其中没有额外的点被采样。其中一次迭代在 8 个迭代采样点中随机插入,另一次始终在最后。这给出了 11 个总的迭代:一个采样的初始输入提示,8 个迭代采样点,以及两个迭代,其中没有向模型提供新的外部信息,因此它可以学习改进自己的掩码预测。我们注意到使用相对较大的迭代次数是可能的,因为我们的轻量级掩码解码器需要不到图像编码器计算量的 1 %,因此,每次迭代只增加很小的开销。这与以往每次优化器更新[ 70、9、37、92]只执行一个或少数几个交互步骤的交互方式不同。

训练方案

我们使用AdamW [68]优化器(β₁=0.9,β₂=0.999),并采用线性学习率预热[42]策略,预热迭代次数为250次,随后使用阶梯式学习率衰减调度。预热后的初始学习率(lr)为8e⁻⁴。我们共训练90k次迭代(约相当于2个SA-1B epoch),并在60k次迭代时将学习率降低10倍,在86666次迭代时再次降低10倍。批处理大小为256张图像。为了对SAM进行正则化,我们将权重衰减(wd)设为0.1,并应用随机深度[53](dp),比率为0.4。我们使用0.8的分层学习率衰减[5](ld)。不施加任何数据增强。SAM的初始化参数来自经MAE [47]预训练的ViT-H模型。由于图像编码器规模较大且输入尺寸为1024×1024,我们将训练任务分配到256个GPU上。为了限制GPU内存占用,每个GPU最多训练64个随机采样的掩码。此外,我们发现对SA-1B掩码进行轻度筛选(剔除覆盖面积超过图像90%的掩码)能显著提升结果质量。

对于训练中的消融实验和其他变体(例如,文本到掩码§D.5),我们对上述默认方案进行如下修改。仅使用第一阶段和第二阶段数据引擎的数据进行训练时,我们采用大规模抖动[40]对输入进行增强,缩放范围为[0.1, 2.0]。直观地说,当训练数据较为有限时,数据增强可能会有所帮助。为了训练 ViT-B 和 ViT-L,我们使用 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。

B. 自动掩码生成细节

在此,我们讨论用于生成已发布的 SA-1B 的数据引擎全自动阶段的细节。

裁剪

掩码是从全图像上 32×32 点的规则网格以及分别使用 16×16 和 8×8 规则点网格,由 2×2 和 4×4 部分重叠窗口生成的 20 个额外放大图像裁剪区域生成的。裁剪时使用了原始高分辨率图像(这是我们唯一一次使用它们)。我们移除了接触裁剪区域内部边界的掩码。我们分两个阶段应用标准的基于贪婪框的非极大值抑制(为提高效率使用了框):首先在每个裁剪区域内,其次跨裁剪区域。在裁剪区域内应用非极大值抑制时,我们使用模型预测的交并比(IoU)对掩码进行排序。跨裁剪区域应用非极大值抑制时,我们根据掩码的来源裁剪区域,从放大倍数最高(即来自 4×4 裁剪区域)到放大倍数最低(即原始图像)对掩码进行排序。在这两种情况下,我们都使用 0.7 的非极大值抑制阈值。

过滤

我们使用了三个过滤器来提高掩码质量。首先,为了仅保留置信度高的掩码,我们以 88.0 的阈值根据模型预测的 IoU 分数进行过滤。其次,为了仅保留稳定的掩码,我们通过在不同值下对同一底层软掩码进行阈值化,比较得到的两个二值掩码。只有当-1 和+1 阈值化掩码对之间的 IoU 等于或大于 95.0 时,我们才保留预测结果(即通过对 logits 在 0 处进行阈值化得到的二值掩码)。第三,我们注意到偶尔会有一个自动掩码覆盖整个图像。这些掩码通常没有意义,我们通过移除覆盖图像 95%或更多的掩码来过滤它们。所有过滤阈值的选择都是为了在获得大量掩码的同时,达到专业注释人员使用§5 中描述的方法所评判的高掩码质量。

后处理

我们观察到了两种容易通过后处理减轻的错误类型。首先,估计有 4 %的掩模包含小的、虚假的成分。为了解决这些问题,我们去除了面积小于 100 像素 (包括如果最大分量小于该阈值, 则移除整个掩膜) 的连通区域。其次,另一个估计的 4 %的掩模包含小的,虚假的空洞。为了解决这些问题,我们填充了面积小于 100 像素的空洞。孔洞被鉴定为倒置面具的成分。

掩模自动生成模型

我们训练了一个用于全自动掩码生成的特殊版本的 SAM,牺牲了一定的推理速度来提高掩码生成性能。我们注意到我们的默认 SAM 和这里用于数据生成的 SAM 的不同之处:它只在手动和半自动数据上训练,它在大规模抖动数据增强的情况下训练更长的 ( 177656 次迭代代替 90k 次迭代) [ 40 ],在训练 (从我们默认的 9 个减少到 4 个, 加快了训练迭代的速度, 对 1 分的性能没有影响, 但如果用更多的点进行评估, 会损害 mIoU) 时模拟交互训练只使用点和掩码提示 (没有方框) 并且每个掩码只采样 4 个点,最后掩码解码器使用 3 层而不是 2 层。

Sa - 1b 实例

图 2 为 SA - 1B 样品。更多的例子请参见我们的数据集浏览器。

CDEFG 略

http://www.lryc.cn/news/610074.html

相关文章:

  • opencv引入libavif
  • 模拟IC设计提高系列8-运算跨导放大器OTA Operational Transconduct Amplifiers
  • 家事速配西安项目启动会圆满举行,开启社区服务新篇章
  • 决策树(回归树)全解析:原理、实践与应用
  • 【动态规划 | 回文字串问题】动态规划解回文问题的核心套路
  • 打卡day28
  • Memcached缓存与Redis缓存的区别、优缺点和适用场景
  • Java 大视界 -- Java 大数据在智能交通智能停车诱导与车位共享优化中的应用(381)
  • 【C#】操作Execl和Word文件-1
  • orchestrator部署
  • 11.Linux 权限管理,控制对文件的访问(ACL)
  • git操作命令和golang编译脚本
  • 【Spring】SpringBoot 自动配置,@ComponentScan、@Import、ImportSelector接口
  • 【QT】安装与配置
  • 计量学基础 - (二)计量单位制
  • NX982NX984美光固态闪存NX992NY102
  • 高速信号设计之 PCIe6.0 篇
  • Linux之Shell脚本快速入门
  • 【2025最新】Spring Boot + Spring AI 玩转智能应用开发
  • 微服务的编程测评系统10-竞赛删除发布-用户管理-登录注册
  • 雷达系统工程学习:自制极化合成孔径雷达无人机
  • Flask全栈入门:打造区块链艺术品交易所
  • Oracle 定时任务相关
  • Tomcat虚拟主机配置详解和多实例部署
  • k8s的毫核
  • 太阳光模拟器塑料瓶暴晒试验
  • Vue2实现docx,xlsx,pptx预览
  • P1002 [NOIP 2002 普及组] 过河卒
  • ubuntu22.04系统实践 linux基础入门命令(三) 用户管理命令
  • SpringMVC实战指南:从环境搭建到功能实现全解析