论文阅读:SAM-分割一切

Segment Anything

1.Introduction

在NLP和最近的计算机视觉中,基础模型是一个很有前途的发展,它可以通过使用"提示(prompt)"技术来对新的数据集和任务进行零样本和少样本学习。受此启发,本文提出了可提示的分割任务,其目标是在给定任何分割提示(见图1a)的情况下,返回一个有效的分割掩码。提示符只是简单地指定在图像中分割什么,例如,提示符可以包含识别对象的空间或文本信息。有效输出掩码的要求是指即使一个提示是模糊的,可以指代多个对象(例如,衬衫上的一个点既可以表示衬衫,也可以表示穿着它的人),输出也应该是其中至少一个对象的合理掩码。使用可提示的分割任务作为预训练目标,并通过提示工程解决一般的下游分割任务。


图1

2.Model

SAM有三个组件,如图2所示:图像encoder、灵活的提示encoder和快速掩码decoder。

图2

2.1 image encoder

受可伸缩性和强大的预训练方法的启发,我们使用MAE预训练的视觉转换器( Vision Transformer,ViT ) 来处理高分辨率输入。图像编码器每张图像运行一次,在提示模型之前应用。

2.2 prompt encoder

提示被分成两组,即稀疏提示和稠密提示,稀疏提示包括点、框、文本,稠密提示包括mask。通过位置编码来表示点和框,文本使用CLIP作为encoder,密集的提示(即掩码)使用卷积进行嵌入,并通过图像嵌入进行元素求和。

2.3 mask decoder

掩码解码器有效地将图像嵌入、提示嵌入映射到掩码。采用了一个修改后的Transformer解码器模块,然后是一个动态掩码预测头。整个解码器块使用两个方向的提示自注意力和交叉注意力来更新所有嵌入。运行两个块后,对图像嵌入进行上采样,MLP将输出令牌映射到一个动态线性分类器,然后在每个图像位置计算掩码前景概率。

2.4 Resolving ambiguity

对于一个输出,如果给定一个模糊提示,模型将平均多个有效掩码。为了解决这个问题,我们修改模型来预测单个提示(见图3)的多个输出掩码。我们发现3个掩码输出足以解决大多数常见的情况(嵌套masks往往最深至三个:整体、部分、子部分)。为了对掩码进行排序,模型预测每个掩码的置信度得分(即,估计IoU)。


图3

3.Data Engine

利用在数据收集循环中的高效模型构建了超大的分割数据集:SA-1B,包含了11M多样化、高分辨率、许可和隐私保护图像和1.1 B高质量分割掩码。


图4

该数据引擎分为3个阶段:

  1. 模型辅助人工标注阶段;
  2. 自动预测掩码与模型辅助标注混合的半自动阶段;
  3. 全自动阶段,模型无需标注器输入即可生成掩码。

3.1 Assisted-manual stage

在第一阶段,类似于经典的交互式分割,由专业标注人员组成的团队使用SAM提供的基于浏览器的交互式分割工具,通过点击前景/背景对象点来标记掩码。masks可以使用像素精确的"毛笔"和"擦除器"工具进行精确标注。我们的模型辅助标注直接在浏览器(使用预计算的图像嵌入)内部实时运行,实现了真正的交互体验。我们没有对标注对象施加语义约束,标注者自由地标注"东西"和"事物" 。我们建议注释者标注他们可以命名或描述的对象,但不收集这些名称或描述。要求标注者按显著性顺序标注物体,鼓励其在掩码花费超过30秒的时间进行标注后继续下一张图像。

在这个阶段的开始,SAM使用公开的公共分割数据集进行训练。在充分的数据标注后,仅使用新标注的掩码重新训练SAM。随着更多的掩膜被收集,图像编码器从ViT - B缩放到ViT - H演变;总共我们重新训练了6次模型。随着模型的改进,平均每个掩码的标注时间从34秒减少到14秒,平均每幅图像的掩模数量从20个增加到44个。总体而言,本阶段我们从120k张图像中采集了4.3 M的掩膜。

3.2 Semi-automatic stage

在这个阶段,旨在增加掩码的多样性,以提高我们的模型对任何事物的分割能力。为了将标注者的注意力集中在不太突出的对象上,我们首先自动检测出可信的掩码。然后,我们向标注者展示预先填充了这些masks的图像,并要求他们对任何其它的未标注对象进行标注。为了检测可信的掩码,我们使用通用的"对象"类别在所有第一阶段掩码上训练一个边界框检测器。在这一阶段,我们在180k张(共计10.2 M masks)的图像中额外采集了5.9 M的掩码。与第一阶段一样,我们在新收集的数据上周期性地重新训练我们的模型( 5次)。由于这些对象更具有挑战性,每个掩码的平均注释时间回到了34秒。

3.3 Fully automatic stage

在最后阶段,注释是完全自动的。这是可行的,因为我们的模型有两个主要的改进。首先,在这个阶段开始时,我们已经收集了足够的掩码来极大地改进模型,包括上一阶段的多样化掩码。其次,到了这个阶段,我们已经开发了歧义感知模型,它允许我们预测即使在歧义的情况下也是有效的掩码。具体来说,我们用一个32 × 32的规则网格点来提示模型,并为每个点预测一组可能对应有效对象的掩码。在歧义感知模型中,如果一个点位于一个部分或子部分上,我们的模型将返回子部分、部分和整个对象。我们模型的IoU预测模块用于选择可信的掩码;此外,我们只识别并选择了稳定的掩码(如果在0.5 - δ和0.5 + δ处对概率映射进行阈值化可以得到相似的掩码,我们就认为掩码是稳定的)。最后,在选择可信且稳定的掩码后,我们应用非极大值抑制( NMS )来过滤重复数据。为了进一步提高较小掩膜的质量,我们还对多幅重叠缩放后的图像作物进行了处理。

论文地址

代码地址

我很可爱,请给我钱

其他文章
请输入关键词进行搜索