Skip to content

필사 모드: SOTA 实时视频分析 — 追踪、理解、高效推理

中文
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.

引言

理解一张静态图像,和理解随时间展开的视频,是两个不同的问题。视频多了一条时间轴,物体会移动、被遮挡、再重新出现。要实时回答「现在正在发生什么」「这个物体在下一帧去了哪里」,不仅要考虑准确度,还必须同时考虑延迟。

本文围绕架构原理,梳理实时视频分析的代表性任务与方法。由于视频的 SOTA 变化也很快,本文不对具体模型的排名或数值下定论,而是聚焦于概念与系列的走向。不确定的最新规格会以泛化的方式处理。

内容大致分四条主线。第一,视频理解可以拆解成哪些任务。第二,解决这些任务的视频模型的架构走向。第三,统一分割与追踪的 SAM 2 系列视角,以及多目标追踪。第四,让实时成为可能的优化与部署的现实情况。这几条主线最终都会收敛到同一个问题上——「在准确度与延迟之间站在哪个位置」。

视频理解的主要任务

视频理解依目标不同分为若干任务,代表性的整理如下。

  • 行动识别(action recognition):在短片段或流中分类「发生了什么行动」,赋予走路、跑步、拿取物品之类的标签。
  • 时间行动定位(temporal action localization):在长视频中,以区间形式找出「某个行动从何时开始到何时结束」。
  • 物体追踪(object tracking):跨帧持续跟随特定物体,分为单目标追踪与多目标追踪。
  • 时间/视频分割(video segmentation):让物体的像素掩码在多帧之间保持一致,是图像分割在时间轴上的延伸。
  • 视频问答与字幕生成:用语言描述视频内容或回答相关问题,属于多模态模型的领域。
   视频理解任务地图(概念)

  分类轴:「发生了什么」    --> 行动识别
  时间轴:「何时发生」      --> 时间定位
  追踪轴:「物体去了哪里」  --> 物体追踪 (MOT/SOT)
  像素轴:「边界在哪里」    --> 视频分割
  语言轴:「用语言描述/问答」--> 视频-语言模型

这些任务彼此并不独立。例如在自动驾驶中,追踪、分割与行动预测会在同一个流水线中相互咬合运转。

还有一点值得强调:视频理解不是简单地「把图像理解重复做很多次」。帧与帧之间的关系,也就是时间一致性,才是核心。如果同一个物体在每一帧都被看作不同的东西,追踪就会崩溃;如果掩码在帧间抖动,分割就失去了用处。因此视频模型不仅被要求「准确」,还被同时要求「在时间上保持稳定」。

视频模型的架构走向

从 3D 卷积到时空注意力

早期的视频模型使用3D 卷积,把图像的 2D 卷积扩展到时间轴上,通过同时扫描空间与时间来捕捉运动模式。此后,随着 Transformer 成功应用于图像(视觉 Transformer),时空注意力(spatio-temporal attention)也被引入视频领域。

        视频 Transformer(概念)

  视频 = 帧的序列
    |
  把每一帧切成图块 (空间)
    |
  把帧沿时间拼接 (时间)
    |
  [时空注意力]
     - 空间注意力:单帧内的关系
     - 时间注意力:帧与帧之间的关系
    |
  分类/检测/分割头

时空注意力的难题是计算量。帧数与每帧图块数相乘,注意力的开销会随之增大。用于应对这一点的代表性折中方案如下。

  • 分解注意力(factorized attention):把空间注意力与时间注意力分开计算,把乘法级的开销降为加法级。
  • 令牌缩减与采样:减少不重要的令牌,或对帧进行稀疏采样。
  • 窗口/局部注意力:把注意力限制在局部范围内,而非全局。

这些折中都是在准确度与速度的取舍之上做出的选择,「最好的」组合会随任务与延迟要求而变化。

时空注意力之所以强大,是因为它能直接学习「相距很远的帧之间的关系」。比如某个行动的起点和终点即便相隔数秒,注意力也能把这两个时刻联系起来看待。这与 3D 卷积主要擅长相邻帧的局部运动形成对比。不过,这种表达力的代价就是计算量,实时系统正是靠前面提到的折中来管理这个代价。这正是视频架构设计的核心张力所在。

