原始视频
这是本样本的原始视频,展示一个人在执行清洁类任务。
无法加载数据文件。请在本报告目录启动静态服务器后打开(例如
python3 serve_report.py --port 8765;需支持 HTTP Range 才能跳播视频片段),不要直接用受限的 file://。
第一视角(egocentric)人类视频通常由头戴相机拍摄,记录人在真实环境中完成日常操作的过程,例如在厨房切菜、在工位装配零件或在商店整理货架。相机随头部运动,双手及其操作对象构成画面的主体;场景、光照、遮挡以及操作中的失败与重试均自然发生,而非来自预设的实验室环境。近年来,EgoVerse10、EgoDex9 和 EgoLive11 等公开数据集已将此类视频扩展到千小时量级。
这类数据对机器人学习的潜在价值,首先在于它能提供丰富的视觉、操作语义与行为先验6910。尽管人手与机器人末端执行器的形态不同,物体状态、任务意图以及「根据观测选择动作」的高层概念仍有相通之处。人类操作视频因此可用于视觉—语言—动作(VLA)表征学习;随后再利用机器人数据,将这些表征适配到具体机器人的观测与动作空间。与遥操作采集的机器人数据相比,真实人类视频还具有两项优势:其一,覆盖的场景、物体和技能更为丰富;其二,采集不依赖机器人硬件和遥操作员,更容易在多个真实环境中并行扩展。
原始第一视角视频本身可以用于视频生成和世界模型训练;结合手部重建得到的腕部轨迹,还可以提供弱动作监督。这里称为「弱监督」,是因为腕部轨迹只能近似描述手部运动,并不包含机器人控制指令、接触力或执行器状态,也未必能直接映射到具体机器人本体。然而,这些信号通常不显式说明当前正在执行哪项操作,以及该操作何时完成。这类时间对齐的高层语义正是许多机器人策略所需要的监督。VLA 训练样本通常由「观测、语言指令、动作」组成,其中语言指令需要与相应的时间区间对齐。π0.5 等层级模型还会先预测高层子任务指令,再以此为条件生成低层动作1;这类高层模块可以从时间对齐的子任务标签中获得直接监督。分段边界同样具有独立价值:它界定一次完整操作的起止,可直接服务成功判定、技能检索与数据筛选配比。因此,将长视频转化为可用监督,需要同时回答两个问题:每项操作何时开始、何时结束,以及该时间段内完成了什么操作。本文将这两个问题分别称为子任务分段与语义标注。
自动完成这两项任务并不容易。第一视角画面随头部运动,手部经常遮挡操作对象;相邻动作之间缺少清晰停顿,细粒度操作又可能连续发生。人工逐段标注成本很高,因此更需要可审计、可复现且成本可控的自动标注流程。
实验范围:WGO-Bench 的第一视角人类子集 HomER,共 25 个视频、470 个人工标注片段。分段与描述均由开放权重 Qwen 视觉语言模型生成;Gemini-3.5-Flash 仅用于离线充当语义研判器,判断描述是否与人工标注语义一致。三类指标的完整定义见 §2。
现有工作已经提出多种自动化管线,用于从长视频中提取动作边界或生成片段级描述。其中较有代表性的路线包括基于运动信号或固定时长的规则分段、对预切片段进行稠密描述,以及同时评测分段与标注的完整流程。它们各自解决了问题的一部分,也留下了不同的空白;这些空白决定了本文重点探索的方向。
VITRA6 将单目第一视角视频转换为三维手部与相机运动、原子动作片段和语言指令,并以腕部速度的局部极小值作为候选动作边界。另一类方法直接使用预设时长。在 Toyota Research Institute 的 A Systematic Study of Data Modalities and Strategies for Co-training Large Behavior Models for Robot Manipulation7 中,研究者构建人类视频语言标注数据时,沿用 EgoVid 的划分方式,将筛选后的 Ego4D 视频切成固定 4 秒片段,再按 1 秒间隔抽帧生成描述。两类方法都容易过分割:运动低谷会把动作内部的停顿、重新抓握和手腕微调误判为边界;固定时长切分则不考虑动作何时真正完成,可能在同一动作内部反复插入切点。本文后续在 HomER 上复现了基于 HaWoR 腕速低谷并合并相邻片段的基线,具体数字见 §3.1。一种应对方式是将连续抽帧拼成带时间戳的拼贴图,让模型从更完整的时间上下文中判断动作边界,从而减少不必要的切分。
Scale Labs 的 The Path to Large Scale Dense Video Captioning5 讨论在已经切分好的视频片段上生成稠密描述。其核心工程贡献之一是用拼贴图辅助标注:将多个稳定抽样帧拼成一张网格图,并结合时间信息提供紧凑的片段表示,从而减少逐帧输入的开销。该设计直接启发了本文的视觉输入形式。不过,该工作默认时间边界已经给定,因此没有涉及从完整长视频中定位动作起止这一更前置的分段问题。
Macrodata Labs 的 Segmenting Robot Video into Actionable Subtasks3 是与本任务设定最直接相关的公开工作之一:它将「长视频 → 动作级片段 + 短语义描述」定义为可量化评测的任务,发布 WGO-Bench 及分段、固定边界标注和端到端三类指标,给出拼贴图与 GEPA 搜索分段规则等设计,并比较多个闭源和开源模型。本文聚焦另一类实际需求:在只使用成本相对较低、可私有部署的开放权重模型时,检验哪些设计仍然有效,以及这些设计能否组合成可扩展的自动标注流程。
本文提出的 EgoANT 面向可私有部署的开放权重模型,构建从长视频输入到动作边界与操作描述输出的端到端自动标注流程。本文围绕这条流程探索三个方面:如何借助带时间戳的拼贴图预测语义完整的动作边界,如何在给定边界后生成准确简洁的操作描述,以及分段与标注串联后的端到端总体效果。方法设计吸收了 Scale Labs 的拼贴图表示和 Macrodata Labs 的已完成动作分段规则,并采用 WGO-Bench 进行统一评测。后文将展开各阶段设计与评测。
要比较不同的标注方案,需要一个公开、可复现、并且和我们的任务同构的基准——它必须同时考核「切得对不对」和「写得对不对」。本文用的是 WGO-Bench2。
WGO-Bench(What's Going On Benchmark)由 Macrodata 随其公开博客一同发布3,把「长视频 → 动作级片段 + 一句话描述」定义成一个可以打分的公开任务。它包含约 100 个 episode,每个 episode 提供人工标注的子任务时间边界,以及每段对应的一句短描述。 其中 HomER 是第一视角人类操作子集;本报告的所有分数固定在 HomER 的 25 个视频 / 470 个参考片段上。
三种得分依次衡量:时间边界是否准确、给定边界后的描述是否正确,以及端到端分段与标注的整体表现。下文统一把人工标注片段称为人工参考分段(reference / gold segments):叙述中多用「参考分段」,公式中可用 gold。下面用同一个 10 秒例子给出计算步骤与公式。
下面用一个 10 秒视频说明时间匹配。人工将视频分为 3 段,模型预测了 4 段。
参考片段:G0[0,3]、G1[3,6]、G2[6,10];模型预测:P0[0.5,2.8]、P1[2.8,5.5]、P2[5.5,8]、P3[8,9.5]。
吸附后,预测片段变为 P0[0,2.8]、P1[2.8,5.5]、P2[5.5,8]、P3[8,10];只有 P0 与 P3 的外侧端点发生变化。P0–G0、P1–G1 的时间 IoU 达到 0.75 阈值并形成一对一配对;P2、P3 未达到阈值。于是一对一时间匹配数 m = 2,预测段数 npred = 4,参考段数 ngold = 3。
沿用同一 10 秒例子的人工边界 G0、G1、G2,模型只为每段生成描述。评测沿用 Macrodata 公开的 LLM-as-judge rubric:将人工描述、模型描述和整集任务指令交给 Gemini-3.5-Flash,逐段返回 match=true/false。若结果为 [true, true, false],则正确描述数 c = 2。下方折叠为本文实际使用的评判提示词。
说明:下方就是提示词文本。评判输入为人工描述、模型描述和整集任务指令;{gt_label}、{pred_label}、{instruction} 会替换成该段的实际值。公开 rubric 见 Macrodata。
Loading…
仍用上述预测的 4 个片段及其描述。时间匹配先得到 P0–G0 与 P1–G1;若语义研判器只有 P0–G0 返回 true,则最终正确结果数 s = 1。
本节按管线顺序说明:先分段、再标注,最后看端到端串联结果。每个阶段先交代尝试过的方法,再给出对应实验结果。
管线实验会用到若干视觉语言模型。我们选用 Qwen3.6-27B 与 Qwen3.5-397B-A17B,主要因为它们是目前较常见、易于私有部署的开源模型,便于比较不同的分段策略与标注分工;下文图表会标明每一次实验实际调用了哪个模型。标注结果的语义评测使用 Gemini-3.5-Flash,打分设定遵循 Macrodata Labs 的 WGO-Bench。
视频分段要解决的问题是:给定一段第一视角长视频,输出动作级片段的时间边界。输入是完整视频,输出是一组起止时间(例如 [12.0, 18.5]);本阶段只评边界是否与人工参考对齐。得分统一为同一 HomER 子集上的视频分段得分(Segment F1)。先把后面会用到的分段术语和 GEPA 说清楚,再列方法与得分。
completed_events_duration_prior_v1,没有重新运行 GEPA。使用时将完整视频的全部带时间戳拼贴图与规则文本一并提交,一次调用得到整集粗分。
说明:下方就是提示词文本。System / User 两段会送给模型;其中 {duration_sec} 会替换成该视频的实际时长;图像输入是带时间戳的拼贴图,接在 User 提示词文本之后,不写在下方文字里。
Loading…
说明:下方就是提示词文本。System / User 两段会送给模型;其中 {sample_sec}、{t0}、{t1}、{instruction}、{coarse_hint} 会替换成该窗口的实际值;图像输入是窗内带时间戳的拼贴图,接在 User 提示词文本之后。
Loading…
下列为我们尝试过的分段标注方法。
segments = sort_by_start_time(s2_predictions)
merged = []
for seg in segments:
prev = merged[-1] if merged else None
if prev and compatible(prev, seg, strategy):
prev.end_sec = seg.end_sec
prev.subtask = choose_representative_label(prev.subtask, seg.subtask)
else:
merged.append(copy(seg))
def compatible(a, b, strategy):
if strategy == "exact_label":
return normalize(a.subtask) == normalize(b.subtask)
if strategy == "verb_object":
return same_main_verb(a, b) and overlapping_main_objects(a, b)
if strategy == "bridge_short_gap":
return small_gap(a.end_sec, b.start_sec) and (
exact_label_match(a, b) or verb_object_match(a, b)
)
读码说明:
compatible(...) 判定相邻两段是否合并为一段;三种 strategy 对应正文里的三条规则。normalize 先去掉大小写、空白等表面差异,再按规范化后的字符串比较标签。choose_representative_label 合并后保留一句代表标签,通常取较长或信息更完整的那句。bridge_short_gap 里的 small_gap 只处理很短的时间空隙,把它视为仍可合并的连续区间。start_sec / end_sec / subtask,合并时调整已有边界(删除或挪动)。条件名中的「· 27B / · 397B」分别表示该次调用使用 Qwen3.6-27B / Qwen3.5-397B-A17B。图中两侧并不对等:397B 只覆盖拼贴图分片、S1 密集切分、早期 S2(窗外扩约 1 秒);整集一次提交、窗口外扩消融、覆盖完整动作提示词与相邻片段规则合并均只在 27B 上跑完。
| 条件 | 视频分段得分 | P / R | 配对/预测/参考 | 模型或方法 |
|---|
表头:P(预测命中率)= 时间匹配数 / 预测段数; R(参考找回率)= 时间匹配数 / 参考分段数; 配对 / 预测 / 参考 = 时间匹配数 / 预测段数 / 参考分段数(本子集参考分段恒为 470)。
结合上图与表,按实验路径可以归纳如下。
固定边界标注要解决的问题是:给定人工参考时间边界,为每个片段生成简短操作描述。得分统一为同一 HomER 子集上的固定边界标注准确率(Label Acc)。
固定边界标注会换不同视觉输入。先用六个预览面板说明「模型看见什么」;其中手部相关面板拆分为近似手部拼贴与 HaWoR 腕轨迹裁剪。随后用 HomER 里的一段样本(22.9–26.8 秒,「拉开床头柜抽屉」)对照实际画面。
下面是同一 HomER 片段上的实际画面例子。
帧 1
帧 2
帧 3
上一段
当前段
下一段
下列为我们尝试过的固定边界标注方法。各条件共用同一套标注提示词,只换视觉输入与模型;提示词见下方折叠。
说明:下方就是提示词文本。System / User 两段会送给模型;User 里的 {mode_intro} 随视觉输入切换,{instruction} 换成整集任务指令;图像接在 User 提示词文本之后。
Loading…
| 条件 | 固定边界标注准确率 | 语义匹配 / 参考段数 |
|---|
结合上图与表,可以归纳如下。
端到端分段与标注要解决的问题是:模型同时给出预测边界与每段描述,评测先按时间 IoU 配对,再判断语义是否匹配。除腕速一体基线外,本组固定 S2 最优分段边界(视频分段得分 0.2031,预测 308 段 / 参考 470 段),只改变描述生成路径。得分统一为端到端整流程得分(E2E F1)。
下列为我们尝试过的端到端分段与标注路径;相同方法的不同模型放在一起。
说明:下方就是候选选择器提示词。System / User 两段会送给模型;候选选择器只读文本候选、不回看视频帧,图像不进入本提示词。
Loading…
| 条件 | 视频分段得分 | 端到端整流程得分 | 预测段数 / 参考段数 |
|---|
结合上图与表,可以归纳如下。
前面已经试过分段、固定边界标注与端到端多条路径。这里给出推荐配置(而非唯一默认):开放权重模型上的端到端分段与标注。精度优先可选 S2 边界 + 多候选选择 · 397B(端到端 0.1542);效率优先可选同边界下的 397B ffmpeg 单路(0.1491)或更简单的原始帧基线(0.1414)。WGO-Bench 公开的闭源最优端到端得分为 0.168(全量约 100 集);在 HomER 子集上,精度优先配置已与该水平接近。
分段边界固定后,写描述有两种做法:每段只写一次,或先写多路候选再挑一句。下表把开放权重路径与 Macrodata 公开的闭源端到端批量数字放在一起对照。美元数字按公开模型 API 单价折算,只作归一化工程估计,不等于本地 GPU 部署的真实成本;此外未计入视频预处理、存储,以及离线 Gemini 语义研判器开销。
| 方案 | 端到端得分 | 约每视频小时费用 |
|---|
费用按 HomER 25 集(约 40 分钟)上的调用量估算:推荐分段给出 308 个预测段(人工参考是 470 段),单路每段 1 次标注,多候选每段约 4 路候选再加 1 次选择,再按 Qwen 公开 API 单价折成每视频小时(不含预处理 / 存储 / 离线语义研判)。精度优先推荐多候选 + 候选选择器:端到端得分 0.1542,约 $2.7 / 视频小时,接近 Macrodata 闭源批量的端到端得分 0.168 与费用 $2.64 / 视频小时,且可私有部署。效率优先时选 397B ffmpeg 单路(0.1491,约 $1.1 / 视频小时);只要最简单基线时用 397B 原始帧单路(0.1414,同约 $1.1 / 视频小时)。
本章在 HomER 的一个样本上走一遍推荐的端到端流程。下面按推荐的多候选路径,逐步展示该样本的分段与标注。
这是本样本的原始视频,展示一个人在执行清洁类任务。
参数与上文拼贴图设定一致。模型后续只看这些带时间戳的拼贴图,而不是原始 MP4 字节流。
下方为首张拼贴图示例(同参数);整集还会生成多张同类拼贴图。
把该集全部拼贴图一次送给分段模型,并在请求文本里附上切段规则清单,得到整集粗分边界。
在粗边界附近先建立局部时间窗,再用同一版式的拼贴图在窗内重切。窗口不外扩(pad=0):局部窗口建好后,不再向窗外额外扩展;并加入「覆盖完整动作」语义输出规则。
以本集为例,整集粗分在约 26.0s 有一条粗边界(前一段「拉开抽屉」约 [23.5, 26.0],后一段「擦抽屉内部」约 [26.0, 44.5])。局部精修围绕该边界开窗再切;下图只是该精修窗口内的一张拼贴图(约 26.5s–36.0s),不是整个局部窗口的全部内容。
分段边界固定后,对每个预测片段并行生成多路候选描述:原始帧(默认解码抽帧直接写描述)、ffmpeg(换解码/seek/取帧实现再写一路)、种子候选(带上前一阶段草稿再改写)、先验描述(把另一路标注输出当作文本条件再生成)。
下表是其中一个片段上的候选结果示例(约 26.5s–45.0s,「擦抽屉内部」)。
| 来源 | 候选标签 |
|---|
我们把上一步的多路候选交给模型,并输入提示词,让它从中选出最合适的动作标注。
下面用本集预测段落互动展示选中结果:点击时间轴色块或表格行,可跳到该预测段落并查看候选。
| # | 时间 (s) | 子任务 | 候选选择器 |
|---|
下面直观展示最终标注结果与原始人工标注的对比情况。上方播视频,下方两条时间轴;点击色块可查看该段标注并跳转播放。
Instruction: …
我们呈现了一条面向开放权重视觉语言模型的端到端第一视角标注管线 EgoANT,并在公开基准上测试了若干辅助 VLM 标注的输入与流程设计(例如拼贴图粗分、局部精修、多候选选择)。
主要发现可以概括为三点:(1)在当前 WGO-Bench 评测口径下,时间分段仍是端到端性能的主要瓶颈;(2)在本文测试的配置中,更复杂的视觉输入增强并未稳定超过原始帧;(3)最高精度与最低成本对应不同配置——精度优先走候选选择器,效率优先走单路(尤其 ffmpeg)。
与此同时,当前方案仍有两点潜在风险与局限,也留给后续继续探索: