SAM 2 解读:一次提示贯穿整段视频的分割模型
SAM 2 用流式记忆模块让一次点击跟住整段视频里的对象,视频分割交互比此前方法少约三分之二,图像分割比初代 SAM 快 6 倍。
快速答案
SAM 2 是 Meta AI 的分割基础模型。它的关键能力是:在视频里只提示一次对象,模型就把这个对象跟住整段视频,而不是逐帧重新分割。论文报告,视频分割在更高精度下,所需交互比此前方法减少到约三分之一;在静态图像上,SAM 2 比初代 SAM 更准,而且快 6 倍。支撑这一切的是一个流式记忆模块,以及迄今规模最大的视频分割数据集 SA-V。
从单张图像到一段视频流
初代 Segment Anything 让图像分割变成一种顺手的交互:点一下,拿到干净的 mask,任何东西都能分。视频把这套打破了。对象会移动、变大变小、移出画面、被遮挡、再回来。逐帧调用图像模型,你得到的是一摞互不相关的 mask——模型并不知道第 1 帧的那只狗,就是第 200 帧的那只狗。结果是用户得不停地重新点击。
SAM 2 把任务重新定义为面向「流」而不是「一摞图」的可提示视觉分割。你只在任意一帧提示一次对象——点、框或 mask 都行——模型就把这个身份沿时间向前和向后传播。交互界面和 SAM 一样,变的是:模型现在会记住。
流式记忆模块
架构刻意做得很朴素:一个带记忆机制的 transformer,以流式方式逐帧运行,支持实时处理。每来一帧,模型先编码,再去关注一份过往帧和已有提示的记忆,然后输出当前帧的 mask;这些预测和特征又写回记忆库,于是下一帧带着上下文进来,而不是从零开始。
这里值得下一个判断:真正的贡献不是某个巧妙的损失函数或奇特的主干网络,而是把记忆当成分割模型的一等输入。正因如此,一次提示才能熬过一次遮挡——对象消失又重现时,是记忆在说「这还是你要的那个对象」。逐帧版的 SAM 根本做不到这一点。
SA-V 数据集
流式模型需要流式的监督数据,而这种规模的数据原本不存在。于是 Meta 搭了一个数据引擎:标注员用 SAM 2 本身去标视频,标注训出更强的 SAM 2,更强的模型又让下一轮标注更快。这个闭环产出了 SA-V——论文称其为迄今规模最大的视频分割数据集,覆盖多样场景下的对象与部件。数据集本身就是一项独立成果;对视频分割来说,它比模型权重更像护城河,因为谁都能拿它来训练。
关键结果
- 在更高精度下,视频分割所需交互比此前方法减少到约三分之一——这是最抓人的效率结论,也是用户能直接感受到的:纠正点击更少。
- 在图像分割上,SAM 2 比初代 SAM 更准且快 6 倍,所以它不是只会做视频的专才,在图像任务上同样是一次彻底的升级。
- Meta 公开了主模型、SA-V 数据集、训练代码和交互式 demo——开放程度足以让人复现和改造,而不只是被引用。
关键在于这套组合:多数「万物追踪」系统要么拿交互次数换精度,要么拿速度换精度。SAM 2 报告称,相对自家前代和此前的视频方法,它在两个维度上同时前进。
局限与存疑
- 记忆策略尚未解决。 流式记忆带来一个新问题:记什么、忘什么。长视频、镜头切换、一群相似对象,都仍可能让模型搞混哪段记忆对应哪个目标。
- 强遮挡与重识别。 对象恒存在很多场景下成立,但长时间消失、出现几乎一模一样的干扰物、或镜头硬切,仍可能丢失跟踪,逼用户重新提示。
- 交互并非免费。 「交互少三分之二」的前提仍是有人愿意纠正;若要完全无人值守地标注,残余误差会在长片段里不断累积。
- 只有 mask,没有理解。 SAM 2 做的是分割和跟踪,它不会命名对象、不推理动作、不建模物理关系。可提示视频感知能否从 mask 走向更丰富的对象状态,是真正悬而未决的方向。
常见问题
SAM 2 是什么,和 SAM 有什么区别?
SAM 2 是 Meta AI 面向图像与视频的可提示分割基础模型。初代 SAM 只分割单张图像;SAM 2 加入流式记忆模块,让一次提示就能跨视频帧跟踪对象,而且在图像上也比 SAM 更准、快 6 倍。
SAM 2 是怎么在视频里跟住一个对象的?
你在任意一帧提示一次对象,SAM 2 的记忆模块就把这个身份沿时间向前向后传播。每一新帧都会关注一份过往帧和提示的记忆库,因此模型知道自己分割的还是同一个对象,而不是每帧重新开始。
SA-V 数据集是什么?
SA-V 是 Meta 与 SAM 2 一同构建的视频分割数据集,论文称其为同类中迄今规模最大。它由一个数据引擎产出:标注员用 SAM 2 标注视频,这些标注又训练出更强的模型,如此循环。
SAM 2 开源吗,我能直接用吗?
可以。Meta 公开了 SAM 2 主模型、SA-V 数据集、模型训练代码和交互式 demo,正因为这种开放程度,你才能在它之上微调或开发,而不只是读论文。
SAM 2 在什么情况下还会失败?
遇到长时间遮挡、镜头切换,或同时出现多个几乎一模一样的对象时,SAM 2 可能丢失跟踪,也仍需要偶尔的纠正性提示。它还只输出 mask,不会标注或推理这些对象在做什么。
SAM 2 的真正贡献一句话就能说清:它给分割模型装上了记忆,让一次点击得以跟住对象穿过时间。原文见 arXiv。