SplazMatte 技术原理

AI 视频抠图
三剑客图解

用最通俗的语言,解释 SAM 2、MatAnyone、VideoMaMa 三个核心模型的工作原理、核心差异和协作方式

目标分割
SAM 2
人体抠图
MatAnyone
通用抠图
VideoMaMa

先搞清楚两个概念

在深入每个模型之前,你需要理解视频抠图里最核心的两个概念:分割 (Segmentation)抠图 (Matting),它们虽然都是"把目标从背景中分离出来",但精度天差地别。

🔲 分割 Segmentation
  • 输出是 二值 mask:每个像素只有"是"或"不是"
  • 边缘是锯齿状的,非黑即白
  • 像用剪刀沿着轮廓剪纸
  • 速度快,但边缘粗糙
  • 头发丝、毛绒边缘全部丢失
每个像素:0 或 1
VS
🎨 抠图 Matting
  • 输出是 alpha matte:0~255 连续灰度值
  • 边缘是平滑过渡的,有半透明
  • 像用 Photoshop 的精细橡皮擦
  • 速度慢,但边缘丝滑
  • 头发丝、透明物体完美保留
每个像素:0 到 255 之间
通俗理解

分割就像你用铅笔画出一个人的轮廓线 —— 线里面是人,线外面是背景,但这条线是硬邦邦的。

抠图则像美发师用推子推出渐变发际线 —— 不仅知道哪里是头发,还知道每一根发丝有多"实"多"透",让最终的合成图看起来天然、不突兀。

三剑客的分工:SAM 2 做分割(找到目标、画出轮廓),MatAnyone 和 VideoMaMa 做抠图(把粗轮廓变成精细 alpha)。

SAM 2 — 目标分割

Segment Anything Model 2(Meta,2024)。它的任务是:你告诉它"你要哪个东西",它就在视频的每一帧中把这个东西精确地标出来。

一句话概括

SAM 2 就像一个超级眼力的追踪者:你在第一帧指给它看"跟踪这个人",它就能在后续每一帧中死死盯住这个人,即使人被遮挡、转身、变小。

核心原理

🎯
Prompt(提示)驱动
你不需要手动标注每一帧。只需在第一帧上给 SAM 2 一个"提示",它就知道要追踪什么。提示可以是:点击目标上的某个点、框选一个区域、或者给一个已有的 mask。SAM 2 本身不支持文字提示,但升级版 SAM 3 支持。
🧠
记忆机制 (Memory Bank)
SAM 2 最关键的创新是它有一个"记忆库"。想象它是一个侦探的笔记本:每分析完一帧,它就把关键信息(目标长什么样、在哪个位置)记在本子上。分析下一帧时,它会翻看笔记本,对比"嗯,虽然这个人转了身,但体型和衣服颜色跟我笔记里的一样,就是他"。
🔄
流式处理 (Streaming)
SAM 2 是逐帧处理的,就像你看视频一样一帧一帧往前播。每处理完一帧,就把该帧的信息存入记忆库,然后处理下一帧。这意味着它可以处理任意长度的视频,不需要一次性把整个视频加载到内存。
SAM 2 工作流程
📹 视频帧
逐帧输入
🖼️ Image Encoder
提取视觉特征
🧠 Memory Attention
对比记忆库
🎭 Mask Decoder
输出二值mask
↕️ 记忆库 Memory Bank:存储历史帧的目标特征和位置信息,帮助跨帧追踪

SAM 2 的核心组件详解

Image Encoder(图像编码器)

基于 Hiera 架构(一种层次化的 Vision Transformer)。它的任务是把一张图片"理解"成一组数字特征。

类比

就像你看到一张照片,你的大脑不会逐像素处理,而是会自动提取出"有个人站在树旁边"这样的高级理解。Image Encoder 做的就是这个——把像素变成"理解"。

Memory Attention(记忆注意力)

这是 SAM 2 与 SAM 1 最大的区别。SAM 1 只能处理单张图片,SAM 2 通过记忆注意力机制实现了视频追踪。