视频分割与追踪:SAM 2 系列的视角

如果说 Segment Anything(SAM)在图像分割领域开启了可提示分割(promptable segmentation),那么把这种思路延伸到视频就是很自然的走向。SAM 2 系列可以理解为把「图像的可提示分割」拓展为「视频的可提示分割与追踪」这样一个概念。

其核心思想如下。

  • 在某一帧中用点、框之类的提示指定目标后,模型会把该目标的掩码在后续帧中传播(propagate)
  • 在帧与帧之间设置携带过去信息的记忆(memory)结构,使物体即便短暂被遮挡后再次出现,也能被连接为同一目标。
  • 以流式方式依次处理帧,力求能够处理长视频的结构。
     视频提示分割与追踪(概念)

  帧 t=0:用提示(点/框)指定目标 --> 掩码
       |
       v  (把目标表征存入记忆)
  帧 t=1..N:参照记忆传播掩码
       |
  遮挡/再出现:借助记忆重新连接同一目标
       |
  结果:目标掩码在全部帧中保持一致

这里重要的一点是「追踪与分割被绑定为一体」。传统上追踪处理的是框,分割处理的是掩码,而这一系列则以统一的方式提供掩码级别的追踪。不过实时性能、长视频中的稳定性、复杂遮挡情形仍是难题,具体表现会因实现与设置而异。

记忆结构的作用尤其值得强调。物体从画面中短暂消失又回来时,如果没有记忆,模型很容易把它误认为新物体。若记住了过去帧中的目标表征,就能把再次出现的物体重新连接为「当时的那个目标」。这与前面提到的 MOT 中的重识别目的相同,不同之处在于不设单独的重识别特征,而是用统一的记忆来处理。检测、追踪、分割各自发展出来的思路以这种方式在同一个框架内相遇,是近期走向中一个有趣的地方。

多目标追踪(MOT)

同时追踪多个物体的多目标追踪(Multi-Object Tracking, MOT)是实时视频分析的核心一环。MOT 的目标不只是「找到物体」,而是要为每个物体在时间上赋予一致的身份(ID)。第 12 帧中编号为 3 的人和第 400 帧中编号为 3 的人必须是同一个人,才有意义。广泛使用的方法是检测式追踪(tracking-by-detection)

        检测式追踪 (tracking-by-detection)

  每一帧经[检测器] --> 得到当前帧的框
       |
  把过去的轨迹与当前帧的框做[连接(association)]
       - 位置预测:用卡尔曼滤波等估计下一个位置
       - 外观匹配:用重识别(re-ID)特征判定是否同一物体
       |
  同一物体保持轨迹 ID,新物体赋予新 ID
       |
  结果:为每个物体附上一致的 ID,随时间追踪
  • 位置预测:用卡尔曼滤波之类的运动模型预测下一帧的位置,缩小候选范围。
  • 连接(association):把预测位置与检测到的框配对,常用匈牙利算法之类的分配方法。
  • 重识别(re-ID):比较外观特征,把短暂遮挡后再出现的物体接续为相同 ID。

顺带一提,追踪按目标数量可以分类。单目标追踪(SOT)是跟随用户在第一帧指定的一个目标直到结束的任务,事先不需要知道目标是什么。多目标追踪(MOT)同时处理多个目标,通常会检测并追踪预先定义好的类别(人、车等)中的所有物体。这两个任务的目标与难点不同,本文所讨论的检测式追踪主要是 MOT 的方式。

MOT 的难题是ID 切换(遮挡或交叉时 ID 被错配)与密集场景。良好的检测器、鲁棒的运动模型、具有判别力的重识别特征这三者的组合决定了性能。何种方法「最好」取决于场景密度、相机运动、延迟要求,因此以泛化的方式理解会更稳妥。

MOT 评价指标

与检测不同,MOT 的性能还需要衡量「跟了多久、跟得有多一致」。把代表性指标在概念层面整理如下。

  • 准确的定位/检测:每一帧是否很好地找到物体并确定其位置。
  • ID 一致性:是否长期为同一物体维持相同 ID,ID 切换越少越好。
  • 关联质量:是否很好地跨帧配对了预测轨迹与真实轨迹。

