资讯动态

训练前必做的数据归一化:OpenLET具身智能挑战赛stats.json统计量(min/max/q01-q99)详解与最佳实践

发布时间:2026/10/29 10:57:10 来源:尧图企业网站定制
训练前必做的数据归一化OpenLET具身智能挑战赛stats.json统计量min/max/q01-q99详解与最佳实践如果你正在参加 OpenLET 具身智能挑战赛Embodied-Data-Manipulation-Challenge那么数据归一化是训练操作策略模型前绝不能跳过的一步。挑战赛的每个数据集都自带stats.json预先为每个字段算好了min、max、mean、std和q01~q99分位数用对它们能让模型收敛更快、打榜更稳。本文带你完整读懂这份统计量文件并给出 4 种可直接上手的归一化方法与常见坑位清单。一、为什么训练前必须做数据归一化挑战赛的遥操作数据来自kuavo-5w人形机器人observation.state本体状态和action动作是不同物理含义的混合向量关节角是弧度、末端位姿是米、夹爪是开合比例……每个维度的数值范围差异极大。以task1_parts_pick的数据为例打开 stats.json 可以看到action各维度的真实分布维度含义minmax数值范围感受zarm_r2_link第 2 维-1.775-0.049始终为负约 -1.8 ~ -0.05zarm_r3_link第 3 维0.0921.484始终为正约 0.09 ~ 1.48right_sg100_4第 11 维-4.2e-050.0009接近 0 的微小量级vyaw第 21 维00恒定为零如果直接喂给神经网络大尺度维度会主导梯度小尺度维度的信号几乎被淹没训练要么收敛极慢、要么直接发散。归一化把所有维度拉到同一量级是策略学习无论是 BC 行为克隆还是 VLA 模型微调的标准前置步骤。二、stats.json 在哪里数据集长什么样仓库中 3 个任务各自独立成目录结构完全一致任务一 零件抓取sim/task1_parts_pick/任务二 箱子搬运sim/task2_box_move/任务三 循环上料sim/task3_loop_feed/每个任务目录都是标准LeRobot v3.0数据集格式关键文件如下文件作用meta/info.json数据集元信息机器人类型、总帧数、帧率、各字段的 dtype 与 shapemeta/stats.json每个字段的统计量本文主角meta/tasks.parquet任务列表本数据集均为单任务data/chunk-000/file-000.parquet帧级数值数据state、action、时间戳等videos/observation.images.head_cam_h/头部相机视频480×64010 fpsav1 编码videos/observation.images.wrist_cam_r/右腕相机视频从 info.json 还能确认total_episodes: 500、total_frames: 237813、fps: 10且splits.train: 0:500——全部 500 条 episode 都划为训练集因此用全量统计量做归一化不会造成数据泄漏这一点后文最佳实践还会用到。⚠️ 注意每个任务下还有一层带日期的快照目录如sim/task1_parts_pick/20261015/meta/stats.json其数据量与外层不同200 episodes vs 500 episodes字段维度也不同state 36 维 vs 18 维。请始终使用与你实际加载的数据目录配套的那份 stats.json切勿混用。三、stats.json 的 9 个统计字段逐项解读stats.json是一个字段名 → 统计量的字典覆盖图像、状态、动作和索引字段{ observation.state: { min: [...], max: [...], ... }, observation.images.head_cam_h: { ... }, action: { ... }, timestamp: { ... }, episode_index: { ... }, ... }每个字段下都提供相同的 9 个统计量含义如下字段含义归一化中的典型用途min/max该字段全数据集的最小值 / 最大值Min-Max 归一化的上下界mean均值标准化z-score的减项std标准差标准化的除项count实际参与该字段统计的样本数数据质量体检见下q01/q991% / 99% 分位数鲁棒归一化替代易受离群点影响的 min/maxq10/q50/q9010% / 50%(中位数) / 90% 分位数判断分布是否对称、偏斜程度两点读法细节图像字段是逐通道统计。例如observation.images.head_cam_h的mean是[[0.448], [0.448], [0.445]]对应 R/G/B 三个通道说明像素值已经归一化到 0~1min恒为 0.0、max恒为 1.0。count可能因字段而异。task1_parts_pick中action、observation.state的count是 237813与总帧数一致而图像字段的count是 50685。若你发现某字段count明显偏小说明该字段统计时并非全部帧都参与了计算用于归一化前建议先核对一下。四、如何看懂 q01~q99 分位数分位数是分掉 1% 极端值后的稳健版 min/max。用task1_parts_pick的右腕相机红通道observation.images.wrist_cam_r举个例子min 0.0 q01 0.0045 q50 0.343 q99 0.825 max 1.0q50 0.343一半的画面亮度低于 0.34与mean 0.341几乎相等 → 分布近似对称q01 0.0045只有 1% 的像素接近纯黑暗部阴影q99 0.825最亮的 1% 像素约 0.82而max 1.0说明存在少量饱和白点。如果max - q99很大或q01 - min很大说明分布有长尾/离群点此时用 min/max 归一化会把 98% 的数据压缩进很窄的区间——这就是下一节推荐分位数归一化的原因。对action字段分位数还有一个额外价值可以快速定位恒定维度。task1_parts_pick的action第 21 维vyaw的min、max、std全部为 0意味着机器人从未用过该通道——归一化时这一维直接跳过即可避免除零。五、4 种可直接上手的归一化方法针对挑战赛数据按字段类型给出推荐配方1️⃣ 标准化 z-score推荐用于action与observation.statex (x - mean) / std均值和标准差直接取stats.json中action/observation.state对应的mean、std数组逐维计算即可。这是大多数 RL/BC 策略的标准选择。⚠️std接近 0 的维度如上面的vyaw建议用std 1e-6或直接跳过该维度。2️⃣ 鲁棒分位数归一化推荐用于范围跨度大的动作维度用q01/q99代替min/max再截断极端值x clip((x - q01) / (q99 - q01), 0, 1)这样 98% 的数据被均匀映射到 0~1个别异常遥操作帧急停、抖动不会被放大成爆炸值。对task1_parts_pick中-1.77 ~ -0.049的zarm_r2_link这类偏态维度尤其有效。3️⃣ 经典 Min-Max简单场景可用x (x - min) / (max - min)仅当max - q99、q01 - min都很小时使用否则优先方案 2️⃣。4️⃣ 图像通道observation.images.*像素已在 0~1 区间两种处理均可直接用很多视觉模型自带内部缩放如 ImageNet 均值方差或用 stats.json 中的图像mean/std逐通道做一次轻量标准化缓解不同相机曝光差异。六、5 个常见错误 最佳实践清单❌拿全量数据算自己的统计量覆盖 stats.json——直接复用官方统计量省算力且保证与榜单口径一致。❌跨任务/跨目录复用统计量——task2_box_move的 state 是 36 维、action 是 39 维双臂与task1_parts_pick的 18/21 维完全不同形状都对不上务必各用各的。❌用 min/max 硬归一化长尾分布——先看q01/q99与min/max的差距差距大就换分位数方案。❌训练与推理用不同的统计量——推理打榜部署时必须把训练时的stats.json固化进推理管线绝不能按当前输入重新计算否则数值口径漂移、动作直接失控。❌忽略std 0的恒定维度——先检查再除加一个1e-6的 eps 或跳过该维。✅一句话检查清单确认数据目录对应的stats.json→ 按字段选方法action/state 用 z-score 或 q01-q99图像用均值方差→ 处理 std≈0 维度 → 训练/推理共用同一份统计量。七、小结OpenLET 具身智能挑战赛的每个任务数据集都在 meta/stats.json 中提供了开箱即用的min/max/mean/std/q01~q99全套统计量配合 meta/info.json 中的字段定义dtype、shape、维度名足以让你在 10 分钟内搭好一套正确且可复现的归一化流程。把这一步做扎实你的策略模型才能在零件抓取、箱子搬运、循环上料这些真实工业任务上稳定收敛、冲击更高排名。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