swap-animal: README + config; drop the block config
Browse files- README.md +24 -17
- config.yaml → swap-animal/config.yaml +8 -5
README.md
CHANGED
|
@@ -4,28 +4,35 @@ tags: [diffusion-policy, robotics, franka]
|
|
| 4 |
---
|
| 5 |
# oopsie-debug
|
| 6 |
|
| 7 |
-
Diffusion Policy (image, UNet) checkpoints trained
|
| 8 |
-
|
| 9 |
-
no held-out validation). Trained 2001 epochs (~34k steps, batch 64); loss values in the table are
|
| 10 |
-
in-sample train loss.
|
| 11 |
|
| 12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|---|---|---|
|
| 14 |
-
|
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
|
|
|
|
|
|
| 18 |
|
| 19 |
Each `.ckpt` is a full training checkpoint (`state_dicts`: model, ema_model, optimizer;
|
| 20 |
`pickles`: epoch, global_step, rng_state; `cfg`), loadable with
|
| 21 |
`torch.load(path, pickle_module=dill, map_location='cpu', weights_only=False)`.
|
| 22 |
-
Use `state_dicts['ema_model']` for inference
|
|
|
|
| 23 |
|
| 24 |
## Observation / action contract
|
| 25 |
-
- obs: `img_third`, `img_wrist` (3x120x160 RGB,
|
| 26 |
-
(9-D: xyz + rotation_6d), `gripper_state` (
|
| 27 |
-
- action (10-D): `[x, y, z, rot6d(6), gripper]` = pose/gripper of frame t+1
|
| 28 |
-
- Normalization: position min/max -> [-1,1]; rotation_6d identity
|
| 29 |
-
|
| 30 |
-
-
|
| 31 |
-
(`action10_to_pose7_gripper` is the inverse for rollout). Full config in `config.yaml`.
|
|
|
|
| 4 |
---
|
| 5 |
# oopsie-debug
|
| 6 |
|
| 7 |
+
Diffusion Policy (image, UNet) checkpoints trained with `train.py` of
|
| 8 |
+
https://github.com/KuanchengWang/oopsie (branch `dp-teleop-block`) on Franka teleop data.
|
|
|
|
|
|
|
| 9 |
|
| 10 |
+
## swap-animal/
|
| 11 |
+
|
| 12 |
+
Dataset `teleop_dataset_20260922_211038` (40 episodes, 15840 steps @ 10 Hz, all demos in
|
| 13 |
+
training, no held-out validation). 3000-epoch run started 2026-09-23 (batch 64, ~244
|
| 14 |
+
steps/epoch); the run keeps only `latest.ckpt`, so snapshots are taken when it passes the
|
| 15 |
+
listed epochs. Loss values are in-sample train loss.
|
| 16 |
+
|
| 17 |
+
| file | epoch | mean train loss |
|
| 18 |
|---|---|---|
|
| 19 |
+
| swap-animal/epoch_1600.ckpt | 1600 | 0.0005 |
|
| 20 |
+
|
| 21 |
+
(epochs 500 / 1000 / 1500 were overwritten before a copy could be taken; epochs 2000 / 2500 /
|
| 22 |
+
3000 will be added as the run passes them.) `swap-animal/config.yaml` is the resolved training
|
| 23 |
+
config. The checkpoint's `task.dataset.quat_order` is `wxyz` (the corrected quaternion
|
| 24 |
+
handling; see the repo README).
|
| 25 |
|
| 26 |
Each `.ckpt` is a full training checkpoint (`state_dicts`: model, ema_model, optimizer;
|
| 27 |
`pickles`: epoch, global_step, rng_state; `cfg`), loadable with
|
| 28 |
`torch.load(path, pickle_module=dill, map_location='cpu', weights_only=False)`.
|
| 29 |
+
Use `state_dicts['ema_model']` for inference, or roll it out with
|
| 30 |
+
`eval_real_robot_panda_realsense_teleop_block.py -i <ckpt>`.
|
| 31 |
|
| 32 |
## Observation / action contract
|
| 33 |
+
- obs: `img_third`, `img_wrist` (3x120x160 RGB, INTER_AREA from 480x640 BGR), `robot_eef_pose`
|
| 34 |
+
(9-D: xyz + rotation_6d from the stored (w,x,y,z) quaternion), `gripper_state` (width m); n_obs_steps 2.
|
| 35 |
+
- action (10-D): `[x, y, z, rot6d(6), gripper width]` = pose/gripper of frame t+1; horizon 16, 8 executed.
|
| 36 |
+
- Normalization: position min/max -> [-1,1]; rotation_6d identity; gripper fixed [0, 0.08] m -> [-1,1].
|
| 37 |
+
|
| 38 |
+
The teleop-block checkpoints previously stored at the repo root were removed on 2026-09-23.
|
|
|
config.yaml → swap-animal/config.yaml
RENAMED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
name:
|
| 2 |
_target_: memory_diffusion_policy.workspace.train_diffusion_unet_teleop_block_workspace.TrainDiffusionUnetTeleopBlockWorkspace
|
| 3 |
task_name: ${task.name}
|
| 4 |
shape_meta: ${task.shape_meta}
|
|
@@ -86,7 +86,7 @@ training:
|
|
| 86 |
resume: true
|
| 87 |
lr_scheduler: cosine
|
| 88 |
lr_warmup_steps: 500
|
| 89 |
-
num_epochs:
|
| 90 |
gradient_accumulate_every: 1
|
| 91 |
use_ema: true
|
| 92 |
freeze_encoder: false
|
|
@@ -112,7 +112,7 @@ checkpoint:
|
|
| 112 |
topk:
|
| 113 |
monitor_key: train_loss
|
| 114 |
mode: min
|
| 115 |
-
k:
|
| 116 |
format_str: epoch={epoch:04d}-train_loss={train_loss:.4f}.ckpt
|
| 117 |
save_last_ckpt: true
|
| 118 |
save_last_snapshot: false
|
|
@@ -120,16 +120,17 @@ multi_run:
|
|
| 120 |
run_dir: data/outputs/teleop_block_dp/${name}_${task_name}_${exp_name}
|
| 121 |
wandb_name_base: ${name}_${task_name}_${exp_name}
|
| 122 |
task:
|
| 123 |
-
name:
|
| 124 |
image_shape:
|
| 125 |
- 3
|
| 126 |
- 120
|
| 127 |
- 160
|
| 128 |
-
dataset_path: data/
|
| 129 |
action_shift: 1
|
| 130 |
gripper_range:
|
| 131 |
- 0.0
|
| 132 |
- 0.08
|
|
|
|
| 133 |
shape_meta:
|
| 134 |
obs:
|
| 135 |
img_third:
|
|
@@ -186,3 +187,5 @@ task:
|
|
| 186 |
gripper_range: ${task.gripper_range}
|
| 187 |
image_cache: true
|
| 188 |
image_cache_path: null
|
|
|
|
|
|
|
|
|
| 1 |
+
name: train_diffusion_unet_teleop_swap_animal
|
| 2 |
_target_: memory_diffusion_policy.workspace.train_diffusion_unet_teleop_block_workspace.TrainDiffusionUnetTeleopBlockWorkspace
|
| 3 |
task_name: ${task.name}
|
| 4 |
shape_meta: ${task.shape_meta}
|
|
|
|
| 86 |
resume: true
|
| 87 |
lr_scheduler: cosine
|
| 88 |
lr_warmup_steps: 500
|
| 89 |
+
num_epochs: 3000
|
| 90 |
gradient_accumulate_every: 1
|
| 91 |
use_ema: true
|
| 92 |
freeze_encoder: false
|
|
|
|
| 112 |
topk:
|
| 113 |
monitor_key: train_loss
|
| 114 |
mode: min
|
| 115 |
+
k: 0
|
| 116 |
format_str: epoch={epoch:04d}-train_loss={train_loss:.4f}.ckpt
|
| 117 |
save_last_ckpt: true
|
| 118 |
save_last_snapshot: false
|
|
|
|
| 120 |
run_dir: data/outputs/teleop_block_dp/${name}_${task_name}_${exp_name}
|
| 121 |
wandb_name_base: ${name}_${task_name}_${exp_name}
|
| 122 |
task:
|
| 123 |
+
name: teleop_swap_animal_image
|
| 124 |
image_shape:
|
| 125 |
- 3
|
| 126 |
- 120
|
| 127 |
- 160
|
| 128 |
+
dataset_path: data/teleop_swap_animal/teleop_dataset_20260922_211038/replay_buffer.zarr
|
| 129 |
action_shift: 1
|
| 130 |
gripper_range:
|
| 131 |
- 0.0
|
| 132 |
- 0.08
|
| 133 |
+
quat_order: wxyz
|
| 134 |
shape_meta:
|
| 135 |
obs:
|
| 136 |
img_third:
|
|
|
|
| 187 |
gripper_range: ${task.gripper_range}
|
| 188 |
image_cache: true
|
| 189 |
image_cache_path: null
|
| 190 |
+
quat_order: ${task.quat_order}
|
| 191 |
+
repair_dropouts: true
|