BC 场景多样性实验 · 数据分析

验证「多场景训练是否优于单场景」的行为克隆(BC)实验的数据侧准备。源数据来自 coScene 项目 auto-annotation-dataset(org coscene-hy,共 1029 条记录、4 个场景),已用「一刻」原子技能标注切分。

1,029
记录数
4
场景(均衡)
28,844
一刻片段
9,577
抓取回合
22.1h
总时长
2.6 TB
数据量

01概览

实验核心问题:在 3 个场景上训练的 BC 策略,迁移到未见场景时,是否比仅在 1 个场景上训练的策略更高效?

这套数据为什么适合做这个实验

  • 场景均衡:4 个场景各约 250 条记录,天然支持等样本量的 A/B 对照。
  • 已切分:「一刻」标注把每条记录切成原子技能片段(pick/place/transfer/…),附带自然语言指令——子回合边界问题已解决,无需用夹爪开合反推。
  • 抓取回合充足:9,577 个 pick→place 循环,中位时长 3.5–9.6s,正好落在标准 BC 回合区间。

需要在设计阶段正视的三点

  • 物体集合与场景完全混叠:15 种物体每种只出现在 1 个场景,无法构造「物体匹配」对照组——「场景多样性」与「物体多样性」不可分离。
  • Logistics 是单臂场景:0 次 transfer,而其他三场景双臂交接密集。若选它做单场景基线,会引入一个与处理变量叠加的巨大行为差异。
  • 机器人本体混杂:8 台机器人,但 2000064 跨越全部 4 个场景(241 条),「同机器人」对照可构造

02数据集

项目 auto-annotation-dataset,4 个场景近乎完美均衡,每条记录恰好带 1 个场景标签。

场景记录时长数据量中位时长采集期间
试管分拣2638.8 h1,162 GB122 s05-11 → 05-18
Logistics sorting2544.8 h558 GB68 s04-14 → 04-27
清理桌面垃圾2624.8 h544 GB66 s05-06 → 05-13
吧台碗碟收入洗碗槽2503.5 h402 GB51 s05-16 → 05-25
合计1,02922.1 h2,665 GB

流水线标签健康:oss-success / success-translate / success-upload 均 100%;failed-translate 仅 61 条(5.9%,其中 48 条在试管分拣)。本项目无任何质检自定义字段——无质检结果、无采集员、无不通过原因。版本标签(2.0.1场景 等)与场景 1:1 对应,是 SOP 版本而非独立维度。

03一刻(原子技能)普查

28,844 个标注片段,9 种技能。pickplace 数量几乎完全相等(9,577 vs 9,570),说明 pick→place 配对干净。

技能数量占比中位时长p95总时长wall-clock 占比
pick9,57733.2%2.8 s5.0 s467 min36%
place9,57033.2%2.5 s4.3 s392 min31%
rotate2,8399.8%1.0 s2.6 s59 min5%
navigate2,7449.5%2.5 s6.5 s141 min11%
transfer(双臂交接)2,5558.9%2.7 s4.1 s120 min9%
flip1,0063.5%2.5 s5.0 s45 min4%
wipe2550.9%7.0 s11.5 s31 min2%
push2500.9%5.0 s8.7 s22 min2%
adjust / 解析异常480.2%1 min0%

74% 的时间机器人在抓取操作

夹爪致动片段(pick+place+transfer)共 21,702 段,占 979 / 1,280 min ≈ 77% 的 wall-clock 时间。死时间占比低,数据利用率高。

差异化技能按场景分布:rotate/flip 仅在 Logistics(扫码翻转);wipe/push 仅在吧台(微波炉门、台面擦拭)。这构成场景间的「技能指纹」。

04抓取回合(pick→place 循环)

这是实际训练 BC 的天然回合单元。一条记录 ≠ 一个回合——真实回合数是记录数的 4–14 倍。

场景记录抓取片段pick→place 循环每记录循环中位时长抓取占比
试管分拣2638,6673,67114.07.5 s87%
Logistics sorting2545,6202,80411.03.5 s53%
清理桌面垃圾2625,1672,1018.07.2 s92%
吧台碗碟收入洗碗槽2502,2481,0014.09.6 s61%
合计1,02921,7029,57777%

「只取夹取部分」会丢掉一半 Logistics