原理是 Cross-Attention(交叉注意力):当前帧的特征当做"问题",记忆库里的历史帧特征当做"参考答案",模型通过注意力机制找出当前帧中哪些区域与历史帧中被标记的目标最相似。

类比

你在人群中找一个朋友。你的"记忆"里存着他穿蓝色外套、身高 180、戴眼镜。你扫视人群时,你的大脑会自动把每个人和记忆中的特征做对比。Memory Attention 做的就是这件事——拿记忆去比对当前画面。

Mask Decoder(遮罩解码器)

把上面得到的"理解"和"记忆对比结果"转换成一个具体的 二值 mask(每个像素是 0 或 1)。

SAM 2 可以同时输出多个候选 mask 并给出置信度评分,让你选择最准确的那个。

SAM 2 的局限性

⚠️
输出是二值 mask,不是 alpha
SAM 2 的每个像素只有"属于目标"或"不属于目标"两种状态。它无法表达半透明——头发丝、毛玻璃、烟雾这些边缘模糊的东西,在 SAM 2 的输出里要么全白要么全黑,剪出来的边缘很生硬。这就是为什么还需要 MatAnyone 和 VideoMaMa 来做进一步的 alpha 精修。
输入
视频 + 提示
点击/框选/mask
输出
二值 Mask 序列
每帧一个 0/1 mask
核心能力
追踪 + 分割
跨帧一致性强
显存需求
~8GB
848M 参数

MatAnyone — 人体视频抠图

CVPR 2025 最佳论文之一。专门解决一个问题:给一个粗糙的首帧 mask,自动输出全视频的高质量人体 alpha matte。

一句话概括

MatAnyone 就像一个顶级美发修图师:你只需在第一帧大致圈出一个人,它就能自动追踪这个人并在每一帧中精确到每一根发丝地抠出来,而且帧与帧之间不闪烁、不跳动。

它解决什么问题?

在 MatAnyone 之前,视频抠图的核心痛点是:

痛点 1:需要每一帧都提供 mask。 如果视频有 900 帧(30 秒 × 30fps),你得准备 900 个 mask。即使用 SAM 2 自动生成,也经常有帧不准确。

痛点 2:帧间闪烁。 如果逐帧独立处理抠图,每帧的 alpha 边缘细节可能不一致,播放时看起来边缘"闪烁抖动"(temporal flickering)。

痛点 3:mask 质量敏感。 传统抠图方法(如需要 trimap 的方法)对输入 mask 的精度要求很高,稍有偏差结果就崩。

核心原理

🧠
记忆传播框架 (Memory-based Propagation)
MatAnyone 的核心思路类似 SAM 2 的记忆机制,但升级了。它只需要第一帧的 mask,然后通过记忆传播把 alpha 信息"传播"到后续所有帧。它在传播的同时做精细化——不是传播 0/1 的粗 mask,而是传播 0~255 的精细 alpha。
🔀
区域自适应融合 (Region-Adaptive Fusion)
这是 MatAnyone 最核心的创新。它把每一帧的画面分成三个区域来区别对待:
区域自适应融合原理
🟢
确定前景区
人体的核心部位(躯干、四肢内部)。这些区域直接从记忆中获取稳定的语义特征,确保不会帧间跳动。
🟡
过渡区(关键!)
头发丝、衣服边缘等半透明区域。这里需要用当前帧的原始图像细节来生成精细 alpha,因为发丝在每帧中的位置都不同。
🔵
确定背景区
完全是背景的区域。直接标记为 alpha=0,不浪费算力处理。
通俗理解区域自适应

想象你在给一张人物照片做精细抠图:

身体中心(绿区)→ 不用犹豫,直接 alpha=255,肯定是前景。你甚至可以闭着眼做。

发丝和边缘(黄区)→ 需要你拿放大镜仔细看每一根发丝,一丝不苟地决定每个像素的透明度。这部分最耗精力。

远离人体的背景(蓝区)→ 不用看,直接 alpha=0。

MatAnyone 的聪明之处就是:不同区域用不同策略。核心区域靠记忆保稳定,边缘区域靠当前帧的像素保精度,背景区域直接跳过。

📺
基于 Cutie 框架
MatAnyone 的视频追踪能力建立在 Cutie(一种半监督视频目标分割框架)之上。Cutie 本身就擅长"给一帧标注,追踪全视频",MatAnyone 在此基础上增加了 alpha 精修能力。这意味着它自带追踪功能——不需要 SAM 2 先做追踪,给它首帧 mask 就够了。
MatAnyone 处理流程
首帧 Mask
可以很粗糙
Cutie 追踪
记忆传播到全帧
区域自适应
三区域分别处理
Alpha Matte
精细到发丝

Warmup 机制

MatAnyone 有一个特别的"预热"(warmup)阶段:它会先用一个图像抠图模型(如 ViTMatte)对首帧做一次高质量的单帧抠图,把这个精细 alpha 作为"第 0 帧记忆"注入记忆库。

这样,记忆库从一开始就有一个高质量的参考,后续帧的传播质量更高。就像你追踪一个人之前先仔细看清他的样子——比远远扫一眼就开始追要靠谱得多。

输入
视频 + 首帧 Mask
mask 可以很粗糙
输出
Alpha 视频
0~255 精细 alpha + 前景
核心能力
人体专精
发丝级精度 + 帧间稳定
显存需求
~8GB
1080p 推理

VideoMaMa — 通用视频抠图

Adobe Research + KAIST 2025 年发布。它的核心思路完全不同:用视频生成模型(扩散模型)的能力来做抠图。

一句话概括

VideoMaMa 就像一个学过百万张照片的画家:你给它一张粗糙的涂色稿(mask),它凭自己对世界万物边缘的"艺术直觉"(生成先验),画出每个像素应有的精确透明度。它不需要专门针对人体训练——猫、狗、玻璃杯、烟雾都能抠。

核心原理:用"画画的能力"来"抠图"

这是 VideoMaMa 最反直觉的设计。传统思路是"训练一个分割/抠图模型",但 VideoMaMa 说:不,我们用一个已经学会"画视频"的生成模型来做抠图。

🎨
扩散模型先验 (Diffusion Prior)

VideoMaMa 基于 Stable Video Diffusion (SVD)——一个被训练来"从噪声中生成视频"的模型。SVD 在训练过程中看过几百万段视频,因此它对"自然界中物体边缘应该长什么样"有非常深刻的理解。

VideoMaMa 的核心洞察是:这种"理解"可以被复用来做抠图。 一个知道"猫毛应该是什么样子"的模型,自然也知道"猫毛的 alpha 边缘应该是什么样子"。

通俗理解扩散模型

扩散模型的训练方式是:给一张清晰图片加噪声使其模糊,然后训练模型学会"从模糊恢复清晰"。经过海量训练后,模型就学会了"世界应该长什么样"。

想象一个美术生,练了三年素描。你给他一个模糊的轮廓,他能凭经验"脑补"出精确的线条和阴影。VideoMaMa 就是让这个"美术生"来画 alpha 通道。

单步推理 (One-Step Prediction)

传统的扩散模型生成图片需要几十步迭代(从纯噪声开始,一步步去噪)。但 VideoMaMa 做了一个关键优化:它不从纯噪声开始,而是从输入的粗 mask 出发,只需要一步就能预测出精细 alpha。

这是因为粗 mask 已经提供了"大致位置"的信息,模型只需要做"精修"而不是"从零开始画"。

VideoMaMa 工作原理
📹 RGB 帧
+
🔲 粗 Mask
每帧都需要
编码到
潜空间
VAE Encoder
SVD 去噪
UNet
单步推理!
🎨 Alpha
Matte
精细到像素

为什么它能"通吃万物"?

🌍
零样本泛化 (Zero-Shot Generalization)

VideoMaMa 训练时只用了合成数据(把前景图片贴到不同背景上生成的训练对)。但神奇的是,它在真实视频上的表现也非常好。

这归功于 SVD 的"世界知识":SVD 在预训练时见过各种各样的自然边缘——毛发、树叶、烟雾、水花、玻璃反射。这些知识被 VideoMaMa "继承"了,所以即使没在真实抠图数据上训练过,也能处理各种场景。

