预处理流水线深潜:gr00t17-lerobot-libero_object-640 的 VLM 图像编码与输入打包原理
预处理流水线深潜gr00t17-lerobot-libero_object-640 的 VLM 图像编码与输入打包原理【免费下载链接】gr00t17-lerobot-libero_object-640项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/gr00t17-lerobot-libero_object-640gr00t17-lerobot-libero_object-640 是一个面向 LIBERO 物体操作任务的机器人策略模型仓库它的预处理流水线负责把两路相机画面、机械臂状态和语言指令整理成 GR00T N1.7 大模型能直接消费的输入。这篇深潜指南将逐层拆解其中最关键的两步——VLM 图像编码与输入打包原理让新手也能看懂从原始像素到机器人动作的完整链路。gr00t17-lerobot-libero_object-640 是什么GR00T N1.7 与 LIBERO 操作任务这个仓库是 NVIDIA GR00T N1.7 在 LeRobot 框架下的策略模型训练于 libero_object 数据集用于 LIBERO 模拟环境中的物体操作。GR00T N1.7 是 NVIDIA 开源的跨本体cross-embodiment基础模型它用 Cosmos-Reason2Qwen3-VL 系作为视觉语言骨干用 flow-matching 动作 Transformer 生成动作同时依赖视觉、语言和本体感受proprioception三种信号。从 config.json 可以看到模型的输入输出形状特征类型形状含义observation.images.imageVISUAL(256, 256, 3)主相机 RGB 画面observation.images.wrist_imageVISUAL(256, 256, 3)腕部相机 RGB 画面observation.stateSTATE(8,)机械臂关节状态actionACTION(7,)预测的 7 维动作两路图像 8 维状态 语言指令就是模型的全部感官。接下来看看它们如何被预处理。预处理流水线总览从像素到模型输入的四个步骤预处理逻辑全部写在 policy_preprocessor.json 中共 4 个可插拔步骤相机原始图像 (uint8, 0~255) │ ▼ ① rename_observations_processor 观测键名规整 │ ▼ ② to_batch_processor 补 batch 维 │ ▼ ③ groot_n1_7_pack_inputs_v1 输入打包 归一化核心 │ ▼ ④ groot_n1_7_vlm_encode_v1 VLM 图像编码核心 │ ▼ ⑤ device_processor 搬运到 GPU │ ▼ GR00T N1.7 模型前两步很朴素rename_observations_processor负责统一观测键名本仓库 rename_map 为空表示键名已对齐to_batch_processor为单帧数据补上 batch 维度。真正的技术含量集中在后两步——输入打包和VLM 图像编码下面分别深潜。groot_n1_7_pack_inputs_v1 输入打包原理状态、语言与动作的拼装打包是 GR00T 系列最重要的预处理环节职责是把一切填成模型要的固定格式。关键配置配置项值作用state_horizon1使用 1 帧历史状态action_horizon40打包未来 40 步动作窗口max_state_dim132状态统一补齐到 132 维max_action_dim132动作统一补齐到 132 维embodiment_taglibero_sim机器人体征标签language_keytask语言指令取自 task 字段formalize_languagetrue规范化语言描述normalize_min_maxtruemin-max 归一化use_percentiles / clip_outlierstrue分位数统计 离群值裁剪state_dropout_prob0.2训练时状态随机丢弃为什么要补齐到 132 维因为 GR00T N1.7 是跨本体模型不同机器人人形、灵巧手、移动底盘……的状态和动作维度各不相同。为了让模型能统一批量处理打包器先把任意维度填充/截断到 132 维上限再靠机器人体征告诉模型当前是哪种机器人。机器人体征如何编码这就是 embodiment_tag 的用武之地。配置里有一张长长的embodiment_mapping映射表把几十种本体映射成整数索引例如libero_sim → 2、droid_sim → 3、gr1_unified → 20。推理时你的机器人体征会被编码进输入模型据此知道自己长什么样。归一化怎么算打包器使用训练集统计好的 min/max并配合分位数裁剪离群值防止个别异常值拉爆范围把状态和动作都压到 [0,1] 区间。这套统计量保存在 policy_preprocessor_step_2_groot_n1_7_pack_inputs_v1.safetensors 里。有趣的是后处理的状态文件与它是同一个文件sha256 完全一致——因为动作反归一化用的正是同一套统计量打包与解包天然对称。另外state_dropout_prob0.2是训练期的正则化技巧以 20% 概率随机丢弃部分状态分量迫使模型不过度依赖状态从而更依赖视觉与语言信号。groot_n1_7_vlm_encode_v1VLM 图像编码的完整流程图像是策略模型最重要的信息源而 VLM视觉语言模型骨干要求图像必须经过与训练一致的预处理。这一步的关键配置配置项值作用model_namenvidia/Cosmos-Reason2-2B视觉编码骨干image_crop_size[230, 230]随机裁剪区域image_target_size[256, 256]最终输出尺寸shortest_image_edge256短边对齐基准crop_fraction0.95裁剪比例use_albumentationstrue使用 albumentations 做增广letter_box_transformfalse不做 letterbox图像预处理三步走️先按 95% 的裁剪比例在画面上随机裁剪出约 230×230 的区域训练期数据增强让模型对视角偏移更鲁棒再把裁剪结果缩放回模型要求的 256×256全程由 albumentations 库实现并关闭 letterbox不做等比留边。经过这组操作两路相机画面被统一成模型可接受的视觉输入。Cosmos-Reason2 在这里干什么它本质上是 GR00T N1.7 的视觉编码器把 256×256 的 RGB 图像切分成 patch经视觉 Transformer 编码成一组视觉 token类似大语言模型的词元。这些 token 随后与语言指令的 token 拼接进入 LLM 层做跨模态推理。细心的读者会发现 config.json 里normalization_mapping的 VISUAL 是IDENTITY——因为图像归一化已由 VLM 编码器内部完成流水线无需再做像素级归一化而状态和动作的归一化则交给打包器。这正是这套预处理各司其职的设计精髓。动作后处理解包与反归一化的对称视角预处理负责进后处理负责出。 policy_postprocessor.json 中的groot_action_unpack_unnormalize_v2会把模型输出的 132 维动作解包回真实机器人坐标系env_action_dim7只取前 7 维有效动作padding 部分直接丢弃normalize_min_maxtrueclip_normalized_actiontrue用与打包相同的统计量反归一化并裁剪越界值libero_gripper_actiontruelibero_gripper_binarizetrue把夹爪开合动作二值化为开/关贴合 LIBERO 任务的夹爪控制习惯。整个过程与打包步骤镜像对称这也是前后两个状态文件可以共用同一份统计量的原因。训练配置速览这套模型是怎么训出来的README.md 和 train_config.json 给出了完整训练信息项目值训练步数20000全局 batch size3202×320 布局优化器adamwlr 1e-4推理时间步4flow matching 快速采样混合精度bf16动作窗口chunk_size16n_action_steps16微调范围projector / diffusion / VLN 层开启LLM 与视觉编码器冻结值得注意num_inference_timesteps4flow-matching 动作 Transformer 只需 4 个去噪时间步就能输出 16 步动作让策略在真机上具备实时性。训练时还启用了 color jitter 图像增广亮度、对比度、饱和度、色相进一步提升视觉鲁棒性。上手建议与常见疑问想快速跑起来克隆仓库后用 LeRobot 命令加载即可git clone https://gitcode.com/hf_mirrors/nvidia/gr00t17-lerobot-libero_object-640 lerobot-rollout \ --policy.pathgr00t17-lerobot-libero_object-640 \ --taskpick up the lego brick几个新手常见疑问快速解答为什么输入要 padding 到 132 维跨本体模型的统一格式需要padding 的部分在输出时会被解包器丢弃不影响真实动作。图像为什么要随机裁剪训练期用于增强泛化推理时使用确定性裁剪保证输入一致。预处理状态文件有什么用里面存的是归一化统计量min/max 等没有它就无法还原真实动作切勿删除。总结gr00t17-lerobot-libero_object-640 的预处理流水线展示了机器人基础模型的标准做法groot_n1_7_pack_inputs_v1负责把状态、语言、动作和机器人体征拼装成固定格式并归一化groot_n1_7_vlm_encode_v1负责把图像变成 VLM 可理解的视觉 token。理解了这两步你就掌握了 GR00T 系列策略感官输入的核心机制也能更自信地把这套模型迁移到自己的机器人任务上。【免费下载链接】gr00t17-lerobot-libero_object-640项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/gr00t17-lerobot-libero_object-640创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考