TT Lab
博客

한국어 English 日本語 中文

开始
博客

博客

SAM 2 与 EfficientTAM:通过记忆注意力追踪视频中的物体,并实现轻量化

状态:草稿(2026-10-13),部分实测数据于(2026-10-15)补充。 SAM 2.1 tiny 的速度与准确率引用自《TT Score 模型解剖》第 3 篇的实测数据(2026-10-11–12,当时服务器 GPU 处于共享状态且使用了 CPU 临时 Pod)。减少记忆的示例直接在笔记本 CPU 上运行(code/10_memory_pool.py,耗时几秒)。 2026-10-15 补充: 此前未实测的 EfficientTAM,其在与 SAM 2.1 tiny 相同条件下测得的乒乓球桌自动检测任务数据已在第 6 节中引用。实际记忆图的平滑度仍未进行实测。论文中的数值结合原文件的条件进行了转录,硬件信息则以等级形式记录。 编写规则:实测数据为基本原则,未能测量的内容标注为「未实测」。

目录

1. 从图像到视频:还需具备什么

第 9 篇介绍的 SAM 用于分割单张图像。如果要在视频中实现「请将第一帧中指定的物体一直分割到底」,还需要另外两项功能。

  1. 记忆:上一帧中该物体的外观。即使物体旋转或被短暂遮挡后再次出现,也必须认出它是同一个物体。
  2. 速度:如果对每一帧都从头运行繁重的编码器,速度就会变慢。

Ravi 等人提出的 SAM 2 在 SAM 的结构中加入了 记忆机制来解决这两个问题。由于图像被视为「单帧视频」,因此同一个模型既可以分割图像,也可以分割视频。

2. 结构:在流动中进行记忆

SAM 2: 지난 프레임의 기억을 보고 이번 프레임을 칠한다 t−4 t−3 t−2 t−1 t ★ ★ 프롬프트를 준 프레임과 최근 프레임 몇 장의 기억을 둔다 이미지 인코더(Hiera) 메모리 뱅크 최근 N장(기본 6) + 프롬프트 프레임 + 물체 포인터 메모리 어텐션 × 4 셀프 → 메모리로 교차 마스크 디코더 → 마스크 메모리 인코더: 이번 마스크를 기억으로 바꿔 넣는다 EfficientTAM 의 줄이기: 기억의 공간 토큰을 2×2 로 평균 → 키·값 4분의 1 이웃 칸의 기억은 서로 비슷하다(국소적 매끄러움)는 가정. 물체 포인터 토큰은 줄이지 않는다.
图像:帧经过图像编码器,通过记忆注意力参考记忆库中的记忆,掩码解码器的输出结果再次进入记忆,这就是 SAM 2 的数据流。下方是 EfficientTAM 的 2×2 缩减操作

视频帧按顺序逐张输入(流式传输)。以下是每一帧中发生的事情:

  1. 图像编码器:经 MAE 预训练的 Hiera(第 7 篇第 6 节中的分层 Transformer)将帧转换为特征。每帧仅需一次。
  2. 记忆注意力:当前帧的特征首先关注自身(自注意力),然后关注记忆库中的记忆(交叉注意力)。这类基础模块共有 4 个。
  3. 掩码解码器:与 SAM 相同的解码器会输出掩码。如果用户在当前帧进行了点击操作,该点击也会作为提示词使用。这里有一个专门预测物体是否 可见的预测头,因此在完全被遮挡的帧中可以输出「不存在」。
  4. 记忆编码器:将当前绘制的掩码进行缩减,并将其叠加到当前帧的特征上,通过轻量级卷积进行混合,从而生成「该物体在这一帧中的状态」这一记忆。
  5. 记忆库:将最近几帧的记忆(默认 6 张)与用户提供提示词的帧的记忆分别排队存放(先进先出)。这里还存放着从掩码解码器输出 token 中提取的 物体指针(将 256 维度拆分为 4 个 64 维度的 token)。如果说空间地图表示「在什么地方、呈什么样」,那么指针则是关于「那个物体是什么」的摘要。

直观地说,就是「结合最近几张图中该物体的外观,以及用户最初指定的场景中的外观,来在当前帧中寻找目标」。将用户指定的帧的记忆单独长期保留是核心设计。如果只保留最近的记忆,略有偏差的掩码就会变成记忆,进而导致下一帧产生更大的偏差,从而容易引发 漂移。用户确认过的记忆起到了锚点的作用。

3. 数据与数值

SA-V 数据:50,900 个视频,642,600 个掩码片段(视频中单个物体的逐帧掩码集合,其中人工标注 190,900 + 自动标注 451,700),共 3,550 万个掩码。它通过在视频上运行由模型预测并由人工修正的循环来构建,类似于 SAM 的数据引擎(第 9 篇)。

项目 数值(论文) 条件
视频分割交互 比以往方法 少 3 倍 的点击量,且更准确 论文摘要
图像分割 比 SAM 更准确且 快 6 倍(130.1 对 21.7 FPS) 单张数据中心 GPU,bfloat16,图像编码器已编译,批量大小为 10
视频速度 Hiera-B+ 43.8 FPS, Hiera-L 30.2 FPS 同款 GPU,批量大小为 1
训练 256 张数据中心 GPU,108 小时 模型卡片

这是 2024-09 发布的 SAM 2.1 检查点的官方表格(单张数据中心 GPU,所有组件均已编译。测试环境与论文不同)。

尺寸 参数量 FPS SA-V 测试 J&F MOSE 验证 J&F LVOS v2 J&F
tiny 3,890 万 91.2 76.5 71.8 77.3
small 4,600 万 84.8 76.6 73.5 78.3
base+ 8,080 万 64.1 78.2 73.7 78.2
large 2.244 亿 39.5 79.5 74.6 80.6

J&F 是掩码区域重叠度 (J) 与边界准确率 (F) 的平均值。值得注意的是,即使将尺寸扩大近 6 倍,在 SA-V 上的得分差距也仅有 3 分。代码与检查点遵循 Apache-2.0 协议。

我们的实测:SAM 2.1 tiny

TT Score 项目针对乒乓球桌分割任务对体积最小的 tiny 模型进行了实验(《TT Score 模型解剖》第 3 篇)。

条件 数值
服务器 GPU,与其他任务共享时(2026-10-11) 图像编码 40ms,提示词预测 26ms,单视频追踪物体 36–38ms/帧,GPU 显存 0.68–0.96GB
CPU 临时 Pod(2026-10-12) 每帧中位数 1.14 秒
乒乓球桌边缘(实际比赛 12 场,5 帧中位数) 与数据集掩码的差异中位数 4.7px,90% 为 11.2px

官方表格中的 91.2 FPS(每帧约 11ms)与我们的 36–38ms 条件不同。官方表格是在专用 GPU 上对所有组件进行编译后测得的数据,而我们则与其他任务共享了 GPU。这是一个说明即使是「同款模型」,在引用数字时也必须附带说明测试条件的例子。

4. EfficientTAM:通过精简记忆实现轻量化

Xiong 等人提出的 EfficientTAM 旨在将 SAM 2 轻量化到足以在手机上运行的程度。它主要做了两项更改:

  1. 平坦的 ViT 编码器。 使用单一分辨率的小型 ViT(Tiny·Small,patch size 16)来代替分层的 Hiera。并使用 EfficientSAM 的 SAMI 预训练进行初始化。
  2. 粗糙的记忆交叉注意力。 对记忆中的空间 token(Key 和 Value)以 2×2 窗口进行 平均,缩减为四分之一 后再进行注意力计算。物体指针 token 不会被缩减。

第 2 点的理论依据是 局部平滑性。由于记忆图中相邻网格的特征彼此相似,因此用四个特征取平均后的一个特征来代替这四个特征,注意力计算的结果也不会发生显著变化。论文在某个示例中显示,与完整注意力的相对误差为 0.03(图 3,单一样例),并报告称如果进一步缩减为 4×4,准确率会下降约 1 分,而速度提升却微乎其微。

动手尝试:如果足够平滑真的可行吗

我们亲自对这一假设进行了测试。记忆 = 32×32 网格 × 4 张 × 64 维度,Query 数量为 1,024 个。构建了两种类型的记忆,并测量了当对 Key 和 Value 进行 2×2 平均时,注意力输出的变化程度(实测数据,笔记本 CPU,7 次运行的中位数)。

记忆 Key 数量 相对误差 耗时
平滑的(邻近区域相似的低频场) 4,096 → 1,024 0.050 29.2 → 8.4ms
杂乱的(每个网格各不相同) 4,096 → 1,024 0.753 30.9 → 8.3ms

耗时与 Key 的数量成正比,减少了约四分之一。只有在记忆平滑时误差才较小。EfficientTAM 的精简并非没有代价,而是 「押注于视频特征在邻近区域具有相似性」这一假设,其准确性完全取决于该假设是否成立。实际特征的平滑程度因模型和场景而异,我们并未针对实际的记忆图进行测量(未实测)。

论文数值及阅读注意事项

模型 SA-V 测试 J&F 参数量 数据中心 GPU FPS 手机(每帧耗时)
SAM 2(对比对象) 74.7 8,100 万 43.8 —
EfficientTAM-S 74.5 3,400 万 85.0 1,010.8ms
EfficientTAM-S/2 74.0 3,400 万 109.4 450ms
EfficientTAM-Ti 70.7 1,800 万 96.2 840.5ms
EfficientTAM-Ti/2 70.8 1,800 万 109.4 261.4ms

(论文表 1,输入尺寸 1024×1024。「/2」表示将记忆进行 2×2 缩减的版本。手机为 2023 年高端机型。)

翻阅原文会发现两处不一致的地方。

如果只搬运论文摘要中的数字,就会漏掉这些前置条件。这也是为什么要亲自查看论文表格的原因。代码与检查点遵循 Apache-2.0 协议,学术会议发表情况暂未确认(arXiv 版本)。

5. 局限性

6. 与我们项目的关联

接下来的文章将介绍通过 文字而不是点击来指代物体的 SAM 3。

TT 小贴士。 只有在相邻格子互相相似的时候,把记忆聚合成 2×2 才是没问题的。把杂乱无章的记忆强行聚合后,结果竟然相差了 75%。

参考文献

登录后即可点赞

评论

还没有评论。

登录后即可发表评论