Segment Anything Model(SAM)
Segment Anything Model(SAM)是Facebook Research近期开源的一种新型图像分割任务模块。该模型能够根据输入提示信息(如点或框)精确预测出目标区域,并支持全面覆盖整个图像的所有对象区域生成掩模。经过在包含约1.1×107张图像和约1.1×108个掩模的数据集上的训练实践,该模型已展现出显著的零样本迁移能力,并实现了零样本迁移至新图像分布及新任务的目标。其显著超越当前领域最佳算法(SOTA)的分割性能表现令人印象深刻。
该系统代码位于GitHub平台上的开源仓库
1 概述
SAM(Segment Anything Model)是一种强大的基于语言模型的分割工具。它借鉴了NLP领域中的提示机制,并将其应用到图像分割任务中。该模型通过提供相应的提示信息来实现对任意目标对象的高效分割。这些提示可以包括前景区域和背景区域的关键点、粗略边界框、遮罩图、任何形式的文字描述以及指示需要分割区域的其他相关信息。该任务的具体输入包括原始图像数据和附加提示语,并将输出结果定义为图片中不同目标区域对应的掩码信息。

2 Segment Anything Task
将NLP领域的提示概念转化为图像分割领域的表示。在该领域内, 提示可能表现为前景和背景特征点集, 粗略边界或遮罩, 自由文本描述, 或者一般指示图像中的特定区域标记。因此,在提供任意形式的指导时进行可指导式的图像分割任务旨在生成合理的区域划分结果。所谓的‘有效’遮罩是指即使提供的指导模糊且涉及多个物体类别,在这种情况下也应生成至少一个物体区域对应的合理遮罩。
3 Segment Anything Model
用于实现提示式分割功能的Segment Anything Model (SAM)架构由三个关键模块构成:图像编码模块、提示处理模块和mask解码模块。

