《SAM:Segment Anything》论文精读笔记
参考视频:【论文精读】Segment Anything论文精读(上)_哔哩哔哩_bilibili
论文链接: [2304.02643] Segment Anything
模型链接:Segment Anything | Meta AI
摘要
推出了:面向图像分割的新任务、新模型和新数据集;
模型设计和训练目标具备“prompt”能力,可以零样本迁移到新的图像分布和任务中;
性能出色,与全监督方法结果相当甚至更优。
这一计划的成功取决于三个组成部分:任务、模型和数据。为了开发它们,作者团队解决了以下关于图像分割的问题:
- 什么任务能够实现零样本泛化?
- 相应的模型架构是什么?
- 什么数据可以支持这个任务和模型?
任务
受自然语言处理中“提示”概念的启发,引入了“可提示的分割任务”,即在给定任意形式的提示(如点、框、掩码或文本)的情况下,生成一个有效的分割掩码。这一任务的目标是使模型具备对任意提示生成合理响应的能力,从而适应多种下游任务。
为了实现这一目标,模型在预训练阶段通过模拟各种提示并将其与真实标签进行对比来学习生成分割掩码。这种方法不仅借鉴了交互式分割的思想,还扩展了其应用范围,使模型能够在存在歧义的情况下仍能输出有效结果。
在迁移学习方面,模型可以通过提示工程解决不同的分割任务,例如结合目标检测器实现实例分割。此外,该方法还具备任务泛化能力,能够适应训练时未见过的新任务,而不仅仅是执行固定的多任务组合。
模型架构
SAM 包含三个组成部分,如图4所示:图像编码器、灵活的提示编码器和快速掩码解码器。我们基于 Transformer 视觉模型 进行构建,并在(摊销后的)实时性能方面进行了特定的权衡设计。以下我们对这些组件进行高层次的描述,详细内容见附录A。
图像编码器
受到可扩展性和强大预训练方法的启发,我们采用了基于 MAE 预训练的 Vision Transformer(ViT),并对其进行了最小程度的调整以处理高分辨率输入 。图像编码器针对每张图像运行一次,可以在模型被提示之前预先应用。
提示编码器
我们考虑了两类提示:稀疏提示(如点、框、文本)和密集提示(如掩码)。对于点和框,我们使用位置编码 ,并将其与每种提示类型的可学习嵌入相加;对于自由形式的文本,则使用 CLIP 中现成的文本编码器进行处理。密集提示(即掩码)通过卷积嵌入,并与图像嵌入进行逐元素相加。
掩码解码器
掩码解码器高效地将图像嵌入、提示嵌入和输出令牌映射为掩码。该设计灵感来源于DETR和MaskFormer,采用了对 Transformer 解码器块的修改版本,后接一个动态掩码预测头。我们修改后的解码器块使用提示自注意力和双向交叉注意力(提示到图像嵌入,以及图像嵌入到提示)来更新所有嵌入。在运行两个解码块后,我们对图像嵌入进行上采样,并通过一个多层感知机(MLP)将输出令牌映射为一个动态线性分类器,从而在每个图像位置计算掩码的前景概率。
解决歧义问题
如果模型只输出一个结果,在遇到模糊提示时,它可能会对多个有效的掩码取平均。为了解决这个问题,我们修改了模型,使其在单一提示下能够预测多个输出掩码(见图3)。
我们发现输出3个掩码足以应对大多数常见情况(嵌套掩码通常最多三层:整体、部分和子部分)。在训练过程中,我们仅对多个掩码中的最小损失进行反向传播。为了对掩码进行排序,模型会为每个掩码预测一个置信度得分(即估计的IoU)。
效率
整体模型的设计主要以效率为导向。在图像嵌入已预先计算的情况下,提示编码器和掩码解码器可在网页浏览器中、仅使用CPU的情况下在约50毫秒内完成运行。这种运行效率使得模型能够实现无缝的实时交互式提示。
损失函数与训练
我们使用 焦点损失(focal loss)和 Dice 损失的线性组合作为掩码预测的监督信号。我们使用几何提示的混合数据(文本提示的训练方法见 §7.5)来训练可提示分割任务。我们在每个掩码的11轮迭代中随机采样提示,模拟一个交互式设置,使 SAM 能够无缝地融入我们的数据引擎。
Segment Anything 数据引擎
由于互联网上分割掩码并不丰富,我们构建了一个数据引擎,用于收集我们的11亿掩码数据集 SA-1B。该数据引擎包含三个阶段:(1)模型辅助的手动标注阶段,(2)半自动阶段,包含自动生成的掩码与模型辅助标注的混合,以及(3)完全自动阶段,在此阶段中我们的模型无需标注员输入即可生成掩码。我们将依次详细介绍每个阶段。
辅助手动阶段
在第一阶段,类似于传统的交互式分割,一支专业的标注团队使用基于浏览器的交互式分割工具(由 SAM 提供支持),通过点击前景/背景对象点来标注掩码。可以使用像素级精确的“画笔”和“橡皮擦”工具对掩码进行精细调整。
我们的模型辅助标注直接在浏览器中实时运行(使用预先计算的图像嵌入),从而提供真正的交互体验。我们未对标注对象施加语义限制,标注员可以自由地标注“stuff”和“things”两类对象。我们建议标注员标注他们可以命名或描述的对象,但并未收集这些名称或描述。标注员按照对象的显著性顺序进行标注,并在掩码标注时间超过30秒后鼓励他们转向下一张图像。
“stuff”指没有明确边界或个体实例的区域或背景内容,如天空、草地、道路、墙壁等。
“thing”指由明确边界和个体实例的物体。
在该阶段初期,SAM 是基于常见的公共分割数据集进行训练的;
在收集到足够的标注数据后,SAM 仅使用新标注的掩码重新训练;
随着掩码数量的增加,图像编码器从 ViT-B 扩展到 ViT-H,架构细节也不断演进;
总共重新训练了6次。随着模型的改进,每个掩码的平均标注时间从34秒减少到14秒。
需要注意的是,14秒的速度比 COCO 的掩码标注快了6.5倍,仅比使用极端点进行边界框标注慢2倍。
COCO 的掩码标注:是指像 COCO 数据集那样,标注人员手动画出目标的精确轮廓(polygon)。
极端点进行边界框标注:是指用户只需在目标的上下左右四个极端点点击,系统自动拟合一个边界框(bounding box)。
随着 SAM 的提升,每张图像的平均掩码数量从20增加到44个。
总体而言,我们在此阶段从12万张图像中收集了430万个掩码。
总结:
先使用常用的分割数据集训练SAM;
然后使用初步训练的SAM做交互式分割标注更多的数据集;
当收集到足够多的数据及后重新训练SAM,随着掩码数量的增加VIT从B-->H;
一共训练了6次,每一次都用上次又新增加的数据集加入训练;
速度比coco这种人工标注快,但是比极端点边界框标注慢。
半自动阶段
在第二阶段,我们的目标是增加掩码的多样性,以提升模型分割任何对象的能力。
引导标注员关注不太显著的对象,我们首先自动检测置信度高的掩码。随后,我们将这些掩码预先填充到图像中,并要求标注员标注任何未标注的其他对象。为了检测置信度高的掩码,我们使用所有第一阶段的掩码训练了一个边界框检测器 [Faster RCNN],并将其应用于通用“对象”类别。
在此阶段,我们额外收集了590万个掩码(累计达1020万个掩码)。
与第一阶段一样,我们定期使用新收集的数据重新训练模型(共5次)。由于这些对象的标注难度更高,每个掩码的平均标注时间(不包括自动生成的掩码)又回到了34秒。每张图像的平均掩码数量从44增加到72个(包括自动生成的掩码)。
总结:
目的是为了标注难分割的部分。
将之前训练得到的mask转换成边界框,标签统一定义为“object”用来训练Faster RCNN,这样可以得到图片中的显著的“thing”目标;
得到显著的“thing”后,标注员去标注那些没有被检测出来的区域,也就是“stuff”部分。
全自动阶段
在最终阶段,标注完全自动化。这得益于我们模型的两项重大改进。
首先,在此阶段开始时,我们已经收集了足够多的掩码,显著提升了模型性能,包括前一阶段多样化的掩码;
其次,我们开发了歧义感知模型,即使在模糊情况下也能预测有效的掩码。
具体而言,我们使用一个32×32的规则点网格提示模型,每个点预测一组可能对应有效对象的掩码。借助歧义感知模型,如果一个点位于某个部分或子部分上,我们的模型将返回该子部分、部分和整体对象。我们使用模型的 IoU 预测模块选择置信度高的掩码;
此外,我们仅选择稳定的掩码(我们认为一个掩码稳定是指在0.5−δ和0.5+δ阈值下概率图的二值化结果相似)。
最终,在选择置信度高且稳定的掩码后,我们应用非极大值抑制(NMS)来过滤重复项。
为了进一步提升小掩码的质量,我们还处理了多个重叠的放大图像裁剪。
有关此阶段的更多细节,请参见附录B。我们对数据集中的全部1100万张图像应用了全自动掩码生成,最终生成了11亿个高质量掩码。接下来我们将描述并分析由此生成的数据集 SA-1B。
Segment Anything 数据集(SA-1B)
概述
- SA-1B 是一个大规模图像分割数据集,包含:
- 1100 万张图像:高分辨率。
- 11 亿个高质量的分割掩码(mask):其中 99.1% 是自动生成的。
图像部分
- 图像由与摄影师合作的提供商授权,平均每张图像分辨率高达 3300×4950 像素。
- 为了便于访问和存储,发布了短边为 1500 像素的下采样图像。
- 分辨率显著高于如 COCO(平均 480×640)等主流数据集。
掩码(Mask)质量评估
- 随机抽取 500 张图像(约 50,000 个 mask),由专业标注员进行人工修正。
- 通过交并比(IoU)评估质量:
- 94% 的 mask IoU > 90%
- 97% 的 mask IoU > 75%
- 与人工标注者之间的一致性(85-91% IoU)相比,自动生成的 mask 质量更高。
- 实验表明,使用自动生成的 mask 训练模型效果接近使用完整数据引擎生成的 mask。
解释:
生成的mask和GT计算IOU,94%的mask得到的IOU超过90%;97%的mask得到的IOU超过75%;
两个人工标注者之间的 IoU 大致在 85% 到 91% 之间,自动生成的掩码与人工修正后的掩码之间的重合度,比两个标注者之间的重合度还高。
掩码属性分析
- 空间分布:SA-1B 在图像角落区域的覆盖优于其他数据集,如 LVIS 和 ADE20K。
- 数量对比:
- 图像数量是 Open Images 的 11 倍
- Mask 数量是 Open Images 的 400 倍
- 每张图像平均 mask 数量是 Open Images 的 36 倍
- 相对尺寸分析:SA-1B 包含更多小型和中型 mask。
- 形状复杂度分析:通过凹度衡量 mask 形状复杂度,其分布与其他数据集相似。
零样本迁移实验
待更新