logo Mr.Robota 具身智能学习手册 EN
第十章:具身智能其他仿真工具及仿真前沿

深入理解

在本节中,我们将深入探讨训练配置选项。并且我们还将详细解释实施标签、模态配置、数据转换等内容。

实施动作头微调

GR00T通过专用动作头设计,可以与不同类型的机器人(实施)一起工作。进行微调时,需要根据数据集指定要训练的实施头:

  1. 实施标签

    • 在实例化LeRobotSingleDataset类时,每个数据集必须用特定的EmbodimentTag(例如EmbodimentTag.GR1_UNIFIED)标记
    • 可以在gr00t/data/embodiment_tags.py中找到实施标签的详尽列表
    • 此标签确定将微调哪个动作头
    • 如果有一个新的实施,可以使用EmbodimentTag.NEW_EMBODIMENT标签(例如,new_embodiment.your_custom_dataset)
  2. 工作原理

    • 当使用特定的实施标签(例如EmbodimentTag.GR1_UNIFIED)加载数据集时
    • 模型有多个可以配置用于微调的组件(视觉编码器、语言模型、DiT等)
    • 特别是对于动作头,只有与指定的实施标签相对应的头会被微调。其他特定实施的动作头保持冻结状态

高级调整参数

模型组件

该模型有几个可以独立微调的组件。可以在GR00T_N1.from_pretrained函数中配置这些参数。

  1. 视觉编码器(tune_visual)

    • 如果数据具有与预训练数据在视觉上不同的特性,请设置为true
    • 注意:这在计算上很昂贵
    • 默认值:false
  2. 语言模型(tune_llm)

    • 只有在有与标准指令非常不同的特定领域语言时,才设置为true
    • 在大多数情况下,应该是false
    • 默认值:false
  3. 投影器(tune_projector)

    • 默认情况下,投影器会被调整
    • 这有助于对齐特定实施的动作和状态空间
  4. 扩散模型(tune_diffusion_model)

    • 默认情况下,扩散模型不会被调整
    • 这是所有实施投影器共享的动作头

理解数据转换

本文档解释了我们的数据处理管道中使用的不同类型的转换。有四个主要类别的转换:

1. 视频转换

视频转换应用于视频数据,为模型训练做准备。根据我们的实验评估,以下视频转换组合效果最佳:

  • VideoToTensor:将视频数据从其原始格式转换为PyTorch张量进行处理。
  • VideoCrop:裁剪视频帧,在随机模式下使用0.95的比例因子来引入微小变化。
  • VideoResize:使用线性插值将视频帧调整为标准大小(224x224像素)。
  • VideoColorJitter:通过随机调整亮度(±0.3)、对比度(±0.4)、饱和度(±0.5)和色调(±0.08)应用颜色增强。
  • VideoToNumpy:将处理后的张量转换回NumPy数组,用于进一步处理。

2. 状态转换

状态转换处理机器人状态信息:

  • StateActionToTensor:将状态数据(如手臂位置、手部配置)转换为PyTorch张量。
  • StateActionTransform:对状态数据应用归一化。根据模态键,有不同的归一化模式。可以在state_action.py文件中找到转换逻辑。

3. 动作转换

动作转换处理机器人动作数据:

  • StateActionToTensor:类似于状态转换,将动作数据转换为PyTorch张量。
  • StateActionTransform:对动作数据应用归一化。与状态数据一样,使用最小-最大归一化来标准化左/右手臂、手部和腰部的动作值。

4. 连接转换

ConcatTransform将处理后的数据组合成统一的数组:

  • 它根据指定的视频模态键顺序连接视频数据。
  • 它根据指定的状态模态键顺序连接状态数据。
  • 它根据指定的动作模态键顺序连接动作数据。

这一连接步骤至关重要,因为它以模型期望的格式准备数据,确保所有模态正确对齐并准备好用于训练或推理。

5. GR00T转换

GR00TTransform是一个自定义转换,用于为模型准备数据。它在数据管道的最后应用。

  • 它将数据填充到批次中序列的最大长度。
  • 它创建一个字典,将模态键作为键,将处理后的数据作为值。

在实践中,通常不需要对此转换进行太多修改,如果有的话。

Lerobot数据集兼容性

关于GR00T兼容的lerobot数据集的更多细节可以在LeRobot_compatible_data_schema.md文件中找到。