YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

BIRD (d2560 main method) on ur_short_memory, seed 0

Checkpoints from bash train_bird_main.sh ur_short_memory 0 on the bird_main branch of REAL_WORLD_DIFFPO_MEMORY at 97afc73, plus one uncommitted change to algorithms/bird_main/trainer.py (below). 100k gradient steps, no eval envs (env.eval_episode_num=0).

Contents

path what
checkpoints/agent_0100000.pt final weights (step 100k)
checkpoints/agent_0005000.pt ... agent_0095000.pt every 5k steps, in case the final one is over-fitted
checkpoints/config.yaml resolved run config; eval_bird_main.py rebuilds the agent from it
ur_short_memory.bird_main.camera_2.96x96.zarr/ the training data in the layout real_data.py reads (the eval needs it for the action normalization stats)

Running on the robot

config.yaml points env.real_dataset and env.real_zarr at ur_short_memory.bird_main.camera_2.96x96.zarr, a path relative to the directory you launch from. Either launch from the directory holding the zarr, or edit both keys to its absolute path. Then:

python eval/eval_bird_main.py -i checkpoints/agent_0100000.pt -t ur_short_memory

-i takes the .pt file; config.yaml must sit next to it.

Data

Trained on ur_short_memory_crop.baseline.27.rotation_6d.zarr: 27 demos, 10000 frames, camera_2 (wrist, 320x240, centre-cropped and resized to 96x96 with the repo's get_image_transform). That zarr was already converted (quaternion rotations, 6D-rotation actions, JPEG2000 frames, no mp4s), so instead of real_data.build_bird_zarr it was converted with a one-off script into the same layout:

  • data/state = eef_pos(3) + rotation_6d(6) + gripper_qpos(2), where rotation_6d is the first two rows of the rotation matrix (pytorch3d convention, the same one eval_bird_main.py computes from the robot's axis-angle)
  • data/action = pos(3) + rotation_6d(6) + gripper width(1), unchanged; action[t] equals state[t+1] exactly
  • data/img = 96x96x3 uint8

Trainer change (not committed)

With eval_episode_num=0 the stock trainer only writes best_agent.pt when an eval improves, so it would never save anything. The patch writes agent.pt plus agent_<step>.pt every eval_every (5000) steps and at the end, in the same payload format, so eval_bird_main.py loads them unchanged.

Offline check (training demos, open-loop)

Replaying the 27 demos through Bird.act() the way the robot loop calls it, with recorded frames as input, the 35k checkpoint's executed actions were off by 3.6 mm in position (p95 7.7 mm), 0.30 deg in rotation, and matched open/closed gripper state 99.6% of the time. For comparison, holding the current pose is off by 27.8 mm and constant-velocity extrapolation by 13.1 mm. These are training episodes, so this measures fit, not generalization; closed-loop performance is only measured on the robot.

Caveats

  • agent_pos (the 11-D state) reaches the policy unnormalized, because real_data.real_spaces declares its bounds as +-inf. Actions are min-max normalized to [-1, 1] per dimension.
  • No held-out episodes: all 27 demos were used for training.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support