
Psi0数据管线实战遥操作原始数据转LeRobot格式模态统计归一化全流程【免费下载链接】Psi0[RSS26] Welcome to Psi-Zero, a Humanoid VLA towards Universal Humanoid Intelligence.项目地址: https://gitcode.com/gh_mirrors/ps/Psi0Ψ₀Psi0是一个面向人形机器人通用 loco-manipulation 的开源视觉-语言-动作VLA基础模型它的训练质量很大程度取决于数据管线如何把遥操作采集的原始数据转换为 LeRobot 格式以及如何计算**模态统计modality stats**用于动作归一化。本文带你完整走一遍这条管线——从 G1 人形机器人遥操作原始数据出发用 raw_to_lerobot.py 一键转换再用 calc_modality_stats.py 生成训练所需的归一化参数全程只需 3 条命令。 为什么要先把数据转成 LeRobot 格式Psi0 的训练、评测、部署全链路都建立在 LeRobot 数据集布局之上Parquet 表格 MP4 视频 JSON 元信息。而遥操作上位机采集出来的原始数据只是一堆松散的帧图片和 JSON 记录模型无法直接读取。原始目录长这样g1_real_raw └── Hug_box_and_move ├── episode_0 │ ├── color/ │ │ ├── frame_000000.jpg │ │ └── ... │ └── data.json └── ...转换脚本 raw_to_lerobot.py 会把它重排成标准的 LeRobot 结构$task/ ├── data/chunk-000/episode_000000.parquet # 低维状态/动作/时间戳 ├── videos/chunk-000/egocentric/episode_000000.mp4 # 30fps 第一视角视频 └── meta/ # info.json、tasks.jsonl、episodes.jsonl 等其中每帧的动作向量由手部关节、手臂关节、躯干姿态与指令速度拼接而成共 36 维与后训练阶段使用的动作维度对齐视频统一按 30 FPS、H.264 编码封装。 数据准备原始数据 任务描述第 1 步拿到原始遥操作数据。官方 9 个真实任务的数据都已开源在 Hugging Face 的USC-PSI-Lab/psi-data仓库g1_real_raw/目录下载后解压到约定的目录即可也可以按 real/README.md 里的指南自己用 G1 遥操作采集。第 2 步注册任务的自然语言描述。在 task_description_dict.json 中补充任务名 - 指令文本的映射例如{ Hug_box_and_move: Hug box and move. }这个描述会写入数据集元信息并作为语言指令参与训练任务名必须在字典里有对应描述否则转换脚本会直接报错退出见 raw_to_lerobot.py 中的断言。⚙️ 核心流程一原始数据 → LeRobot 格式只需一条命令完成转换export taskHug_box_and_move python scripts/data/raw_to_lerobot.py \ --data-root$PWD/data/real_teleop_g1/g1_real_raw \ --work-dir$PWD/data/real \ --repo-idpsi0-real-g1 \ --robot-typeg1 \ --task$task这个脚本核心类HE2LeRobotConverter见 raw_to_lerobot.py有几个对新手很友好的工程细节多进程并行默认使用全部 CPU 核心逐 episode 并行转换大任务集转换快数倍断点续传已完成的 episodeparquet 视频 统计均已落盘会被自动跳过中断后重跑即可逐 episode 统计转换过程中同步累计每个 episode 的 action min/max/mean/std写入meta/episodes_stats.jsonl元信息一次性生成meta/info.json、meta/tasks.jsonl、meta/episodes.jsonl在全部转换完成后统一写出。 核心流程二模态统计与归一化参数Psi0 训练时要用统计量把states/action归一化到 [-1, 1]bounds 方式所以转换后必须补一步统计计算python scripts/data/calc_modality_stats.py \ --work-dir$PSI_HOME/data/real \ --task$taskcalc_modality_stats.py 会读取数据集下所有data/*/*.parquet文件对每一个数值列模态计算mean / std / min / max / q01 / q99六组参数计算逻辑见 calc_modality_stats.py结果写入meta/stats.json。最后再复制一份 Ψ₀ 命名的统计文件cp $PSI_HOME/data/real/$task/meta/stats.json \ $PSI_HOME/data/real/$task/meta/stats_psi0.json这一步看似多余却是训练配置的约定入口——微调脚本 finetune-real-psi0.sh 中明确指定了--data.transform.field.stat-pathmeta/stats_psi0.json与action_norm_typebounds见 finetune-real-psi0.sh缺了这个文件训练会直接失败。准备好后一条命令即可启动微调scripts/train/psi0/finetune-real-psi0.sh $task。 另一条路SONIC 全身数据转换如果你的数据来自 SONIC 全身遥操作采集本身就是 LeRobot 格式但 schema 不同则换用 raw_sonic_to_psi_lerobot.pyexport taskdataset-name python scripts/data/raw_sonic_to_psi_lerobot.py \ --data-rootthird_party/GR00T-WholeBodyControl/outputs/$task \ --work-dir$PSI_HOME/data/sonic/lerobot \ --repo-id$task \ --robot-typeg1它负责把 SONIC 的 43 维状态重排为 Ψ₀ 的states[43] 全身qpos(29) 双手(14)并把动作重组为action[78] motion_token(64) hand(14)见 Sonic2LeRobotConverter随后同样执行calc_modality_stats.py与stats_psi0.json复制两步。 数据工具箱辅助脚本速查scripts/data/目录还内置了一批管线修理工遇到数据问题时按需取用脚本用途patch_lerobot_meta.py清理 parquet schema 元数据已知加载问题的官方修复split_lerobot_by_task.py按任务切分子数据集并重建元信息split_lerobot_train_val.py划分训练/验证集normalize_pack_resolution.py统一混合分辨率视频避免训练/验证几何不一致reorder_state_columns.py对齐不同数据集间的关节列顺序refill_zeroed_state.py修复零值 state使其归一化后恰好为 0❓ 常见问题与实战建议Q1训练时报stack(): argument tensors ... not Column通常是环境里残留旧版 lerobot 栈。重新uv sync --group psi --active并运行python -c from psi.data.lerobot.compat import LEROBOT_LAYOUT; print(LEROBOT_LAYOUT)验证详见 README.md。Q2转换中断了一半怎么办重跑同一条raw_to_lerobot.py命令即可脚本会自动跳过已完成 episode只处理剩余部分。Q3为什么一定要生成 stats_psi0.json归一化参数是数据-训练契约的一部分不同数据集的关节取值范围不同不做统计归一化微调时的 loss 会被大尺度维度主导。记住转换 → 统计 → 复制 stats_psi0.json这三步固定套路即可。✅ 小结步骤命令产物1. 注册任务描述编辑 task_description_dict.json指令文本映射2. 原始数据转 LeRobotpython scripts/data/raw_to_lerobot.py ...parquet mp4 meta3. 计算模态统计python scripts/data/calc_modality_stats.py ...meta/stats.json4. 生成 Ψ₀ 统计cp stats.json stats_psi0.json归一化契约5. 启动微调scripts/train/psi0/finetune-real-psi0.sh $task训练运行目录整条管线命令少、可续传、并行快即使只有一块消费级 GPU也能顺利把自己的遥操作数据喂给 Ψ₀。【免费下载链接】Psi0[RSS26] Welcome to Psi-Zero, a Humanoid VLA towards Universal Humanoid Intelligence.项目地址: https://gitcode.com/gh_mirrors/ps/Psi0创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考