SAM(Segment Anything Model),为分割一切,由Facebook的Meta AI实验室在2023年发布,能够根据文本指令或图像识别,实现对任意物体的识别与分割。
论文地址:https://arxiv.org/abs/2304.02643
项目地址:https://github.com/facebookresearch/segment-anything
SAM从任务(task)、模型(model)、数据(data)3部分展开。
一.任务
SAM借鉴了NLP领域的Prompt策略,通过给图像分割任务提供Prompt提示来完成任意目标的快速分割。Prompt类型可以是前景/背景点集、粗略的框或遮罩、任意形式的文本或者任何指示图像中需要进行分割的信息。模型的输入是原始的图像和一些prompt,目标是输出有效的分割。
二.模型
SAM 由3个主要部分组成:图像编码器、提示编码器和mask解码器。
1.Image encoder
将输入图像映射到特征空间,主要依赖于预训练好的ViT(vision Transformer)模型,该模型基于 MAE(masked auto encoder)方法进行训练。
2.Prompt encoder
提示分为离散(points、boxes、text)和稠密(masks)2类。通过位置编码来表示点和框,并使用CLIP的现成文本编码器来表示自由格式文本。稠密提示(即掩码)使用卷积编码,并与图像嵌入逐元素求和。
3.Mask decoder
掩码解码器有效地将图像编码、提示编码和输出token映射到掩码。
(1)prompt toekns+output tokens进行self attn;
(2)用得到的token和image embedding进行 cross attn(token作为Q);
(3)point-wise MLP 更新token;
(4)用image embedding和(3)的token进行cross atten(image embedding作为Q);
重复上述步骤2次,再将attn再通过残差进行连接,最终输出masks和iou scores。
4.解决歧义
对于1个输出,如果提示是不明确的,那么会有多个mask可以匹配。为了实现这个歧义建模,我们修改模型对单个提示预测多个mask。
实际发现,3个掩码输出足以解决大多数常见情况(嵌套掩码通常最多有三个深度:整体、部分和子部分)。在训练过程中,只在掩码上反向传播最小的损失。为了对掩码进行排序,模型预测每个掩码的置信度得分(即估计的IoU)。
5.损失和训练
使用的focal loss和dice loss的线性组合来监督掩模预测。使用几何提示的混合来训练可提示的分割任务。通过在每个掩码的11轮中随机采样提示来模拟交互式设置,使SAM能够无缝集成到我们的数据引擎中。
三.数据引擎
建立1个数据引擎来收集1.1亿掩码数据集SA-1B。数据引擎有3个阶段:(1)模型辅助的手动标注阶段,(2)混合了自动预测掩码和模型辅助标注的半自动阶段,以及(3)全自动阶段。
1.辅助手动阶段
类似于经典的交互式分割,一组专业标注人员通过使用SAM提供的基于浏览器的交互式分割工具点击前景/背景对象点来标记掩码。掩码可以使用像素精度的“画笔”和“橡皮擦”工具进行细化。没有对标记对象施加语义约束,标注者可以自由地标记“stuffs”和“things”。建议标注者标记他们可以命名或描述的对象。标注者被要求按照显著的顺序标记对象,一旦遇到某些图片需要标注掩码超过30秒,标注者将被鼓励去标注下一张图片。
2.半自动阶段
该的目标是增加掩码的多样性。为了将标注者集中在不太突出的对象上,首先自动检测到置信度高的掩码。然后,向标注者展示了预先填充了这些掩码的图像,并要求他们标注任何其他未标注的对象。为了检测置信度高的掩码,使用通用的“objject”类别在所有第一阶段掩码上训练了1个边界框检测器。最终,在180k张图像中额外收集了590万个掩码(总共1020万个掩码)。每张图像的平均掩码数量从44个增加到72个(包括自动掩码)。
3.全自动阶段
开发模糊感知模型,即使在模糊的情况下也能够预测有效的掩码。具体来说,用32×32的规则网格提示模型,并为每个点预测一组可能对应于有效对象的掩码。对于模糊感知模型,如果1个点位于部分或子部分上,我们的模型将返回子部分、部分和整个对象。模型的IoU预测模块用于选择置信度高的掩码;只识别和选择稳定的掩码。
最后,在选择了置信度高的和稳定的掩码后,利用非最大值抑制(NMS)来过滤重复。将全自动掩模生成应用于数据集中的所有1100万张图像,总共生成了11亿个高质量掩码。
四.数据集
SA-1B由1100万多样、高分辨率、许可和隐私保护的图像和使用数据引擎收集的11亿高质量分割掩码组成。
1.Images
从一家直接与摄影师合作的供应商那里获得了一组1100万张新图像的许可。这些图像具有高分辨率(平均3300×4950像素),由此产生的数据大小可能会带来访问和存储方面的挑战。因此,正在发布最短边设置为1500像素的下采样图像。
2.Masks
数据引擎产生了11亿个掩码,其中99.1%是完全自动生成的。将它们直接与专业注释进行比较,并观察各种掩码属性。得出结论为:自动mask质量高,对训练模型有效。受这些发现的启发,SA-1B仅包括自动生成的掩码。
3.掩码质量
为了估计掩模质量,随机采样了500张图像(约5万个掩码),并要求专业标注人员提高这些图像中所有掩码的质量。标注人员使用模型和像素精确的“画笔”和“橡皮擦”编辑工具来完成这项工作。这一过程产生了一对自动预测和专业校正的掩码。计算每对之间的IoU,发现94%目标对的IoU大于90%(97%的对的IoU大于75%)。相对于各种数据集,掩码质量很高。
4.掩码属性
在下图中,与现有最大的分割数据集相比,我们绘制了SA-1B中对象中心的空间分布。
观察到,与分布最相似的两个数据集LVIS v1和ADE20K相比,SA-1B具有更大的图像角覆盖范围,而COCO和Open Images V5具有更显著的中心偏差。
由于我们的数据集每个图像有更多的掩码,因此它也倾向于包括更大比例的中小型相对大小掩码。为了分析形状复杂性,我们观察图中的掩码凹度(1减去掩码面积除以掩码凸包的面积)。由于形状复杂度与掩码大小相关,通过从掩码大小执行分层采样来控制数据集的掩码大小分布。观察到,掩码的凹陷分布与其他数据集的凹陷分布大致相似。
五.RAI分析
通过调查使用SA-1B和SAM时潜在的公平问题和偏见,对工作进行Responsible AI (RAI) analysis。重点关注SA-1B的地理和收入分配,以及SAM在受保护的人的属性中的公平性。
六.实验
介绍SAM的零样本迁移实验,考虑了5个任务。
1.零样本单点的有效掩码评估
:评估从单个前景点分割对象。标注者对掩码质量的评分从1(无意义)到10(像素完美)。
使用mIoU对23个数据集的全套数据集进行自动评估。观察上图中每个数据集中与RITM的对比结果。SAM在23个数据集中的16个数据集上产生了更高的结果,高达约47 IoU。
2.零样本边缘检测
具体来说,使用前景点的16×16规则网格提示SAM,得到768个预测掩码(每个点3个)。NMS移除冗余掩码。然后,使用无阈值掩码概率图的Sobel滤波和标准轻量级后处理(包括边缘NMS)来计算边缘图。
在BSDS500数据集上,与其他方法的结果对比如下图所示。
与ground-truth相比,SAM预测了更多的边缘,包括BSDS500中未标注的合理边缘。
3.零样本对象建议
为了生成对象建议,将掩码作为建议输出。
SAM在中型和大型对象以及稀有和常见对象上的性能优于ViTDet-H,在小对象和频繁对象上表现不佳,其中ViTDet-H可以很容易地学习LVIS特定的标注偏差,因为它是在LVIS上训练的。
4.零样本实例分割
使用SAM作为实例分割器的分割模块。具体地,运行1个目标检测器(ViTDet),并用它的输出框提示SAM。
标注者在之前使用的1到10质量等级上对ViTDet掩码和SAM掩码进行评分。
在上图中观察到,SAM在人工评估中始终优于ViTDet。
5.零样本文本到掩码
具体地,对于每个面积大于10000的手动收集的掩模,提取CLIP图像嵌入。
在训练过程中,用提取的CLIP图像嵌入作为SAM的第一次交互来提示SAM。因为CLIP的图像嵌入被训练为与文本嵌入对齐,所以可以使用图像嵌入进行训练。也就是说,在推理时,通过CLIP的文本编码器运行文本,然后将生成的文本嵌入作为SAM的提示。