存在一些试图把这几个方面合并成一个数值的综合指标,但没有哪个指标是万能的。像监控这样「不能漏掉」很重要的场景,和像统计这样 ID 一致性很重要的场景,需要关注的指标权重是不同的。

追踪范式的两条分支

追踪大致可以分为两种方式。

  • 检测式追踪(tracking-by-detection):前面说明过的方式,先逐帧检测再连接。高度依赖检测器性能,容易模块化。
  • 联合检测与追踪(joint detection and tracking):把检测与追踪作为一个模型一起训练。有的方法直接在帧间传播特征,也有用 Transformer 的查询来表示轨迹的方法。

基于 Transformer 的追踪可以看作是把 DETR 的集合预测思路延伸到时间轴上的一条走向。它试图以「把上一帧的轨迹查询带入下一帧并更新」这样的方式,把检测与连接绑定为一个统一学习的过程。不过哪种方式更优取决于场景与延迟要求,以系列层面来理解会更稳妥。

行动识别的视角

行动识别是随时间判断「正在发生什么」的任务。与静态图像分类不同,运动本身就是信息。例如「坐下」和「站起来」只看一帧很难区分,但看时间的流动就会变得清晰。

  • 运动线索:一并使用光流(optical flow)之类的运动表征,能更好地区分行动。早期模型有的会把外观和运动作为独立的流分别处理。
  • 时间跨度:短动作(挥手)与长动作(做饭)所需的时间窗口不同,模型必须能够处理各种不同的时间尺度。
  • 基于骨架的行动识别:也有提取人体关节(骨架)并根据其运动来分类行动的方法,优点是对背景、光照变化不那么敏感。
   行动识别的信息来源(概念)

  外观(看到了什么)     --> 物体·场景线索
  运动(如何运动)        --> 光流、帧差
  骨架(关节如何运动)    --> 骨架序列
       |
  结合这些信息,随时间判断「是什么行动」

行动识别被用于监控、体育、康复、人机交互等领域。不过由于真实环境的多样性(相机角度、遮挡、个体差异),基准测试的性能往往不能直接转化为实际场景中的性能。

此外,行动识别常常与前面提到的追踪、分割相结合。做法是先对人进行追踪与分割,得到每个人的区域,再在该区域内识别行动。这样一来,即便在有多个人的场景中,也能分别判断「谁在做什么」。这是一个很好的例子,展示了视频理解的各个部件是如何组装成流水线的。

视频与语言的结合

近期走向的一条主线是把视频与语言连接起来。多模态模型通过对视频编码并与语言模型结合,使得针对视频提问并得到回答这样的交互成为可能。

  • 视频字幕生成:用句子描述视频内容。
  • 视频问答:回答「视频中的人拿起了什么?」这类问题。
  • 时间定位(temporal grounding):用语言找出「扔球的那一瞬间」这样的特定时刻。
  • 行动预测与理由推理:也有一些尝试去推理接下来会发生什么、为什么做出了那样的行动,不过这仍然是非常困难的任务。
  • 长视频摘要:把数十分钟以上的视频提炼成要点摘要,维持时间上下文是关键所在。

这些能力使得海量视频无需人工逐一观看,也能被检索、摘要与分析。不过视频帧数多、计算量大,维持长视频的时间上下文也很困难。实务中会用帧采样、关键片段筛选、分层摘要之类的技巧来减轻这一负担。

时间建模的方法

视频理解的核心在于「如何把时间放进模型」。把代表性方式整理如下。

  • 帧独立 + 后聚合:分别处理每一帧,再把结果在时间上汇总。简单,但可能错过帧间的细微运动。
  • 3D 卷积:同时扫描空间与时间,直接捕捉局部运动,对长时间依赖相对较弱。
  • 循环(recurrent)结构:逐帧更新状态,延续时间信息。对流式处理很自然,但很长的依赖关系较难处理。
  • 时间注意力:用注意力直接学习帧与帧之间的关系,对长期依赖较强,但计算量大。
   时间建模方式的谱系(概念)

  简单/轻量 <--------------------> 表达力/重量级
     |                                 |
  帧独立+聚合                        时间注意力
  3D 卷积(局部)                      循环(流式)

  实务:依任务的时间尺度与延迟预算来选择

没有哪种方式无条件占优。短片段的行动分类与长视频的事件理解所需的时间尺度不同,实时流式处理与离线批处理的延迟约束也不同。方式的选择是这些需求的函数。

数据与标注的难点

视频模型的性能高度依赖数据,而视频标注远比图像昂贵。

  • 帧数膨胀:1 秒钟就有几十帧,即便是短视频,需要标注的帧数也非常多。
  • 时间标签的模糊性:「行动从何时开始、何时结束」的边界,不同的人判断会不同。
  • 追踪标签的劳动密集性:为每个物体跨帧维持 ID 与掩码来标注,非常耗费人力。

正因如此,自监督/弱监督学习、合成数据,以及由模型先起草标签、再由人工审核的迭代方式被广泛使用。SAM 系列的可提示分割之所以也作为视频标注工具受到关注,原因就在这里——人只需给出几个提示,模型就能补全其余帧的掩码,从而大幅降低标注成本。

归根结底,数据问题不仅包括「如何训练模型」,还包括「如何高效地制作标签」。好的视频系统往往始于好的标注流水线,而这条流水线本身,也会出现模型(可提示分割、追踪)作为部件嵌入其中的循环结构。

实时推理优化

由于视频每秒会涌入多帧,吞吐量与延迟和准确度同样重要。吞吐量(throughput)是「每秒能处理多少帧」,延迟(latency)是「从一帧输入到结果输出所需的时间」,二者不同。加大批处理规模会提高吞吐量,但可能增加单帧的延迟。在实时应用中,这两者之间的平衡很关键。下面整理确保实时性的代表性策略。

降低计算量

  • 轻量骨干网络:用计算量更小的骨干网络与高效的特征融合,降低每帧的开销。
  • 帧采样:不对所有帧都做重处理,只对关键帧做重处理,中间帧用轻量方式估计或插值。
  • 感兴趣区域处理:不处理整幅画面,而是把计算集中在可能存在物体的区域。
  • 级联处理:先用轻量模型快速筛选,只在可疑情况下才调用重模型,以降低平均开销。

表征与精度优化

  • 量化(quantization):降低权重、激活值的精度,提升吞吐量并减少内存占用。
  • 知识蒸馏(distillation):把大模型的知识迁移到小模型,使小模型能发挥更好的性能。
  • 剪枝(pruning):去除重要性较低的连接与通道,让模型更轻量。

流式处理与状态复用

  • 因果处理(causal processing):不等待未来帧,只用过去与当前信息输出,以降低延迟。
  • 状态复用:把前一帧的特征、记忆复用到下一帧的计算中,避免重复运算。

这三条轴线(降低计算量、表征/精度优化、流式处理/状态复用)并不互斥,而是会一起使用。比如用轻量骨干网络降低计算量、用量化降低精度、用状态复用消除冗余,通过叠加多种技巧来确保实时性。不过每种技巧都可能小幅削减准确度,能容忍到什么程度由应用的需求决定。优化从来不是「免费」的,总是要用某样东西去交换。

     实时流水线的取舍(概念)

  准确度  <----------------------->  速度
     |                                 |
  重骨干网络                        轻量骨干网络
  逐帧全处理                        关键帧+插值
  高分辨率                          低分辨率
  全局注意力                        局部/分解注意力
  高精度                            量化

  实务:依目标延迟/准确度组合这些轴线

关键在于没有唯一的正确答案。监控摄像头的实时报警与离线体育分析所要求的延迟与准确度不同,因此最优组合也不同。

应用领域

  • 监控与安保:实时入侵检测、异常行为检测、人员车辆计数。延迟要短,误报管理很重要,同时处理多路摄像头的规模问题也不小。
  • 体育分析:球员、球的追踪,战术分析,自动生成精彩集锦。密集、快速运动、遮挡是难点,尤其是同一队服球员之间 ID 的维持格外棘手。
  • 自动驾驶与机器人:对周围物体的追踪与未来轨迹预测直接关系到安全,实时性与鲁棒性是必需的,即便在罕见(异常)场景下也不能崩溃。
  • 媒体与编辑:从视频中把特定物体抠成掩码用于编辑或替换背景,会用到可提示分割与追踪,这里精度与一致性优先于实时性。
  • 医疗与行为分析:康复动作评估、手术视频分析等需要细致的时间性行动理解,准确性与可解释性很重要。

不同应用对延迟、准确度、鲁棒性的优先级不同,而这种优先级左右着架构与优化的选择。比如自动驾驶对延迟与鲁棒性都要求到极致,而媒体编辑即便耗费时间也希望得到精密的掩码。即便同样叫作「视频分析」,需求也会分化到这种程度。

实务中常遇到的问题

真正运行实时视频系统时,会出现理论上不太显现的问题。

  • 遮挡与再出现:物体消失在另一物体后面又出现时,追踪很容易中断,记忆与重识别能缓解,但并不能彻底解决。
  • 运动模糊与低照度:在快速运动或昏暗环境中,检测与追踪的质量会急剧下降。
  • 相机移动:移动的相机(无人机、车辆)会让背景本身也在流动,使运动模型变得困难。
  • 密集与相似外观:相似外观的物体很多时(人群、相同队服),ID 切换会频繁发生。
  • 漂移:误差会跨帧累积,追踪会逐渐偏移,需要周期性地重新检测来校正。
   实时追踪的失败模式(概念)

  遮挡 -----> 轨迹中断 -----> 尝试用重识别重新连接
  模糊 -----> 检测失败 -----> 用跳帧/插值撑过去
  相机移动 -> 运动预测错误 -> 需要背景校正
  密集 -----> ID 切换 -----> 用强外观特征缓解

这些问题与其说是「彻底解决」,不如说是「能缓解到什么程度」的问题。因此实务系统也会同时配备检测并从失败中恢复的逻辑(重新检测触发、基于置信度的丢弃等)。

硬件与部署的视角

实时性不只是模型本身的问题,而是与部署环境一起被决定的。

  • 边缘 vs 服务器:在相机附近(边缘)处理,延迟与带宽上更有利,但计算资源有限;送到服务器可以使用更强的模型,但会产生传输延迟。
  • 加速器的利用:针对 GPU、专用加速器所做的优化(算子融合、批处理、精度调节)会大幅改变吞吐量。
  • 流水线并行化:把解码、预处理、推理、后处理以流水线方式重叠,提高吞吐量。
  • 输入流管理:同时处理多路摄像头时,需要丢帧与优先级策略。

如果无视部署层面的考量只提升准确度,实际上很容易因为跟不上帧速而变得毫无用处。「准确但慢」的结果与「不那么准确但及时」的结果,哪个更好由应用来决定。

如何读基准测试

阅读视频分析论文数值时,有一些要注意的地方。

  • 要同时看延迟:不能只看「准确度 X%」就下判断,那个准确度是在什么帧率、分辨率、硬件下得到的,直接决定了实时性。
  • 数据集特性:要确认基准测试所设定的场景(城市道路、室内、体育等)与自己的应用有多相似。
  • 评价条件:是在线(流式)评价还是离线(看完整段视频后)评价,难度会不同。能看到未来帧的话,通常会更容易。

如果忽略这些背景,只比较表格里的数字,很容易得出错误的结论。应当始终追问「这个数字是在什么条件下测得的」。

尤其是,「实时」这个表述本身就是相对的。有的应用每秒 5 帧就足够,而另一些应用需要 30 帧以上。而且即便帧率相同,如果处理延迟不断累积,结果也会落后于实际情况。因此当一篇论文声称「实时」时,确认它的标准是否与自己应用的标准一致,是很重要的。

优劣势小结

方式优势局限
3D 卷积擅长捕捉局部运动对长时间依赖相对较弱
时空 Transformer全局关系、长期依赖计算量大(需要取舍)
检测式 MOT模块化、灵活易受 ID 切换、密集场景影响
提示分割/追踪掩码级的统一追踪实时性与长视频稳定性是难题
轻量化/量化确保实时性可能损失准确度

结语