📦
MA-V 数据集
VideoMaMa 团队还构建了 MA-V 数据集——5 万多段真实视频的抠图标注。这是之前最大抠图数据集的 50 倍。虽然 VideoMaMa 主要靠 SVD 的预训练能力,但这个大数据集帮助模型学会了"什么时候该给多少 alpha"的精细判断。

关键差异:需要每帧都有 mask

与 MatAnyone 不同,VideoMaMa 不做追踪。它是一个纯粹的 mask-to-matte 转换器:你给它每帧的 RGB 图像 + 每帧的粗 mask,它输出每帧的精细 alpha。

这意味着你需要先用 SAM 2 / SAM 3 把视频中每一帧的 mask 都生成好,然后把它们批量喂给 VideoMaMa。

MatAnyone vs VideoMaMa 的核心差异

MatAnyone = 又能追踪又能抠图的"全能选手"。给它一帧的 mask 就能搞定全视频。

VideoMaMa = 纯粹的"抠图专家"。它不管追踪,只管"把粗 mask 变成精细 alpha"。追踪的活需要 SAM 2 来干。

但 VideoMaMa 的优势是它不限于人体——玻璃杯、烟雾、毛绒玩具、树叶,什么都能抠,因为它有扩散模型的"世界知识"。

输入
帧序列 + Mask 序列
每帧都需要对应 mask
输出
Alpha 帧序列
每帧精细 alpha
核心能力
通用万物
不限于人体,什么都能抠
显存需求
~16-24GB
基于 SVD,模型较大

三剑客对比

把三个模型放在一起看,它们的分工、能力和适用场景一目了然。

对比维度 SAM 2 MatAnyone VideoMaMa
任务 目标分割 + 追踪 人体视频抠图 通用视频抠图
输出类型 二值 mask (0/1) Alpha matte (0~255) Alpha matte (0~255)
需要的输入 视频 + 首帧提示 视频 + 首帧 mask 帧序列 + 每帧 mask
是否自带追踪? ✅ 核心能力 ✅ 内置 (Cutie) ❌ 需要外部追踪
适用对象 万物(任何东西) 人体为主 万物(任何东西)
边缘精度 粗糙(锯齿边缘) 极精细(发丝级) 极精细(半透明支持)
半透明处理 ❌ 无法表达 ⚠️ 一般 ✅ 擅长(烟雾/玻璃)
处理速度 快(数秒/帧) 中等(~8GB VRAM) 慢(~16-24GB VRAM)
核心技术 Vision Transformer + 记忆 Cutie + 区域自适应融合 Stable Video Diffusion
来源 Meta (2024) NTU (CVPR 2025) Adobe + KAIST (2025)

协作方式

路径 A:SAM 2 + MatAnyone(推荐用于人体)
1
SAM 2 分割首帧
在第一帧上点击或文字描述目标人物,SAM 2 输出首帧的二值 mask。只需要这一帧的 mask!
2
MatAnyone 一键搞定
把视频和首帧 mask 交给 MatAnyone。它自带追踪 + 抠图能力,自动处理全部后续帧,输出完整的 alpha 视频。整个过程无需 SAM 2 再追踪后续帧。
输出结果
得到精细 alpha 视频 + 前景视频。速度快,~8GB 显存即可。
为什么这条路径更快?

因为 MatAnyone 自带追踪能力(基于 Cutie),不需要 SAM 2 先把每一帧都追踪一遍。SAM 2 只负责"指出目标是谁"(出一帧 mask),后面的追踪 + 抠图全部由 MatAnyone 完成。但代价是 MatAnyone 主要针对人体优化,非人体效果可能不如 VideoMaMa。

路径 B:SAM 2 追踪 + VideoMaMa(推荐用于通用物体)
1
SAM 2 分割首帧
在第一帧上指定要抠的目标(可以是任何东西:猫、杯子、汽车)。SAM 2 输出首帧 mask。
2
SAM 2 视频追踪
SAM 2 用记忆机制在后续每一帧中追踪目标,生成全帧 mask 序列。这一步是必须的,因为 VideoMaMa 需要每帧都有 mask。
3
VideoMaMa 批量精修
把 RGB 帧序列 + mask 序列喂给 VideoMaMa。它利用 SVD 的"世界知识",把每帧的粗 mask 转换成精细 alpha。
输出结果
得到精细 alpha 帧序列,需要编码为视频。更慢、更吃显存,但能处理任何物体。
为什么这条路径更慢?

