CoolFace
Modelpublic

ShuaiYang03/GR00T-N1.5-Lerobot-SimplerEnv-BridgeV2

sourceHugging Faceupdated 1y agoView on Hugging Face
2likes14downloads
Model Card

datasets:

  • —IPEC-COMMUNITY/bridgeoriglerobot base_model:
  • —nvidia/GR00T-N1.5-3B ---

A fine-tuned GR00T model on the Bridge dataset(30k steps, 8 A100 GPUs) follows the default fine-tuning settings (i.e., freezing the VLM backbone).

The evaluation was conducted using the SimplerEnv-OpenVLA repository (https://github.com/DelinQu/SimplerEnv-OpenVLA), with thanks to their contributions to the community.

This fine-tuned model should not be considered representative of the GR00T's actual performance.

0123456789
putspoonontablecloth/matchingpartial0.8333333333333334nannan0.167nan0.3470.778nan0.0410.375
putspoonontablecloth/matchingentire0.625nannan0.0nan0.1250.472nan0.00.208
putcarrotonplate/matchingpartial0.5416666666666666nannan0.208nan0.5280.278nan0.3330.333
putcarrotonplate/matchingentire0.4583333333333333nannan0.042nan0.0830.097nan0.00.25
stackgreenblockonyellowblock/matchingpartial0.7083333333333334nannan0.083nan0.3190.403nan0.1250.083
stackgreenblockonyellowblock/matchingentire0.16666666666666666nannan0.0nan0.00.042nan0.00.083
puteggplantinbasket/matchingpartial0.4166666666666667nannan0.0nan0.6670.875nan0.0830.0
puteggplantinbasket/matchingentire0.20833333333333334nannan0.0nan0.4310.569nan0.0410.0
ckpt_nameGR00T-N1.5RT-1(Converged)RT-1(15%)RT-1-XRT-2-XOcto-BaseOcto-SmallRT-1(begin)OpenVLARoboVLM

Data configuration:

In addition to adding the following code to data_config.py, I also provide the modality.json, which is required for the GR00T dataloader.

python

class FractalDataConfig(So100DataConfig):
    video_keys = ["video.image", ]
    state_keys = ["state.x", "state.y", "state.z", "state.rx", "state.ry", "state.rz", "state.rw",  "state.gripper"]
    action_keys = ["action.x", "action.y", "action.z", "action.roll", "action.pitch", "action.yaw", "action.gripper"]
    language_keys = ["annotation.human.action.task_description"]

    def transform(self) -> ModalityTransform:
        transforms = [
            # video transforms
            VideoToTensor(apply_to=self.video_keys),
            VideoCrop(apply_to=self.video_keys, scale=0.95),
            VideoResize(apply_to=self.video_keys, height=224, width=224, interpolation="linear"),
            VideoColorJitter(
                apply_to=self.video_keys,
                brightness=0.3,
                contrast=0.4,
                saturation=0.5,
                hue=0.08,
            ),
            VideoToNumpy(apply_to=self.video_keys),
            # state transforms
            StateActionToTensor(apply_to=self.state_keys),
            StateActionTransform(
                apply_to=self.state_keys,
                normalization_modes={key: "min_max" for key in self.state_keys},
            ),
            # action transforms
            StateActionToTensor(apply_to=self.action_keys),
            StateActionTransform(
                apply_to=self.action_keys,
                normalization_modes={key: "min_max" for key in self.action_keys},
            ),
            # concat transforms
            ConcatTransform(
                video_concat_order=self.video_keys,
                state_concat_order=self.state_keys,
                action_concat_order=self.action_keys,
            ),
            # model-specific transform
            GR00TTransform(
                state_horizon=len(self.observation_indices),
                action_horizon=len(self.action_indices),
                max_state_dim=64,
                max_action_dim=32,
            ),
        ]
        return ComposedModalityTransform(transforms=transforms)


class BridgeDataConfig(FractalDataConfig):
    video_keys = ["video.image_0", ]
    state_keys = ["state.x", "state.y", "state.z", "state.roll", "state.pitch", "state.yaw", "state.pad",  "state.gripper"]
    action_keys = ["action.x", "action.y", "action.z", "action.roll", "action.pitch", "action.yaw", "action.gripper"]
    language_keys = ["annotation.human.action.task_description"]

Extra embodiment tag to reproduce the results.

python

class EmbodimentTag(Enum):
    OXE = 'oxe'

# Embodiment tag string: to projector index in the Action Expert Module
EMBODIMENT_TAG_MAPPING = {
    EmbodimentTag.OXE.value: 7,
}

Thanks to @youliangtan, who reevaluated my results.

https://huggingface.co/ShuaiYang03/GR00T-N1.5-Lerobot-SimplerEnv-BridgeV2/discussions/1

https://github.com/NVIDIA/Isaac-GR00T : with the commit hash aa6441feb4f08233d55cbfd2082753cdc01fa676

With the modified SimplerEnv : https://github.com/youliangtan/SimplerEnv