实时视频分析不能只用「准确度」这一个维度来解释。随着时间轴的加入,追踪的一致性、遮挡处理,尤其是延迟时间都会一并牵涉进来。架构靠时空注意力获得表达力,优化靠轻量化与流式处理换取速度,而实务系统正是在这两者之间的取舍中被造出来的。

SAM 2 系列展现出的「用提示指定、在帧间传播」这种思路,正在模糊分割与追踪的边界,重新编排视频理解的各个部件。即便新模型不断涌现,只要理解了任务的结构与取舍的原理,就能更从容地跟上变化。

给实务工作者留下的建议是这样的:设计视频系统时,与其先去寻找「最准确的模型」,不如先确定「我们能容忍多少延迟,又能容忍多少失败(遮挡、模糊、ID 切换)」。这个约束一旦确定,在此之上组合时间建模方式、优化技巧、部署位置的工作就会清晰得多。视频理解的困难大多来自时间与资源的约束,诚实地面对这些约束,才是构建一个好系统的起点。

参考资料

测验

Q1: 行动识别与时间行动定位的区别是什么? 行动识别是在片段或流中分类「是什么行动」。时间定位则进一步在长视频中以区间形式找出该行动「从何时到何时」发生。

Q2: 为什么时空注意力中计算量会成为问题? 因为帧数与每帧的图块数相乘,会使注意力开销增大。为缓解这一点,可以分解空间与时间注意力、减少令牌数,或使用局部注意力。

Q3: SAM 2 系列在视频方面新增的核心概念是什么? 把某一帧中由提示指定的目标掩码传播到后续帧,并用记忆结构在遮挡与再出现的情况下依然连接同一目标。它在掩码层面统一了分割与追踪。

Q4: 检测式追踪(tracking-by-detection)的基本流程是什么? 每一帧用检测器获取框,再通过位置预测(运动模型)与外观匹配(重识别)与过去的轨迹相连接,为同一物体维持一致的 ID。

Q5: MOT 中的 ID 切换是什么? 指在遮挡或物体交叉的情况下,原本轨迹的 ID 被错配给另一个物体的问题,在密集场景与相似外观下尤其容易发生。

Q6: 举出两种为了实时性而降低计算量的方法。 使用轻量骨干网络;只对关键帧做重处理、中间帧轻量插值的帧采样;把计算集中在感兴趣区域等。

Q7: 为什么因果(causal)处理能降低延迟? 因为它不等待未来帧,只用过去与当前信息输出结果。在流式环境中需要即时响应时很有优势。

Q8: 为什么在视频分析中很难断言存在「最优组合」? 因为不同应用对延迟、准确度、鲁棒性的优先级各不相同。监控报警与离线体育分析所要求的取舍不同,因此最优设置也不同。

Q9: 检测式追踪与联合检测·追踪的区别是什么? 检测式追踪是逐帧检测后再单独连接(易于模块化,依赖检测器)。联合检测与追踪则把检测与追踪作为一个模型一起训练,通过跨帧特征传播或轨迹查询把两个过程绑定在一起。

Q10: 为什么运动线索在行动识别中很重要? 因为像「坐下」和「站起来」这样的许多行动,仅看一帧很难区分。一并使用光流之类的运动表征,能捕捉随时间发生的变化,从而更好地区分行动。

Q11: 为什么在实时视频中「准确但慢」的结果会是问题? 因为帧会不断涌入,如果处理速度跟不上帧速率,滞后的结果指向的已经是过去的状况。在监控、自动驾驶这类需要即时性的应用中,及时得到的近似值可能更有用。

Q12: 边缘处理与服务器处理之间的取舍是什么? 边缘(相机附近)在传输延迟与带宽上更有利,但计算资源有限。服务器可以使用更强的模型,但会产生传输延迟。选择取决于应用的延迟要求与资源约束。

현재 단락 (1/195)

理解一张静态图像,和理解随时间展开的视频,是两个不同的问题。视频多了一条时间轴,物体会移动、被遮挡、再重新出现。要实时回答「现在正在发生什么」「这个物体在下一帧去了哪里」,不仅要考虑准确度,还必须同时...

작성 글자: 0원문 글자: 9,749작성 단락: 0/195