harrywang01 commited on
Commit
8a64aad
·
verified ·
1 Parent(s): 6ab7655

swap-animal: README + config; drop the block config

Browse files
README.md CHANGED
@@ -4,28 +4,35 @@ tags: [diffusion-policy, robotics, franka]
4
  ---
5
  # oopsie-debug
6
 
7
- Diffusion Policy (image, UNet) checkpoints trained on the Franka teleop block dataset
8
- `teleop_dataset_20260920_205906` (20 episodes, 1206 steps @ 10 Hz, all demos used for training,
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
- | file | epoch | train loss |
 
 
 
 
 
 
 
13
  |---|---|---|
14
- | epoch_0500.ckpt | 500 | 0.0072 |
15
- | epoch_1000.ckpt | 1000 | 0.0031 |
16
- | epoch_1500.ckpt | 1500 | 0.0011 |
17
- | epoch_2000.ckpt | 2000 | 0.0004 |
 
 
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, resized from 480x640 BGR source), `robot_eef_pose`
26
- (9-D: xyz + rotation_6d), `gripper_state` (1-D width in m). n_obs_steps = 2.
27
- - action (10-D): `[x, y, z, rot6d(6), gripper]` = pose/gripper of frame t+1. horizon 16, 8 executed.
28
- - Normalization: position min/max -> [-1,1]; rotation_6d identity (no min/max);
29
- gripper fixed [0, 0.08] m -> [-1,1]. The source quaternion is scalar-last (xyzw).
30
- - Code: `memory_diffusion_policy/dataset/teleop_block_image_dataset.py`
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: train_diffusion_unet_teleop_block
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: 2001
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: 21
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: teleop_block_image
124
  image_shape:
125
  - 3
126
  - 120
127
  - 160
128
- dataset_path: data/teleop_block_new/teleop_dataset_20260920_205906/replay_buffer.zarr
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