
Segment AnythingSAM总结来源Meta AI Research, FAIRAlexander Kirillov 项目负责、Eric Mintun / Nikhila Ravi 共同一作、Piotr Dollár 与 Ross Girshick 方向负责项目地址https://segment-anything.com 代码与数据以 Apache 2.0 开源前言Segment AnythingSAM研究的是能否为图像分割造一个基础模型foundation model。研究背景与动机语言领域已经证明在海量数据上预训练 提示工程prompt engineering可以让一个模型零样本zero-shot迁移到新任务CLIP 进一步说明提示这一接口在视觉上同样成立。但这套范式在分割上一直没能复制。当前现状视觉基础模型的进展几乎都集中在图文对齐CLIP、ALIGN分割领域则由各任务各自的专用模型主导——交互式分割RITM、FocalClick、边缘检测、目标提议、语义/实例/全景分割各有一套模型与标注协议。以 CLIP 式的思路做分割会立刻撞上一个硬约束互联网上不存在网页规模的掩码数据掩码不像文本与图文对那样天然可获得。本文旨在解决的问题现状中有三个相互纠缠的 gap任务层面现有分割任务都是固定任务的——多任务系统虽然一个模型做多件事但训练任务与测试任务相同无法在推理时应对设计时没见过的任务。模型层面交互式分割模型为人操作设计追求多点击之后的高 IoU缺少一个能在实时、任意提示下都返回合理掩码的通用模型。数据层面没有 web-scale 的掩码数据源也没有可复制的数据生产方式——这正是前两个问题无法解决的根本原因。SAM 的答案是任务、模型、数据三位一体定义可提示分割任务promptable segmentation配套重型图像编码器 轻量提示编码器 轻量掩码解码器的模型再用一个数据引擎data engine让模型与标注互相促进最终产出SA-1B11M 图像、1.1B 掩码的数据集。结果是在 23 个数据集的零样本单点评估中在 16 个上超过最强交互式分割器 RITM最大差距约 47 IoU并零样本迁移到边缘检测、目标提议、实例分割与文生掩码。Figure 1. SA 项目的三个互连组件可提示分割任务、由该任务驱动的分割模型 SAM既支撑数据标注也能通过提示工程零样本迁移到多种任务、以及用于采集 SA-1B超 10 亿掩码的数据引擎。流程图分析Figure 4. SAM 总览。重型图像编码器输出图像嵌入之后可以被多种输入提示高效查询以摊薄后的实时速度产出物体掩码对对应多个物体的歧义提示SAM 可输出多个有效掩码及各自的置信度分数。整条流水线可以拆成3 块来理解任务块§2把 NLP 的提示概念搬到分割上——提示可以是前景/背景点、粗略框或掩码、自由文本任何指明要分割什么的信息。核心要求是输出必须是有效掩码即使提示有歧义比如点在衬衫上可能指衬衫也可能指穿衬衫的人也要给出至少其中一个物体的合理掩码。模型块§3图像编码器MAE 预训练的 ViT-H1024×1024 输入、提示编码器稀疏提示点/框/文本稠密提示掩码、轻量掩码解码器2 层 Transformer 解码器 动态掩码预测头。数据块§4–§5数据引擎三阶段——辅助人工assisted-manual→ 半自动semi-automatic→ 全自动fully automatic模型与数据交替迭代最后对 11M 图像全自动生成 1.1B 掩码。关键姿态图像编码器每张图只跑一次其开销可被后续所有提示摊薄提示编码器与掩码解码器在单 CPU 上约50ms即可出掩码可在浏览器内实时交互。正因如此解码器可以承担大量迭代训练时每样本 11 轮而总开销仍可接受——这是它区别于所有前作的结构性优势。各模块功能对应总结模块作用是否可训练① 图像编码器MAE 预训练 ViT-H/161024×1024 输入 → 64×64、256 通道图像嵌入14×14 窗口注意力 4 个等距全局注意力块是但每图只前向一次② 提示编码器稀疏点 位置编码 前景/背景学习嵌入框 左上/右下角位置编码 对应学习嵌入文本 CLIP 文本编码器是③ 提示编码器稠密掩码提示经两级 2×2 步长卷积降到 1/4 分辨率再与图像嵌入逐元素相加是④ 掩码解码器2 层修改版 Transformer 解码器token 自注意力 → token 到图像的交叉注意力 → MLP → 图像到 token 的交叉注意力输出经 3 层 MLP 产生动态线性分类器是主要计算集中于此⑤ 歧义感知头单提示输出 3 个掩码whole / part / subpart IoU 预测头用于排序多提示时只输出 1 个掩码是⑥ 数据引擎与 SA-1B三阶段人机协同标注全自动阶段用 32×32 点网格 20 个放大裁剪生成掩码经 IoU/稳定性过滤与 NMS 去重否数据生产流程流程解析步骤 1把提示定义为分割任务的接口任务先于模型SAM 不从架构出发而从任务出发。可提示分割任务要求任意提示 → 有效掩码并给出了天然可扩展的预训练算法对每个训练样本模拟一串提示点、框、掩码把预测掩码与真值比较。这一步与经典交互式分割的关键区别在于——交互式分割假设用户点多几下最终能得到正确掩码SAM 要求即使提示有歧义也必须返回某个物体的合理掩码。这个要求直接决定了后面要造歧义感知的多输出结构。步骤 2用重型编码器 轻量解码器做成本解耦模型设计几乎全部服务于效率图像编码器用 MAE 预训练的 ViT-H/16输入 1024×1024缩放 短边填充经 1×1 与 3×3 卷积把通道压到 256输出 64×64 的图像嵌入提示编码器采用位置编码 类型学习嵌入的加和文本提示复用 CLIP 文本编码器掩码解码器只有 2 层且交叉注意力中把 q/k/v 通道降为 128 以省算力。这一分工带来一个反直觉的结论图像编码器可以很贵因为它每图只算一次解码器必须极轻因为它每次提示都要算。步骤 3用多掩码输出解决歧义本文最巧妙的设计单个提示对应多个有效物体时只输出一个掩码的模型会把多个物体平均起来得到一个四不像的结果。SAM 的做法是让模型同时预测3 个掩码依据是嵌套掩码通常最多三层整体 / 部件 / 子部件并训练时只回传损失最小的那个掩码的梯度multiple choice learning 的经典技巧额外用一个头预测每个掩码的IoU 置信度用于排序当输入多于一个提示时只输出 1 个掩码——因为此时歧义基本消失这样也避免退化损失、保证无歧义样本仍能得到规则的梯度信号。Figure 3. 每一列展示 SAM 由同一个有歧义的点提示绿圈生成的 3 个有效掩码。步骤 4构造 11 轮迭代的模拟交互训练回合训练时模拟交互式分割流程首轮以等概率随机取一个前景点或一个框框由真值掩码外接框加噪各坐标标准差为框边长的 10%上限 20 像素以兼顾紧框实例分割与松框用户手绘两种场景之后每轮从上一轮预测与真值的误差区域中采点误差是漏检就取前景点、是误检就取背景点并把上一轮的未阈值化掩码 logits而非二值掩码作为额外提示回灌共11 轮 1 个初始提示 8 个迭代采样点 2 个不提供新信息的自我修正轮一轮随机插入一轮固定在末尾。损失为 focal loss 与 dice loss 的20:1线性组合IoU 头用 MSE 且以权重 1.0 并入掩码损失作者特别指出逐层辅助深监督对此任务无帮助。步骤 5数据引擎三阶段让模型与数据互相抬升对应 §4–§5Figure 13左. 三个数据引擎阶段的累加训练消融。每个阶段都带来提升训练时对人工与半自动掩码过采样 10× 效果最好但仅用自动掩码的性能只低约 0.5 mIoU——因此默认只用自动掩码以简化训练。阶段一辅助人工专业标注员用 SAM 驱动的浏览器工具点击前景/背景点配画笔与橡皮精修不施加语义约束不收集物体名称。平均标注时间从34 秒降到 14 秒比 COCO 快 6.5 倍每图掩码数从 20 升到 44累计 120k 图像 /4.3M 掩码。图像编码器从 ViT-B 扩到 ViT-H模型共重训 6 次。阶段二半自动先用阶段一掩码训一个通用object类别检测器自动找出置信掩码预先填入图像标注员只补标遗漏物体以此提升掩码多样性。新增 180k 图像 /5.9M 掩码累计 10.2M重训 5 次。阶段三全自动用32×32 前景点网格 20 个放大裁剪2×2 与 4×4 部分重叠窗口配 16×16 与 8×8 点网格批量生成再用三重过滤保质量——预测 IoU 88.0、稳定性在 ±1 阈值下掩码 IoU ≥95.0、剔除覆盖 ≥95% 图像的掩码NMS 阈值 0.7 去重。最后去掉面积 100 像素的连通分量与 100 像素的孔洞。1.1B 掩码中 99.1% 由此阶段全自动产生。创新点分析1. 提出可提示分割这一新任务核心贡献本文最本质的创新是一个任务定义给定任意分割提示返回有效掩码。它同时充当预训练目标把分割统一成提示 → 掩码、零样本迁移手段下游任务通过提示工程实现以及组合接口SAM 可作为更大系统中的一个组件。vs 多任务分割系统后者训练与测试任务相同、任务集合固定SAM 的定位是在推理时作为组件去完成一个训练时没见过的任务。2. 成本解耦的三件套架构重型图像编码器 轻量提示编码器与掩码解码器的分工使同一图像嵌入可被任意多个提示复用单 CPU 约 50ms出掩码。这让交互式标注真正可用浏览器内实时也让训练时的 11 轮迭代在算力上可承受。vs 此前交互式分割方法那些方法每次优化器更新只能做 1 次或少数几次交互步骤迭代成本高。3. 歧义感知的多掩码输出 IoU 排序3 个掩码输出、“只回传最小损失的梯度”、“多提示时退化为单掩码”、IoU 头用于排序这一组设计把提示本质上可能指多个物体这一被前作忽略的现实变成了模型的一等公民。消融上也能看到收益去掉歧义感知单输出的 SAM 在目标提议所有 AR 指标上显著更差人工评分也一致更低。4. 数据引擎模型与数据的共演化范式在掩码无法从网上抓取的约束下本文给出了可复制的替代方案——用模型加速标注、再用标注反过来训更强的模型三阶段把标注从人工主导推向半自动再到全自动标注时间从 34 秒降至 14 秒。最终 SA-1B 的掩码数是此前最大分割数据集 Open Images 的400 倍平均每图掩码数是它的 36 倍。作者也验证了纯自动掩码几乎等价于全量数据低约 0.5 mIoU这让全自动产数据这条路站住了。5. 零样本迁移的系统验证 负责任 AI 分析在 23 个来源各异的水下、内窥、X 光、绘画、航拍等数据集上做单点提示评估并用人类评分补充 mIoU——因为单点分割本身是 ill-posed 的自动指标会低估模型。此外本文专门做了 RAI 分析地域与收入分布、跨感知性别/年龄/肤色肤的公平性这在此前的分割论文中并不常见。论文总结贡献回顾任务提出可提示分割任务为分割提供了可预训练、可零样本迁移、可组合的任务接口。模型给出 SAM——重型图像编码器 轻量提示编码器 轻量掩码解码器具备歧义感知与实时提示能力。数据设计数据引擎三阶段流程产出 SA-1B11M 图像 / 1.1B 掩码400 倍于此前最大数据集。验证与开源在 23 数据集与 5 类下游任务上验证零样本迁移附带 RAI 分析模型与数据以 Apache 2.0 开放。实验结果精华实验关键数字含义单点提示分割23 数据集mIoU16/23 优于 RITM最大约47 IoUoracle 选择下全面胜出通用模型在零样本单点上已超专用交互式分割器低绝对 mIoU 主要由歧义导致掩码质量人工评分 1–10SAM 均值落在7–9全面高于 RITM 与单输出消融版自动指标不利的数据集上人工评分反而更高 → 指标与人类判断存在系统性偏差零样本边缘检测BSDS500SAM ODS.768/ R50.928vs Canny .600 / HED .788在 BSDS 上训练的未经边缘训练即接近深度学习早期方法recall 高但 precision 低不学 BSDS 的抑制偏好零样本目标提议LVIS v1AR1000SAM59.3vs ViTDet-H 63.0但 SAM 在中/大目标、罕见/常见类上更好ViTDet 靠检测器伪装成提议器在 AR 上取巧SAM 只在小目标与高频类上落后零样本实例分割COCO / LVISmask APSAM 46.5 / 44.7 vs ViTDet-H 51.0 / 46.6但人工评分 SAM 更高差距来自数据标注偏差如 COCO 掩码质量偏低、LVIS 掩码无孔洞而非掩码质量本身数据与规模消融仅自动掩码比全量低约0.5 mIoU1M 图像约 10%≈ 全量全自动数据路线成立约 100M 掩码是很多场景下的实用规模与前序/相关工作关联本文在阅读库中位于B05是提示 → 输出这条线索上的第二个基础模型与 B04LLaVA构成一组鲜明对照vs CLIPB03CLIP 用对比学习把图文对齐到一个共享空间能力体现在相似度匹配SAM 用监督训练把提示映射到掩码能力体现在任意提示的生成式输出。CLIP 是 SAM 内部的组件之一文本提示与 text-to-mask 训练都借它这是两篇论文之间真实的依赖关系。vs LLaVAB04同为基础模型 提示但提示类型与输出模态相反——LLaVA 吃自然语言、出文本SAM 吃几何提示、出掩码。两者共同定义了语言到像素链条的两端而中间那段语言 → 掩码正是 LISA / GeoPixel 这类工作要补的缺口。vs 交互式分割RITM、FocalClick、SimpleClick目标不同。它们为人点多几次拿到高 IoU设计SAM 为泛化与广度设计作者明确承认多点场景下专用方法会更好。这条界线在评价时必须守住——不能用 SAM 的 1 点结果或它的多点劣势做越界结论。演进逻辑CLIP 对齐语义 → LLaVA 接入指令 → SAM 提供可复用的像素级接口 → LISA / GeoPixel / SAM 2 把语言与像素、图像与视频连通。SAM 提供的是工具不是理解。局限与改进方向也是切入空间训练数据无遥感域SA-1B 是自然图像23 个评估数据集里航拍仅占一个。改进方向在遥感域重估单点提示的表现或直接用遥感数据做域内适配计划 T16 读 SAM 2、T14 读 Grounded SAM 时对照。细结构与极小目标会失败原文明确承认会漏细结构、偶尔幻觉出小的不连通分量、边界不如 zoom-in 类方法锐利。这正好是小目标课题的痛点——是缺口也是可能的贡献点局部放大/多尺度裁剪是否能稳定改善需要受控实验而不是直觉。文本提示只是初步探索text-to-mask 需要改动训练流程用 CLIP 图像嵌入训练、文本嵌入推理且作者自评不完全稳健。改进方向遥感上语言到掩码必须靠专门的语言-像素对齐机制LISA / GeoPixel 路线不能指望 SAM 原生支持。无法用简单提示表达语义/全景分割原文自认不清楚如何设计实现语义与全景分割的简单提示。改进方向把分类从提示侧移到解码侧或在组合系统中由语言模型承担语义分配——这正是大模型 分割器分工的依据。