两个原因:① SAM 2 需要追踪全帧生成 mask 序列(MatAnyone 路径不需要这步),② VideoMaMa 基于 SVD 扩散模型,模型体积大、推理慢。但它的优势是不限于人体——玻璃、烟雾、毛绒玩具等半透明/复杂边缘物体效果远优于 MatAnyone。

为什么需要三个模型?

你可能会问:能不能只用一个模型搞定所有事?答案是不能,原因很本质。

🎯
SAM 2 解决"找什么"
SAM 2 是唯一能接受人类交互式提示(点击、框选、文本)的模型。MatAnyone 和 VideoMaMa 都需要一个 mask 作为输入——但 mask 从哪来?需要 SAM 2 先"找到"目标。你不能让 MatAnyone 凭空知道你要抠哪个人。
🧑
MatAnyone 解决"人体速度"
如果你只需要抠人,MatAnyone 是最优解。它自带追踪不需要外部帮助,而且针对人体边缘(发丝、衣角)做了专门优化。就像厨师有通用刀和专用刺身刀——切生鱼片肯定用刺身刀更好。
🌐
VideoMaMa 解决"通用性"
但世界不只有人。当你需要抠出烟雾、透明玻璃杯、或者毛茸茸的小动物时,MatAnyone 就力不从心了。VideoMaMa 凭借扩散模型的"世界知识",能处理任何物体的任何边缘形态——这是它独一无二的能力。
三剑客的终极类比

想象一个视频制作团队:

SAM 2 = 场记:负责在画面中指出"这个人就是主角",并在每个镜头中追踪他的位置。它不做任何精修工作,只是标记。

MatAnyone = 人像修图师:专门修人像,速度快,效果惊艳。但只会修人,你让他修一个玻璃杯他就露馅了。

VideoMaMa = 特效大师:什么都能修,烟雾、火焰、透明物体都不在话下。但他比较慢,设备也贵,不是每个活都值得请他。

在 SplazMatte 中,场记 (SAM 2) 是必须的,修图师和特效大师二选一,取决于你要抠什么。

关键技术概念速览

这些概念在上文中反复出现,这里统一做个通俗解释。

🧩
Vision Transformer (ViT)
把图片切成一块块小方格(patch),每个方格当做一个"词",用 NLP 领域的 Transformer 架构来"读"图片。SAM 2 的 Image Encoder 就是基于 ViT 变体。类比:把一张照片想象成一篇文章,每个小方格是一个字,Transformer 负责理解字与字之间的关系。
🔗
Attention(注意力机制)
让模型学会"看重点"。Self-Attention 是在一张图内部找关联("这个像素和那个像素有什么关系"),Cross-Attention 是在两个东西之间找关联("当前帧和记忆里的帧有什么相似")。SAM 2 的记忆机制和 MatAnyone 的区域融合都依赖 Attention。
🎲
扩散模型 (Diffusion Model)
训练方式:给清晰图片加噪声 → 训练模型学会去噪。推理方式:从噪声/粗糙输入出发 → 模型逐步去噪生成清晰结果。VideoMaMa 正是利用了 Stable Video Diffusion (SVD) 这个预训练扩散模型的"去噪=精修"能力。类比:你把一幅画打上马赛克,一个高手能根据经验还原出来。扩散模型就是这个高手。
📐
潜空间 (Latent Space)
把高分辨率图像压缩到一个低维空间中处理,处理完再解压回来。就像你要搬家,不会直接搬家具,而是把家具拆成零件打包(编码),搬到新家再组装(解码)。VideoMaMa 在潜空间中做 alpha 预测,大大减少计算量。
🗺️
Trimap
传统抠图方法常用的输入。把图像分为三个区域:确定前景(白色)、确定背景(黑色)、未知区域(灰色)。模型只需要处理灰色区域。MatAnyone 的区域自适应融合思想与此类似,但更自动化——不需要人工画 trimap。