DC娱乐网

SAM2Matting:复旦凭什么只用图片训练,就打败所有视频抠图模型

一个把"追踪"和"抠图"彻底解耦的框架,零样本视频抠图,支持文字、点击、框选任意目标——

一个把"追踪"和"抠图"彻底解耦的框架,零样本视频抠图,支持文字、点击、框选任意目标——这才是 SAM2 应该有的终点。

先聊聊视频抠图为什么这么难

不理解问题的复杂性,就不会知道这篇论文究竟解决了什么。

如果你用过 Photoshop 或者任何一款手机剪映、即梦 AI,你会发现抠图这件事本身并不简单。头发丝、半透明婚纱、玻璃杯——这些边缘精细到像素级的细节,稍有差池就穿帮。

视频抠图在此之上,还叠了一层更难的问题:时序一致性。你不仅要在每一帧准确抠出目标,还要保证相邻帧之间目标的 alpha 通道不抖动、不闪烁。这要求模型同时兼顾两件完全不同的事:

1高层追踪:跨帧理解"这个人在哪"——这是语义级、时序级的问题,需要看整段视频的上下文。2底层抠图:精确到每个像素,区分主体与背景的混合比例(alpha 值)——这是极度精细的局部问题。3数据缺口:高质量视频抠图数据集价格高昂、场景窄,导致模型在野外场景(动漫、动物、快速运动)泛化极差。

⚠ 行业痛点

过去的方法为了解决视频抠图,要么用专门的视频数据集端到端训练(贵且窄),要么把追踪模块和抠图模块硬拼在一起(互相干扰)。两条路都走不远。

SAM2Matting 的核心突破:解耦思路

复旦 FudanCVL 团队提出的思路,在我看来是这个方向上目前最优雅的解法:不要让追踪和抠图互相妥协,让它们各自做最擅长的事。

三个关键设计决策

① SAM2/SAM3 保持冻结(不微调)追踪器完整保留了自己的时序建模能力,没有因为抠图任务的损失函数而被破坏。这是很多人忽视的细节——一旦你用抠图数据去微调 SAM2,它的追踪泛化性就会下降。

② Region-Proposal Bridge(ROI 区域建议桥)粗 Mask 输出后,并不是全图交给抠图头,而是先定位"值得关注的精细区域"——比如发丝、透明边缘。这大幅降低了精细预测的计算量,同时聚焦了模型注意力。

③ 渐进式 Alpha 预测(粗到细多尺度监督)每个尺度的中间结果都有监督信号,保证了训练稳定性,同时让模型在不同细粒度上都具备良好的表征能力。

解耦这个词在深度学习圈子里被说滥了,但 SAM2Matting 的解耦是真正有工程意义的:追踪器的工作是"在哪",抠图头的工作是"有多少",这两个问题的监督信号、数据来源、优化目标完全不同,当然不该放在一个模型里卷。把它们拆开,两边都能做到最好。

SECTION 03最让人惊讶的实验结果

只用图片训练,视频零样本 SOTA——这听起来不合逻辑,但它做到了。

只训练图片 → 视频 SOTA

在所有视频抠图 benchmark 上,SAM2Matting 的零样本性能超越了专门用视频数据训练的竞品

为什么这件事很重要?因为它证明了一个关键假设:追踪能力(时序一致性)可以完全由 SAM2 的基础模型承担,不需要在视频抠图数据上重新学习。 这大幅降低了数据成本,也意味着模型天然具备更强的泛化性。

三个变体,不同的速度/精度权衡

SAM3 变体额外支持文字 Prompt(比如输入"人"或"猫"就能直接开始抠图),这在工程落地层面意义巨大——用户不需要手动点选目标,纯语言驱动。

手把手:如何部署和使用

从 clone 到出结果,最快 10 分钟。

环境安装

bash — 安装依赖

# 克隆仓库

git clone https://github.com/FudanCVL/SAM2Matting.git

cd SAM2Matting

# 创建独立 conda 环境(Python 3.10 必须)

conda create -n sam2matting python=3.10 -y

conda activate sam2matting

# 安装依赖并以可编辑模式安装本包

pip install -r requirements.txt

pip install -e .

下载模型权重

前往 Hugging Face(FudanCVL/SAM2Matting)下载三个变体之一,放到项目根目录的 checkpoints/ 文件夹下。

图片抠图推理

bash — 图片抠图(SAM2 变体)

python inference_image_sam2.py

视频抠图推理

bash — 视频抠图(保存 MP4 + 加速编译)

# 基本用法

