EasyWAM-Hidden-Wan22 归一化统计文件完整详解:8维状态与7维动作的 stepwise 统计如何使用
本文带你完整看懂 EasyWAM-Hidden-Wan22 项目中的归一化统计文件libero_dataset_stats.json:它如何描述 8 维机器人状态(state)与 7 维动作(action)、stepwise 与 global 两类统计有什么区别,以及在 LIBERO 评测中该如何正确使用这份数据集统计文件,帮你一次性跑通这套基于 Wan2.2 的世界动作模型(World Action Model)。
📌 这份归一化统计文件是干什么的
EasyWAM-Hidden 是构建在 Wan2.2-TI2V-5B 上的世界动作模型检查点,采用独立的 Action DiT 单向条件于 Video DiT 中间特征的方式生成动作,在 LIBERO 上取得了98.8% 的平均成功率(见 README.md 中的评测表格)。
模型本身工作在归一化空间里:
- 输入侧:原始机器人状态先做归一化,再编码为 state token 送入 Action DiT;
- 输出侧:模型预测出的动作要先做反归一化,才能变成机器人可执行的真实动作。
而归一化/反归一化所需的全部数值,就来自这份 libero_dataset_stats.json。评测命令中的EVALUATION.dataset_stats_path参数指向的就是它——缺了它,模型无法把输出映射回真实动作空间。
⏱️ 30 秒概览文件结构
整个文件只有 4 个顶层字段,非常扁平:
| 字段 | 类型 | 含义 |
|---|---|---|
state | dict | 8 维机器人状态的归一化统计 |
action | dict | 7 维机器人动作的归一化统计 |
num_episodes | int | 训练数据集共1712条 episode |
num_transition | int | 共277,713个时间步(transition) |
state和action内部各有一个default策略,包含12 项统计量,即 6 种统计指标 × 2 种作用范围:
| 统计指标 | 回答的问题 |
|---|---|
min/max | 数据的最小值 / 最大值 |
q01/q99 | 第 1 百分位 / 第 99 百分位(抗极端值版本) |
mean/std | 均值 / 标准差(最常用于 z-score 归一化) |
| 作用范围 | 形状(state) | 形状(action) | 含义 |
|---|---|---|---|
stepwise_* | 1 行 × 8 维 | 32 行× 7 维 | 动作块(action chunk)内每一步的统计 |
global_* | 8 维 | 7 维 | 对整个数据集聚合后的总统计 |
🔍关于 stepwise 的 32 行:训练时模型一次预测一段 32 步的动作序列(action horizon),所以 action 的 stepwise 统计有 32 行——第 k 行是"序列中第 k 个动作步"在所有 episode 上聚合出的统计量。而状态在每个决策时刻只有一个向量,因此 state 的 stepwise 只有 1 行。
🔢 拆解 8 维状态:文件里的数字长什么样
以state.default.global_*中的真实数值为例(取自 libero_dataset_stats.json):
| 维度 | global_min | global_max | global_mean | global_std | 特征解读 |
|---|---|---|---|---|---|
| 0 | -0.483 | 0.210 | -0.052 | 0.110 | 位置类坐标,范围约 0.7m |
| 1 | -0.331 | 0.390 | 0.040 | 0.150 | 位置类坐标,范围约 0.7m |
| 2 | 0.008 | 1.473 | 0.777 | 0.388 | 取值恒为正且均值 ≈0.78m,典型的高度坐标 |
| 3 | 1.003 | 3.725 | 2.997 | 0.323 | 恒为正、均值 ≈3.0m 的坐标分量 |
| 4 | -3.631 | 3.562 | -0.137 | 0.761 | 接近 ±2π,典型的姿态角特征 |
| 5 | -1.843 | 1.386 | -0.110 | 0.306 | 角度类量 |
| 6 | -0.005 | 0.042 | 0.026 | 0.015 | 数值极小、几乎贴零 |
| 7 | -0.042 | 0.001 | -0.027 | 0.014 | 数值极小、几乎贴零 |
几个值得注意的点:
- 状态保留的是原始物理量(米、弧度),归一化在模型内部完成,你无需手动缩放;
- 维度 6、7 的标准差只有约 0.015,量级比其他维度小两个数量级——这正是归一化存在的意义:不做归一化的话,这些小量级维度在输入中几乎"消失";
q01/q99与min/max非常接近,说明 LIBERO 数据中异常值很少,两种归一化方式效果差异不大。
🤖 拆解 7 维动作:delta 位姿 + 夹爪
action.default.global_*的真实数值:
| 维度 | global_min | global_max | global_mean | 解读 |
|---|---|---|---|---|
| 0–2 | -0.938 | 0.938 | ≈0 | 三个平移增量(delta x/y/z),被裁剪在 ±0.938 内 |
| 3–5 | -0.375 | 0.375 | ≈0 | 三个姿态增量(delta 旋转),范围 ±0.375 |
| 6 | 0.0 | 1.0 | 0.508 | 夹爪开合度,0=闭合、1=张开,均值约 0.51 说明大部分时间夹爪处于半开状态 |
动作前 6 维均值几乎为 0,符合"delta 动作"的分布特征;第 7 维均值 0.508 则反映了 LIBERO 演示中夹爪大部分时间保持打开。
📊 再看 stepwise 视角:stepwise_mean的 32 行中,前几步的均值与最后一步(第 31 行,如[0.004, 0.103, -0.017, ..., 0.501])已经接近 global 均值,说明动作分布随序列位置漂移不大,stepwise 与 global 统计在本数据集中差异很小——但框架仍保留 stepwise 以适配任意数据。
🚀 三步使用法:从下载到跑通评测
第 1 步:下载统计文件(与权重一起)
按 README.md 的 Download 小节,统计文件需与两个权重文件一起下载:
- libero_hidden_wan22.pt:全参数检查点
- libero_hidden_wan22_lora_128.pt:LoRA(rank 128)检查点
- libero_dataset_stats.json:本文主角
第 2 步:评测时指定dataset_stats_path
无论全参数还是 LoRA 检查点,都要在 run_libero_manager.py 的启动命令 中加上统计文件路径:
python experiments/libero/run_libero_manager.py \ task=libero_easywam_hidden_wan22 \ ckpt=./checkpoints/libero_hidden_wan22.pt \ EVALUATION.dataset_stats_path=./checkpoints/libero_dataset_stats.jsonLoRA 评测只是把task换成libero_easywam_hidden_wan22_lora、ckpt换成 LoRA 文件,统计文件用法完全一致(见 README.md)。
第 3 步:确认路径指向正确
参数值必须是统计文件所在路径的相对或绝对路径。文件内部结构(state/action/default/12 项统计)由 EasyWAM 框架直接解析,无需任何手工编辑。
⚠️ 常见坑位:新手最容易踩的 4 个问题
| 坑位 | 现象 | 正确做法 |
|---|---|---|
| 换数据集后沿用旧统计 | 状态/动作分布对不上,评测成功率骤降 | 数据集变了就重新生成对应统计文件 |
| 只下载权重、漏了统计文件 | 评测报错或动作输出漂移 | 三个文件一起下载(见上一步) |
| 分不清 stepwise 与 global | 手工做归一化时选错统计量 | 交给框架:dataset_stats_path指向本文件即可,无需自行选择 |
| 误以为要手动归一化状态 | 自己写了缩放代码,结果双重归一化 | 模型内部自动完成,喂原始量即可 |
🧠为什么 stepwise 统计值得存在?在状态分布随时间剧烈变化的数据集(如长时序、多阶段任务)上,"序列中第 5 步的状态"和"第 31 步的状态"可能天差地别。stepwise 统计允许按动作块内位置分别归一化,global 统计则是它的退化情形——本 LIBERO 数据中二者差异很小,但机制本身让同一套检查点格式可以复用到更多机器人任务上。
📁 相关文件速查
- 项目说明与评测结果:README.md
- 归一化统计文件(8 维状态 + 7 维动作,1712 episodes / 277,713 transitions):libero_dataset_stats.json
- LIBERO 全参数检查点:libero_hidden_wan22.pt
- LIBERO LoRA 检查点(rank 128 / alpha 128):libero_hidden_wan22_lora_128.pt
✅ 小结
| 一句话结论 | 内容 |
|---|---|
| 文件角色 | 模型输入归一化与输出反归一化的唯一数值来源 |
| 数据规模 | 1712 episodes、277,713 transitions 聚合而成 |
| 核心结构 | state(8维) +action(7维),各含 stepwise 与 global 两套共 12 项统计 |
| 使用方式 | 评测命令中设置EVALUATION.dataset_stats_path指向该文件 |
| 最常踩的坑 | 换数据集不换统计文件;漏下载统计文件 |
看懂这份统计文件,你就掌握了 EasyWAM-Hidden-Wan22 从"模型输出"到"机器人动作"的最后一环,可以放心开始 LIBERO 评测或在此基础上做二次实验。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考