如何标注机器人回合
把一次机器人演示切分为若干阶段、判定结果,并绘制稠密奖励曲线。为什么'部分成功'是一种真实结果,以及为什么时序轨道比视频更重要。
一次机器人演示,是若干路同步的相机视频流加上若干条数值时序,而关于它值得问的每一个问题都与时间有关。 抓取何时开始、何时失败、每一时刻距离完成还有多远。因此界面必须是一条时间轴,而不是一张表单。
把信号放在视频旁边
相机视图在上,机械臂自身的信号作为轨道在下,共用一条时间轴,所有标注图层都绘制其上。
这不是排版偏好。一次失败的抓取,通常在夹爪与腕部力的曲线上会比在画面上早若干帧显现。已发表的研究支持这一点:ATLAS(维也纳工业大学)报告称,在视频旁并列显示本体感知时序,可降低边界误差,优于纯视觉工具。
由此带来两个实际后果:
- 不要把这些轨道藏在标签页后面。 如果标注者得主动去找,他们就不会去看。
- 降采样要保留极值。 一次只持续一帧的力峰值,被绘制到 300 像素宽的轨道时,在均值降采样下会彻底消失,而那个峰值往往正是事件本身。
按子目标切分
阶段边界位于机器人目标发生变化之处——接近、抓取、搬运、放置、收回——而不是视频切换之处,也不是机械臂恰好停顿之处。
阶段分类体系是按任务族而定的。操作类与导航类需要完全不同的集合,因此这属于你的配置,而不属于工具本身:
phases:
- {name: reach, color: "#4ECDC4", key_value: "1"}
- {name: grasp, color: "#FFD93D", key_value: "2"}
- {name: transport, color: "#6C8AE4", key_value: "3"}
- {name: place, color: "#95E1A3", key_value: "4"}
- {name: retract, color: "#C9A0DC", key_value: "5"}三种结果,而非两种
success、partial、failure。
在真实机器人数据中,"部分成功"是出现频率最高的结果。 把它强行压成二元,会摧毁那个让这份数据集值得标注的信号:一个把物体从桌上拿起来却掉了的回合,与一个根本没动过的回合并不相同,而按同一类训练出来的策略会学错东西。
请为其配上一套失败原因分类——抓空、物体滑落、碰撞、拿错物体、放错位置、超时——这样失败才是可分析的,而不只是被计数。
事后重新标注
一个在原定任务上失败的回合,常常是另一项任务的成功演示。把这个回合实际展示了什么记录下来,一段本要丢弃的录像就变成了可用的训练数据。
这在标注时采集成本很低,事后却无从补救,所以哪怕你还不确定会不会用上,也值得一并采集。
奖励图层代价高昂
一条稠密的进度奖励曲线,每个回合要花几分钟,而阶段标注只要几秒。只在确有需要时才启用它,并预期它会占据你标注预算的大头。
衡量一致性
三个图层,三种度量:
| 图层 | 度量 |
|---|---|
| 阶段边界 | 时间 IoU |
| 结果标签 | Krippendorff's α |
| 奖励曲线 | ICC 加 Pearson |
每一项都要同时说明覆盖率。 在时间轴 5% 的范围上算出的相关系数,对其余 95% 什么也没说,而一个不附带覆盖率的系数,会被当作覆盖了全部来解读。
具体到边界,请报告容差扫描,而不是单一阈值。
格式
LeRobot v2、RLDS/TFDS、HDF5(RoboMimic 与 ALOHA)以及 ROS bag 均可导入。请导出逐帧的 JSONL 附属文件,而不是改写数据集,这样一份只读的公开发布版无需重新发布就能携带你的标注。
配置
annotation_schemes:
- annotation_type: episode_annotation
name: episode_review
description: "Mark the phases, judge the outcome, and draw the progress."
source_field: episode
layers: [phases, outcome, reward]
outcomes: [success, partial, failure]
failure_causes: [missed grasp, object slipped, collision, timeout]
reward_range: [0.0, 1.0]
series_shown: [gripper, wrist_force]可用示例:LeRobot 展示设计。
相关工具
ATLAS 是为单标注者边界精度与 ROS bag 专门打造的。ELAN 与 BORIS 仍是行为编码领域的标准工具。Rerun 与 Foxglove 是最好的机器人可视化工具,如今也能承载结构化标注。
Potato 在这里独特的贡献,是支持多标注者、以网页方式部署,并带有一致性统计。