论文链接:SAM 2: Segment Anything in Images and Videos
代码链接:https://github.com/facebookresearch/sam2?tab=readme-ov-file
作者:Nikhila Ravi, Valentin Gabeur, Yuan-Ting Hu, Ronghang Hu, Chaitanya Ryali, Tengyu Ma, Haitham Khedr, Roman Rädle, Chloe Rolland, Laura Gustafson, Eric Mintun, Junting Pan, Kalyan Vasudev Alwala, Nicolas Carion, Chao-Yuan Wu, Ross Girshick, Piotr Dollár, Christoph Feichtenhofer
发表单位:Meta AI Research, FAIR
会议/期刊:Arxiv 2024年10月
相关系列:
【视觉基础模型-SAM系列-1】Segment Anything-CSDN博客文章浏览阅读335次,点赞6次,收藏13次。自然语言处理(NLP)领域的基础模型(如GPT、BERT)通过海量文本训练和prompt方式,展现出强大的零样本、少样本泛化能力。相比之下,计算机视觉领域中的基础模型发展相对滞后,尤其在图像分割任务中,尚缺乏类似“预训练+提示”的通用方法。https://blog.csdn.net/cjy_colorful0806/article/details/147764385?fromshare=blogdetail&sharetype=blogdetail&sharerId=147764385&sharerefer=PC&sharesource=cjy_colorful0806&sharefrom=from_link
【视觉基础模型-SAM系列-3】Grounded SAM: Assembling Open-World Models for Diverse Visual Tasks-CSDN博客文章浏览阅读4次。ICCV 2023【视觉基础模型-SAM系列-1】Segment Anything-CSDN博客自然语言处理(NLP)领域的基础模型(如GPT、BERT)通过海量文本训练和prompt方式,展现出强大的零样本、少样本泛化能力。相比之下,计算机视觉领域中的基础模型发展相对滞后,尤其在图像分割任务中,尚缺乏类似“预训练+提示”的通用方法。【视觉基础模型-SAM系列-2】SAM2: Segment Anything in Images and Videos-CSDN博客。
https://blog.csdn.net/cjy_colorful0806/article/details/147774458?fromshare=blogdetail&sharetype=blogdetail&sharerId=147774458&sharerefer=PC&sharesource=cjy_colorful0806&sharefrom=from_link
一、研究背景
尽管前作SAM在图像分割任务上有了很好的效果,但是仍然无法处理现实世界中大量存在的视频数据。视频分割面临比图像更复杂的问题,比如目标可能因运动、遮挡、形变、光照等不断变化;视频分辨率低、帧数多,处理成本高;需要跨时间建模,单帧分割能力不足。
任务定义:Promptable Visual Segmentation,即在任意帧通过点、框、mask等提示进行目标分割,并可跨帧传播(形成“masklet”);
模型设计:引入流式记忆机制的 transformer 架构,支持跨帧记忆与交互;
数据引擎:构建全球最大的开放视频分割数据集 SA-V,包括 50.9K 视频与 35.5M mask。
因此,作者提出新的目标:构建一个支持图像与视频统一提示分割任务的视觉基础模型,即 SAM2。
和SAM一样的定义风格
二、整体框架
SAM2 的核心由三部分构成:
-
任务定义:Promptable Visual Segmentation(PVS),即在任意帧通过点、框、mask等提示进行目标分割,并可跨帧传播(形成“masklet”);
-
模型设计:引入流式记忆机制的 transformer 架构,支持跨帧记忆与交互;
-
数据支撑:构建全球最大的开放视频分割数据集 SA-V,包括 50.9K 视频与 35.5M mask。
三、核心方法
3.1 模型结构
Promptable Visual Segmentation:扩展 SAM 在图像上的点击/框提示分割到视频中,模型可以在任意帧接收提示(点/框/mask);接着自动生成该目标在全视频中的掩码序列(称为 masklet);用户可随时补充提示以修正掩码,实现“多轮交互式视频分割”。
SAM2模型框架
图像编码器:采用MAE预训练的Hiera模型(Meta同期工作,SAM用的是普通的ViT),采用FPN多尺度提取高分辨率特征(stride 4、8、16、32);流式处理视频帧,每帧仅需前向一次。
Mask Decoder:双向 Transformer 解码器堆叠组成,对于每一帧,解码器输入当前帧特征 + 历史记忆 + 当前提示;输出多个掩码与其 IoU 分数(支持提示歧义);引入可见性预测头,支持“当前帧是否包含目标”的输出。
记忆机制:记忆编码器融合当前帧图像特征与掩码预测,构造记忆;Memory Bank,保存 N 帧最近记忆 + M 帧提示记忆(FIFO 队列);存储空间特征与目标语义向量(object pointer);采用位置嵌入,建模短期时间运动信息。Memory Attention,当前帧自注意力 + 与记忆帧做交叉注意力,采用FlashAttention 2。
提示编码器:完全继承SAM的工作。支持点、框、掩码;稀疏提示通过位置编码+类型嵌入;掩码提示通过卷积编码后加到图像特征上。
3.2 数据集构造
SAM2 使用 “Model-in-the-loop” 数据引擎创建了新的 SA-V 数据集,流程分三阶段:
阶段1:SAM逐帧辅助
使用原始 SAM 对每帧单独分割;帧率 6FPS,使用画笔/橡皮(PS)精修;每帧需 37.8s,收集 16K masklets。
阶段2:SAM + SAM2 Mask
SAM2(仅接受 mask)进行掩码传播;可反复修改并重新传播;速度提升至 7.4s/frame,5.1×提速。
阶段3:SAM2 完整交互
使用具有记忆与点交互能力的 SAM2;仅需偶尔点击修正;提速至 4.5s/frame,8.4×提速;共采集 197K masklets。
最终构建 SA-V 数据集:共计 50.9K 视频,642.6K masklets(含自动掩码)比已有最大 VOS 数据集多 53× mask 数量;覆盖完整目标与细粒度部件;覆盖不同场景、目标大小、遮挡变化等挑战。
四、总结
SAM2不输出全图所有 instance(如 Mask R-CNN 那样),但可以通过点击/框选择“某个目标”,只分割这个实例,并跨帧追踪。
给出舌头的掩码,其中绿点是正面,红点是负面提示;自动传播到后续帧(即只跟踪这一实例);支持点击纠正(如错过了某一帧的舌头)。
SAM2 用的是一种transformer + memory bank 的记忆机制:
每帧提取 image feature;用户点击提示指明要追踪哪个目标;模型构建一个“object token”(即目标语义表示);后续帧通过注意力在记忆帧与当前帧之间交互 → 输出掩码;若目标不在,模型能预测其“可见性为0”;