对 试管/桌面,切到 grip-only 只丢约 13%(安全)。但 Logistics 会丢 49%——它的 rotate(2,839)和 flip(1,006)就是扫码任务本身,不是死时间。吧台同理(wipe/push = 微波炉与台面工作)。结论:不要无脑切到夹取段,按场景取舍。

05边界审计:标注起点偏晚

用一条 Logistics 探针记录(12 次 pick)对照 mini.mcap 中的夹爪真实闭合时间。结论:标注的 pick 起点系统性偏晚,且可全自动修正。

关键发现

夹爪闭合相对 pick 起点的延迟+0.76 s(中位)
pick 结束相对闭合的时间+1.02 s
pick 标注时长1.78 s

即标注的 pick = [闭合 − 0.76s, 闭合 + 1.02s]起点落后 0.76s——这段不是「朝目标伸手」,而是「最终接近」,reach 阶段被截掉了。终点含提举起始但不含稳定持握。

审计可全自动,无需人工看 200 段视频

  • mini.mcap(178 MB/条,~8s 下载)含 /astribot_gripper_{left,right}/joint_space_states @ ~250 Hz,夹爪 position ≈0 张开 / ≈97 闭合——闭合时刻可直接测量
  • 左/右臂标签免费得到:夹爪严格右/左/右/左 交替,包裹箱时双爪同闭。原本需推断的 §6.3 现可精确求解。

对齐方法(已修正的两个坑)

两个会导致对齐错误的陷阱

  • 时间对齐metadata.yamlrecordingStartTime 偏 86s,不可用。正确公式:video_t = moment_epoch − mcap_start_epoch,已逐帧验证。
  • ffmpeg 定位:这些 MP4 的 GOP 约 100 帧(10s),ffmpeg -ss <t> -i …(input seeking)最多偏 10s。必须先解码再索引(output seeking)。

该方法已可在任意样本上无人值守运行。探针为单条记录,扩展到全量即可给 9,577 个回合打上精确的闭合时刻与左/右臂标签。

06场景特征化

物体集合:场景间零重叠

15 种物体,每种只出现在 1 个场景。场景与物体集合完全混叠。

物体试管Logi桌面吧台合计
包裹袋 parcel bag01,998001,998
红试管 / 蓝试管1,439 / 1,1790002,618
包裹箱 parcel box080600806
黑盒 / 蓝盒526 / 5260001,052
纸巾 / 瓶子 / 纸团00527 / 525 / 52301,575
零食包装 / 塑料袋00263 / 2630526
钢碗 / 抹布 / 绿碗 / 白碟000251 / 251 / 250 / 2491,001

物体匹配对照组不可构造

§6.4 设想的「物体匹配」对照在本数据集中根本无法构造——混淆因素 A 不是「部分混淆」,而是完全混叠。

双臂交接:Logistics 是唯一单臂场景

场景picktransfertransfer/pick双臂证据
试管分拣3,6701,3370.36密集
清理桌面垃圾2,1019700.46密集
吧台碗碟收入洗碗槽1,0012480.25存在
Logistics sorting2,80400.00无(单臂)

pick 时长:Logistics 是另一种节律

场景中位 pick 时长< 1.5s 占比
Logistics sorting1.8 s27%
清理桌面垃圾2.8 s2%
试管分拣3.3 s0%
吧台碗碟收入洗碗槽3.5 s1%

Logistics 的 pick 更短、无双臂、外加独有的 rotate/flip——它是一个不同 regime 的场景。

指令多样性:很低

每场景仅 4–6 条不同的 pick 指令,2–5 种物体,1–2 个取物位置。吧台 250 条记录反复执行同样的 4 次 pick(钢碗/抹布/绿碗/白碟)。这把单场景臂会严重过拟合到固定的物体集与布局——有利于「多样性更好」的预期,但也意味着结论可能退化为「15 种物体胜过 2 种」,是物体多样性而非场景多样性。需预先决定主张哪一条。

07混淆因素一览

混淆因素状态能否控制
物体集合 ⊥ 场景(零重叠)完全混叠物体匹配对照不可构造
机器人本体跨场景8 台,2000064 跨全部 4 场景同机器人对照可构造
Logistics 单臂 vs 其他双臂行为差异巨大选单场景基线时避开 Logistics
场景 ≡ 采集员(jiaofu1)本项目无采集员字段不可分离,需在结论中声明
指令/布局多样性低4–6 指令/场景结论可能退化为物体多样性

