SAM2论文解读-既实现了视频的分割一切,又比图像的分割一切SAM更快更好
code:https://github.com/facebookresearch/sam2/tree/main
demo:https://sam2.metademolab.com/
paper:https://ai.meta.com/research/publications/sam-2-segment-anything-in-images-and-videos/
这是SAM
这是SAM2
Facebook出品,继SAM在图像上分割一切后,SAM2实现了效果优异的视频上的分割一切
- 构建了能通过用户交互持续改进模型与数据的数据引擎,收集了迄今为止规模最大的视频分割数据集。
- 该模型采用简单的Transformer架构,配备流式内存以实现实时视频处理。
- 在视频分割方面,SAM2准确度优于现有方法,且交互次数减少至三分之一;
- 在图像分割领域,相比"可分割任意模型"(SAM),SAM2精度更高且速度提升6倍(1024分辨率下实现130 FPS的图像分割速度)。
针对的核心问题
-
图像分割向视频领域的扩展不足
现有图像分割模型(如SAM)无法直接处理视频中的时空动态特性,如物体运动、变形、遮挡、光照变化等,且视频数据具有时间维度,需要高效处理长序列帧。 -
视频分割数据集的局限性
传统视频分割数据集(如DAVIS、YouTube-VOS)规模较小,主要覆盖完整物体,缺乏对物体部分、遮挡/重现场景的覆盖,难以支持“分割任意物体”的泛化能力。 -
交互式视频分割的效率与精度平衡
现有方法需大量人工交互(如多次点击或重新标注),且模型难以在实时处理中保持高精度,尤其在复杂场景下容易丢失目标。
数据:交互式数据收集框架
- 三阶段迭代优化
- Phase 1:基于SAM的逐帧手动标注,确保高质量空间掩码。
- Phase 2:引入SAM 2 Mask进行掩码传播,减少手动标注工作量(速度提升5.1倍)。
- Phase 3:全功能SAM 2支持点/掩码混合提示,利用内存机制进一步提升效率(速度提升8.4倍)。
- 自动掩码生成(Auto Masklet)
- 通过网格点提示自动生成掩码,覆盖小物体和背景区域,提升数据多样性。
- 最终构建SA-V数据集:包含50.9K视频、3550万掩码,是现有最大视频分割数据集(比YouTube-VOS多53倍掩码)。
任务定义
- 核心目标:给定输入视频,通过在任意视频帧上提供交互式提示(如点、框、掩码),分割并跟踪目标对象的时空掩码(masklet),即生成覆盖整个视频的时空一致分割结果。
- 交互性:用户可在任意帧添加提示以迭代优化分割结果。例如,在某一帧纠正分割错误后,模型会将修正传播到整个视频,减少重复标注成本。
- 对比半监督视频对象分割(VOS):
VOS通常仅在第一帧提供掩码提示,且聚焦于完整物体跟踪;PVS支持多帧任意提示,并可分割物体部分(如“人的手臂”),覆盖更广泛的“任意物体”场景。
模型
(其中红色线是手绘的,因为原图中没标注这部分,图像编码器的部分特征通过跳跃连接直接输给mask decoder,来提高掩码精度)
一、总体设计
- 统一框架:SAM 2是首个统一处理图像和视频分割的基础模型,将图像视为单帧视频,通过**流内存机制(Streaming Memory)**扩展SAM的静态分割能力至动态视频场景。
- 输入与输出:接受视频中任意帧的点、框、掩码提示,输出目标对象的时空掩码(masklet),支持通过迭代提示逐步优化分割结果。
二、核心组件
1. 图像编码器(Image Encoder)
- 采用23年的层次化视觉Transformer(Hiera),基于MAE预训练,支持多尺度特征提取(共4各stage),其中高分辨率的1,2stage特征直接输给mask decoder,3,4stage输给memory attention。
2. 内存注意力模块(Memory Attention)
- 通过Transformer块实现当前帧与Memory Bank中的历史内存的交互。
- 其中自注意力(Self-Attention)处理当前帧特征,交叉注意力(Cross-Attention)关联Memory Bank中的空间特征和对象指针(Object Pointers)。
3. 提示编码器与掩码解码器(Prompt Encoder & Mask Decoder)
- 提示编码器:与SAM完全兼容,支持稀疏提示(点/框)和密集提示(掩码),通过位置编码和卷积嵌入提示信息。
- 掩码解码器:
- 多掩码预测:处理歧义提示时输出多个掩码,如果后续提示仍存在歧义,则选择最高IoU的掩码进行传播。
- 遮挡预测头:新增分支预测目标是否在当前帧可见,辅助内存更新和分割校正。
- 跳跃连接(Skip Connections):引入图像编码器的高分辨率特征,提升掩码细节精度(图中手绘的红色线)。
4. 内存编码器
内存编码器的实际输入是预测得到的mask,以及image encoder得到的图像嵌入,将mask下采样后跟图像嵌入逐元素相加,并经过一个轻量的卷积层得到最终的编码信息。
5.Memory Bank
- FIFO队列:存储最近N帧的内存和M个提示帧的信息,统称为spatial features,平衡时间上下文和计算成本。
- 对象指针:轻量级向量存储每帧的语义摘要,增强跨帧语义一致性,用以捕获高层语义信息(如掩码解码器输出的token),后续实验验证这个指针很有效。
与SAM的对比
维度 | SAM | SAM 2 |
---|---|---|
处理对象 | 单帧图像 | 图像+视频(时空序列) |
核心机制 | 静态提示-分割 | 流内存+时间注意力+迭代提示优化 |
速度(FPS) | 21.7(ViT-H) | 130(Hiera-B+,图像)/43.8(视频) |
交互效率 | 依赖单帧多次点击 | 跨帧内存复用,交互次数减少3倍 |
数据集规模 | SA-1B(11M图像) | SA-V(50.9K视频,3550万掩码) |
训练策略:图像与视频联合优化
1. 预训练(图像优先)
- 数据:SA-1B图像数据集(11M图像)。
- 目标:学习基础视觉特征和提示响应能力,与SAM初始化一致。
- 技术细节:
- 损失函数:焦点损失 + 骰子损失(比例20:1),L1损失监督IoU预测。
- 数据增强:水平翻转,Resize至1024×1024,过滤掩码面积>90%的样本。
2. 全训练(图像+视频联合)
- 数据混合:
- 图像数据:15.2% SA-1B;
- 视频数据:70% SA-V + 14.8% Internal数据集 + 开源VOS数据集(如DAVIS/YouTube-VOS)。
- 交替训练策略:按数据规模比例交替采样图像和视频批次,视频批次处理8帧序列,图像批次处理单帧。
- 模拟交互式提示:
- 采样8帧的序列,并随机选择最多2帧进行提示,在训练期间根据真实掩模和模型预测的概率性接收矫正点击(模拟用户迭代优化),初始提示及概率为掩码(50%)、正点击(25%)或框(25%);
- 数据增强:
- 视频:水平翻转、仿射变换、颜色抖动、随机灰度化;
- 马赛克变换(10%概率):将视频帧拼接为2×2网格,强制模型区分相似目标(附录D.2.2)。
3. 微调(长视频优化)
- 目标:提升长视频中的长时依赖建模能力。
- 方法:
- 采样16帧长序列,仅使用SA-V和Internal数据中“高编辑帧”样本(前50%最难样本);
- 冻结图像编码器,仅微调内存和注意力模块,学习率降至原值1/2,训练50k迭代。