Robotics
LeRobot
Safetensors
diffusion
so101

Diffusion Policy ablation: SO-101 block to bin, without hue and sharpness augmentation

An ablation of lichtphyz/diffusion_v3_desktop: the same Diffusion Policy, data and settings, but without the two slowest image augmentations (hue and sharpness). Those two took most of the data-loading time, so this run trained in 5 h 13 min instead of 11 h 20 min, with the same final training loss (0.003). It keeps brightness, contrast and saturation jitter and a small random affine transform.

Part of the SO-101 block-to-bin collection (models, training data and real-robot evaluations). Code, training commands and lessons learned: github.com/Lichtphyz/so101-block-to-bin.

Not evaluated on the real robot. For a tested model, use lichtphyz/diffusion_v3_desktop (8/10). Run this one the same way (DDIM, 5 denoising steps).

Trained with LeRobot; the training command is in docs/training.md.


Model Details

  • License: apache-2.0
  • Robot type: so_follower
  • Cameras: front, wrist

Inputs & Outputs

The policy consumes these observation features and produces these action features.

Inputs

Feature Type Shape
observation.state STATE (6,)
observation.images.front VISUAL (3, 480, 640)
observation.images.wrist VISUAL (3, 480, 640)

Outputs

Feature Type Shape
action ACTION (6,)

Training Dataset

Training Configuration

Setting Value
Training steps 60000
Batch size 32
Optimizer adam
Learning rate 0.0001
Seed 1000
LeRobot version 0.6.2

How to Get Started with the Model

New to LeRobot? These guides cover the full workflow:

The short version to run and train this policy:

Run the policy on your robot

lerobot-rollout \
  --strategy.type=base \
  --robot.type=so_follower \
  --robot.port=<your_robot_port> \
  --robot.cameras="{ <camera_1>: {type: opencv, index_or_path: <index_or_path>, width: 640, height: 480, fps: 30}, <camera_2>: {type: opencv, index_or_path: <index_or_path>, width: 640, height: 480, fps: 30}}" \
  --policy.path=lichtphyz/diffusion_v3_desktop_skip_hue_sharpness \
  --task="Put the block in the bin." \
  --duration=60

Replace the remaining <...> placeholders with your own values: --robot.port and the camera names/indices are specific to your machine, and the camera names must match the observation keys this policy was trained on.

When --strategy.type=base is used the script doesn't record the episodes. Skipping duration will make the policy run indefinitely. For more information look at rollout documentation.

Train your own policy

lerobot-train \
  --dataset.repo_id=${HF_USER}/<dataset> \
  --policy.type=diffusion \
  --output_dir=outputs/train/<policy_repo_id> \
  --job_name=lerobot_training \
  --policy.device=cuda \
  --policy.repo_id=${HF_USER}/<policy_repo_id> \
  --wandb.enable=true

Writes checkpoints to outputs/train/<policy_repo_id>/checkpoints/.


Evaluation

No evaluation results have been provided for this policy yet.


Citation

If you use this policy, please cite the method linked in the description above, along with LeRobot:

@misc{cadene2024lerobot,
    author = {Cadene, Remi and Alibert, Simon and Soare, Alexander and Gallouedec, Quentin and Zouitine, Adil and Palma, Steven and Kooijmans, Pepijn and Aractingi, Michel and Shukor, Mustafa and Aubakirova, Dana and Russi, Martino and Capuano, Francesco and Pascal, Caroline and Choghari, Jade and Moss, Jess and Wolf, Thomas},
    title = {LeRobot: State-of-the-art Machine Learning for Real-World Robotics in Pytorch},
    howpublished = "\url{https://github.com/huggingface/lerobot}",
    year = {2024}
}
Downloads last month
58
Safetensors
Model size
0.3B params
Tensor type
F32
Β·
Video Preview
loading

Dataset used to train lichtphyz/diffusion_v3_desktop_skip_hue_sharpness

Collection including lichtphyz/diffusion_v3_desktop_skip_hue_sharpness

Paper for lichtphyz/diffusion_v3_desktop_skip_hue_sharpness