Image encoder(图像编码器) 采用了基于预训练Vision Transformer (ViT) 的架构设计。该方法旨在增强模型的扩展性并充分释放预训练技术的优势。通过将MAE应用于高分辨率输入数据,在不影响性能的前提下显著降低了计算复杂度。这种设计确保了每个输入图像仅进行一次编码处理过程,并可在后续提示模型调用时直接输出结果
Prompt encoder 提示编码器分别研究稀疏型提示(如点、框及纯文本)与密集型提示(如掩码)。对点型和框型的稀疏型提示,则采用位置编码机制[95]进行表征,并叠加每种类型特定的学习嵌入。针对自由形式的输入信息,则直接调用现成的CLIP [82]语言模型进行编码。而针对密集型指示(如图像遮罩),则采用卷积神经网络提取其特征表示,并将其与主图像的空间信息进行逐像素融合。
该编码器最后也是编码器的一部分。该编码器通过高效地将图像、提示以及输出令牌转化为掩盖层。采用了基于修改后的Transformer编码器块,并紧跟一个动态预测掩盖头。双向自注意力机制更新了所有输入特征。经过放大处理后应用多层感知机得到动态线性分类模型,在每个像素点推算出前景概率。
The system resolves ambiguity by addressing the ambiguity issue. In cases where a model produces a single output, it may average multiple valid masks. The model has been modified to predict multiple output masks for a single prompt. The approach is capable of predicting up to three masks, which typically suffice for most common scenarios (as nested masks are generally limited to three levels: whole, part, and subpart). To enhance training efficiency, we focus on the smallest mask loss and propagate this backward to guide the model toward more accurate predictions. We also assign confidence scores to each mask and rank them accordingly. These scores are calculated based on the intersection over union (IoU) between predicted and ground truth masks.
该模型旨在追求高效性,在给定已预先计算好的图像嵌入向量的前提下,在Web浏览器中基于CPU进行处理。提示编码器与掩码解码器能够在Web浏览器中基于CPU进行处理所需时间大约为50毫秒。这种高性能使得我们的模型得以实现无缝且实时的交互式提示。
Losses and training的概念被强调了 。为了实现监督性预测mask的任务,在模型架构中融合了Focal Loss与Dice Loss这两种损失函数的优势特性。通过引入一系列基于几何形状的设计来辅助模型进行可解释性的分割任务。通过在每个mask中随机抽取11次反馈以模拟交互过程,并确保SAM能够无缝集成到数据引擎中。
4 Segment Anything Data
4-1 Segment Anything Data Engine
由于分割掩码的可用性有限,在互联网资源中较为稀缺的情况下
Assisted-manual stage:在模型辅助的手动注释阶段初期, 利用广泛认可的公共分割数据集对SAM进行了基础训练. 随着标注样本数量的增加, 我们采用新增标注样本生成的新掩模版本对SAM进行了优化更新,并对图像编码器进行了优化升级, 并对其其他架构细节进行了细致调整. 在这一辅助阶段中, 类似于经典的交互式分割方法, 在一个基于浏览器的支持界面中, 由一组专业标注员通过点击前景/背景对象点来生成mask. 我们不对annotating过程施加任何语义限制或约束, 并指导annotating员根据物体显著性程度进行mask标记. 为了提高annotating质量, 我们鼓励annotating员尽可能为可识别的目标命名和描述它们.
在这个阶段,我们从120k个图像中收集了4.3M个掩模。
Semi-automatic stage: 在半自动化阶段中, 我们的目的是通过多样化的方式增强模型的表现能力. 为了使注释者能够更加专注于细节对象, 我们首先实现了具有高置信度的关键区域识别. 接着将这些预计算区域应用到原始图像上, 并要求注释者标注剩余未被覆盖的部分. 为了实现这一目标, 我们采用了统一分类器并在此基础上训练了一个高效的边界检测器来确定置信区域. 在这一阶段结束后, 我们获得了额外5.9百万个新掩模, 总计达到了1020万份高质量数据集.
Fully automatic stage: 完全自动化阶段实现了标注过程的全自动化。这一过程得益于我们在上一阶段积累的足够基础掩模样本以及当前阶段的独特算法框架设计。具体而言,在这一过程中经历了两项关键性的优化步骤:首先,在开始阶段我们累积并整合了充足的训练数据作为基础掩模样本,并涵盖来自上一阶段的各种类型掩模实例作为参考模板;其次,在当前阶段我们开发了一种能够识别图像模糊区域的独特算法框架,并在此基础上对每个采样点生成多个候选目标区域候选框以提高预测精度。通过这种多维度的数据融合方法,在面对图像中各层次模糊情况时能够精准预测出潜在的有效目标区域。在这一过程中我们还设计了一个IoU(交并比)预测模块来筛选出具有高置信度的目标框;此外为了保证结果的一致性与稳定性我们还确定了一套基于概率阈值的方法论:即当概率图在δ区间内波动时置信度较高的目标框会被选中(我们认为如果将概率图阈值设置为0:5-δ和0:5+δ得到的结果相似的一致性较高的目标框即为稳定的候选框)。最后在完成上述筛选工作后我们应用非最大值抑制(NMS)算法对重复的目标框进行去重处理以确保输出结果的质量与准确性的同时我们也对较小尺寸的目标框进行了多角度的数据增强处理从而进一步提升了其适用性和泛化能力
4-2 Segment Anything Dataset
我们的数据集SA-1B包含了多样化的高清图像样本(共约1.1亿张),这些图像样本均获得许可并经过隐私保护处理后获取;此外还包含高质量分割掩码(共计约1.1亿个),这些数据由我们的数据采集引擎自动生成。

Images图像 ,我们从摄影师直接合作的供应商获得了高达11百万张新Images图像 。每张图片的分辨率均为33百零三十二十乘以四千九百五十像素(即33:49.5的比例),然而由于其庞大的数据量可能会导致访问和存储上的难题。因此我们发布的所有图片均经过降采样处理 最短边长度设定为一十五百零零像素。即便如此 我们的图片分辨率依然远高于许多现有视觉基准的数据集 比如COCO基准中的图片大小约为四百八十分之六十四十分像素。
Masks(掩码)这一术语在我们的研究中具有重要性
Mask quality
