Skip to content

dipfocus/EgoScale

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EgoScale

论文信息

数据处理提纲

论文整体采用三阶段训练,但数据处理链路从原始人类第一视角视频和对齐的人机数据采集就开始了。下面按阶段整理每一步的输入、处理和输出。

阶段 0. 原始数据采集

0.1 大规模人类第一视角数据

  • 输入:
    • 大规模 in-the-wild 第一视角 RGB 视频,采样频率为 30 FPS
    • 额外 829 小时的 EgoDex 数据,提供更精确的手腕和手部跟踪
  • 处理:
    • 汇总多个大规模人类活动数据集
    • 保留其中可用的任务标签或语言标签
  • 输出:
    • Stage I 预训练语料,总计 20,854 小时
    • 覆盖 9,869 个场景、6,015 个任务、43,237 个物体

0.2 人机对齐的中间训练数据

  • 输入:
    • 人类桌面操作演示
    • 同任务的机器人遥操作演示
    • 统一采集配置:头部相机、双腕部相机、Vive tracker、Manus glove
  • 处理:
    • 让人和机器人使用匹配的视角与相机内参
    • 将运动信号与视频流同步
  • 输出:
    • 一个显式 embodiment-aligned 的数据集,包含 344 个桌面任务
    • 每个任务约 30 条人类轨迹、5 条机器人轨迹
    • 共约 50 小时人类数据和 4 小时机器人数据

阶段 1. 从人类视频恢复运动信号

设计文档:docs/stage1_motion_recovery_design.md

  • 输入:
    • 第一视角 RGB 视频序列
  • 处理:
    • 使用现成的 SLAM 恢复相机运动
    • 使用手部姿态估计恢复人手轨迹
  • 输出:
    • 相机位姿轨迹
    • 人手关键点或手部位姿轨迹

阶段 2. 统一动作表示构建

2.1 手腕级手臂动作

  • 输入:
    • 相机坐标系下的手部位姿
    • SLAM 提供的相机到世界坐标变换
  • 处理:
    • 将手腕位姿转换到世界坐标系
    • 计算相邻帧之间的手腕相对变换
    • 用相对运动去除对绝对相机位姿的依赖
  • 输出:
    • 可在人类与机器人之间共享的 wrist-level relative end-effector 动作序列

2.2 手指关节重定向

  • 输入:
    • 人手关键点或手部姿态轨迹
  • 处理:
    • 将人手动作 retarget 到 22-DoF Sharpa 灵巧手关节空间
    • 施加关节限位与运动学约束
    • 通过优化求解并做时间平滑,降低抖动
  • 输出:
    • 22-DoF 手部关节动作序列

2.3 最终的人类动作标注数据

  • 输入:
    • 视频帧
    • 手腕相对动作
    • 重定向后的手部关节动作
    • 语言指令或任务标签
  • 处理:
    • 将感知与动作统一打包为 Vision-Language-Action 训练格式
  • 输出:
    • 用于大规模预训练的 action-labeled egocentric human video

阶段 3. 人类数据预训练

  • 输入:
    • 阶段 2 生成的人类动作标注数据
    • 图像观测与语言指令
  • 处理:
    • 用人类数据训练完整的 VLA 模型
    • 由于人类数据没有机器人 proprioception,模型用可学习占位 token 替代
  • 输出:
    • 具有广泛操作先验的人类预训练策略或表示

阶段 4. 人机对齐中间训练

  • 输入:
    • 阶段 0.2 的人机对齐 play data
    • 共享的手腕动作表示
  • 处理:
    • 冻结 vision-language backbone
    • 更新 vision encoder 和 DiT action expert,使表示对齐到机器人感知与控制空间
    • 将人类预训练得到的表示落到可执行的机器人动作空间
  • 输出:
    • 既保留大规模人类先验、又适配机器人感知控制接口的策略

阶段 5. 面向任务的后训练

  • 输入:
    • 下游任务的机器人演示数据
  • 处理:
    • 在对齐后的策略上做任务级微调
  • 输出:
    • 最终可部署和评测的灵巧操作策略

一句话总结

原始第一视角人类视频 -> SLAM / 手部姿态恢复 -> 手腕相对运动 + 手部动作重定向 -> 人类动作标注预训练数据 -> 人机对齐中间训练数据 -> 任务级机器人微调 -> 最终机器人策略

备注

  • 论文主文明确写了使用现成的 SLAM 和手部姿态估计流程,但没有给出具体实现名称。
  • 附录中的手部重定向细节提到 URDF 约束、CasADiIPOPT、上一帧 warm start,以及指数平滑。

当前代码框架

仓库现在已经补上了阶段 1 的代码骨架,目录在 src/egoscale/stage1

  • ingest:视频合法性检查、ffprobe 元数据读取、clip_id 和输入指纹生成
  • decodeffmpeg 解码器
  • camera_tracking:相机轨迹后端接口和基于 OpenCV 的单目视觉里程计实现
  • hand_tracking:手部姿态后端接口和基于 OpenCV 的轮廓/肤色检测实现
  • normalize:对齐到统一 frame_id 时间轴并补缺失占位
  • qc:基础质量指标和 accept/review/reject 判定
  • exporter:导出 metadata.jsoncamera_poses.jsonlhand_poses.jsonlqc.json
  • pipeline / cli:单视频和批处理入口

当前真正可直接运行的是视频探测与解码层:

  • 元数据读取默认走 ffprobe
  • 帧导出默认走 ffmpeg
  • 相机轨迹默认走 opencv 后端,基于 ORB 特征匹配、Essential MatrixrecoverPose
  • 手部姿态默认走 opencv 后端,基于肤色分割、轮廓提取和关键点拟合

运行方式

先安装本地包:

python3 -m pip install -e .

单视频运行:

egoscale-stage1 single path/to/clip.mp4 --artifacts-root artifacts/stage1

批处理运行:

egoscale-stage1 batch path/to/manifest.jsonl --artifacts-root artifacts/stage1

相机轨迹可视化:

egoscale-stage1 plot-camera artifacts/stage1/<clip_id>/camera_poses.jsonl

默认会输出到:

artifacts/stage1/<clip_id>/plots/camera_trajectory.png
artifacts/stage1/<clip_id>/plots/camera_trajectory.txt

manifest.jsonl 每行一个样本,最小格式如下:

{"video_path": "data/demo.mp4", "clip_id": "demo_clip"}

如果视频有已知内参,建议在 manifest 中附带 camera_intrinsics,相机轨迹恢复会优先使用它;否则后端会按图像尺寸构造一个近似 pinhole 模型:

{
  "video_path": "data/demo.mp4",
  "clip_id": "demo_clip",
  "camera_intrinsics": {
    "fx": 950.0,
    "fy": 950.0,
    "cx": 640.0,
    "cy": 360.0
  }
}

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages