一、简介
这是一个新的图像分割任务、模型和数据集。我们建立了迄今为止最大的分割数据集,其中包含了超过11M张经过授权和尊重隐私的图像,分割掩码总数达到10亿。我们的模型经过设计和训练,可以接受提示,因此可以在新的图像分布和任务上进行零样本迁移。我们对其在众多任务上的能力进行评估,并发现其零样本性能令人印象深刻,往往与甚至优于以前的完全监督结果。我们发布了“Segment Anything”模型(SAM)和相应的数据集(SA-1B)。具体信息请参见https://segment-anything.com。
二、方法
我们接下来介绍用于可提示分割的Segment Anything Model (SAM)。SAM包括三个组件,如图所示:一个图像编码器,一个灵活的提示编码器和一个快速的掩模解码器。
图像编码器。基于可扩展性和强大的预训练方法,我们使用了一个被MAE预训练的Vision Transformer (ViT),最小程度上适应处理高分辨率输入。图像编码器对每个图像运行一次,并可以在提示模型之前应用。
提示编码器。我们考虑两组提示:稀疏提示(点、框、文本)和密集提示(掩模)。我们将点和框表示为位置编码,并将每个提示类型的学习嵌入与自由形式文本一起求和,使用CLIP的现成文本编码器。使用卷积将密集提示(即掩模)嵌入,并将其逐元素求和与图像嵌入一起。
掩模解码器。掩模解码器高效地将图像嵌入、提示嵌入和输出令牌映射到掩模。这种设计受到的启发,采用Transformer解码器块的一个修改,后面紧随动态掩模预测头部。我们的修改解码器块在两个方向上使用提示自注意力和交叉注意力(提示到图像嵌入和反之亦然)来更新所有嵌入。运行两个块后,我们上采样图像嵌入,并使用MLP将输出令牌映射到动态线性分类器,然后计算每个图像位置的掩模前景概率。
解决模糊性。对于一个模糊的提示,模型会平均多个有效掩模,以解决模糊性。为了解决这个问题,我们修改模型,为一个单一提示预测多个输出掩模(见下图)。我们发现3个掩模输出足以解决大多数常见情况(嵌套掩模通常最多只有三层:整体、部分和子部分)。在训练期间,我们仅反向传播掩模的最小损失。为了对掩模进行排序,模型为每个掩模预测置信度分数(即估计的IoU)。
损失和训练。我们使用中使用的焦点损失和Dice损失的线性组合来监督掩模预测。我们使用几何提示的混合训练可提示分割任务。按照的做法,我们模拟一个交互式设置,对每个掩模随机采样11轮,使SAM能够无缝地融入我们的数据引擎。
三、局限
虽然SAM的表现很好,但它并不完美。它可能会错过细微的结构,有时会产生小的断开组件,并且不会像“放大”等计算量更大的方法那样产生清晰的边界。一般来说,当提供许多点时,我们期望专门的交互式分割方法能够优于SAM。与这些方法不同,SAM被设计为通用性和使用范围的广泛性,而不是高IoU交互式分割。此外,当使用重型图像编码器时,SAM可以实时处理提示,但SAM的整体性能仍不是实时的。我们对文本到掩码任务的探索性质并不完全健壮,尽管我们相信通过更多的努力可以改进它。虽然SAM可以执行许多任务,但如何设计简单的提示来实现语义分割和全景分割仍不清楚。最后,有一些特定领域的工具,我们认为在其各自领域中能够优于SAM。