python inference_video_sam2.py --save_mp4

# 开启 torch.compile 加速(首次运行会慢,后续快)

python inference_video_sam2.py --save_mp4 --compiled

交互式 Demo(最推荐新手)

bash — 交互 Demo

# SAM2 变体:鼠标点击目标

python interactive_sam2.py

# SAM3 变体:文字描述目标(如输入 "person" 或 "cat")

python interactive_sam3.py

实践建议:第一次上手建议先跑交互式 Demo,直观感受不同 Prompt 类型的效果差异。SAM3 文字 Prompt 对于开放世界目标(非人物)的泛化效果令人印象深刻,但在极速运动帧上,SAM2.1-B+ 变体的时序稳定性往往更好。

为什么应该关注这个项目

不只是做研究的人,这个技术已经触手可及了。SAM2Matting 虽然是学术论文,但它的工程完整度相当高:有权重、有推理脚本、有交互 Demo,代码结构清晰。这意味着它今天就可以进你的工作流。

真正的价值

SAM2Matting 最重要的贡献不是数字上比别人好几个点,而是证明了一条可复用的范式:把基础大模型当"骨架",用专业 Head 完成垂直任务,两者之间用轻量 Bridge 连接。这个思路在分割、深度估计、法线预测等方向都可以复用。

另一个容易被忽视的价值:训练数据的极度节省。仅用图片数据达到视频 SOTA,意味着你可以用互联网上几乎无限的图片数据去训练,而不需要付出昂贵的视频标注成本。这对工业落地是极大的利好。

局限性

① 实时性尚未验证:Tiny 变体在消费级 GPU 上的帧率数据论文没有给出,生产环境的推理延迟需要自行测试。

② 训练代码未开放:目前只有推理代码,如果想在私有数据上微调,暂时不行(TODO 列表里标注了会放出)。

③ CC-BY-NC-SA 许可证:仅限非商业研究使用。商业应用需要联系作者。这对很多开发者是硬门槛。

和 MatAnyone 的关系

论文致谢中提到了 MatAnyone,后者是之前主流的视频抠图方案。SAM2Matting 在架构思路上继承了"让追踪和抠图分工"的直觉,但更彻底地将其实现——SAM2Matting 的追踪器完全冻结,MatAnyone 仍然端到端微调了追踪模块。这个差异导致了 SAM2Matting 在野外泛化性上的显著优势。

如何把它用进你的实际工作

场景 A:视频博主 / 剪辑师:最直接的用法:录一段视频,用 inference_video_sam2.py 生成 alpha 通道视频,再在 Premiere / DaVinci 或 After Effects 里合成。相比 Runway、Clipchamp 等在线工具,本地部署意味着数据不出门、批量处理无限制、不收费。

场景 B:开发者 —— 作为 API 接入管线:将推理脚本封装成 FastAPI 服务,接受视频帧或图片输入,返回 alpha matte。这个组件可以接入任何需要精细抠图的 AI 应用:AI 证件照、虚拟试衣、直播背景替换、动态贴纸……

关键是:文字 Prompt 能力(SAM3 变体)让你不需要为每个类别写单独的检测器,一个模型覆盖所有目标类型。

场景 C:研究者 —— 作为 Baseline 或上游组件:如果你在做视频生成、4D 重建、或者任何需要精确前景分离的任务,SAM2Matting 提供了一个稳健的上游抠图器,质量远超传统的背景差分或简单分割方法。用它生成高质量的 alpha 通道,再接你自己的任务头。

场景 D:学习者 —— 理解"适配大模型"的工程范式:SAM2Matting 的代码结构教你一件事:如何在不破坏预训练大模型的前提下,用轻量 Adapter 完成垂直任务。 这是当前 AI 工程最主流的范式,读懂这份代码,LoRA、Adapter、Head-插入的逻辑你都会融会贯通。

写在最后

视频抠图是一个卡了很多年的方向,不是因为没人聪明,而是因为大家一直在用错误的方式思考它——总想用一个模型同时学会"看全局"和"抠细节",结果两件事都做不好。

SAM2Matting 的解法看起来简单:拆开它们,各司其职。但"简单"往往是最难想到的答案。

SAM 系列模型的出现,真正意义在于提供了一个可靠的感知骨架。未来几年,会有一大批像 SAM2Matting 这样的工作涌现——在这个骨架上插入专业 Head,解决各个垂直领域的精细问题。SAM2Matting 是这条路上交出的一份优秀答卷,但更重要的是,它示范了这条路该怎么走。