SAM

Kirillov 2023 · 论文

一句话总结 — Segment Anything:一个可提示分割基础模型,在来自1100万张图像的11亿个掩码上训练,能够零样本地根据点、框或掩码提示分割任意物体。

问题

分割研究曾被分割成一系列特定任务的模型——交互式、语义、实例、全景——每种都需要自己的标注数据集和训练流程,且都无法零样本迁移到新的图像分布或新任务。NLP已经证明,在可提示任务上以足够规模训练的基础模型可以泛化到它从未被明确训练过的任务。Segment Anything项目探讨了分割领域中对应的任务模型数据集应该是什么——问题在于掩码在互联网上并不天然大量存在,因此十亿规模的标注必须被人工制造出来。

方法与架构

该项目包含三个相互关联的组成部分:一个可提示分割任务(对任意提示——点、框、掩码,或探索性的自由文本——返回一个有效的掩码)、模型(SAM),以及产生SA-1B的数据引擎

SAM包含三个模块,设计上使得开销最大的部分可以按图像摊销:

歧义性:单次点击可以合理地指代整体/部分/子部分,因此SAM为每个提示预测3个输出掩码,并各自附带预测的IoU置信度;训练时只对三者中损失最小的那个做反向传播。掩码监督为focal loss和dice loss的线性组合,交互式设置通过对每个掩码模拟11轮提示采样来实现。

数据引擎(模型参与循环,三个阶段):(1)辅助人工——标注员在SAM参与循环的情况下点击标注,来自12万张图像的430万个掩码,随着模型被重新训练6次,每个掩码耗时从34秒降至14秒;(2)半自动——SAM预先填充有信心的掩码,标注员补充剩余部分,新增来自18万张图像的590万个掩码;(3)全自动——用32×32的点网格提示SAM,保留有信心(预测IoU高)且稳定(在0.5δ0.5-\delta0.5+δ0.5+\delta处对概率图取阈值得到相似掩码)的掩码,用NMS去重。将其应用于全部1100万张图像,得到SA-1B:11亿个掩码,约每张图像100个掩码,图像数量是Open Images的11倍,掩码数量是其400倍;发布的图像被下采样到最短边1500像素。

实验结果

对SLAM的意义

SAM为SLAM系统按需提供了类别无关的物体掩码——这正是开放词汇语义建图缺失的关键要素。与文本提示检测器搭配使用(Grounded SAM = Grounding DINO + SAM),它驱动了ConceptGraphs和Clio等3D场景图和开放词汇建图系统,并为动态物体移除提供了干净的掩码。它按图像摊销的设计(重编码器运行一次,廉价提示运行多次)与SLAM关键帧流水线相契合,其视频版后继者SAM 2还增加了SLAM在帧间实际需要的时间一致性。

相关条目