机器人分布

序列号试管Logi桌面吧台合计
2000064273267115241(全 4 场景)
2000025015800158
2000063710086157
2000061001150115
20000609700097
200009506402387
20000590079079
20000704300043

用 2000064 的 241 条记录可构造「同机器人、跨场景」对照,把本体效应从场景效应里部分剥离——这是目前唯一可构造的对照

08实验设计建议

留出目标(测试场景)

吧台碗碟收入洗碗槽。视觉最独特(厨房台面/水槽),1,001 个 pick 足够做 k-shot 池 + 评测;其 push/wipe 在 pick 回合之外,不引入新原语;机器人 2000064 在此有 115 条,可做同机器人对照。

训练源场景

试管分拣 + 清理桌面垃圾 + Logistics。N=900 pick/臂可行——每个源单独 ≥2,101 pick。

单场景基线

试管分拣清理桌面垃圾。Logistics 作为第三基线但标注为离群值——单臂 + 半长 pick,是「单场景」的差劲代表。

等量原则(关键)

A 臂 = 3 场景 × k 回合;B 臂 = 1 场景 × 3k 回合。相同回合数、相同梯度步数、相同种子。否则测的是数量而非多样性。

评测协议:k-shot 曲线(而非纯 zero-shot)

纯 zero-shot 大概率两边都 ≈0%(pick-place 迁移到未见厨房布局太难),得到死空对照。k=0 即 zero-shot,是曲线第一点;再在 k ∈ {0, 25, 100} 上微调并画曲线。预训练每臂只做一次(贵),每个 k 只是短微调(便宜),增量约 +20% 算力而非 3×。

要检出的效应每臂 rollout 数
20% → 50%(30pp)~36
20% → 40%(20pp)~79
20% → 30%(10pp)~290

每臂 ≥50 rollout 是实际下限(只能分辨 ≥28pp 差异)。3 臂 × 3 个 k × 50 rollout × 3 种子 ≈ 1,350 次——先估机器人时间。离线 action MSE 与任务成功相关性差,只用于选 checkpoint,不用于下结论。

分阶段执行

阶段内容门槛
Stage 0数据准备:子回合切分(已有一刻)、头尾修剪、解码为训练格式;动作=joint_space_command,观测=1 外视 + 2 腕视得到每场景真实回合数 + 1 个 450 回合/臂的等量集
Stage 1仅离线:两臂训练,干净 QC,易目标,报 held-out action error任一臂学到非平凡策略?否则问题在数据准备
Stage 2仿真(若有):完整 k 网格、两目标、3 种子易目标上两臂有无分离?无则效应太小,止损
Stage 3真机:仅 Stage 2 存活条件,50 rollout/臂,易目标优先,吧台作硬探针

对预期效应保持校准

文献中「多样性提升泛化」的结论出现在数百场景、数千小时尺度。本实验 3 场景、~450 回合/臂,零结果或小效应是非常合理的诚实结局——但仍值得跑,前提是设计成「零结果也可发表/可决策」而非含糊。

09文件与复现

所有脚本与原始 dump 位于会话目录(未提交至仓库;49M JSON 不宜直接提交)。

文件说明
aad-records.json (5.2M)auto-annotation-dataset 全 1029 条记录
moments-all/ (1029 文件, 21M)每条记录的「一刻」标注
meta/ (1029 文件)每条记录的 metadata.en.yaml(含机器人序列号、SOP 步骤)
exp_v1/grasp_episodes.csv9,576 个抓取回合(arm/grasp_success 待 mcap 补全)
exp_v1/scene_object_matrix.csv场景 × 物体矩阵
exp_v1/scene_instruction_matrix.csv场景 × 指令矩阵
exp_v1/scene_arm_stats.csv双臂交接统计
exp_v1/grasp_boundary_audit_sample.csv244 个 pick 的分层审计样本
grip-stats.ts / characterize.ts抓取普查与场景特征化脚本
gripper-boundary.py夹爪闭合边界审计(mcap 解码)
fetch-moments.sh / fetch-metadata.sh可断点续传的拉取脚本

会话目录:sessions/year=2026/month=08/2026-08-08-jiaofu1-label-stats/(路径名沿用首问,与当前内容不完全一致)。数据拉取经 cocli,org coscene-hy,项目 auto-annotation-dataset