经过多年与视频分析相关的工作,我不断回到同一个令人不舒服的问题:当系统对视频给出精确答案时,它能展示这个答案的来源吗?
视觉语言模型(VLM)可以观看视频,并给你一个令人信服的描述。但当你问它“物体究竟何时越过边界”、“占据了一个区域多久”、或者“哪些帧支持这个答案”时,问题就出现了。
描述是一项语言任务。测量是一项证据任务。 这种区分促使我构建了“扎根视觉智能”(Grounded Visual Intelligence):一个将视频转化为结构化、可查询证据的实验,然后再让语言模型解释任何东西。
我希望系统遵循一个简单的规则:
让感知模型来观察。让确定性工具进行测量。让 LLM 来规划和解释——并附上引用。
本文将这条规则转化为一个小型可操作系统,以 SAM 3 作为主要感知路径,Grounded DINO + SAM 2 作为可复现的基线。两条管道处理相同的十秒视频,并输出相同的模型无关证据图。
一、流利的回答还不算是经过衡量的答案
想象一下,你问一个视频助手:“白杯是什么时候从隔板的左侧移到了右侧的?”
多模态模型可能会回答“大约四秒”。这很有用,但也留下了几个工程问题未解:
在帧间遵循了哪些物体身份?
哪条空间规则定义了“左”和“右”?
估算的时间分辨率是多少?
其他组件能否在不重新运行 LLM 的情况下重现答案?
审查者可以直接查找支撑帧吗?
问题不仅限于错误的答案。一个答案可能大致正确,但由于证据、语义和不确定性被隐藏,操作上仍然薄弱。对于可衡量的视频问题,我想要不同的合同:如果系统能从跟踪的观测中计算时间戳,那么语言模型就不必从像素中估计时间戳。
二、架构:一层可移动的证据
管道有四项核心职责,清晰划分了感知、测量与语言的界限。
1. 感知产生观察
感知层检测或提示对象,将其分割,并通过剪辑保持其身份。
主路径 (SAM 3):其“可提示概念分割”接受概念提示,并返回跨图像和视频的持久身份掩码。它结合了图像级检测与基于内存的视频跟踪器。
基线 (Grounded DINO + SAM 2):Grounded DINO 将文本提示转换为第一帧的开放集检测;SAM 2 利用其流式存储器架构将选定对象通过视频传播。
这两条是非常不同的模型栈,但系统的其他部分不应该在意。
2. 证据图对输出进行规范化
每个适配器都会将其本地张量和响应对象转换为可移植的场景文档。中央记录刻意保持小巧:
Scenemetadata: source, width, height, fps, durationtracks[]track_idconceptobservations[]frame_indextimestamp_sbounding_boxconfidencemask_urizones[]provenance[]
掩码存储为行主要二进制 RLE 伪影(Artifacts)。模型权重、CUDA 张量和框架对象不跨越此边界。这意味着测试、分析工具和浏览器可以从录制的 JSON 和 RLE 文件中工作,而无需导入 PyTorch 或任何 SAM 实现。
3. 确定性工具回答可测量问题
场景内存暴露以下操作:
统计概念的实例;
在某个时间范围内检索一条轨道;
测量观察到的区域内的占用率;
识别一个区域的最后一个观测和另一个区域的第一个观测;
提交作为证据的确切音轨、帧数和时间范围。
答案是价值加上证据的引用——而不仅仅是一句合理的句子。
4. LLM 负责编排和解释
LLM 将用户问题转化为工具调用,并将结果转化为可读的语言。但它不拥有计数、过渡规则或时间戳。这些仍是确定性且不可检视的。生成发生在测量之后,这改变了整个交互的可靠性。
三、受控场景:白杯子实验
我选择了一个刻意简单的合成场景:一个白色杯子从标记为 A 的区域移动到标记为 B 的区域,穿过狭窄的隔板,同时经过一本笔记本。这个场景几乎无聊——但这很有用,让你更容易仔细审视每个假设。
| 属性 | 值 |
|---|---|
| 持续时间 | 10 秒 |
| 采样率 | 4 fps |
| 分辨率 | 560 × 316 |
| 总帧数 | 40 |
| 提示词 | “white cup” |
| 交互修正 | None (Google Colab Tesla T4) |
A 区和 B 区排除了分隔带周围的狭窄归一化带。区域成员使用轨道边界框的归一化中心。在 4 帧每秒时,本次运行中最细的过渡分辨率为 250 毫秒。
四、系统能捍卫的答案
这两种感知路径都产生了:一条杯赛跑道、40 个观测、没有遗失的证据框架、无轨道间隙、相同的 A 到 B 边界。
确定性答案是:
白杯在 3.75 秒到 4.00 秒之间从 A 区移到 B 区。它最后一次在 A 区(帧 15)被观测到,首次在 B 区(帧 16)被观测到。在 4fps 采样下,过渡被局部化为 250 毫秒窗口。
测量的入住率也完全一致:
| 测量项 | Grounded SAM 2 | SAM 3 |
|---|---|---|
| A 区证据间隔 | 0.00 – 3.75 s | 0.00 – 3.75 s |
| A 区停留 | 4.00 s | 4.00 s |
| B 区证据间隔 | 4.00 – 9.75 s | 4.00 – 9.75 s |
| B 区停留 | 6.00 s | 6.00 s |
五、两条模型路径的一致性有多大?
找到同一个杯子是意料之中的部分。更有趣的是:这两条管道是否产生了足够相似的空间证据以支持相同的测量?我逐帧匹配它们的单杯轨迹,并比较了二进制遮罩、包围盒和遮罩重心。
在全部 40 帧中,结果惊人地一致:
| 一致度量指标 | 结果 |
|---|---|
| 平均掩蔽 IoU | 0.9694 |
| 中位掩蔽 IoU | 0.9692 |
| 最小掩蔽 IoU (在 3.75s 处) | 0.9487 |
| 最大掩蔽 IoU | 0.9829 |
| 平均边界框 IoU | 0.9648 |
| 平均重心距离 | 0.447 px |
| 最大重心距离 | 1.068 px |
掩膜重叠最低发生在最后一个 A 区观测点(杯子靠近分隔线和笔记本时)。即便如此,两个系统在概念、身份、区域和过渡证据上也达成了一致。
⚠️ 重要限制:一致性不等于准确。该片段没有手工注释的真实地面掩码。两个系统可能一致,但同样错误。比较支持一个更狭窄的结论:对于该受控场景,任一感知堆栈在实质上都会产生相同的下游证据和确定性答案。
六、信心是整体模式的一部分——而非普遍数字
这两条流程还揭示了为什么模型元数据必须保留其语义。
在 Grounded SAM 2 中,传播观测的置信度是初始 Grounding DINO 种子分数。
在 SAM 3 中,重复值是文本提示的配乐。
两者都不应以 40 个独立校准的帧置信度形式呈现,且不应直接比较。因此,证据探索者对它们进行了不同的标签:seed_score(种子评分)和 track_score(轨道评分)。泛名字段(如 confidence)只有在其来源和含义随之传播时才有用。
七、操作观察,不是速度排行榜
这两次运行都记录了在 Colab T4 上的相位时序和存储:
| 指标 | Grounded SAM 2 | SAM 3 |
|---|---|---|
| 总耗时 | 37.30 秒 | 19.57 秒 |
| GPU 最高分配内存 | 3.28 GiB | 1.81 GiB |
| 进程 RSS | 3.88 GiB | 5.23 GiB |
很容易就停下来,宣称“SAM 3 更快更轻”。但数据尚未完全支持这一结论:依赖边界不同,模型加载路径不同,且这些都是单次运行。此外,进程 RSS 的移动方向是相反的(SAM 3 的常驻内存反而更高)。
Grounded SAM 2 笔记本还报告其可选编译扩展无法导入,因此跳过了可选的后处理。核心传播正常完成,我把警告记录了下来。当可重复性包含那些尴尬的设置细节时,它更有用。
八、使答案变得可查验
最后一个界面是一个静态证据浏览器。它不进行托管 GPU 推理,也不向 LLM 发送请求。它加载经过验证的视频、两个归一化的场景轨道及其 80 个 RLE 掩码。
探险者让读者可以:
寻找引用的边界框架;
擦洗证据时间线;
在 SAM 3 与 Grounded SAM 2 之间切换;
切换遮罩、方框和区域;
检查覆盖范围、空档、得分、时机和记忆来源。
SAM 3 是默认视图,因为它提供了最简洁的主概念提示路径。Grounded SAM 2 依然作为无限制的基线存在。
九、实验证明了什么——以及它不能证明什么
对我来说,最有用的结果是架构。它表明,两种不同的视频感知堆叠可以简化为一个稳定的证据契约。一旦契约存在,时间和空间问题就变成了对轨道的确定性操作,而不是对像素的开放式猜测。
该实验尚未证明系统总体上能减少 VLM 误差。它不评估:
直接 VLM 基线
拥挤场景、多个同类实例
长时间遮挡、重新识别、摄像机运动
真实操作画面(缺少真实掩码和过渡注释)
未来的测试应包括:构建带注释的多场景评估集、增加遮挡与再入、区分身份/掩膜/时间抽样的不确定性、通过深度和 3D 几何扩展图、测量端到端的答案质量与成本。
十、更大的理念
视频基础模型在检测、分割和跟踪概念方面变得更为出色。这使得上层架构的重要性变得更高,而非减少。
应用仍需保存:观测到了什么、何时观测到、如何测量、以及哪些工件支持该主张。否则,即使是强大的感知模型,也会成为文本生成器的另一个不透明输入。
我现在偏好的设计原则很简单:
“如果视觉事实可以被测量,不要让语言模型去发明它。给模型一个工具,保留证据,让答案变得可寻。”
这就是“听起来正确的视频系统”和“能展示其工作的视频系统”的区别。
可重复性说明
完整的仓库包含与模型无关的 Python 包、适配器、测试、两个 Colab 笔记本、受控源剪辑、验证结果文档、静态浏览器以及绘图的源代码。精确来源、预备输入、检查点和模型修订摘要均记录在运行工件和项目结果文档中。
参考文献
Carion 等,SAM 3:任何有概念的片段,2025/2026。
Ravi 等,SAM 2:图像和视频中的任意片段,2024。
Liu 等,Grounded DINO:将 DINO 与开放型物体检测的基础预训练结合,2023/2024。
Ren 等,Grounded SAM:为多样化视觉任务组装开放世界模型,2024。
Hugging Face Transformers,SAM3 视频文档。
191