serialexperimentsleon commited on
Commit
5746c11
·
verified ·
1 Parent(s): fa3394d

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +16 -0
  2. 212505/.hydra/config.yaml +350 -0
  3. 212505/.hydra/hydra.yaml +169 -0
  4. 212505/.hydra/overrides.yaml +3 -0
  5. 212505/eval_policy.log +15 -0
  6. 212506/.hydra/config.yaml +350 -0
  7. 212506/.hydra/hydra.yaml +169 -0
  8. 212506/.hydra/overrides.yaml +3 -0
  9. 212506/episode_rosbags/aligned_depth_to_color_K.npy +3 -0
  10. 212506/episode_rosbags/cam_tf_world.npy +3 -0
  11. 212506/episode_rosbags/color_K.npy +3 -0
  12. 212506/episode_rosbags/depth_K.npy +3 -0
  13. 212506/episode_rosbags/episode_0_2024-12-29-21-25-40.bag +3 -0
  14. 212506/episode_rosbags/episode_1_2024-12-29-21-26-21.bag +3 -0
  15. 212506/episode_rosbags/episode_2_2024-12-29-21-27-02.bag +3 -0
  16. 212506/episode_rosbags/episode_3_2024-12-29-21-27-48.bag +3 -0
  17. 212506/episode_rosbags/episode_4_2024-12-29-21-28-37.bag +3 -0
  18. 212506/eval_robot.log +12 -0
  19. 212506/eval_video/0_eval.mp4 +3 -0
  20. 212506/eval_video/1_eval.mp4 +3 -0
  21. 212506/eval_video/2_eval.mp4 +3 -0
  22. 212506/eval_video/3_eval.mp4 +3 -0
  23. 212506/eval_video/4_eval.mp4 +3 -0
  24. 212506/tb/events.out.tfevents.1735525513.leonmkim-ROG-Strix-G15CS-G15CS.1360290.0 +3 -0
  25. 212506/wandb/debug-internal.log +0 -0
  26. 212506/wandb/debug.log +31 -0
  27. 212506/wandb/run-20241229_212512-oco0rjll/files/code/FISH/eval_robot.py +512 -0
  28. 212506/wandb/run-20241229_212512-oco0rjll/files/config.yaml +893 -0
  29. 212506/wandb/run-20241229_212512-oco0rjll/files/diff.patch +196 -0
  30. 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/0_eval_0_7f4ade8f7a09940de9a3.mp4 +3 -0
  31. 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/1_eval_1_df2b523b5c69376abbb6.mp4 +3 -0
  32. 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/2_eval_2_56287c330ba45a21ceae.mp4 +3 -0
  33. 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/3_eval_3_d9096d3d3b1128c5f3af.mp4 +3 -0
  34. 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/4_eval_4_277cb7c2f38e9f60cb6a.mp4 +3 -0
  35. 212506/wandb/run-20241229_212512-oco0rjll/files/output.log +0 -0
  36. 212506/wandb/run-20241229_212512-oco0rjll/files/requirements.txt +339 -0
  37. 212506/wandb/run-20241229_212512-oco0rjll/files/wandb-metadata.json +92 -0
  38. 212506/wandb/run-20241229_212512-oco0rjll/files/wandb-summary.json +1 -0
  39. 212506/wandb/run-20241229_212512-oco0rjll/logs/debug-internal.log +0 -0
  40. 212506/wandb/run-20241229_212512-oco0rjll/logs/debug.log +31 -0
  41. 212506/wandb/run-20241229_212512-oco0rjll/run-oco0rjll.wandb +3 -0
  42. config.yaml +546 -0
  43. snapshot_10500.pt +3 -0
  44. snapshot_10999.pt +3 -0
  45. snapshot_11249.pt +3 -0
  46. snapshot_11499.pt +3 -0
  47. snapshot_11749.pt +3 -0
  48. snapshot_11999.pt +3 -0
  49. snapshot_12000.pt +3 -0
  50. snapshot_12208.pt +3 -0
.gitattributes CHANGED
@@ -33,3 +33,19 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ 212506/wandb/run-20241229_212512-oco0rjll/run-oco0rjll.wandb filter=lfs diff=lfs merge=lfs -text
37
+ 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/2_eval_2_56287c330ba45a21ceae.mp4 filter=lfs diff=lfs merge=lfs -text
38
+ 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/3_eval_3_d9096d3d3b1128c5f3af.mp4 filter=lfs diff=lfs merge=lfs -text
39
+ 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/1_eval_1_df2b523b5c69376abbb6.mp4 filter=lfs diff=lfs merge=lfs -text
40
+ 212506/eval_video/3_eval.mp4 filter=lfs diff=lfs merge=lfs -text
41
+ 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/0_eval_0_7f4ade8f7a09940de9a3.mp4 filter=lfs diff=lfs merge=lfs -text
42
+ 212506/eval_video/4_eval.mp4 filter=lfs diff=lfs merge=lfs -text
43
+ 212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/4_eval_4_277cb7c2f38e9f60cb6a.mp4 filter=lfs diff=lfs merge=lfs -text
44
+ 212506/eval_video/1_eval.mp4 filter=lfs diff=lfs merge=lfs -text
45
+ 212506/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
46
+ 212506/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
47
+ 212506/episode_rosbags/episode_0_2024-12-29-21-25-40.bag filter=lfs diff=lfs merge=lfs -text
48
+ 212506/episode_rosbags/episode_4_2024-12-29-21-28-37.bag filter=lfs diff=lfs merge=lfs -text
49
+ 212506/episode_rosbags/episode_3_2024-12-29-21-27-48.bag filter=lfs diff=lfs merge=lfs -text
50
+ 212506/episode_rosbags/episode_1_2024-12-29-21-26-21.bag filter=lfs diff=lfs merge=lfs -text
51
+ 212506/episode_rosbags/episode_2_2024-12-29-21-27-02.bag filter=lfs diff=lfs merge=lfs -text
212505/.hydra/config.yaml ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '1000_0'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 12000
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${now:%H%M%S}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ pretrained_backbone_weights: null
138
+ transforms:
139
+ - _target_: torchaug.transforms.RandomAffine
140
+ degrees:
141
+ - -5
142
+ - 5
143
+ translate:
144
+ - 0.05
145
+ - 0.05
146
+ batch_transform: true
147
+ num_chunks: -1
148
+ batch_inplace: true
149
+ - _target_: torchaug.transforms.RandomColorJitter
150
+ brightness: 0.3
151
+ contrast: 0.4
152
+ saturation: 0.5
153
+ hue: 0.08
154
+ batch_transform: true
155
+ num_chunks: -1
156
+ batch_inplace: true
157
+ use_group_norm: true
158
+ spatial_softmax_num_keypoints: 32
159
+ action_history_encoder_config:
160
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
161
+ in_channels: 7
162
+ out_channels: 32
163
+ history_length: ${agent.config.policy_cfg.n_action_steps}
164
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
165
+ downsample_kernel_size: 3
166
+ downsample_stride: 2
167
+ downsample_padding: 1
168
+ down_dims:
169
+ - 256
170
+ - 512
171
+ - 1024
172
+ kernel_size: 5
173
+ n_groups: 8
174
+ diffusion_step_embed_dim: 128
175
+ use_film_scale_modulation: true
176
+ noise_scheduler_type: DDIM
177
+ beta_schedule: squaredcos_cap_v2
178
+ beta_start: 0.0001
179
+ beta_end: 0.02
180
+ prediction_type: epsilon
181
+ clip_sample: true
182
+ clip_sample_range: 1.0
183
+ num_train_timesteps: 50
184
+ num_inference_steps: 10
185
+ do_mask_loss_for_padding: false
186
+ train_cfg:
187
+ _target_: utils.TrainConfig
188
+ lr: 0.0001
189
+ lr_scheduler: cosine
190
+ lr_warmup_steps: 500
191
+ adam_betas:
192
+ - 0.95
193
+ - 0.999
194
+ adam_eps: 1.0e-08
195
+ adam_weight_decay: 1.0e-06
196
+ grad_clip_norm: 10
197
+ offline_steps: ${num_train_frames_diffusion}
198
+ use_amp: true
199
+ observation_cfg:
200
+ _target_: agent.encoder.VisualFeatureSet
201
+ use_depth: ${use_depth}
202
+ use_color: ${use_color}
203
+ mask_input_dict:
204
+ _target_: agent.encoder.MaskInputDict
205
+ enable: ${use_masks}
206
+ representation: ${mask_representation}
207
+ mask_list: ${mask_list}
208
+ crop_input_config:
209
+ _target_: agent.encoder.CropInputConfig
210
+ color_crop_type: ${color_crop_type}
211
+ depth_crop_type: ${depth_crop_type}
212
+ segmask_crop_type: ${segmask_crop_type}
213
+ crop_hw: ${crop_hw}
214
+ crop_down_offset: ${crop_down_offset}
215
+ add_crop_binary_mask: ${add_crop_binary_mask}
216
+ add_coord_conv_map: ${add_coord_conv_map}
217
+ context_input_config:
218
+ _target_: agent.encoder.ContextInputConfig
219
+ use_color: ${use_context_color}
220
+ use_depth: ${use_context_depth}
221
+ mask_input_dict:
222
+ _target_: agent.encoder.MaskInputDict
223
+ enable: ${use_context_segmask}
224
+ representation: ${mask_representation}
225
+ mask_list: ${mask_list}
226
+ crop_input_config:
227
+ _target_: agent.encoder.CropInputConfig
228
+ color_crop_type: ${context_color_crop_type}
229
+ depth_crop_type: ${context_depth_crop_type}
230
+ segmask_crop_type: ${context_segmask_crop_type}
231
+ crop_hw: ${crop_hw}
232
+ crop_down_offset: ${crop_down_offset}
233
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
234
+ add_coord_conv_map: ${context_add_coord_conv_map}
235
+ mask_soft_approx_scheduler_config:
236
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
237
+ num_steps: 40000
238
+ initial_value: 10.0
239
+ final_value: 1000.0
240
+ interpolation_scheme: constant
241
+ use_contact_map: ${use_contact_map}
242
+ use_sdf_maps: ${use_sdf_maps}
243
+ use_normals_maps: ${use_normals_maps}
244
+ which_objects: ${which_objects}
245
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
246
+ env_dtc_max_value: ${env_dtc_max_value}
247
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
248
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
249
+ clamp_dtc: ${clamp_dtc}
250
+ max_contact_prob: ${max_contact_prob}
251
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
252
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
253
+ adaptive_normals_mask: ${adaptive_normals_mask}
254
+ max_depth: ${max_depth}
255
+ image_shape: ${agent.desired_image_shape}
256
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
257
+ learning_rate: ${agent.config.train_cfg.lr}
258
+ weight_decay: 0.0
259
+ contact_model_name: ${contact_model_name}
260
+ zero_centered: false
261
+ suite:
262
+ suite: frankagym
263
+ name: frankagym
264
+ frame_stack: ${agent.n_obs_steps}
265
+ action_repeat: 1
266
+ discount: 0.99
267
+ hidden_dim: 1024
268
+ num_train_frames: 2010
269
+ num_seed_frames: 260
270
+ num_train_epochs: 5000
271
+ validate_every_epochs: 100
272
+ validate_diffusion_on_action_loss_every_epochs: 500
273
+ train_eval_diffusion_on_action_loss_every_epochs: 500
274
+ check_topk_every_epochs: 10
275
+ save_snapshot_every_epochs: 5000
276
+ eval_every_frames: 2000
277
+ num_eval_episodes: 5
278
+ save_snapshot: true
279
+ wait_for_user_to_start_episode: true
280
+ task_make_fn:
281
+ _target_: suite.frankagym.make
282
+ name: ${task_name}
283
+ height: 240
284
+ width: 320
285
+ frame_stack: ${suite.frame_stack}
286
+ action_repeat: ${suite.action_repeat}
287
+ seed: ${seed}
288
+ enable_arm: ${agent.enable_arm}
289
+ enable_gripper: ${enable_gripper}
290
+ start_with_gripper_open: ${start_with_gripper_open}
291
+ enable_camera: ${agent.enable_camera}
292
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
293
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
294
+ x_limit: ${x_limit}
295
+ y_limit: ${y_limit}
296
+ z_limit: ${z_limit}
297
+ device: ${device}
298
+ interpolation_frequency: ${interpolation_frequency}
299
+ policy_frequency: ${policy_frequency}
300
+ debug_timestamps: ${debug_timestamps}
301
+ stop_after_action: ${stop_after_action}
302
+ open_loop: ${open_loop}
303
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
304
+ action_key: ${action_key}
305
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
306
+ action_trajectories: ${action_trajectories}
307
+ path_to_zarr_dataset: ${expert_dataset}
308
+ agent_policy_cfg: ???
309
+ true_action_history: ${true_action_history}
310
+ num_train_frames_bc: 50000
311
+ num_train_frames_drq: 1100000
312
+ stddev_schedule_drq: linear(1.0,0.1,100000)
313
+ task_name: FrankaInsertion-v1
314
+ num_train_frames_vinn: 25000
315
+ num_train_frames_diffusion: 1000000
316
+ num_train_epochs_bc: 5000
317
+ num_train_epochs_diffusion: 5000
318
+ validate_every_epochs_bc: 5
319
+ validate_every_epochs_diffusion: 25
320
+ validate_diffusion_on_action_loss_every_epochs: 50
321
+ train_eval_diffusion_on_action_loss_every_epochs: 500
322
+ check_topk_every_epochs: 5
323
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
324
+ save_snapshot_every_epochs_diffusion: 5000
325
+ x_limit:
326
+ - 0.2
327
+ - 0.7
328
+ y_limit:
329
+ - -0.4
330
+ - 0.4
331
+ z_limit:
332
+ - -0.05
333
+ - 0.55
334
+ home_displacement:
335
+ - 0.55
336
+ - 0.0
337
+ - 0.55
338
+ - 180.0
339
+ - 0.0
340
+ - 0.0
341
+ enable_gripper: true
342
+ start_with_gripper_open: true
343
+ offset_mask:
344
+ - 1
345
+ - 1
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
212505/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_policy
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212505
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
212505/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
212505/eval_policy.log ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2024-12-29 21:25:05,560][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:428: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2024-12-29 21:25:05,563][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:365: UserWarning:
8
+ The version_base parameter is not specified.
9
+ Please specify a compatability version level, or None.
10
+ Will assume defaults for version 1.1
11
+ hydra.initialize(
12
+
13
+ [2024-12-29 21:25:08,109][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:414: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
14
+ payload = torch.load(f)
15
+
212506/.hydra/config.yaml ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '1000_0'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 12000
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${now:%H%M%S}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ pretrained_backbone_weights: null
138
+ transforms:
139
+ - _target_: torchaug.transforms.RandomAffine
140
+ degrees:
141
+ - -5
142
+ - 5
143
+ translate:
144
+ - 0.05
145
+ - 0.05
146
+ batch_transform: true
147
+ num_chunks: -1
148
+ batch_inplace: true
149
+ - _target_: torchaug.transforms.RandomColorJitter
150
+ brightness: 0.3
151
+ contrast: 0.4
152
+ saturation: 0.5
153
+ hue: 0.08
154
+ batch_transform: true
155
+ num_chunks: -1
156
+ batch_inplace: true
157
+ use_group_norm: true
158
+ spatial_softmax_num_keypoints: 32
159
+ action_history_encoder_config:
160
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
161
+ in_channels: 7
162
+ out_channels: 32
163
+ history_length: ${agent.config.policy_cfg.n_action_steps}
164
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
165
+ downsample_kernel_size: 3
166
+ downsample_stride: 2
167
+ downsample_padding: 1
168
+ down_dims:
169
+ - 256
170
+ - 512
171
+ - 1024
172
+ kernel_size: 5
173
+ n_groups: 8
174
+ diffusion_step_embed_dim: 128
175
+ use_film_scale_modulation: true
176
+ noise_scheduler_type: DDIM
177
+ beta_schedule: squaredcos_cap_v2
178
+ beta_start: 0.0001
179
+ beta_end: 0.02
180
+ prediction_type: epsilon
181
+ clip_sample: true
182
+ clip_sample_range: 1.0
183
+ num_train_timesteps: 50
184
+ num_inference_steps: 10
185
+ do_mask_loss_for_padding: false
186
+ train_cfg:
187
+ _target_: utils.TrainConfig
188
+ lr: 0.0001
189
+ lr_scheduler: cosine
190
+ lr_warmup_steps: 500
191
+ adam_betas:
192
+ - 0.95
193
+ - 0.999
194
+ adam_eps: 1.0e-08
195
+ adam_weight_decay: 1.0e-06
196
+ grad_clip_norm: 10
197
+ offline_steps: ${num_train_frames_diffusion}
198
+ use_amp: true
199
+ observation_cfg:
200
+ _target_: agent.encoder.VisualFeatureSet
201
+ use_depth: ${use_depth}
202
+ use_color: ${use_color}
203
+ mask_input_dict:
204
+ _target_: agent.encoder.MaskInputDict
205
+ enable: ${use_masks}
206
+ representation: ${mask_representation}
207
+ mask_list: ${mask_list}
208
+ crop_input_config:
209
+ _target_: agent.encoder.CropInputConfig
210
+ color_crop_type: ${color_crop_type}
211
+ depth_crop_type: ${depth_crop_type}
212
+ segmask_crop_type: ${segmask_crop_type}
213
+ crop_hw: ${crop_hw}
214
+ crop_down_offset: ${crop_down_offset}
215
+ add_crop_binary_mask: ${add_crop_binary_mask}
216
+ add_coord_conv_map: ${add_coord_conv_map}
217
+ context_input_config:
218
+ _target_: agent.encoder.ContextInputConfig
219
+ use_color: ${use_context_color}
220
+ use_depth: ${use_context_depth}
221
+ mask_input_dict:
222
+ _target_: agent.encoder.MaskInputDict
223
+ enable: ${use_context_segmask}
224
+ representation: ${mask_representation}
225
+ mask_list: ${mask_list}
226
+ crop_input_config:
227
+ _target_: agent.encoder.CropInputConfig
228
+ color_crop_type: ${context_color_crop_type}
229
+ depth_crop_type: ${context_depth_crop_type}
230
+ segmask_crop_type: ${context_segmask_crop_type}
231
+ crop_hw: ${crop_hw}
232
+ crop_down_offset: ${crop_down_offset}
233
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
234
+ add_coord_conv_map: ${context_add_coord_conv_map}
235
+ mask_soft_approx_scheduler_config:
236
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
237
+ num_steps: 40000
238
+ initial_value: 10.0
239
+ final_value: 1000.0
240
+ interpolation_scheme: constant
241
+ use_contact_map: ${use_contact_map}
242
+ use_sdf_maps: ${use_sdf_maps}
243
+ use_normals_maps: ${use_normals_maps}
244
+ which_objects: ${which_objects}
245
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
246
+ env_dtc_max_value: ${env_dtc_max_value}
247
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
248
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
249
+ clamp_dtc: ${clamp_dtc}
250
+ max_contact_prob: ${max_contact_prob}
251
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
252
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
253
+ adaptive_normals_mask: ${adaptive_normals_mask}
254
+ max_depth: ${max_depth}
255
+ image_shape: ${agent.desired_image_shape}
256
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
257
+ learning_rate: ${agent.config.train_cfg.lr}
258
+ weight_decay: 0.0
259
+ contact_model_name: ${contact_model_name}
260
+ zero_centered: false
261
+ suite:
262
+ suite: frankagym
263
+ name: frankagym
264
+ frame_stack: ${agent.n_obs_steps}
265
+ action_repeat: 1
266
+ discount: 0.99
267
+ hidden_dim: 1024
268
+ num_train_frames: 2010
269
+ num_seed_frames: 260
270
+ num_train_epochs: 5000
271
+ validate_every_epochs: 100
272
+ validate_diffusion_on_action_loss_every_epochs: 500
273
+ train_eval_diffusion_on_action_loss_every_epochs: 500
274
+ check_topk_every_epochs: 10
275
+ save_snapshot_every_epochs: 5000
276
+ eval_every_frames: 2000
277
+ num_eval_episodes: 5
278
+ save_snapshot: true
279
+ wait_for_user_to_start_episode: true
280
+ task_make_fn:
281
+ _target_: suite.frankagym.make
282
+ name: ${task_name}
283
+ height: 240
284
+ width: 320
285
+ frame_stack: ${suite.frame_stack}
286
+ action_repeat: ${suite.action_repeat}
287
+ seed: ${seed}
288
+ enable_arm: ${agent.enable_arm}
289
+ enable_gripper: ${enable_gripper}
290
+ start_with_gripper_open: ${start_with_gripper_open}
291
+ enable_camera: ${agent.enable_camera}
292
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
293
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
294
+ x_limit: ${x_limit}
295
+ y_limit: ${y_limit}
296
+ z_limit: ${z_limit}
297
+ device: ${device}
298
+ interpolation_frequency: ${interpolation_frequency}
299
+ policy_frequency: ${policy_frequency}
300
+ debug_timestamps: ${debug_timestamps}
301
+ stop_after_action: ${stop_after_action}
302
+ open_loop: ${open_loop}
303
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
304
+ action_key: ${action_key}
305
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
306
+ action_trajectories: ${action_trajectories}
307
+ path_to_zarr_dataset: ${expert_dataset}
308
+ agent_policy_cfg: ???
309
+ true_action_history: ${true_action_history}
310
+ num_train_frames_bc: 50000
311
+ num_train_frames_drq: 1100000
312
+ stddev_schedule_drq: linear(1.0,0.1,100000)
313
+ task_name: FrankaInsertion-v1
314
+ num_train_frames_vinn: 25000
315
+ num_train_frames_diffusion: 1000000
316
+ num_train_epochs_bc: 5000
317
+ num_train_epochs_diffusion: 5000
318
+ validate_every_epochs_bc: 5
319
+ validate_every_epochs_diffusion: 25
320
+ validate_diffusion_on_action_loss_every_epochs: 50
321
+ train_eval_diffusion_on_action_loss_every_epochs: 500
322
+ check_topk_every_epochs: 5
323
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
324
+ save_snapshot_every_epochs_diffusion: 5000
325
+ x_limit:
326
+ - 0.2
327
+ - 0.7
328
+ y_limit:
329
+ - -0.4
330
+ - 0.4
331
+ z_limit:
332
+ - -0.05
333
+ - 0.55
334
+ home_displacement:
335
+ - 0.55
336
+ - 0.0
337
+ - 0.55
338
+ - 180.0
339
+ - 0.0
340
+ - 0.0
341
+ enable_gripper: true
342
+ start_with_gripper_open: true
343
+ offset_mask:
344
+ - 1
345
+ - 1
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
212506/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_robot
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
212506/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
212506/episode_rosbags/aligned_depth_to_color_K.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4a962c703d20da282f5e009d432dff51df4ebd22f3386699b6754ea9cfc06a55
3
+ size 200
212506/episode_rosbags/cam_tf_world.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:29313ba240dd65ebbc79056d5582a97c9586cf2a1d4a1e0db13b87b49152cc9e
3
+ size 256
212506/episode_rosbags/color_K.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4a962c703d20da282f5e009d432dff51df4ebd22f3386699b6754ea9cfc06a55
3
+ size 200
212506/episode_rosbags/depth_K.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cc601d2fecd31c5513c76a88b5d4d8059adc1f92dad682e2d755d89a66d8fdf7
3
+ size 200
212506/episode_rosbags/episode_0_2024-12-29-21-25-40.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ba693f8802f73208accf84a97be7b2ffaa4045f9cd1bf585588d215337d57c6d
3
+ size 1412451872
212506/episode_rosbags/episode_1_2024-12-29-21-26-21.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8fbf27e4be8f14b0e5f577f56b87cb2c3ccad19123dfb3d85f0644417a140aa6
3
+ size 1409020913
212506/episode_rosbags/episode_2_2024-12-29-21-27-02.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bab15a1dbe3ae1bb6559090cbb454ca7b4ff3d45cfa42d16273899c874697569
3
+ size 1412403096
212506/episode_rosbags/episode_3_2024-12-29-21-27-48.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bae008cd6450def998807252ef5909a28fb8565b1b6470274062047fef95a887
3
+ size 1412697632
212506/episode_rosbags/episode_4_2024-12-29-21-28-37.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cb556cd15568cfac79f3fb4223132ae8500d8f923e914953707279f998bef374
3
+ size 1417097412
212506/eval_robot.log ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2024-12-29 21:25:06,752][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_robot.py:503: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2024-12-29 21:25:06,755][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_robot.py:439: UserWarning:
8
+ The version_base parameter is not specified.
9
+ Please specify a compatability version level, or None.
10
+ Will assume defaults for version 1.1
11
+ hydra.initialize(
12
+
212506/eval_video/0_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7f4ade8f7a09940de9a392152321c741514d0b2b83b953d2bc85b2587d34b370
3
+ size 1160403
212506/eval_video/1_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:df2b523b5c69376abbb661917fe8d60d3ad79f771878de2226ab5c89077a3630
3
+ size 1160649
212506/eval_video/2_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:56287c330ba45a21ceae2f5ada5b8060ed510846ec2d5a3b90730f83caff3226
3
+ size 1157924
212506/eval_video/3_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d9096d3d3b1128c5f3af34fcf97e720fde5df69b1403591cedf85594195eab69
3
+ size 1175711
212506/eval_video/4_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:277cb7c2f38e9f60cb6a1957cbae5c162329b3ce1d0991b1503aabd5e0830c0b
3
+ size 1163227
212506/tb/events.out.tfevents.1735525513.leonmkim-ROG-Strix-G15CS-G15CS.1360290.0 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:15b0fd95ea5588a3883740617d70ae416761eb477b73201865f1bf7a92e8e0c5
3
+ size 1103
212506/wandb/debug-internal.log ADDED
The diff for this file is too large to render. See raw diff
 
212506/wandb/debug.log ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2024-12-29 21:25:12,623 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Current SDK version is 0.17.5
2
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Configure stats pid to 1360290
3
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/.config/wandb/settings
4
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506/wandb/settings
5
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Loading settings from environment variables: {}
6
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Applying setup settings: {'_disable_service': False}
7
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Inferring run settings from compute environment: {'program_relpath': 'FISH/eval_robot.py', 'program_abspath': '/home/leonmkim/fish_leon/FISH/eval_robot.py', 'program': '/home/leonmkim/fish_leon/FISH/eval_robot.py'}
8
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Applying login settings: {}
9
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:_log_setup():529] Logging user logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506/wandb/run-20241229_212512-oco0rjll/logs/debug.log
10
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:_log_setup():530] Logging internal logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506/wandb/run-20241229_212512-oco0rjll/logs/debug-internal.log
11
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:init():569] calling init triggers
12
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:init():576] wandb.init called with sweep_config: {}
13
+ config: {'root_dir': '/home/leonmkim/fish_leon', 'replay_buffer_size': 150000, 'replay_buffer_num_workers': 2, 'nstep': 3, 'batch_size': 128, 'seed': 0, 'dataset_shuffle_seed': 0, 'device': 'cuda', 'save_video': True, 'save_train_video': True, 'use_tb': True, 'use_wandb': True, 'wandb_run_id': '1000_0', 'wandb_notes': '1000_0_req_1351_0restarted_2', 'eval': True, 'true_action_history': False, 'train_pad_after': 4, 'process_contact_features': True, 'obs_type': 'pixels', 'use_color': True, 'use_depth': True, 'use_masks': True, 'mask_list': ['EE_obj_mask'], 'mask_representation': 'channels', 'crop_hw': [144, 144], 'crop_down_offset': 48, 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'add_crop_binary_mask': False, 'add_coord_conv_map': False, 'use_context_color': False, 'use_context_depth': False, 'use_context_segmask': False, 'context_color_crop_type': None, 'context_depth_crop_type': None, 'context_segmask_crop_type': None, 'context_add_crop_binary_mask': False, 'context_add_coord_conv_map': False, 'use_contact_map': False, 'use_sdf_maps': False, 'use_normals_maps': False, 'which_objects': 'both', 'max_contact_prob': 0.1, 'max_depth': 2.0, 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'dtc_adaptive_normalization': False, 'mask_normals_within_sdf': True, 'adaptive_normals_mask': True, 'learnable_contact_preprocess_params': True, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'contact_estimation_model_ckpt_path': '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt', 'encoder_type': 'small', 'debug_timestamps': False, 'open_loop': False, 'action_trajectories': True, 'stop_after_action': False, 'interpolation_frequency': 25, 'policy_frequency': 5, 'wait_for_new_camera_frames': True, 'baseline': False, 'train_demo_idxs_list_or_num': -1, 'log_train_every_steps': 25, 'name_of_expert_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'expert_dataset_dirpath': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'store_dataset_in_memory': False, 'expert_dataset': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'action_key': 'action_trajectory_25hz', 'semantic_demo_grouping_name': 'semantic_demo_grouping.yaml', 'semantic_demo_grouping': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/semantic_demo_grouping.yaml', 'include_groups_list': 'all', 'expert_dataset_config': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demo_config.yaml', 'name_of_valid_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'valid_dataset_dir': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'valid_demo_idxs_list_or_num': None, 'val_num_groups': 0, 'load_bc': True, 'checkpoint_epoch_list': [99, 199, 299, 399, 499, 599, 699, 799, 899, 999, 1249, 1499, 1749, 1999, 2999, 3999, 4999, 5999, 6999, 7999, 8999, 9999], 'snapshot_root_dir': '/mnt/grasp_high_usage/leonmkim/contact_estimation/FISH', 'save_snapshot': True, 'save_last_snapshot': True, 'save_snapshot_when_done': True, 'top_k_checkpoints': 5, 'save_snapshot_link_to_weights_dir': 'deprecated', 'bc_regularize': False, 'bc_weight_type': 'qfilter', 'experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0', 'agent': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgent', 'name': 'diffusion_policy', 'load_checkpoint': True, 'device': 'cuda', 'n_obs_steps': 1, 'suite_name': 'frankagym', 'obs_type': 'pixels', 'enable_arm': True, 'enable_camera': True, 'use_tb': True, 'desired_image_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'config': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgentConfig', 'compile': False, 'device': 'cuda', 'cam_resize_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'policy_frequency': 5, 'interpolation_frequency': 25, 'policy_cfg': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig', 'n_obs_steps': 1, 'horizon': 36, 'n_action_steps': 36, 'output_shapes': {'action': [7]}, 'input_normalization_modes': {'observation.image': 'mean_std', 'observation.state': 'min_max', 'observation.action_history': 'min_max'}, 'output_normalization_modes': {'action': 'min_max'}, 'vision_backbone': 'resnet18', 'pretrained_backbone_weights': None, 'transforms': [{'_target_': 'torchaug.transforms.RandomAffine', 'degrees': [-5, 5], 'translate': [0.05, 0.05], 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}, {'_target_': 'torchaug.transforms.RandomColorJitter', 'brightness': 0.3, 'contrast': 0.4, 'saturation': 0.5, 'hue': 0.08, 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}], 'use_group_norm': True, 'spatial_softmax_num_keypoints': 32, 'action_history_encoder_config': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig', 'in_channels': 7, 'out_channels': 32, 'history_length': 6, 'kernel_size': 5, 'downsample_kernel_size': 3, 'downsample_stride': 2, 'downsample_padding': 1}, 'down_dims': [256, 512, 1024], 'kernel_size': 5, 'n_groups': 8, 'diffusion_step_embed_dim': 128, 'use_film_scale_modulation': True, 'noise_scheduler_type': 'DDIM', 'beta_schedule': 'squaredcos_cap_v2', 'beta_start': 0.0001, 'beta_end': 0.02, 'prediction_type': 'epsilon', 'clip_sample': True, 'clip_sample_range': 1.0, 'num_train_timesteps': 50, 'num_inference_steps': 10, 'do_mask_loss_for_padding': False, 'input_shapes': {'observation.image': [13, 180, 240], 'context_observation.image': [13, 180, 240], 'observation.state': [8], 'observation.action_history': [7]}}, 'train_cfg': {'_target_': 'utils.TrainConfig', 'lr': 0.0001, 'lr_scheduler': 'cosine', 'lr_warmup_steps': 500, 'adam_betas': [0.95, 0.999], 'adam_eps': 1e-08, 'adam_weight_decay': 1e-06, 'grad_clip_norm': 10, 'offline_steps': 1000000, 'use_amp': True}, 'observation_cfg': {'_target_': 'agent.encoder.VisualFeatureSet', 'use_depth': True, 'use_color': True, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': False, 'use_sdf_maps': False, 'use_normals_maps': False, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False}}}, 'suite': {'suite': 'frankagym', 'name': 'frankagym', 'frame_stack': 1, 'action_repeat': 1, 'discount': 0.99, 'hidden_dim': 1024, 'num_train_frames': 2010, 'num_seed_frames': 260, 'num_train_epochs': 5000, 'validate_every_epochs': 100, 'validate_diffusion_on_action_loss_every_epochs': 500, 'train_eval_diffusion_on_action_loss_every_epochs': 500, 'check_topk_every_epochs': 10, 'save_snapshot_every_epochs': 5000, 'eval_every_frames': 2000, 'num_eval_episodes': 5, 'save_snapshot': True, 'wait_for_user_to_start_episode': True, 'task_make_fn': {'_target_': 'suite.frankagym.make', 'name': 'FrankaInsertion-v1', 'height': 240, 'width': 320, 'frame_stack': 1, 'action_repeat': 1, 'seed': 0, 'enable_arm': True, 'enable_gripper': True, 'start_with_gripper_open': True, 'enable_camera': True, 'path_to_depth_extrinsics': '~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy', 'contact_estimation_model_ckpt_path': '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt', 'x_limit': [0.2, 0.7], 'y_limit': [-0.4, 0.4], 'z_limit': [-0.05, 0.55], 'device': 'cuda', 'interpolation_frequency': 25, 'policy_frequency': 5, 'debug_timestamps': False, 'stop_after_action': False, 'open_loop': False, 'wait_for_new_camera_frames': True, 'action_key': 'action_trajectory_25hz', 'action_trajectory_horizon': 36, 'action_trajectories': True, 'path_to_zarr_dataset': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'agent_policy_cfg': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgentConfig', 'compile': False, 'device': 'cuda', 'cam_resize_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'policy_frequency': 5, 'interpolation_frequency': 25, 'policy_cfg': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig', 'n_obs_steps': 1, 'horizon': 36, 'n_action_steps': 36, 'output_shapes': {'action': [7]}, 'input_normalization_modes': {'observation.image': 'mean_std', 'observation.state': 'min_max', 'observation.action_history': 'min_max'}, 'output_normalization_modes': {'action': 'min_max'}, 'vision_backbone': 'resnet18', 'pretrained_backbone_weights': None, 'transforms': [{'_target_': 'torchaug.transforms.RandomAffine', 'degrees': [-5, 5], 'translate': [0.05, 0.05], 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}, {'_target_': 'torchaug.transforms.RandomColorJitter', 'brightness': 0.3, 'contrast': 0.4, 'saturation': 0.5, 'hue': 0.08, 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}], 'use_group_norm': True, 'spatial_softmax_num_keypoints': 32, 'action_history_encoder_config': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig', 'in_channels': 7, 'out_channels': 32, 'history_length': 6, 'kernel_size': 5, 'downsample_kernel_size': 3, 'downsample_stride': 2, 'downsample_padding': 1}, 'down_dims': [256, 512, 1024], 'kernel_size': 5, 'n_groups': 8, 'diffusion_step_embed_dim': 128, 'use_film_scale_modulation': True, 'noise_scheduler_type': 'DDIM', 'beta_schedule': 'squaredcos_cap_v2', 'beta_start': 0.0001, 'beta_end': 0.02, 'prediction_type': 'epsilon', 'clip_sample': True, 'clip_sample_range': 1.0, 'num_train_timesteps': 50, 'num_inference_steps': 10, 'do_mask_loss_for_padding': False, 'input_shapes': {'observation.image': [13, 180, 240], 'context_observation.image': [13, 180, 240], 'observation.state': [8], 'observation.action_history': [7]}}, 'train_cfg': {'_target_': 'utils.TrainConfig', 'lr': 0.0001, 'lr_scheduler': 'cosine', 'lr_warmup_steps': 500, 'adam_betas': [0.95, 0.999], 'adam_eps': 1e-08, 'adam_weight_decay': 1e-06, 'grad_clip_norm': 10, 'offline_steps': 1000000, 'use_amp': True}, 'observation_cfg': {'_target_': 'agent.encoder.VisualFeatureSet', 'use_depth': True, 'use_color': True, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': False, 'use_sdf_maps': False, 'use_normals_maps': False, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False}}, 'true_action_history': False}}, 'num_train_frames_bc': 50000, 'num_train_frames_drq': 1100000, 'stddev_schedule_drq': 'linear(1.0,0.1,100000)', 'task_name': 'FrankaInsertion-v1', 'num_train_frames_vinn': 25000, 'num_train_frames_diffusion': 1000000, 'num_train_epochs_bc': 5000, 'num_train_epochs_diffusion': 15000, 'validate_every_epochs_bc': 5, 'validate_every_epochs_diffusion': 250, 'validate_diffusion_on_action_loss_every_epochs': 250, 'train_eval_diffusion_on_action_loss_every_epochs': 250, 'check_topk_every_epochs': 5, 'check_topk_every_epochs_diffusion': 250, 'save_snapshot_every_epochs_diffusion': 1500, 'x_limit': [0.2, 0.7], 'y_limit': [-0.4, 0.4], 'z_limit': [-0.05, 0.55], 'home_displacement': [0.55, 0.0, 0.55, 180.0, 0.0, 0.0], 'enable_gripper': True, 'start_with_gripper_open': True, 'offset_mask': [1, 1, 1, 1, 1, 1], 'path_to_depth_extrinsics': '~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy', 'feature_type': '180x240_1_RGB_D_2.0_msk_channels_EE_obj_mask_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1', 'save_buffer': True, 'num_eval': 5, 'random_start': False, 'eval_starts': '/home/leonmkim/fish_leon/FISH/eval_starts/frankagym_pixels/FrankaInsertion-v1', 'num_valid_demos': None, 'load_checkpoint': True, 'checkpoint_epoch': 12000, 'load_residual_weight': False, 'checkpoint_root_dir': '/home/leonmkim/fish_leon/FISH', 'checkpoint_weight_dir': '/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0', 'residual_weight': '/home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt', 'final_experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506'}
14
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:init():619] starting backend
15
+ 2024-12-29 21:25:12,625 INFO MainThread:1360290 [wandb_init.py:init():623] setting up manager
16
+ 2024-12-29 21:25:12,628 INFO MainThread:1360290 [backend.py:_multiprocessing_setup():105] multiprocessing start_methods=fork,spawn,forkserver, using: spawn
17
+ 2024-12-29 21:25:12,629 INFO MainThread:1360290 [wandb_init.py:init():631] backend started and connected
18
+ 2024-12-29 21:25:12,640 INFO MainThread:1360290 [wandb_init.py:init():720] updated telemetry
19
+ 2024-12-29 21:25:12,649 INFO MainThread:1360290 [wandb_init.py:init():753] communicating run to backend with 90.0 second timeout
20
+ 2024-12-29 21:25:13,005 INFO MainThread:1360290 [wandb_run.py:_on_init():2435] communicating current version
21
+ 2024-12-29 21:25:13,082 INFO MainThread:1360290 [wandb_run.py:_on_init():2444] got version response upgrade_message: "wandb version 0.19.1 is available! To upgrade, please run:\n $ pip install wandb --upgrade"
22
+
23
+ 2024-12-29 21:25:13,082 INFO MainThread:1360290 [wandb_init.py:init():804] starting run threads in backend
24
+ 2024-12-29 21:25:13,419 INFO MainThread:1360290 [wandb_run.py:_console_start():2413] atexit reg
25
+ 2024-12-29 21:25:13,419 INFO MainThread:1360290 [wandb_run.py:_redirect():2255] redirect: wrap_raw
26
+ 2024-12-29 21:25:13,419 INFO MainThread:1360290 [wandb_run.py:_redirect():2320] Wrapping output streams.
27
+ 2024-12-29 21:25:13,420 INFO MainThread:1360290 [wandb_run.py:_redirect():2345] Redirects installed.
28
+ 2024-12-29 21:25:13,421 INFO MainThread:1360290 [wandb_init.py:init():847] run started, returning control to user process
29
+ 2024-12-29 21:25:13,422 INFO MainThread:1360290 [wandb_run.py:_tensorboard_callback():1544] tensorboard callback: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506/tb, True
30
+ 2024-12-29 21:25:17,662 INFO MainThread:1360290 [wandb_run.py:_config_callback():1382] config_cb None None {'grasped_obj_name': 'greece', 'left_book_slot': 'twodim'}
31
+ 2024-12-29 21:29:26,788 WARNING MsgRouterThr:1360290 [router.py:message_loop():77] message_loop has been closed
212506/wandb/run-20241229_212512-oco0rjll/files/code/FISH/eval_robot.py ADDED
@@ -0,0 +1,512 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #%%
2
+ import warnings
3
+ import os
4
+
5
+ os.environ['MKL_SERVICE_FORCE_INTEL'] = '1'
6
+ os.environ['MUJOCO_GL'] = 'egl'
7
+ from pathlib import Path
8
+ #%%
9
+ import hydra
10
+ import numpy as np
11
+ import torch
12
+
13
+ import utils
14
+ from utils import get_feature_dirname_from_configs
15
+
16
+ from video import VideoRecorder
17
+ import pickle
18
+ import time
19
+ import threading
20
+ import shutil
21
+ from logger import Logger
22
+
23
+ import wandb
24
+ from omegaconf import OmegaConf, open_dict
25
+
26
+ from replay_buffer_robot import RosbagEvalReplayBufferStorage
27
+ from lerobot.common.utils.utils import _relative_path_between
28
+
29
+ torch.backends.cudnn.benchmark = True
30
+ warnings.filterwarnings('ignore', category=DeprecationWarning)
31
+
32
+ # import specs for replay buffer
33
+ from dm_env import specs
34
+
35
+ import sys, signal
36
+ import yaml
37
+
38
+ # get path of current file
39
+ current_path = os.path.dirname(os.path.realpath(__file__))
40
+ sys.path.append(os.path.join(current_path, os.pardir))
41
+ # from contact_estimation.src.utils.viz_utils import normalized_surface_normal_to_rgb, depth_map_to_im, grasped_env_dtc_map_to_im, contact_prob_map_to_im, desaturate_color_image, masked_overlay_im_list
42
+
43
+ def make_agent(obs_spec, action_spec, cfg):
44
+ cfg.obs_shape = obs_spec['pixels'].shape
45
+ dataset_statistics = None # this will be loaded from the checkpoint
46
+ try:
47
+ cfg.action_shape = action_spec.shape
48
+ except:
49
+ pass
50
+ return hydra.utils.instantiate(cfg, dataset_statistics)
51
+
52
+ class Workspace:
53
+ def __init__(self, cfg):
54
+ self.work_dir = Path.cwd()
55
+ print(f'workspace: {self.work_dir}')
56
+
57
+ signal.signal(signal.SIGINT, self.signal_handler)
58
+
59
+ self.cfg = cfg
60
+ self.loading_uncompiled_checkpoint_with_compile = False
61
+ self.loading_compiled_checkpoint_with_no_compile = False
62
+
63
+ snapshot_path = Path(self.cfg.checkpoint_weight_dir) / f'snapshot_{self.cfg.checkpoint_epoch}.pt'
64
+ self.load_checkpoint_conf(snapshot_path=snapshot_path)
65
+
66
+ # load config for action trajectories
67
+ utils.set_seed_everywhere(self.cfg.seed)
68
+ self.device = torch.device(self.cfg.device)
69
+ self.setup()
70
+
71
+ # self.agent = make_agent(self.eval_env.observation_spec(),
72
+ # self.eval_env.action_spec(), self.cfg.agent)
73
+ self.timer = utils.Timer()
74
+ # self._global_step = 0
75
+ self._global_episode = 0
76
+ self._global_epoch = 0
77
+ self.num_episode_successes = 0
78
+
79
+ # Need to convert hydra config to primitive container for wandb https://docs.wandb.ai/guides/integrations/hydra
80
+ with open_dict(self.cfg):
81
+ self.cfg.feature_type = get_feature_dirname_from_configs(
82
+ hydra.utils.instantiate(self.cfg.agent.config.observation_cfg),
83
+ self.cfg.agent.config.policy_cfg.input_shapes,
84
+ hydra.utils.instantiate(self.cfg.agent.config.policy_cfg.action_history_encoder_config) if 'observation.action_history' in self.cfg.agent.config.policy_cfg.input_shapes else None,
85
+ )
86
+
87
+ wandb_config = OmegaConf.to_container(
88
+ self.cfg, resolve=True, throw_on_missing=True
89
+ )
90
+ # must be called before any tf summary writer is created
91
+ if self.cfg.use_wandb:
92
+ wandb.init(project='extrinsic_contact_downstream', entity='serialexperimentsleon', job_type='eval', sync_tensorboard=self.cfg.use_tb, config=wandb_config)
93
+
94
+ self.logger = Logger(self.work_dir, use_tb=self.cfg.use_tb, use_wandb=self.cfg.use_wandb)
95
+
96
+ # if not self.loading_uncompiled_checkpoint_with_compile and self.cfg.agent.config.compile:
97
+ # self.agent.compile_modules()
98
+
99
+ # self.load_checkpoint(snapshot_path=snapshot_path)
100
+
101
+ # if self.loading_uncompiled_checkpoint_with_compile: # need to call compile after loading the checkpoint
102
+ # self.agent.compile_modules()
103
+
104
+ print(f"loaded agent with feature_type: {self.cfg.feature_type}")
105
+
106
+ def check_for_key_press(self):
107
+ while self.continue_keypress_thread:
108
+ inp = input("Press 'r' to restart current episode, 'n' to stop current episode and skip to next, 'q' to break entire eval\n")
109
+ if inp == 'n':
110
+ self.preempt_episode = True
111
+ print("preempting episode")
112
+ elif inp in ['', '0', '1']: # enter key
113
+ if inp in ['0', '1']:
114
+ self.num_episode_successes += int(inp)
115
+ self.proceed_after_env_reset_event.set()
116
+ print("proceeding to start episode!")
117
+ elif inp == 'q':
118
+ self.proceed_after_env_reset_event.set()
119
+ self.preempt_episode = True
120
+ self.exit_eval = True
121
+ self.continue_keypress_thread = False # will stop the keypress thread
122
+ print("quitting eval")
123
+ break
124
+ elif inp == 'r':
125
+ print('restarting episode')
126
+ self.preempt_episode = True
127
+ self.restart_episode = True
128
+ else:
129
+ print("Invalid key press, try again")
130
+
131
+ # self.keypress_input_thread.join() # wait for the keypress thread to finish
132
+
133
+ def signal_handler(self, signal, frame):
134
+ print("\nprogram exiting gracefully")
135
+ self.proceed_after_env_reset_event.set()
136
+ self.preempt_episode = True
137
+ self.exit_eval = True
138
+ self.continue_keypress_thread = False # will stop the keypress thread
139
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
140
+ video_filepath = self.video_recorder.save()
141
+ # get the video file and convert to video tensor to log
142
+ self.logger.log_video('eval/video', video_filepath, self.global_step)
143
+ sys.exit(0)
144
+
145
+ def setup(self):
146
+ # create envs
147
+ self.eval_env = hydra.utils.call(self.cfg.suite.task_make_fn)
148
+ # expert_demo_config_path = os.path.join(os.path.dirname(self.cfg.expert_dataset), 'demo_config.yaml')
149
+ # self.expert_demo_config = yaml.load(open(expert_demo_config_path, 'r'), Loader=yaml.FullLoader)
150
+ # self.eval_env._env.action_trans_norm = expert_demo_config['max_translation_action_norm']
151
+ # self.eval_env._env.action_rot_norm = expert_demo_config['max_rotation_action_norm']
152
+ # self.eval_env._env.action_period = expert_demo_config['sample_period']
153
+ # print(f"setting max_translation_action_norm to {expert_demo_config['max_translation_action_norm']} and sample_period to {expert_demo_config['sample_period']}")
154
+ # print(f"setting max_rotation_action_norm to {expert_demo_config['max_rotation_action_norm']}")
155
+
156
+ # self.eval_env.set_demo_params(self.cfg.expert_dataset)
157
+
158
+ # Turn off random start
159
+ self.eval_env.random_start = False
160
+
161
+ # create replay buffer
162
+ # data_specs = [
163
+ # {
164
+ # 'observation': self.eval_env.observation_spec(),
165
+ # },
166
+ # # self.eval_env.observation_spec()['features'],
167
+ # self.eval_env.action_spec(),
168
+ # specs.Array(self.eval_env.action_spec().shape, self.eval_env.action_spec().dtype, 'vinn_action'),
169
+ # specs.Array((1, ), np.float32, 'reward'),
170
+ # specs.Array((1, ), np.float32, 'discount'),
171
+ # ]
172
+
173
+ # self.eval_replay_storage = ZarrEvalReplayBufferStorage(data_specs, self.work_dir / 'eval_buffer', debug_timestamps=self.cfg.debug_timestamps, save_buffer=self.cfg.save_buffer, debug_info_data_specs=self.eval_env.debug_info_data_specs, camera_info_dict=self.eval_env.get_camera_info_dict())
174
+ self.eval_replay_storage = RosbagEvalReplayBufferStorage(self.work_dir)
175
+
176
+ self.video_recorder = VideoRecorder(
177
+ self.work_dir if self.cfg.save_video else None,
178
+ ros_enabled=True,
179
+ fps=self.cfg.agent.config.policy_frequency,
180
+ )
181
+
182
+ print('workspace setup complete')
183
+
184
+ @property
185
+ def global_step(self):
186
+ # return self._global_step
187
+ return self.eval_env.get_global_step()
188
+
189
+ @property
190
+ def global_episode(self):
191
+ return self._global_episode
192
+
193
+ @property
194
+ def global_frame(self):
195
+ return self.global_step * self.cfg.action_repeat
196
+
197
+ @property
198
+ def global_epoch(self):
199
+ return self._global_epoch
200
+
201
+ def reset(self, eval_idx):
202
+ if not self.eval_env.enable_arm:
203
+ return np.array([0,0,0], dtype=np.float32)
204
+ self.eval_env.arm_refresh(reset=False)
205
+ # Set start position
206
+ try:
207
+ self.eval_env.set_position(self.start_pos[eval_idx])
208
+ except:
209
+ self.eval_env.arm.set_position(self.start_pos[eval_idx])
210
+ if self.eval_env.arm.keep_gripper_closed:
211
+ self.eval_env.arm.close_gripper_fully()
212
+ else:
213
+ self.eval_env.arm.open_gripper_fully()
214
+ time.sleep(0.1)
215
+ time_step = self.eval_env.step(np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32),
216
+ np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32))
217
+ return time_step
218
+
219
+ def eval(self):
220
+ # before evals start, prompt user for name of grasped object and the left book of the slot location
221
+ grasped_obj_name = input("Enter the name of the grasped object: ")
222
+ left_book_slot = input("Enter the left book slot location: ")
223
+ # update wandb config
224
+ if self.cfg.use_wandb:
225
+ wandb.config.update({'grasped_obj_name': grasped_obj_name, 'left_book_slot': left_book_slot})
226
+
227
+ self.preempt_episode = False
228
+ self.exit_eval = False
229
+ self.restart_episode = False
230
+
231
+ self.continue_keypress_thread = True
232
+ self.proceed_after_env_reset_event = threading.Event()
233
+ self.keypress_input_thread = threading.Thread(target=self.check_for_key_press)
234
+ self.keypress_input_thread.start()
235
+
236
+ # # Set model to eval mode
237
+ # self.agent.train(False)
238
+
239
+ eval_until_episode = utils.Until(self.cfg.num_eval)
240
+
241
+ self.use_action_history = False
242
+ # if "dp" in repr(self.agent) and "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
243
+ if "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
244
+ self.use_action_history = True
245
+
246
+ # self.eval_replay_storage._new_eval_step(0)
247
+
248
+ # if 'vinn' in repr(self.agent) or 'openloop' in repr(self.agent):
249
+ # with open(self.cfg.expert_dataset, 'rb') as f:
250
+ # if self.cfg.obs_type == 'pixels':
251
+ # self.expert_demo, _, self.expert_action, self.expert_reward = pickle.load(f)
252
+ # elif self.cfg.obs_type == 'features':
253
+ # _, self.expert_demo, self.expert_action, self.expert_reward = pickle.load(f)
254
+
255
+ # if self.cfg.action_trajectories:
256
+ # with open(self.cfg.expert_action_trajectories, 'rb') as f:
257
+ # self.expert_action = pickle.load(f)
258
+
259
+ # if isinstance(self.cfg.train_demo_idxs_list_or_num, int):
260
+ # if self.cfg.train_demo_idxs_list_or_num == -1:
261
+ # self.cfg.train_demo_idxs_list_or_num = len(self.expert_demo)
262
+ # train_demo_idxs_list_or_num = list(range(self.cfg.train_demo_idxs_list_or_num))
263
+
264
+ # self.expert_demo = self.expert_demo[train_demo_idxs_list_or_num]
265
+ # self.expert_action = self.expert_action[train_demo_idxs_list_or_num]
266
+ # self.expert_reward = self.expert_reward[train_demo_idxs_list_or_num]
267
+ # # if self.cfg.action_plans:
268
+ # # self.expert_action_plans = self.expert_action_plans[self.cfg.train_demo_idxs_list_or_num]
269
+ # # self.expert_demo = self.expert_demo[:self.cfg.num_demos]
270
+ # # self.expert_action = self.expert_action[:self.cfg.num_demos]
271
+ # # self.expert_reward = self.expert_reward[:self.cfg.num_demos]
272
+
273
+ # self.expert_demo = np.concatenate(self.expert_demo, axis=0)
274
+ # self.expert_rgb_obs = np.ascontiguousarray(np.transpose(self.expert_demo, (0,2,3,1))[:, :,:,:3].astype(np.uint8))
275
+ # self.expert_action = np.concatenate(self.expert_action, axis=0)
276
+
277
+ # self.agent.save_representations(self.expert_demo, self.expert_action, 128, config=self.expert_demo_config)
278
+
279
+ # Get start points
280
+ if self.cfg.random_start:
281
+ eval_starts = Path(self.cfg.eval_starts) / 'starts.pkl'
282
+ if eval_starts.exists():
283
+ with eval_starts.open('rb') as f:
284
+ self.start_pos = pickle.load(f)
285
+ else:
286
+ eval_starts = Path(self.cfg.eval_starts)
287
+ eval_starts.mkdir(parents=True, exist_ok=True)
288
+
289
+ # Generate start points
290
+ self.start_pos = []
291
+ try:
292
+ for _ in range(self.cfg.num_eval):
293
+ self.start_pos.append(self.eval_env.get_random_pos())
294
+ except:
295
+ for _ in range(self.cfg.num_eval):
296
+ self.start_pos.append(self.eval_env.arm.get_random_pos())
297
+
298
+ # Save start points for the task
299
+ eval_starts = eval_starts / 'starts.pkl'
300
+ with eval_starts.open('wb') as f:
301
+ pickle.dump(self.start_pos, f)
302
+
303
+ time_step = self.eval_env.reset()
304
+ # replay_thread = None
305
+ while eval_until_episode(self.global_episode) and not self.exit_eval:
306
+ # self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
307
+ print(f"Starting episode {self.global_episode}")
308
+ time_step = self.eval_env.reset() #Leon: need to call reset twice in case objects are trapped
309
+ self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
310
+ # x = input("Press Enter to continue... after reseting env")
311
+ print("Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success")
312
+ self.proceed_after_env_reset_event.clear() # clear the event flag
313
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
314
+ if self.global_episode > 0:
315
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
316
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
317
+ time_step = self.eval_env.reset()
318
+ # debug_info_dict = self.eval_env.debug_info_dict
319
+ # if replay_thread is not None:
320
+ # # wait for the last replay thread to finish
321
+ # replay_thread.join()
322
+
323
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
324
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict))
325
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
326
+
327
+ # replay_thread.start()
328
+ if self.cfg.random_start:
329
+ time_step = self.reset(self.global_episode)
330
+ time.sleep(2) #5)
331
+ # if 'vinn' in repr(self.agent):
332
+ # self.agent.reset()
333
+ # # self.agent.buffer.reset()
334
+ # # if self.cfg.open_loop:
335
+ # # self.agent.current_step = 0
336
+ # if 'openloop' in repr(self.agent):
337
+ # self.agent.curr_step = 0
338
+ # at start of each episode, provide zero action for policies that use action history
339
+ # shape should be (T_o, T_a, action_dim)
340
+
341
+ # while not time_step.last() and not self.preempt_episode:
342
+ self.video_recorder.ros_start_recording()
343
+ self.eval_replay_storage.start_episode()
344
+ self.eval_env.start_policy_timer()
345
+ while not self.eval_env.episode_done() and not self.preempt_episode:
346
+ # with torch.no_grad(), utils.eval_mode(self.agent):
347
+ # # if self.cfg.agent.provide_topk:
348
+ # # action, vinn_action, topk = self.agent.act(
349
+ # # time_step.observation['pixels'],
350
+ # # self.global_step,
351
+ # # eval_mode=True)
352
+ # # elif self.cfg.agent.provide_obs:
353
+ # # action, vinn_action, obs = self.agent.act(
354
+ # # time_step.observation['pixels'],
355
+ # # self.global_step,
356
+ # # eval_mode=True)
357
+ # # else:
358
+ # action, vinn_action = self.agent.act(
359
+ # time_step.observation,
360
+ # self.global_step,
361
+ # eval_mode=True,
362
+ # obs_timestamp=time_step.observation['timestamp'],
363
+ # obs_seq=time_step.observation['seq'],
364
+ # action_history=action_history,
365
+ # action_history_start_timestamp=action_history_start_timestamp,
366
+ # )
367
+ # DONT WAIT FOR POLICY TO GET AN ACTION
368
+ # we dont want to slow down grabbing obs and passing to sam/contact features
369
+
370
+ self.eval_env.run_policy_threads() # this just does a rospy sleep
371
+
372
+ # if self.use_action_history:
373
+ # action_history_start_timestamp = time_step.observation['timestamp']
374
+ # # action_history = action[:self.cfg.agent.config.policy_cfg.action_history_encoder_config.history_length, ...]
375
+ # # add n_obs_steps dimension to action_history, for now we assume n_obs_steps = 1
376
+ # # TODO: handle n_obs_steps > 1
377
+ # action_history = action[np.newaxis, ...]
378
+
379
+ # time_step = self.eval_env.step(action, vinn_action) # obs, reward after action has been taken
380
+ # debug_info_dict = self.eval_env.debug_info_dict
381
+
382
+ # time_step = self.eval_env.ros_step()
383
+
384
+ # replay_thread.join()
385
+
386
+ # time how long it takes to execute the step
387
+ # time_before_add = time.perf_counter()
388
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
389
+ # use thread to call the add function in a separate thread
390
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict))
391
+
392
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
393
+ # replay_thread.start()
394
+
395
+ # print(f"Time to add to replay buffer: {time.perf_counter() - time_before_add}")
396
+
397
+ # self.video_recorder.record(self.eval_env)
398
+ # self._global_step += 1
399
+
400
+ self.eval_env.stop_policy_timer()
401
+
402
+ if self.restart_episode:
403
+ # means we should delete the current episode and start again
404
+ self.restart_episode = False
405
+ self.eval_replay_storage.reset_current_episode()
406
+ self.video_recorder.reset_current_episode()
407
+
408
+ else:
409
+ self.eval_replay_storage.store_current_episode()
410
+ video_filepath = self.video_recorder.save()
411
+ self.logger.log_video(f"eval/{video_filepath.name.rstrip('.mp4')}", video_filepath, self.global_step)
412
+ self._global_episode += 1
413
+
414
+ self.preempt_episode = False # reset preempt_episode flag
415
+
416
+ # self.video_recorder.save(f'{episode}_eval.mp4')
417
+ # get the video file and convert to video tensor to log
418
+
419
+ self.eval_env.reset()
420
+
421
+ print("Evaluation finished. To wrap up, rate prev episode, press 0 for failure and 1 for success")
422
+ self.proceed_after_env_reset_event.clear() # clear the event flag
423
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
424
+ if self.global_episode > 0:
425
+ # self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
426
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
427
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
428
+
429
+ self.continue_keypress_thread = False # will stop the keypress thread
430
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
431
+
432
+ def load_checkpoint_conf(self, snapshot_path):
433
+ config_path = snapshot_path.parent / 'config.yaml'
434
+ if not config_path.exists():
435
+ raise FileNotFoundError(f'No snapshot conf found at {config_path}')
436
+ else:
437
+ # load the omegaconf config
438
+ hydra.core.global_hydra.GlobalHydra.instance().clear()
439
+ hydra.initialize(
440
+ str(_relative_path_between(Path(config_path).absolute().parent, Path(__file__).absolute().parent)),
441
+ )
442
+ cfg = hydra.compose(Path(config_path).stem)
443
+ from deepdiff import DeepDiff
444
+ from omegaconf import open_dict
445
+ diff = DeepDiff(OmegaConf.to_container(cfg), OmegaConf.to_container(self.cfg)) # old, new
446
+ # import re
447
+ overwriteable_keys = [f"root{overwritable_key}" for overwritable_key in ["['use_wandb']", "['path_to_depth_extrinsics']", "['eval']", "['root_dir']", "['wandb_notes']", "['agent']['config']['train_cfg']['use_amp']", "['agent']['config']['compile']", "['agent']['config']['policy_cfg']['num_inference_steps']"]]
448
+ if "values_changed" in diff:
449
+ # top_k_checkpoints, wandb_notes, agent.config.train_cfg.use_amp, save_snapshot_every_epochs_diffusion, check_topk_every_epochs_diffusion, validate_diffusion_on_action_loss_every_epochs, train_eval_diffusion_on_action_loss_every_epochs, validate_every_epochs_diffusion
450
+ # for keys above, overwrite the old config with the new config
451
+ for k, v in diff['values_changed'].items():
452
+ # replace any keys that are under "root['suite']"
453
+ if k in overwriteable_keys or k.startswith("root['suite']"):
454
+ print(f"Found changed key {k} with value {v}. Overwriting old checkpoint config")
455
+ if k == "root['agent']['config']['compile']":
456
+ if diff['values_changed'][k]['new_value']:
457
+ self.loading_uncompiled_checkpoint_with_compile = True
458
+ elif not diff['values_changed'][k]['new_value']:
459
+ # raise ValueError("Cannot load a compiled checkpoint without compile")
460
+ self.loading_compiled_checkpoint_with_no_compile = True
461
+ exec(f"{k.replace('root[', 'cfg[')} = {k.replace('root[', 'self.cfg[')}")
462
+ # for any new values, update the old checkpoint config
463
+ if "dictionary_item_added" in diff:
464
+ for new_key in diff['dictionary_item_added']: # this is a list
465
+ # if new_key == "root['suite']['task_make_fn']['observation_cfg']":
466
+ if new_key == "root['suite']['task_make_fn']['agent_policy_cfg']":
467
+ # pass the agents observation_cfg to the suite task_make_fn
468
+ with open_dict(cfg): # to allow addition of non-existing keys
469
+ # cfg.suite.task_make_fn.observation_cfg = cfg.agent.config.observation_cfg
470
+ cfg.suite.task_make_fn.agent_policy_cfg = cfg.agent.config
471
+ continue
472
+ elif "['agent']['config']['policy_cfg']['input_shapes']" in new_key:
473
+ # skip adding the new key if it is the input_shapes of the policy_cfg
474
+ continue
475
+ else:
476
+ print(f"Found new key {new_key} with value {eval(new_key.replace('root[', 'self.cfg['))}. Adding to checkpoint config")
477
+ # eval(new_key.replace('root', 'cfg')) = eval(new_key.replace('root', 'self.cfg'))
478
+ if new_key == "root['agent']['config']['compile']":
479
+ if self.cfg.agent.config.compile:
480
+ self.loading_uncompiled_checkpoint_with_compile = True
481
+
482
+ with open_dict(cfg):
483
+ exec(f"{new_key.replace('root[', 'cfg[')}={new_key.replace('root[', 'self.cfg[')}")
484
+ self.cfg = cfg
485
+
486
+ def load_checkpoint(self, snapshot_path, bc=False):
487
+ print(f'resuming {repr(self.agent)}: {snapshot_path}')
488
+ with snapshot_path.open('rb') as f:
489
+ payload = torch.load(f)
490
+ agent_payload = {}
491
+ for k, v in payload.items():
492
+ if k not in self.__dict__:
493
+ agent_payload[k] = v
494
+ elif k == '_global_epoch':
495
+ self._global_epoch = v
496
+ print(f'loaded epoch: {v}')
497
+ if self.cfg.use_wandb:
498
+ # add to config of wandb
499
+ wandb.config.update({'epoch': v})
500
+
501
+ # self.agent.load_snapshot_eval(agent_payload, bc)
502
+
503
+ @hydra.main(config_path='cfgs', config_name='config_eval')
504
+ def main(cfg):
505
+ from eval_robot import Workspace as W
506
+ root_dir = Path.cwd()
507
+ workspace = W(cfg)
508
+
509
+ workspace.eval()
510
+
511
+ if __name__ == '__main__':
512
+ main()
212506/wandb/run-20241229_212512-oco0rjll/files/config.yaml ADDED
@@ -0,0 +1,893 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ wandb_version: 1
2
+
3
+ root_dir:
4
+ desc: null
5
+ value: /home/leonmkim/fish_leon
6
+ replay_buffer_size:
7
+ desc: null
8
+ value: 150000
9
+ replay_buffer_num_workers:
10
+ desc: null
11
+ value: 2
12
+ nstep:
13
+ desc: null
14
+ value: 3
15
+ batch_size:
16
+ desc: null
17
+ value: 128
18
+ seed:
19
+ desc: null
20
+ value: 0
21
+ dataset_shuffle_seed:
22
+ desc: null
23
+ value: 0
24
+ device:
25
+ desc: null
26
+ value: cuda
27
+ save_video:
28
+ desc: null
29
+ value: true
30
+ save_train_video:
31
+ desc: null
32
+ value: true
33
+ use_tb:
34
+ desc: null
35
+ value: true
36
+ use_wandb:
37
+ desc: null
38
+ value: true
39
+ wandb_run_id:
40
+ desc: null
41
+ value: '1000_0'
42
+ wandb_notes:
43
+ desc: null
44
+ value: 1000_0_req_1351_0restarted_2
45
+ eval:
46
+ desc: null
47
+ value: true
48
+ true_action_history:
49
+ desc: null
50
+ value: false
51
+ train_pad_after:
52
+ desc: null
53
+ value: 4
54
+ process_contact_features:
55
+ desc: null
56
+ value: true
57
+ obs_type:
58
+ desc: null
59
+ value: pixels
60
+ use_color:
61
+ desc: null
62
+ value: true
63
+ use_depth:
64
+ desc: null
65
+ value: true
66
+ use_masks:
67
+ desc: null
68
+ value: true
69
+ mask_list:
70
+ desc: null
71
+ value:
72
+ - EE_obj_mask
73
+ mask_representation:
74
+ desc: null
75
+ value: channels
76
+ crop_hw:
77
+ desc: null
78
+ value:
79
+ - 144
80
+ - 144
81
+ crop_down_offset:
82
+ desc: null
83
+ value: 48
84
+ color_crop_type:
85
+ desc: null
86
+ value: null
87
+ depth_crop_type:
88
+ desc: null
89
+ value: null
90
+ segmask_crop_type:
91
+ desc: null
92
+ value: null
93
+ add_crop_binary_mask:
94
+ desc: null
95
+ value: false
96
+ add_coord_conv_map:
97
+ desc: null
98
+ value: false
99
+ use_context_color:
100
+ desc: null
101
+ value: false
102
+ use_context_depth:
103
+ desc: null
104
+ value: false
105
+ use_context_segmask:
106
+ desc: null
107
+ value: false
108
+ context_color_crop_type:
109
+ desc: null
110
+ value: null
111
+ context_depth_crop_type:
112
+ desc: null
113
+ value: null
114
+ context_segmask_crop_type:
115
+ desc: null
116
+ value: null
117
+ context_add_crop_binary_mask:
118
+ desc: null
119
+ value: false
120
+ context_add_coord_conv_map:
121
+ desc: null
122
+ value: false
123
+ use_contact_map:
124
+ desc: null
125
+ value: false
126
+ use_sdf_maps:
127
+ desc: null
128
+ value: false
129
+ use_normals_maps:
130
+ desc: null
131
+ value: false
132
+ which_objects:
133
+ desc: null
134
+ value: both
135
+ max_contact_prob:
136
+ desc: null
137
+ value: 0.1
138
+ max_depth:
139
+ desc: null
140
+ value: 2.0
141
+ grasped_dtc_max_value:
142
+ desc: null
143
+ value: 0.2
144
+ env_dtc_max_value:
145
+ desc: null
146
+ value: 0.4
147
+ grasped_normals_mask_max_dtc_value:
148
+ desc: null
149
+ value: 0.2
150
+ env_normals_mask_max_dtc_value:
151
+ desc: null
152
+ value: 0.4
153
+ clamp_dtc:
154
+ desc: null
155
+ value: true
156
+ dtc_adaptive_normalization:
157
+ desc: null
158
+ value: false
159
+ mask_normals_within_sdf:
160
+ desc: null
161
+ value: true
162
+ adaptive_normals_mask:
163
+ desc: null
164
+ value: true
165
+ learnable_contact_preprocess_params:
166
+ desc: null
167
+ value: true
168
+ contact_model_name:
169
+ desc: null
170
+ value: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
171
+ contact_estimation_model_ckpt_path:
172
+ desc: null
173
+ value: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
174
+ encoder_type:
175
+ desc: null
176
+ value: small
177
+ debug_timestamps:
178
+ desc: null
179
+ value: false
180
+ open_loop:
181
+ desc: null
182
+ value: false
183
+ action_trajectories:
184
+ desc: null
185
+ value: true
186
+ stop_after_action:
187
+ desc: null
188
+ value: false
189
+ interpolation_frequency:
190
+ desc: null
191
+ value: 25
192
+ policy_frequency:
193
+ desc: null
194
+ value: 5
195
+ wait_for_new_camera_frames:
196
+ desc: null
197
+ value: true
198
+ baseline:
199
+ desc: null
200
+ value: false
201
+ train_demo_idxs_list_or_num:
202
+ desc: null
203
+ value: -1
204
+ log_train_every_steps:
205
+ desc: null
206
+ value: 25
207
+ name_of_expert_demo:
208
+ desc: null
209
+ value: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
210
+ expert_dataset_dirpath:
211
+ desc: null
212
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
213
+ store_dataset_in_memory:
214
+ desc: null
215
+ value: false
216
+ expert_dataset:
217
+ desc: null
218
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr
219
+ action_key:
220
+ desc: null
221
+ value: action_trajectory_25hz
222
+ semantic_demo_grouping_name:
223
+ desc: null
224
+ value: semantic_demo_grouping.yaml
225
+ semantic_demo_grouping:
226
+ desc: null
227
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/semantic_demo_grouping.yaml
228
+ include_groups_list:
229
+ desc: null
230
+ value: all
231
+ expert_dataset_config:
232
+ desc: null
233
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demo_config.yaml
234
+ name_of_valid_demo:
235
+ desc: null
236
+ value: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
237
+ valid_dataset_dir:
238
+ desc: null
239
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr
240
+ valid_demo_idxs_list_or_num:
241
+ desc: null
242
+ value: null
243
+ val_num_groups:
244
+ desc: null
245
+ value: 0
246
+ load_bc:
247
+ desc: null
248
+ value: true
249
+ checkpoint_epoch_list:
250
+ desc: null
251
+ value:
252
+ - 99
253
+ - 199
254
+ - 299
255
+ - 399
256
+ - 499
257
+ - 599
258
+ - 699
259
+ - 799
260
+ - 899
261
+ - 999
262
+ - 1249
263
+ - 1499
264
+ - 1749
265
+ - 1999
266
+ - 2999
267
+ - 3999
268
+ - 4999
269
+ - 5999
270
+ - 6999
271
+ - 7999
272
+ - 8999
273
+ - 9999
274
+ snapshot_root_dir:
275
+ desc: null
276
+ value: /mnt/grasp_high_usage/leonmkim/contact_estimation/FISH
277
+ save_snapshot:
278
+ desc: null
279
+ value: true
280
+ save_last_snapshot:
281
+ desc: null
282
+ value: true
283
+ save_snapshot_when_done:
284
+ desc: null
285
+ value: true
286
+ top_k_checkpoints:
287
+ desc: null
288
+ value: 5
289
+ save_snapshot_link_to_weights_dir:
290
+ desc: null
291
+ value: deprecated
292
+ bc_regularize:
293
+ desc: null
294
+ value: false
295
+ bc_weight_type:
296
+ desc: null
297
+ value: qfilter
298
+ experiment_dir:
299
+ desc: null
300
+ value: ./exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0
301
+ agent:
302
+ desc: null
303
+ value:
304
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
305
+ name: diffusion_policy
306
+ load_checkpoint: true
307
+ device: cuda
308
+ n_obs_steps: 1
309
+ suite_name: frankagym
310
+ obs_type: pixels
311
+ enable_arm: true
312
+ enable_camera: true
313
+ use_tb: true
314
+ desired_image_shape:
315
+ - 13
316
+ - 180
317
+ - 240
318
+ orig_cam_shape:
319
+ - 3
320
+ - 240
321
+ - 320
322
+ config:
323
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
324
+ compile: false
325
+ device: cuda
326
+ cam_resize_shape:
327
+ - 13
328
+ - 180
329
+ - 240
330
+ orig_cam_shape:
331
+ - 3
332
+ - 240
333
+ - 320
334
+ policy_frequency: 5
335
+ interpolation_frequency: 25
336
+ policy_cfg:
337
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
338
+ n_obs_steps: 1
339
+ horizon: 36
340
+ n_action_steps: 36
341
+ output_shapes:
342
+ action:
343
+ - 7
344
+ input_normalization_modes:
345
+ observation.image: mean_std
346
+ observation.state: min_max
347
+ observation.action_history: min_max
348
+ output_normalization_modes:
349
+ action: min_max
350
+ vision_backbone: resnet18
351
+ pretrained_backbone_weights: null
352
+ transforms:
353
+ - _target_: torchaug.transforms.RandomAffine
354
+ degrees:
355
+ - -5
356
+ - 5
357
+ translate:
358
+ - 0.05
359
+ - 0.05
360
+ batch_transform: true
361
+ num_chunks: -1
362
+ batch_inplace: true
363
+ - _target_: torchaug.transforms.RandomColorJitter
364
+ brightness: 0.3
365
+ contrast: 0.4
366
+ saturation: 0.5
367
+ hue: 0.08
368
+ batch_transform: true
369
+ num_chunks: -1
370
+ batch_inplace: true
371
+ use_group_norm: true
372
+ spatial_softmax_num_keypoints: 32
373
+ action_history_encoder_config:
374
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
375
+ in_channels: 7
376
+ out_channels: 32
377
+ history_length: 6
378
+ kernel_size: 5
379
+ downsample_kernel_size: 3
380
+ downsample_stride: 2
381
+ downsample_padding: 1
382
+ down_dims:
383
+ - 256
384
+ - 512
385
+ - 1024
386
+ kernel_size: 5
387
+ n_groups: 8
388
+ diffusion_step_embed_dim: 128
389
+ use_film_scale_modulation: true
390
+ noise_scheduler_type: DDIM
391
+ beta_schedule: squaredcos_cap_v2
392
+ beta_start: 0.0001
393
+ beta_end: 0.02
394
+ prediction_type: epsilon
395
+ clip_sample: true
396
+ clip_sample_range: 1.0
397
+ num_train_timesteps: 50
398
+ num_inference_steps: 10
399
+ do_mask_loss_for_padding: false
400
+ input_shapes:
401
+ observation.image:
402
+ - 13
403
+ - 180
404
+ - 240
405
+ context_observation.image:
406
+ - 13
407
+ - 180
408
+ - 240
409
+ observation.state:
410
+ - 8
411
+ observation.action_history:
412
+ - 7
413
+ train_cfg:
414
+ _target_: utils.TrainConfig
415
+ lr: 0.0001
416
+ lr_scheduler: cosine
417
+ lr_warmup_steps: 500
418
+ adam_betas:
419
+ - 0.95
420
+ - 0.999
421
+ adam_eps: 1.0e-08
422
+ adam_weight_decay: 1.0e-06
423
+ grad_clip_norm: 10
424
+ offline_steps: 1000000
425
+ use_amp: true
426
+ observation_cfg:
427
+ _target_: agent.encoder.VisualFeatureSet
428
+ use_depth: true
429
+ use_color: true
430
+ mask_input_dict:
431
+ _target_: agent.encoder.MaskInputDict
432
+ enable: true
433
+ representation: channels
434
+ mask_list:
435
+ - EE_obj_mask
436
+ crop_input_config:
437
+ _target_: agent.encoder.CropInputConfig
438
+ color_crop_type: null
439
+ depth_crop_type: null
440
+ segmask_crop_type: null
441
+ crop_hw:
442
+ - 144
443
+ - 144
444
+ crop_down_offset: 48
445
+ add_crop_binary_mask: false
446
+ add_coord_conv_map: false
447
+ context_input_config:
448
+ _target_: agent.encoder.ContextInputConfig
449
+ use_color: false
450
+ use_depth: false
451
+ mask_input_dict:
452
+ _target_: agent.encoder.MaskInputDict
453
+ enable: false
454
+ representation: channels
455
+ mask_list:
456
+ - EE_obj_mask
457
+ crop_input_config:
458
+ _target_: agent.encoder.CropInputConfig
459
+ color_crop_type: null
460
+ depth_crop_type: null
461
+ segmask_crop_type: null
462
+ crop_hw:
463
+ - 144
464
+ - 144
465
+ crop_down_offset: 48
466
+ add_crop_binary_mask: false
467
+ add_coord_conv_map: false
468
+ mask_soft_approx_scheduler_config:
469
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
470
+ num_steps: 40000
471
+ initial_value: 10.0
472
+ final_value: 1000.0
473
+ interpolation_scheme: cosine
474
+ use_contact_map: false
475
+ use_sdf_maps: false
476
+ use_normals_maps: false
477
+ which_objects: both
478
+ grasped_dtc_max_value: 0.2
479
+ env_dtc_max_value: 0.4
480
+ grasped_normals_mask_max_dtc_value: 0.2
481
+ env_normals_mask_max_dtc_value: 0.4
482
+ clamp_dtc: true
483
+ max_contact_prob: 0.1
484
+ mask_normals_within_sdf: true
485
+ dtc_adaptive_normalization: false
486
+ adaptive_normals_mask: true
487
+ max_depth: 2.0
488
+ image_shape:
489
+ - 13
490
+ - 180
491
+ - 240
492
+ learnable_contact_preprocess_params: true
493
+ learning_rate: 0.0001
494
+ weight_decay: 0.0
495
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
496
+ zero_centered: false
497
+ suite:
498
+ desc: null
499
+ value:
500
+ suite: frankagym
501
+ name: frankagym
502
+ frame_stack: 1
503
+ action_repeat: 1
504
+ discount: 0.99
505
+ hidden_dim: 1024
506
+ num_train_frames: 2010
507
+ num_seed_frames: 260
508
+ num_train_epochs: 5000
509
+ validate_every_epochs: 100
510
+ validate_diffusion_on_action_loss_every_epochs: 500
511
+ train_eval_diffusion_on_action_loss_every_epochs: 500
512
+ check_topk_every_epochs: 10
513
+ save_snapshot_every_epochs: 5000
514
+ eval_every_frames: 2000
515
+ num_eval_episodes: 5
516
+ save_snapshot: true
517
+ wait_for_user_to_start_episode: true
518
+ task_make_fn:
519
+ _target_: suite.frankagym.make
520
+ name: FrankaInsertion-v1
521
+ height: 240
522
+ width: 320
523
+ frame_stack: 1
524
+ action_repeat: 1
525
+ seed: 0
526
+ enable_arm: true
527
+ enable_gripper: true
528
+ start_with_gripper_open: true
529
+ enable_camera: true
530
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
531
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
532
+ x_limit:
533
+ - 0.2
534
+ - 0.7
535
+ y_limit:
536
+ - -0.4
537
+ - 0.4
538
+ z_limit:
539
+ - -0.05
540
+ - 0.55
541
+ device: cuda
542
+ interpolation_frequency: 25
543
+ policy_frequency: 5
544
+ debug_timestamps: false
545
+ stop_after_action: false
546
+ open_loop: false
547
+ wait_for_new_camera_frames: true
548
+ action_key: action_trajectory_25hz
549
+ action_trajectory_horizon: 36
550
+ action_trajectories: true
551
+ path_to_zarr_dataset: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr
552
+ agent_policy_cfg:
553
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
554
+ compile: false
555
+ device: cuda
556
+ cam_resize_shape:
557
+ - 13
558
+ - 180
559
+ - 240
560
+ orig_cam_shape:
561
+ - 3
562
+ - 240
563
+ - 320
564
+ policy_frequency: 5
565
+ interpolation_frequency: 25
566
+ policy_cfg:
567
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
568
+ n_obs_steps: 1
569
+ horizon: 36
570
+ n_action_steps: 36
571
+ output_shapes:
572
+ action:
573
+ - 7
574
+ input_normalization_modes:
575
+ observation.image: mean_std
576
+ observation.state: min_max
577
+ observation.action_history: min_max
578
+ output_normalization_modes:
579
+ action: min_max
580
+ vision_backbone: resnet18
581
+ pretrained_backbone_weights: null
582
+ transforms:
583
+ - _target_: torchaug.transforms.RandomAffine
584
+ degrees:
585
+ - -5
586
+ - 5
587
+ translate:
588
+ - 0.05
589
+ - 0.05
590
+ batch_transform: true
591
+ num_chunks: -1
592
+ batch_inplace: true
593
+ - _target_: torchaug.transforms.RandomColorJitter
594
+ brightness: 0.3
595
+ contrast: 0.4
596
+ saturation: 0.5
597
+ hue: 0.08
598
+ batch_transform: true
599
+ num_chunks: -1
600
+ batch_inplace: true
601
+ use_group_norm: true
602
+ spatial_softmax_num_keypoints: 32
603
+ action_history_encoder_config:
604
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
605
+ in_channels: 7
606
+ out_channels: 32
607
+ history_length: 6
608
+ kernel_size: 5
609
+ downsample_kernel_size: 3
610
+ downsample_stride: 2
611
+ downsample_padding: 1
612
+ down_dims:
613
+ - 256
614
+ - 512
615
+ - 1024
616
+ kernel_size: 5
617
+ n_groups: 8
618
+ diffusion_step_embed_dim: 128
619
+ use_film_scale_modulation: true
620
+ noise_scheduler_type: DDIM
621
+ beta_schedule: squaredcos_cap_v2
622
+ beta_start: 0.0001
623
+ beta_end: 0.02
624
+ prediction_type: epsilon
625
+ clip_sample: true
626
+ clip_sample_range: 1.0
627
+ num_train_timesteps: 50
628
+ num_inference_steps: 10
629
+ do_mask_loss_for_padding: false
630
+ input_shapes:
631
+ observation.image:
632
+ - 13
633
+ - 180
634
+ - 240
635
+ context_observation.image:
636
+ - 13
637
+ - 180
638
+ - 240
639
+ observation.state:
640
+ - 8
641
+ observation.action_history:
642
+ - 7
643
+ train_cfg:
644
+ _target_: utils.TrainConfig
645
+ lr: 0.0001
646
+ lr_scheduler: cosine
647
+ lr_warmup_steps: 500
648
+ adam_betas:
649
+ - 0.95
650
+ - 0.999
651
+ adam_eps: 1.0e-08
652
+ adam_weight_decay: 1.0e-06
653
+ grad_clip_norm: 10
654
+ offline_steps: 1000000
655
+ use_amp: true
656
+ observation_cfg:
657
+ _target_: agent.encoder.VisualFeatureSet
658
+ use_depth: true
659
+ use_color: true
660
+ mask_input_dict:
661
+ _target_: agent.encoder.MaskInputDict
662
+ enable: true
663
+ representation: channels
664
+ mask_list:
665
+ - EE_obj_mask
666
+ crop_input_config:
667
+ _target_: agent.encoder.CropInputConfig
668
+ color_crop_type: null
669
+ depth_crop_type: null
670
+ segmask_crop_type: null
671
+ crop_hw:
672
+ - 144
673
+ - 144
674
+ crop_down_offset: 48
675
+ add_crop_binary_mask: false
676
+ add_coord_conv_map: false
677
+ context_input_config:
678
+ _target_: agent.encoder.ContextInputConfig
679
+ use_color: false
680
+ use_depth: false
681
+ mask_input_dict:
682
+ _target_: agent.encoder.MaskInputDict
683
+ enable: false
684
+ representation: channels
685
+ mask_list:
686
+ - EE_obj_mask
687
+ crop_input_config:
688
+ _target_: agent.encoder.CropInputConfig
689
+ color_crop_type: null
690
+ depth_crop_type: null
691
+ segmask_crop_type: null
692
+ crop_hw:
693
+ - 144
694
+ - 144
695
+ crop_down_offset: 48
696
+ add_crop_binary_mask: false
697
+ add_coord_conv_map: false
698
+ mask_soft_approx_scheduler_config:
699
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
700
+ num_steps: 40000
701
+ initial_value: 10.0
702
+ final_value: 1000.0
703
+ interpolation_scheme: cosine
704
+ use_contact_map: false
705
+ use_sdf_maps: false
706
+ use_normals_maps: false
707
+ which_objects: both
708
+ grasped_dtc_max_value: 0.2
709
+ env_dtc_max_value: 0.4
710
+ grasped_normals_mask_max_dtc_value: 0.2
711
+ env_normals_mask_max_dtc_value: 0.4
712
+ clamp_dtc: true
713
+ max_contact_prob: 0.1
714
+ mask_normals_within_sdf: true
715
+ dtc_adaptive_normalization: false
716
+ adaptive_normals_mask: true
717
+ max_depth: 2.0
718
+ image_shape:
719
+ - 13
720
+ - 180
721
+ - 240
722
+ learnable_contact_preprocess_params: true
723
+ learning_rate: 0.0001
724
+ weight_decay: 0.0
725
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
726
+ zero_centered: false
727
+ true_action_history: false
728
+ num_train_frames_bc:
729
+ desc: null
730
+ value: 50000
731
+ num_train_frames_drq:
732
+ desc: null
733
+ value: 1100000
734
+ stddev_schedule_drq:
735
+ desc: null
736
+ value: linear(1.0,0.1,100000)
737
+ task_name:
738
+ desc: null
739
+ value: FrankaInsertion-v1
740
+ num_train_frames_vinn:
741
+ desc: null
742
+ value: 25000
743
+ num_train_frames_diffusion:
744
+ desc: null
745
+ value: 1000000
746
+ num_train_epochs_bc:
747
+ desc: null
748
+ value: 5000
749
+ num_train_epochs_diffusion:
750
+ desc: null
751
+ value: 15000
752
+ validate_every_epochs_bc:
753
+ desc: null
754
+ value: 5
755
+ validate_every_epochs_diffusion:
756
+ desc: null
757
+ value: 250
758
+ validate_diffusion_on_action_loss_every_epochs:
759
+ desc: null
760
+ value: 250
761
+ train_eval_diffusion_on_action_loss_every_epochs:
762
+ desc: null
763
+ value: 250
764
+ check_topk_every_epochs:
765
+ desc: null
766
+ value: 5
767
+ check_topk_every_epochs_diffusion:
768
+ desc: null
769
+ value: 250
770
+ save_snapshot_every_epochs_diffusion:
771
+ desc: null
772
+ value: 1500
773
+ x_limit:
774
+ desc: null
775
+ value:
776
+ - 0.2
777
+ - 0.7
778
+ y_limit:
779
+ desc: null
780
+ value:
781
+ - -0.4
782
+ - 0.4
783
+ z_limit:
784
+ desc: null
785
+ value:
786
+ - -0.05
787
+ - 0.55
788
+ home_displacement:
789
+ desc: null
790
+ value:
791
+ - 0.55
792
+ - 0.0
793
+ - 0.55
794
+ - 180.0
795
+ - 0.0
796
+ - 0.0
797
+ enable_gripper:
798
+ desc: null
799
+ value: true
800
+ start_with_gripper_open:
801
+ desc: null
802
+ value: true
803
+ offset_mask:
804
+ desc: null
805
+ value:
806
+ - 1
807
+ - 1
808
+ - 1
809
+ - 1
810
+ - 1
811
+ - 1
812
+ path_to_depth_extrinsics:
813
+ desc: null
814
+ value: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
815
+ feature_type:
816
+ desc: null
817
+ value: 180x240_1_RGB_D_2.0_msk_channels_EE_obj_mask_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1
818
+ save_buffer:
819
+ desc: null
820
+ value: true
821
+ num_eval:
822
+ desc: null
823
+ value: 5
824
+ random_start:
825
+ desc: null
826
+ value: false
827
+ eval_starts:
828
+ desc: null
829
+ value: /home/leonmkim/fish_leon/FISH/eval_starts/frankagym_pixels/FrankaInsertion-v1
830
+ num_valid_demos:
831
+ desc: null
832
+ value: null
833
+ load_checkpoint:
834
+ desc: null
835
+ value: true
836
+ checkpoint_epoch:
837
+ desc: null
838
+ value: 12000
839
+ load_residual_weight:
840
+ desc: null
841
+ value: false
842
+ checkpoint_root_dir:
843
+ desc: null
844
+ value: /home/leonmkim/fish_leon/FISH
845
+ checkpoint_weight_dir:
846
+ desc: null
847
+ value: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0
848
+ residual_weight:
849
+ desc: null
850
+ value: /home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt
851
+ final_experiment_dir:
852
+ desc: null
853
+ value: ./exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506
854
+ _wandb:
855
+ desc: null
856
+ value:
857
+ code_path: code/FISH/eval_robot.py
858
+ python_version: 3.10.14
859
+ cli_version: 0.17.5
860
+ framework: torch
861
+ is_jupyter_run: false
862
+ is_kaggle_kernel: false
863
+ start_time: 1735525512
864
+ t:
865
+ 1:
866
+ - 1
867
+ - 41
868
+ - 49
869
+ - 50
870
+ - 55
871
+ - 83
872
+ 2:
873
+ - 1
874
+ - 41
875
+ - 49
876
+ - 50
877
+ - 55
878
+ - 83
879
+ 3:
880
+ - 16
881
+ - 23
882
+ - 35
883
+ 4: 3.10.14
884
+ 5: 0.17.5
885
+ 8:
886
+ - 5
887
+ 13: linux-x86_64
888
+ grasped_obj_name:
889
+ desc: null
890
+ value: greece
891
+ left_book_slot:
892
+ desc: null
893
+ value: twodim
212506/wandb/run-20241229_212512-oco0rjll/files/diff.patch ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ diff --git a/FISH/cfgs/config_eval.yaml b/FISH/cfgs/config_eval.yaml
2
+ index 2303343..566e9c7 100644
3
+ --- a/FISH/cfgs/config_eval.yaml
4
+ +++ b/FISH/cfgs/config_eval.yaml
5
+ @@ -71,7 +71,7 @@ dtc_adaptive_normalization: false
6
+ mask_normals_within_sdf: true
7
+ adaptive_normals_mask: true
8
+ learnable_contact_preprocess_params: false
9
+ -contact_model_name: 'local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9'
10
+ +contact_model_name: 'local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9'
11
+ # contact_model_name: 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9'
12
+ contact_estimation_model_ckpt_path: '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt' # no mask no flow, just context
13
+ # contact_estimation_model_ckpt_path: '~/fish_leon/contact_estimation/artifacts/197406_2/checkpoints/epoch=08-val_loss=0.00.ckpt' # w/ mask no flow, just context
14
+ @@ -123,6 +123,14 @@ bc_weight_type: 'qfilter' # linear, qfilter
15
+
16
+ # Load weights
17
+ load_checkpoint: ${agent.load_checkpoint}
18
+ +# 120 demos
19
+ +# RGBD+act history
20
+ +# wandb_run_id: '1045_0' # greece
21
+ +# wandb_run_id: '1051_0' # all
22
+ +
23
+ +# RGBD+mask+act history
24
+ +wandb_run_id: '1000_0' # all
25
+ +
26
+ # 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
27
+ # 14 demos
28
+
29
+ @@ -144,7 +152,7 @@ load_checkpoint: ${agent.load_checkpoint}
30
+ # wandb_run_id: '523_0' # fowlers
31
+ # wandb_run_id: '524_0' # lib
32
+ # wandb_run_id: '525_0' # modelsys
33
+ -wandb_run_id: '526_0' # electrodyn
34
+ +# wandb_run_id: '526_0' # electrodyn
35
+
36
+ # 54_240x320_hbm_twodim_fps_fix_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
37
+ # 32 held out demos
38
+ diff --git a/FISH/download_model_checkpoints.py b/FISH/download_model_checkpoints.py
39
+ index 0f225ec..5ed3eb4 100644
40
+ --- a/FISH/download_model_checkpoints.py
41
+ +++ b/FISH/download_model_checkpoints.py
42
+ @@ -15,8 +15,8 @@ if not local_checkpoint_root_dir.exists():
43
+ local_checkpoint_root_dir.mkdir(parents=True)
44
+
45
+ # Download the model checkpoints
46
+ -# remote_checkpoint_root_dir = Path('/mnt/grasp_high_usage/leonmkim/contact_estimation/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1')
47
+ -remote_checkpoint_root_dir = Path('/mnt/kostas-graid/datasets/extrinsic_contact_data/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1')
48
+ +remote_checkpoint_root_dir = Path('/mnt/grasp_high_usage/leonmkim/contact_estimation/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1')
49
+ +# remote_checkpoint_root_dir = Path('/mnt/kostas-graid/datasets/extrinsic_contact_data/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1')
50
+ remote_checkpoint_root_dir = remote_checkpoint_root_dir.expanduser()
51
+ remote_username = 'leonmkim'
52
+ remote_host = 'grasp-login1'
53
+ @@ -146,6 +146,11 @@ remote_host = 'grasp-login1'
54
+ # '265627',
55
+ # '265620',
56
+ # ]
57
+ +
58
+ +run_id_list = [
59
+ + '1000_0',
60
+ +]
61
+ +
62
+ checkpoint_epoch = 12000
63
+
64
+ # use subprocess to download the model checkpoints in parallel
65
+ Submodule ros_ws/src/contact_estimation_ros contains modified content
66
+ diff --git a/ros_ws/src/contact_estimation_ros/fish_data_collection/src/rosbag_handler.py b/ros_ws/src/contact_estimation_ros/fish_data_collection/src/rosbag_handler.py
67
+ index dcbcfa4..35dd7e8 100755
68
+ --- a/ros_ws/src/contact_estimation_ros/fish_data_collection/src/rosbag_handler.py
69
+ +++ b/ros_ws/src/contact_estimation_ros/fish_data_collection/src/rosbag_handler.py
70
+ @@ -15,6 +15,8 @@ import time
71
+ import datetime
72
+ import shutil
73
+
74
+ +from scipy.spatial.transform import Rotation as R
75
+ +
76
+ # solution to launching from main thread from: https://answers.ros.org/question/260212/start-launchfile-from-service/
77
+ # from Queue import Queue
78
+
79
+ @@ -23,7 +25,7 @@ from fish_data_collection.srv import StartBagging, StartBaggingRequest, StartBag
80
+ from sensor_msgs.msg import CameraInfo
81
+
82
+ class RosbaggingHandler():
83
+ - def __init__(self, base_dset_dir, experiment_dirname, bag_launch_path, demo_dirname, camera_calibration_dir,
84
+ + def __init__(self, base_dset_dir, experiment_dirname, bag_launch_path, demo_dirname,
85
+ multicam=False, align_depth_to_color=False):
86
+ ## bag files and target files should be identified by episode id
87
+ self.align_depth_to_color = align_depth_to_color
88
+ @@ -33,8 +35,6 @@ class RosbaggingHandler():
89
+ self.intrinsics_saved = False
90
+ self.extrinsics_saved = False
91
+
92
+ - self.camera_calibration_dir = camera_calibration_dir
93
+ -
94
+ self.full_bag_dir = os.path.join(self.base_dset_dir, self.experiment_dirname, self.demo_dirname)
95
+ os.makedirs(self.full_bag_dir, exist_ok=True)
96
+
97
+ @@ -63,7 +63,7 @@ class RosbaggingHandler():
98
+ self.abort_bagging_request = False
99
+
100
+ self.save_camera_intrinsics()
101
+ - self.save_camera_extrinsics(self.camera_calibration_dir)
102
+ + self.save_camera_extrinsics()
103
+
104
+ while not rospy.is_shutdown():
105
+ if self.start_bagging_request:
106
+ @@ -83,23 +83,56 @@ class RosbaggingHandler():
107
+ self.start_bagging_request = True
108
+ return response
109
+
110
+ - def save_camera_extrinsics(self, path_to_calibration_dir):
111
+ + def save_camera_extrinsics(self):
112
+ if not self.extrinsics_saved:
113
+ - # copy over the contents of the calibration directory, but not the directory itself, into the bag directory
114
+ - # list the contents of the calibration directory that end in .npy
115
+ - calibration_dir_contents = glob.glob(os.path.join(path_to_calibration_dir, '*.npy'))
116
+ - # calibration_dir_contents = os.listdir(path_to_calibration_dir)
117
+ - # copy the contents of the calibration directory into the bag directory
118
+ - for item in calibration_dir_contents:
119
+ - # make sure the item is a file
120
+ - if os.path.isfile(item):
121
+ - # print('copying {} to {}'.format(item, os.path.join(self.full_bag_dir, os.path.basename(item))))
122
+ - shutil.copy(item, os.path.join(self.full_bag_dir, os.path.basename(item)))
123
+ - # also save the path to the calibration directory as a txt file
124
+ - with open(os.path.join(self.full_bag_dir, 'calibration_dir.txt'), 'w') as f:
125
+ - f.write(path_to_calibration_dir)
126
+ + # get cam extrinsic
127
+ + # use ros tf2 to get transform from color_optical_frame to panda_link0
128
+ + import tf2_ros
129
+ + tfBuffer = tf2_ros.Buffer()
130
+ + listener = tf2_ros.TransformListener(tfBuffer)
131
+ +
132
+ + # get transform from color_optical_frame to panda_link0
133
+ + # target, source where target is the parent frame and source is the child frame
134
+ + color_tf_world_ros = tfBuffer.lookup_transform('camera_color_optical_frame', 'panda_link0', rospy.Time(0), rospy.Duration(1.0)).transform
135
+ + self.color_tf_world = np.eye(4)
136
+ + self.color_tf_world[0, 3] =color_tf_world_ros.translation.x
137
+ + self.color_tf_world[1, 3] =color_tf_world_ros.translation.y
138
+ + self.color_tf_world[2, 3] =color_tf_world_ros.translation.z
139
+ + self.color_tf_world[:3, :3] = R.from_quat([color_tf_world_ros.rotation.x, color_tf_world_ros.rotation.y, color_tf_world_ros.rotation.z, color_tf_world_ros.rotation.w]).as_matrix()
140
+ +
141
+ + # dump the info to the bag directory
142
+ + np.save(os.path.join(self.full_bag_dir, 'color_tf_world.npy'), self.color_tf_world)
143
+ +
144
+ + depth_tf_world_ros = tfBuffer.lookup_transform('camera_depth_optical_frame', 'panda_link0', rospy.Time(0), rospy.Duration(1.0)).transform
145
+ + self.depth_tf_world = np.eye(4)
146
+ + self.depth_tf_world[0, 3] = depth_tf_world_ros.translation.x
147
+ + self.depth_tf_world[1, 3] = depth_tf_world_ros.translation.y
148
+ + self.depth_tf_world[2, 3] = depth_tf_world_ros.translation.z
149
+ + self.depth_tf_world[:3, :3] = \
150
+ + R.from_quat([
151
+ + depth_tf_world_ros.rotation.x,
152
+ + depth_tf_world_ros.rotation.y,
153
+ + depth_tf_world_ros.rotation.z,
154
+ + depth_tf_world_ros.rotation.w,
155
+ + ]).as_matrix()
156
+ +
157
+ + np.save(os.path.join(self.full_bag_dir, 'depth_tf_world.npy'), self.depth_tf_world)
158
+ +
159
+ + # # copy over the contents of the calibration directory, but not the directory itself, into the bag directory
160
+ + # # list the contents of the calibration directory that end in .npy
161
+ + # calibration_dir_contents = glob.glob(os.path.join(path_to_calibration_dir, '*.npy'))
162
+ + # # calibration_dir_contents = os.listdir(path_to_calibration_dir)
163
+ + # # copy the contents of the calibration directory into the bag directory
164
+ + # for item in calibration_dir_contents:
165
+ + # # make sure the item is a file
166
+ + # if os.path.isfile(item):
167
+ + # # print('copying {} to {}'.format(item, os.path.join(self.full_bag_dir, os.path.basename(item))))
168
+ + # shutil.copy(item, os.path.join(self.full_bag_dir, os.path.basename(item)))
169
+ + # # also save the path to the calibration directory as a txt file
170
+ + # with open(os.path.join(self.full_bag_dir, 'calibration_dir.txt'), 'w') as f:
171
+ + # f.write(path_to_calibration_dir)
172
+
173
+ - self.extrinsics_saved = True
174
+ + # self.extrinsics_saved = True
175
+
176
+ def save_camera_intrinsics(self):
177
+ if not self.intrinsics_saved:
178
+ @@ -198,9 +231,6 @@ class RosbaggingHandler():
179
+ if self.bag_recording:
180
+ self.current_recording_bag_path = bag_path
181
+ # response.success = True
182
+ -
183
+ -
184
+ -
185
+ # return response
186
+
187
+ def stop_bagging_service_callback(self, req):
188
+ @@ -304,7 +334,7 @@ if __name__ == '__main__':
189
+ assert os.path.exists(rosbag_launch_path), "rosbag launch file does not exist at path: {}".format(rosbag_launch_path)
190
+
191
+ camera_calibration_dir = '/home/leonmkim/FISH_franka_ros_ws/src/contact_estimation_ros/fish_data_collection/scripts/camera_poses_L515/20240313-153328'
192
+ - dc_handler = RosbaggingHandler(base_dset_dir, experiment_dirname, rosbag_launch_path, demo_dirname, camera_calibration_dir, multicam=multicam, align_depth_to_color=align_depth_to_color)
193
+ + dc_handler = RosbaggingHandler(base_dset_dir, experiment_dirname, rosbag_launch_path, demo_dirname, multicam=multicam, align_depth_to_color=align_depth_to_color)
194
+
195
+ # rospy.spin()
196
+
212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/0_eval_0_7f4ade8f7a09940de9a3.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7f4ade8f7a09940de9a392152321c741514d0b2b83b953d2bc85b2587d34b370
3
+ size 1160403
212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/1_eval_1_df2b523b5c69376abbb6.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:df2b523b5c69376abbb661917fe8d60d3ad79f771878de2226ab5c89077a3630
3
+ size 1160649
212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/2_eval_2_56287c330ba45a21ceae.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:56287c330ba45a21ceae2f5ada5b8060ed510846ec2d5a3b90730f83caff3226
3
+ size 1157924
212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/3_eval_3_d9096d3d3b1128c5f3af.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d9096d3d3b1128c5f3af34fcf97e720fde5df69b1403591cedf85594195eab69
3
+ size 1175711
212506/wandb/run-20241229_212512-oco0rjll/files/media/videos/eval/4_eval_4_277cb7c2f38e9f60cb6a.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:277cb7c2f38e9f60cb6a1957cbae5c162329b3ce1d0991b1503aabd5e0830c0b
3
+ size 1163227
212506/wandb/run-20241229_212512-oco0rjll/files/output.log ADDED
The diff for this file is too large to render. See raw diff
 
212506/wandb/run-20241229_212512-oco0rjll/files/requirements.txt ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Cython==3.0.10
2
+ Farama-Notifications==0.0.4
3
+ GitPython==3.1.43
4
+ Jinja2==3.1.4
5
+ Markdown==3.6
6
+ MarkupSafe==2.1.5
7
+ POT==0.7.0
8
+ PyOpenGL==3.1.7
9
+ PySocks==1.7.1
10
+ PyYAML==6.0.1
11
+ Pygments==2.18.0
12
+ Rtree==1.3.0
13
+ Werkzeug==3.0.3
14
+ absl-py==2.1.0
15
+ accelerate==0.33.0
16
+ actionlib-msgs==1.13.0.post3
17
+ actionlib==1.12.0
18
+ actionlib==1.14.0
19
+ aiohttp==3.9.5
20
+ aiosignal==1.3.1
21
+ angles==1.9.13
22
+ antlr4-python3-runtime==4.9.3
23
+ anyio==4.4.0
24
+ asciitree==0.3.3
25
+ async-timeout==4.0.3
26
+ attrs==23.2.0
27
+ autoprop==4.1.0
28
+ beartype==0.18.5
29
+ beautifulsoup4==4.12.3
30
+ bondpy==1.8.6
31
+ byol-pytorch==0.8.0
32
+ cachetools==5.4.0
33
+ camera-calibration-parsers==1.12.0
34
+ camera-calibration==1.17.0
35
+ cascadio==0.0.13
36
+ catkin-pkg==1.0.0
37
+ catkin==0.7.18
38
+ catkin==0.8.10
39
+ certifi==2024.7.4
40
+ cffi==1.16.0
41
+ chardet==5.2.0
42
+ charset-normalizer==3.3.2
43
+ click==8.1.7
44
+ cloudpickle==3.0.0
45
+ cmake==3.30.1
46
+ colorlog==6.8.2
47
+ contourpy==1.2.1
48
+ controller-manager-msgs==0.20.0
49
+ controller-manager==0.20.0
50
+ coverage==7.6.0
51
+ coveralls==4.0.1
52
+ cv-bridge==1.16.2
53
+ cycler==0.12.1
54
+ datasets==2.20.0
55
+ decorator==4.4.2
56
+ deepdiff==7.0.1
57
+ defusedxml==0.7.1
58
+ diagnostic-analysis==1.11.0
59
+ diagnostic-common-diagnostics==1.11.0
60
+ diagnostic-updater==1.11.0
61
+ diffusers==0.27.2
62
+ dill==0.3.8
63
+ distro==1.9.0
64
+ dm-control==1.0.8
65
+ dm-env==1.6
66
+ dm-tree==0.1.8
67
+ docker-pycreds==0.4.0
68
+ docopt==0.6.2
69
+ docutils==0.21.2
70
+ dynamic-reconfigure==1.7.3
71
+ einops==0.8.0
72
+ embreex==2.17.7.post5
73
+ empy==3.3.4
74
+ etils==1.7.0
75
+ exceptiongroup==1.2.2
76
+ ezdxf==1.3.2
77
+ fasteners==0.19
78
+ filelock==3.15.4
79
+ fonttools==4.53.1
80
+ freetype-py==2.4.0
81
+ frozenlist==1.4.1
82
+ fsspec==2024.5.0
83
+ gazebo_plugins==2.9.2
84
+ gazebo_ros==2.9.2
85
+ gdown==5.2.0
86
+ gencpp==0.7.0
87
+ geneus==3.0.0
88
+ genlisp==0.4.18
89
+ genmsg==0.5.12
90
+ genmsg==0.6.0
91
+ gennodejs==2.0.2
92
+ genpy==0.6.14
93
+ genpy==0.6.15
94
+ geometry-msgs==1.13.0.post2
95
+ gitdb==4.0.11
96
+ glfw==2.7.0
97
+ glooey==0.3.6
98
+ gmsh==4.12.2
99
+ gnupg==2.3.1
100
+ google-auth-oauthlib==1.0.0
101
+ google-auth==2.32.0
102
+ grpcio==1.65.1
103
+ gym-envs==0.0.1
104
+ gym-notices==0.0.8
105
+ gym==0.22.0
106
+ gymnasium==0.29.1
107
+ h11==0.14.0
108
+ h5py==3.11.0
109
+ hf_transfer==0.1.8
110
+ httpcore==1.0.5
111
+ httpx==0.27.0
112
+ huggingface-hub==0.23.5
113
+ hydra-core==1.3.2
114
+ hydra-submitit-launcher==1.2.0
115
+ idna==3.7
116
+ image-geometry==1.16.2
117
+ imageio-ffmpeg==0.5.1
118
+ imageio==2.34.2
119
+ importlib_metadata==8.2.0
120
+ importlib_resources==6.4.0
121
+ iniconfig==2.0.0
122
+ interactive-markers==1.12.0
123
+ joint-state-publisher-gui==1.15.1
124
+ joint-state-publisher==1.15.1
125
+ jsonschema-specifications==2023.12.1
126
+ jsonschema==4.23.0
127
+ kiwisolver==1.4.5
128
+ kornia==0.7.3
129
+ kornia_rs==0.1.5
130
+ labmaze==1.0.6
131
+ laser_geometry==1.6.7
132
+ lazy_loader==0.4
133
+ lerobot==0.1.0
134
+ lightning-utilities==0.11.6
135
+ llvmlite==0.43.0
136
+ lxml==5.2.2
137
+ manifold3d==2.5.1
138
+ mapbox-earcut==1.0.1
139
+ markdown-it-py==3.0.0
140
+ matplotlib==3.9.1
141
+ mdurl==0.1.2
142
+ meshio==5.3.5
143
+ message-filters==1.16.0
144
+ more-itertools==10.3.0
145
+ moviepy==1.0.3
146
+ mpmath==1.3.0
147
+ mujoco==3.2.0
148
+ multidict==6.0.5
149
+ multiprocess==0.70.16
150
+ natsort==8.4.0
151
+ netifaces==0.11.0
152
+ networkx==3.3
153
+ nodeenv==1.9.1
154
+ numba==0.60.0
155
+ numcodecs==0.13.0
156
+ numpy==1.26.4
157
+ nvidia-cublas-cu12==12.1.3.1
158
+ nvidia-cuda-cupti-cu12==12.1.105
159
+ nvidia-cuda-nvrtc-cu12==12.1.105
160
+ nvidia-cuda-runtime-cu12==12.1.105
161
+ nvidia-cudnn-cu12==9.1.0.70
162
+ nvidia-cufft-cu12==11.0.2.54
163
+ nvidia-curand-cu12==10.3.2.106
164
+ nvidia-cusolver-cu12==11.4.5.107
165
+ nvidia-cusparse-cu12==12.1.0.106
166
+ nvidia-nccl-cu12==2.20.5
167
+ nvidia-nvjitlink-cu12==12.5.82
168
+ nvidia-nvtx-cu12==12.1.105
169
+ oauthlib==3.2.2
170
+ omegaconf==2.3.0
171
+ openctm==0.0.5
172
+ opencv-python==4.10.0.84
173
+ ordered-set==4.1.0
174
+ packaging==24.1
175
+ pandas==2.2.2
176
+ pillow==10.4.0
177
+ pip==24.2
178
+ platformdirs==4.2.2
179
+ pluggy==1.5.0
180
+ proglog==0.1.10
181
+ protobuf==5.27.2
182
+ psutil==6.0.0
183
+ pyarrow-hotfix==0.6
184
+ pyarrow==17.0.0
185
+ pyasn1==0.6.0
186
+ pyasn1_modules==0.4.0
187
+ pyav==12.3.0
188
+ pycollada==0.8
189
+ pycparser==2.22
190
+ pycryptodomex==3.21.0
191
+ pyglet==1.5.29
192
+ pyinstrument==4.6.2
193
+ pymunk==6.8.1
194
+ pyparsing==2.4.7
195
+ pyrealsense2==2.54.2.5684
196
+ pyribbit==0.1.46
197
+ pyright==1.1.373
198
+ pytest-beartype==0.0.2
199
+ pytest-cov==5.0.0
200
+ pytest==8.3.1
201
+ python-dateutil==2.9.0.post0
202
+ python-fcl==0.7.0.6
203
+ python-qt-binding==0.4.4
204
+ pytorch-lightning==2.4.0
205
+ pytz==2024.1
206
+ qt-dotgraph==0.4.2
207
+ qt-gui-cpp==0.4.2
208
+ qt-gui-py-common==0.4.2
209
+ qt-gui==0.4.2
210
+ referencing==0.35.1
211
+ regex==2024.5.15
212
+ requests-oauthlib==2.0.0
213
+ requests==2.32.3
214
+ rerun-sdk==0.17.0
215
+ resource_retriever==1.12.7
216
+ rich==13.7.1
217
+ ros-numpy==0.0.5
218
+ rosbag==1.16.0
219
+ rosboost-cfg==1.15.8
220
+ rosclean==1.15.8
221
+ roscpp==1.15.11
222
+ roscreate==1.15.8
223
+ rosgraph-msgs==1.11.3.post2
224
+ rosgraph==1.15.11
225
+ rosgraph==1.16.0
226
+ roslaunch==1.16.0
227
+ roslib==1.14.7.post0
228
+ roslib==1.15.8
229
+ roslint==0.12.0
230
+ roslz4==1.16.0
231
+ rosmake==1.15.8
232
+ rosmaster==1.16.0
233
+ rosmsg==1.16.0
234
+ rosnode==1.16.0
235
+ rosparam==1.16.0
236
+ rospkg==1.5.1
237
+ rospy==1.15.11
238
+ rospy==1.16.0
239
+ rosservice==1.16.0
240
+ rostest==1.16.0
241
+ rostopic==1.16.0
242
+ rosunit==1.15.8
243
+ roswtf==1.16.0
244
+ rpds-py==0.19.1
245
+ rqt-console==0.4.12
246
+ rqt-image-view==0.4.17
247
+ rqt-logger-level==0.4.12
248
+ rqt-moveit==0.5.11
249
+ rqt-reconfigure==0.5.5
250
+ rqt-robot-dashboard==0.5.8
251
+ rqt-robot-monitor==0.5.15
252
+ rqt-runtime-monitor==0.5.10
253
+ rqt-rviz==0.7.0
254
+ rqt-tf-tree==0.6.4
255
+ rqt_action==0.4.9
256
+ rqt_bag==0.5.1
257
+ rqt_bag_plugins==0.5.1
258
+ rqt_dep==0.4.12
259
+ rqt_graph==0.4.14
260
+ rqt_gui==0.5.3
261
+ rqt_gui_py==0.5.3
262
+ rqt_launch==0.4.9
263
+ rqt_msg==0.4.10
264
+ rqt_nav_view==0.5.7
265
+ rqt_plot==0.4.13
266
+ rqt_pose_view==0.5.11
267
+ rqt_publisher==0.4.10
268
+ rqt_py_common==0.5.3
269
+ rqt_py_console==0.4.10
270
+ rqt_robot_steering==0.5.12
271
+ rqt_service_caller==0.4.10
272
+ rqt_shell==0.4.11
273
+ rqt_srv==0.4.9
274
+ rqt_top==0.4.10
275
+ rqt_topic==0.4.13
276
+ rqt_web==0.4.10
277
+ rsa==4.9
278
+ ruff==0.5.4
279
+ rviz==1.14.25
280
+ safetensors==0.4.3
281
+ scikit-image==0.24.0
282
+ scikit-video==1.1.11
283
+ scipy==1.14.0
284
+ seaborn==0.13.2
285
+ sensor-msgs==1.13.1
286
+ sentry-sdk==2.11.0
287
+ setproctitle==1.3.3
288
+ setuptools==65.5.0
289
+ shapely==2.0.5
290
+ signature_dispatch==1.0.1
291
+ six==1.16.0
292
+ smach-ros==2.5.2
293
+ smach==2.5.2
294
+ smclib==1.8.6
295
+ smmap==5.0.1
296
+ sniffio==1.3.1
297
+ soupsieve==2.5
298
+ std-msgs==0.5.13.post0
299
+ submitit==1.5.1
300
+ svg.path==6.3
301
+ sympy==1.13.1
302
+ tensorboard-data-server==0.7.2
303
+ tensorboard==2.14.0
304
+ termcolor==2.4.0
305
+ tf-conversions==1.13.2
306
+ tf2-geometry-msgs==0.7.7
307
+ tf2-kdl==0.7.7
308
+ tf2-msgs==0.7.2.post3
309
+ tf2-py==0.7.7
310
+ tf2-ros==0.6.5
311
+ tf2-ros==0.7.7
312
+ tf2_py==0.6.5.post1
313
+ tf==1.13.2
314
+ tifffile==2024.7.24
315
+ tomli==2.0.1
316
+ topic-tools==1.16.0
317
+ torch==2.4.0
318
+ torchaug==0.5.2
319
+ torchmetrics==1.4.0.post0
320
+ torchvision==0.19.0
321
+ tqdm==4.66.4
322
+ trimesh==4.4.3
323
+ triton==3.0.0
324
+ typeguard==3.0.2
325
+ typing_extensions==4.12.2
326
+ tzdata==2024.1
327
+ urchin==0.0.27
328
+ urllib3==2.2.2
329
+ vecrec==0.3.1
330
+ vhacdx==0.0.8.post1
331
+ wandb==0.17.5
332
+ wheel==0.43.0
333
+ xacro==1.14.18
334
+ xatlas==0.0.9
335
+ xxhash==3.4.1
336
+ yarl==1.9.4
337
+ zarr==2.18.2
338
+ zipp==3.19.2
339
+ zstandard==0.23.0
212506/wandb/run-20241229_212512-oco0rjll/files/wandb-metadata.json ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "os": "Linux-5.15.0-125-generic-x86_64-with-glibc2.31",
3
+ "python": "3.10.14",
4
+ "heartbeatAt": "2024-12-30T02:25:13.109189",
5
+ "startedAt": "2024-12-30T02:25:12.622611",
6
+ "docker": null,
7
+ "cuda": null,
8
+ "args": [
9
+ "agent=diffusion",
10
+ "suite=frankagym",
11
+ "suite/frankagym_task@_global_=insertion"
12
+ ],
13
+ "state": "running",
14
+ "program": "/home/leonmkim/fish_leon/FISH/eval_robot.py",
15
+ "codePathLocal": null,
16
+ "codePath": "FISH/eval_robot.py",
17
+ "git": {
18
+ "remote": "https://github.com/leonmkim/fish_leon.git",
19
+ "commit": "23581857e509febdae7f0ac45cc9cf4f9081f85c"
20
+ },
21
+ "email": "leonmkim@seas.upenn.edu",
22
+ "root": "/home/leonmkim/fish_leon",
23
+ "host": "leonmkim-ROG-Strix-G15CS-G15CS",
24
+ "username": "leonmkim",
25
+ "executable": "/home/leonmkim/.pyenv/versions/lerobot/bin/python",
26
+ "cpu_count": 8,
27
+ "cpu_count_logical": 8,
28
+ "cpu_freq": {
29
+ "current": 3762.1391249999997,
30
+ "min": 800.0,
31
+ "max": 4700.0
32
+ },
33
+ "cpu_freq_per_core": [
34
+ {
35
+ "current": 3000.0,
36
+ "min": 800.0,
37
+ "max": 4700.0
38
+ },
39
+ {
40
+ "current": 3000.0,
41
+ "min": 800.0,
42
+ "max": 4700.0
43
+ },
44
+ {
45
+ "current": 3000.0,
46
+ "min": 800.0,
47
+ "max": 4700.0
48
+ },
49
+ {
50
+ "current": 4520.366,
51
+ "min": 800.0,
52
+ "max": 4700.0
53
+ },
54
+ {
55
+ "current": 3000.0,
56
+ "min": 800.0,
57
+ "max": 4700.0
58
+ },
59
+ {
60
+ "current": 4546.057,
61
+ "min": 800.0,
62
+ "max": 4700.0
63
+ },
64
+ {
65
+ "current": 3000.0,
66
+ "min": 800.0,
67
+ "max": 4700.0
68
+ },
69
+ {
70
+ "current": 3000.0,
71
+ "min": 800.0,
72
+ "max": 4700.0
73
+ }
74
+ ],
75
+ "disk": {
76
+ "/": {
77
+ "total": 915.3232879638672,
78
+ "used": 477.0821304321289
79
+ }
80
+ },
81
+ "gpu": "NVIDIA GeForce RTX 2070 SUPER",
82
+ "gpu_count": 1,
83
+ "gpu_devices": [
84
+ {
85
+ "name": "NVIDIA GeForce RTX 2070 SUPER",
86
+ "memory_total": 8589934592
87
+ }
88
+ ],
89
+ "memory": {
90
+ "total": 62.71595764160156
91
+ }
92
+ }
212506/wandb/run-20241229_212512-oco0rjll/files/wandb-summary.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"eval/0_eval": {"_type": "video-file", "sha256": "7f4ade8f7a09940de9a392152321c741514d0b2b83b953d2bc85b2587d34b370", "size": 1160403, "path": "media/videos/eval/0_eval_0_7f4ade8f7a09940de9a3.mp4"}, "global_step": 664, "_timestamp": 1735525754.6580799, "_runtime": 242.02804493904114, "_step": 9, "eval/1_eval": {"_type": "video-file", "sha256": "df2b523b5c69376abbb661917fe8d60d3ad79f771878de2226ab5c89077a3630", "size": 1160649, "path": "media/videos/eval/1_eval_1_df2b523b5c69376abbb6.mp4"}, "eval/num_success": 5.0, "episode": 5.0, "eval/success_rate": 1.0, "eval/2_eval": {"_type": "video-file", "sha256": "56287c330ba45a21ceae2f5ada5b8060ed510846ec2d5a3b90730f83caff3226", "size": 1157924, "path": "media/videos/eval/2_eval_2_56287c330ba45a21ceae.mp4"}, "eval/3_eval": {"_type": "video-file", "sha256": "d9096d3d3b1128c5f3af34fcf97e720fde5df69b1403591cedf85594195eab69", "size": 1175711, "path": "media/videos/eval/3_eval_3_d9096d3d3b1128c5f3af.mp4"}, "eval/4_eval": {"_type": "video-file", "sha256": "277cb7c2f38e9f60cb6a1957cbae5c162329b3ce1d0991b1503aabd5e0830c0b", "size": 1163227, "path": "media/videos/eval/4_eval_4_277cb7c2f38e9f60cb6a.mp4"}, "_wandb": {"runtime": 241}}
212506/wandb/run-20241229_212512-oco0rjll/logs/debug-internal.log ADDED
The diff for this file is too large to render. See raw diff
 
212506/wandb/run-20241229_212512-oco0rjll/logs/debug.log ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2024-12-29 21:25:12,623 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Current SDK version is 0.17.5
2
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Configure stats pid to 1360290
3
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/.config/wandb/settings
4
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506/wandb/settings
5
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Loading settings from environment variables: {}
6
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Applying setup settings: {'_disable_service': False}
7
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Inferring run settings from compute environment: {'program_relpath': 'FISH/eval_robot.py', 'program_abspath': '/home/leonmkim/fish_leon/FISH/eval_robot.py', 'program': '/home/leonmkim/fish_leon/FISH/eval_robot.py'}
8
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_setup.py:_flush():76] Applying login settings: {}
9
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:_log_setup():529] Logging user logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506/wandb/run-20241229_212512-oco0rjll/logs/debug.log
10
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:_log_setup():530] Logging internal logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506/wandb/run-20241229_212512-oco0rjll/logs/debug-internal.log
11
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:init():569] calling init triggers
12
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:init():576] wandb.init called with sweep_config: {}
13
+ config: {'root_dir': '/home/leonmkim/fish_leon', 'replay_buffer_size': 150000, 'replay_buffer_num_workers': 2, 'nstep': 3, 'batch_size': 128, 'seed': 0, 'dataset_shuffle_seed': 0, 'device': 'cuda', 'save_video': True, 'save_train_video': True, 'use_tb': True, 'use_wandb': True, 'wandb_run_id': '1000_0', 'wandb_notes': '1000_0_req_1351_0restarted_2', 'eval': True, 'true_action_history': False, 'train_pad_after': 4, 'process_contact_features': True, 'obs_type': 'pixels', 'use_color': True, 'use_depth': True, 'use_masks': True, 'mask_list': ['EE_obj_mask'], 'mask_representation': 'channels', 'crop_hw': [144, 144], 'crop_down_offset': 48, 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'add_crop_binary_mask': False, 'add_coord_conv_map': False, 'use_context_color': False, 'use_context_depth': False, 'use_context_segmask': False, 'context_color_crop_type': None, 'context_depth_crop_type': None, 'context_segmask_crop_type': None, 'context_add_crop_binary_mask': False, 'context_add_coord_conv_map': False, 'use_contact_map': False, 'use_sdf_maps': False, 'use_normals_maps': False, 'which_objects': 'both', 'max_contact_prob': 0.1, 'max_depth': 2.0, 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'dtc_adaptive_normalization': False, 'mask_normals_within_sdf': True, 'adaptive_normals_mask': True, 'learnable_contact_preprocess_params': True, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'contact_estimation_model_ckpt_path': '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt', 'encoder_type': 'small', 'debug_timestamps': False, 'open_loop': False, 'action_trajectories': True, 'stop_after_action': False, 'interpolation_frequency': 25, 'policy_frequency': 5, 'wait_for_new_camera_frames': True, 'baseline': False, 'train_demo_idxs_list_or_num': -1, 'log_train_every_steps': 25, 'name_of_expert_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'expert_dataset_dirpath': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'store_dataset_in_memory': False, 'expert_dataset': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'action_key': 'action_trajectory_25hz', 'semantic_demo_grouping_name': 'semantic_demo_grouping.yaml', 'semantic_demo_grouping': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/semantic_demo_grouping.yaml', 'include_groups_list': 'all', 'expert_dataset_config': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demo_config.yaml', 'name_of_valid_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'valid_dataset_dir': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'valid_demo_idxs_list_or_num': None, 'val_num_groups': 0, 'load_bc': True, 'checkpoint_epoch_list': [99, 199, 299, 399, 499, 599, 699, 799, 899, 999, 1249, 1499, 1749, 1999, 2999, 3999, 4999, 5999, 6999, 7999, 8999, 9999], 'snapshot_root_dir': '/mnt/grasp_high_usage/leonmkim/contact_estimation/FISH', 'save_snapshot': True, 'save_last_snapshot': True, 'save_snapshot_when_done': True, 'top_k_checkpoints': 5, 'save_snapshot_link_to_weights_dir': 'deprecated', 'bc_regularize': False, 'bc_weight_type': 'qfilter', 'experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0', 'agent': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgent', 'name': 'diffusion_policy', 'load_checkpoint': True, 'device': 'cuda', 'n_obs_steps': 1, 'suite_name': 'frankagym', 'obs_type': 'pixels', 'enable_arm': True, 'enable_camera': True, 'use_tb': True, 'desired_image_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'config': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgentConfig', 'compile': False, 'device': 'cuda', 'cam_resize_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'policy_frequency': 5, 'interpolation_frequency': 25, 'policy_cfg': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig', 'n_obs_steps': 1, 'horizon': 36, 'n_action_steps': 36, 'output_shapes': {'action': [7]}, 'input_normalization_modes': {'observation.image': 'mean_std', 'observation.state': 'min_max', 'observation.action_history': 'min_max'}, 'output_normalization_modes': {'action': 'min_max'}, 'vision_backbone': 'resnet18', 'pretrained_backbone_weights': None, 'transforms': [{'_target_': 'torchaug.transforms.RandomAffine', 'degrees': [-5, 5], 'translate': [0.05, 0.05], 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}, {'_target_': 'torchaug.transforms.RandomColorJitter', 'brightness': 0.3, 'contrast': 0.4, 'saturation': 0.5, 'hue': 0.08, 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}], 'use_group_norm': True, 'spatial_softmax_num_keypoints': 32, 'action_history_encoder_config': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig', 'in_channels': 7, 'out_channels': 32, 'history_length': 6, 'kernel_size': 5, 'downsample_kernel_size': 3, 'downsample_stride': 2, 'downsample_padding': 1}, 'down_dims': [256, 512, 1024], 'kernel_size': 5, 'n_groups': 8, 'diffusion_step_embed_dim': 128, 'use_film_scale_modulation': True, 'noise_scheduler_type': 'DDIM', 'beta_schedule': 'squaredcos_cap_v2', 'beta_start': 0.0001, 'beta_end': 0.02, 'prediction_type': 'epsilon', 'clip_sample': True, 'clip_sample_range': 1.0, 'num_train_timesteps': 50, 'num_inference_steps': 10, 'do_mask_loss_for_padding': False, 'input_shapes': {'observation.image': [13, 180, 240], 'context_observation.image': [13, 180, 240], 'observation.state': [8], 'observation.action_history': [7]}}, 'train_cfg': {'_target_': 'utils.TrainConfig', 'lr': 0.0001, 'lr_scheduler': 'cosine', 'lr_warmup_steps': 500, 'adam_betas': [0.95, 0.999], 'adam_eps': 1e-08, 'adam_weight_decay': 1e-06, 'grad_clip_norm': 10, 'offline_steps': 1000000, 'use_amp': True}, 'observation_cfg': {'_target_': 'agent.encoder.VisualFeatureSet', 'use_depth': True, 'use_color': True, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': False, 'use_sdf_maps': False, 'use_normals_maps': False, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False}}}, 'suite': {'suite': 'frankagym', 'name': 'frankagym', 'frame_stack': 1, 'action_repeat': 1, 'discount': 0.99, 'hidden_dim': 1024, 'num_train_frames': 2010, 'num_seed_frames': 260, 'num_train_epochs': 5000, 'validate_every_epochs': 100, 'validate_diffusion_on_action_loss_every_epochs': 500, 'train_eval_diffusion_on_action_loss_every_epochs': 500, 'check_topk_every_epochs': 10, 'save_snapshot_every_epochs': 5000, 'eval_every_frames': 2000, 'num_eval_episodes': 5, 'save_snapshot': True, 'wait_for_user_to_start_episode': True, 'task_make_fn': {'_target_': 'suite.frankagym.make', 'name': 'FrankaInsertion-v1', 'height': 240, 'width': 320, 'frame_stack': 1, 'action_repeat': 1, 'seed': 0, 'enable_arm': True, 'enable_gripper': True, 'start_with_gripper_open': True, 'enable_camera': True, 'path_to_depth_extrinsics': '~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy', 'contact_estimation_model_ckpt_path': '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt', 'x_limit': [0.2, 0.7], 'y_limit': [-0.4, 0.4], 'z_limit': [-0.05, 0.55], 'device': 'cuda', 'interpolation_frequency': 25, 'policy_frequency': 5, 'debug_timestamps': False, 'stop_after_action': False, 'open_loop': False, 'wait_for_new_camera_frames': True, 'action_key': 'action_trajectory_25hz', 'action_trajectory_horizon': 36, 'action_trajectories': True, 'path_to_zarr_dataset': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'agent_policy_cfg': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgentConfig', 'compile': False, 'device': 'cuda', 'cam_resize_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'policy_frequency': 5, 'interpolation_frequency': 25, 'policy_cfg': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig', 'n_obs_steps': 1, 'horizon': 36, 'n_action_steps': 36, 'output_shapes': {'action': [7]}, 'input_normalization_modes': {'observation.image': 'mean_std', 'observation.state': 'min_max', 'observation.action_history': 'min_max'}, 'output_normalization_modes': {'action': 'min_max'}, 'vision_backbone': 'resnet18', 'pretrained_backbone_weights': None, 'transforms': [{'_target_': 'torchaug.transforms.RandomAffine', 'degrees': [-5, 5], 'translate': [0.05, 0.05], 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}, {'_target_': 'torchaug.transforms.RandomColorJitter', 'brightness': 0.3, 'contrast': 0.4, 'saturation': 0.5, 'hue': 0.08, 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}], 'use_group_norm': True, 'spatial_softmax_num_keypoints': 32, 'action_history_encoder_config': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig', 'in_channels': 7, 'out_channels': 32, 'history_length': 6, 'kernel_size': 5, 'downsample_kernel_size': 3, 'downsample_stride': 2, 'downsample_padding': 1}, 'down_dims': [256, 512, 1024], 'kernel_size': 5, 'n_groups': 8, 'diffusion_step_embed_dim': 128, 'use_film_scale_modulation': True, 'noise_scheduler_type': 'DDIM', 'beta_schedule': 'squaredcos_cap_v2', 'beta_start': 0.0001, 'beta_end': 0.02, 'prediction_type': 'epsilon', 'clip_sample': True, 'clip_sample_range': 1.0, 'num_train_timesteps': 50, 'num_inference_steps': 10, 'do_mask_loss_for_padding': False, 'input_shapes': {'observation.image': [13, 180, 240], 'context_observation.image': [13, 180, 240], 'observation.state': [8], 'observation.action_history': [7]}}, 'train_cfg': {'_target_': 'utils.TrainConfig', 'lr': 0.0001, 'lr_scheduler': 'cosine', 'lr_warmup_steps': 500, 'adam_betas': [0.95, 0.999], 'adam_eps': 1e-08, 'adam_weight_decay': 1e-06, 'grad_clip_norm': 10, 'offline_steps': 1000000, 'use_amp': True}, 'observation_cfg': {'_target_': 'agent.encoder.VisualFeatureSet', 'use_depth': True, 'use_color': True, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': False, 'use_sdf_maps': False, 'use_normals_maps': False, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False}}, 'true_action_history': False}}, 'num_train_frames_bc': 50000, 'num_train_frames_drq': 1100000, 'stddev_schedule_drq': 'linear(1.0,0.1,100000)', 'task_name': 'FrankaInsertion-v1', 'num_train_frames_vinn': 25000, 'num_train_frames_diffusion': 1000000, 'num_train_epochs_bc': 5000, 'num_train_epochs_diffusion': 15000, 'validate_every_epochs_bc': 5, 'validate_every_epochs_diffusion': 250, 'validate_diffusion_on_action_loss_every_epochs': 250, 'train_eval_diffusion_on_action_loss_every_epochs': 250, 'check_topk_every_epochs': 5, 'check_topk_every_epochs_diffusion': 250, 'save_snapshot_every_epochs_diffusion': 1500, 'x_limit': [0.2, 0.7], 'y_limit': [-0.4, 0.4], 'z_limit': [-0.05, 0.55], 'home_displacement': [0.55, 0.0, 0.55, 180.0, 0.0, 0.0], 'enable_gripper': True, 'start_with_gripper_open': True, 'offset_mask': [1, 1, 1, 1, 1, 1], 'path_to_depth_extrinsics': '~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy', 'feature_type': '180x240_1_RGB_D_2.0_msk_channels_EE_obj_mask_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1', 'save_buffer': True, 'num_eval': 5, 'random_start': False, 'eval_starts': '/home/leonmkim/fish_leon/FISH/eval_starts/frankagym_pixels/FrankaInsertion-v1', 'num_valid_demos': None, 'load_checkpoint': True, 'checkpoint_epoch': 12000, 'load_residual_weight': False, 'checkpoint_root_dir': '/home/leonmkim/fish_leon/FISH', 'checkpoint_weight_dir': '/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0', 'residual_weight': '/home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt', 'final_experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506'}
14
+ 2024-12-29 21:25:12,624 INFO MainThread:1360290 [wandb_init.py:init():619] starting backend
15
+ 2024-12-29 21:25:12,625 INFO MainThread:1360290 [wandb_init.py:init():623] setting up manager
16
+ 2024-12-29 21:25:12,628 INFO MainThread:1360290 [backend.py:_multiprocessing_setup():105] multiprocessing start_methods=fork,spawn,forkserver, using: spawn
17
+ 2024-12-29 21:25:12,629 INFO MainThread:1360290 [wandb_init.py:init():631] backend started and connected
18
+ 2024-12-29 21:25:12,640 INFO MainThread:1360290 [wandb_init.py:init():720] updated telemetry
19
+ 2024-12-29 21:25:12,649 INFO MainThread:1360290 [wandb_init.py:init():753] communicating run to backend with 90.0 second timeout
20
+ 2024-12-29 21:25:13,005 INFO MainThread:1360290 [wandb_run.py:_on_init():2435] communicating current version
21
+ 2024-12-29 21:25:13,082 INFO MainThread:1360290 [wandb_run.py:_on_init():2444] got version response upgrade_message: "wandb version 0.19.1 is available! To upgrade, please run:\n $ pip install wandb --upgrade"
22
+
23
+ 2024-12-29 21:25:13,082 INFO MainThread:1360290 [wandb_init.py:init():804] starting run threads in backend
24
+ 2024-12-29 21:25:13,419 INFO MainThread:1360290 [wandb_run.py:_console_start():2413] atexit reg
25
+ 2024-12-29 21:25:13,419 INFO MainThread:1360290 [wandb_run.py:_redirect():2255] redirect: wrap_raw
26
+ 2024-12-29 21:25:13,419 INFO MainThread:1360290 [wandb_run.py:_redirect():2320] Wrapping output streams.
27
+ 2024-12-29 21:25:13,420 INFO MainThread:1360290 [wandb_run.py:_redirect():2345] Redirects installed.
28
+ 2024-12-29 21:25:13,421 INFO MainThread:1360290 [wandb_init.py:init():847] run started, returning control to user process
29
+ 2024-12-29 21:25:13,422 INFO MainThread:1360290 [wandb_run.py:_tensorboard_callback():1544] tensorboard callback: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1000_0/212506/tb, True
30
+ 2024-12-29 21:25:17,662 INFO MainThread:1360290 [wandb_run.py:_config_callback():1382] config_cb None None {'grasped_obj_name': 'greece', 'left_book_slot': 'twodim'}
31
+ 2024-12-29 21:29:26,788 WARNING MsgRouterThr:1360290 [router.py:message_loop():77] message_loop has been closed
212506/wandb/run-20241229_212512-oco0rjll/run-oco0rjll.wandb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d4e7d87f4a9a568f42e21166a49e77e36045dcf45ec0536bedcb54c292ec1daa
3
+ size 282015
config.yaml ADDED
@@ -0,0 +1,546 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /mnt/kostas-graid/datasets/extrinsic_contact_data
2
+ replay_buffer_size: 150000
3
+ replay_buffer_num_workers: 2
4
+ nstep: 3
5
+ batch_size: 128
6
+ seed: 0
7
+ dataset_shuffle_seed: 0
8
+ device: cuda
9
+ save_video: true
10
+ save_train_video: true
11
+ use_tb: true
12
+ use_wandb: true
13
+ wandb_run_id: '1000_0'
14
+ wandb_notes: 1000_0_req_1351_0restarted_2
15
+ eval: false
16
+ true_action_history: false
17
+ train_pad_after: 4
18
+ process_contact_features: ${eval}
19
+ obs_type: pixels
20
+ use_color: true
21
+ use_depth: true
22
+ use_masks: true
23
+ mask_list:
24
+ - EE_obj_mask
25
+ mask_representation: channels
26
+ crop_hw:
27
+ - 144
28
+ - 144
29
+ crop_down_offset: 48
30
+ color_crop_type: null
31
+ depth_crop_type: null
32
+ segmask_crop_type: null
33
+ add_crop_binary_mask: false
34
+ add_coord_conv_map: false
35
+ use_context_color: false
36
+ use_context_depth: false
37
+ use_context_segmask: false
38
+ context_color_crop_type: null
39
+ context_depth_crop_type: null
40
+ context_segmask_crop_type: null
41
+ context_add_crop_binary_mask: false
42
+ context_add_coord_conv_map: false
43
+ use_contact_map: false
44
+ use_sdf_maps: false
45
+ use_normals_maps: false
46
+ which_objects: both
47
+ max_contact_prob: 0.1
48
+ max_depth: 2.0
49
+ grasped_dtc_max_value: 0.2
50
+ env_dtc_max_value: 0.4
51
+ grasped_normals_mask_max_dtc_value: 0.2
52
+ env_normals_mask_max_dtc_value: 0.4
53
+ clamp_dtc: true
54
+ dtc_adaptive_normalization: false
55
+ mask_normals_within_sdf: true
56
+ adaptive_normals_mask: true
57
+ learnable_contact_preprocess_params: true
58
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
59
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
60
+ encoder_type: small
61
+ debug_timestamps: false
62
+ open_loop: false
63
+ action_trajectories: true
64
+ stop_after_action: false
65
+ interpolation_frequency: 25
66
+ policy_frequency: 5
67
+ wait_for_new_camera_frames: true
68
+ baseline: false
69
+ train_demo_idxs_list_or_num: -1
70
+ log_train_every_steps: 25
71
+ name_of_expert_demo: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
72
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
73
+ store_dataset_in_memory: false
74
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
75
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
76
+ 'action'}
77
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
78
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
79
+ include_groups_list: all
80
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
81
+ name_of_valid_demo: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
82
+ valid_dataset_dir: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_valid_demo}/demos.zarr
83
+ valid_demo_idxs_list_or_num: null
84
+ val_num_groups: 0
85
+ load_bc: ${agent.load_checkpoint}
86
+ checkpoint_epoch_list:
87
+ - 99
88
+ - 199
89
+ - 299
90
+ - 399
91
+ - 499
92
+ - 599
93
+ - 699
94
+ - 799
95
+ - 899
96
+ - 999
97
+ - 1249
98
+ - 1499
99
+ - 1749
100
+ - 1999
101
+ - 2999
102
+ - 3999
103
+ - 4999
104
+ - 5999
105
+ - 6999
106
+ - 7999
107
+ - 8999
108
+ - 9999
109
+ snapshot_root_dir: /mnt/grasp_high_usage/leonmkim/contact_estimation/FISH
110
+ save_snapshot: true
111
+ save_last_snapshot: true
112
+ save_snapshot_when_done: true
113
+ top_k_checkpoints: 5
114
+ save_snapshot_link_to_weights_dir: deprecated
115
+ bc_regularize: false
116
+ bc_weight_type: qfilter
117
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
118
+ agent:
119
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
120
+ name: diffusion_policy
121
+ load_checkpoint: ${eval}
122
+ device: ${device}
123
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
124
+ suite_name: ${suite.name}
125
+ obs_type: ${obs_type}
126
+ enable_arm: ${eval}
127
+ enable_camera: ${eval}
128
+ use_tb: ${use_tb}
129
+ desired_image_shape:
130
+ - 13
131
+ - 180
132
+ - 240
133
+ orig_cam_shape:
134
+ - 3
135
+ - 240
136
+ - 320
137
+ config:
138
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
139
+ compile: false
140
+ device: ${device}
141
+ cam_resize_shape: ${agent.desired_image_shape}
142
+ orig_cam_shape: ${agent.orig_cam_shape}
143
+ policy_frequency: ${policy_frequency}
144
+ interpolation_frequency: ${interpolation_frequency}
145
+ policy_cfg:
146
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
147
+ n_obs_steps: 1
148
+ horizon: 36
149
+ n_action_steps: ${agent.config.policy_cfg.horizon}
150
+ output_shapes:
151
+ action:
152
+ - 7
153
+ input_normalization_modes:
154
+ observation.image: mean_std
155
+ observation.state: min_max
156
+ observation.action_history: min_max
157
+ output_normalization_modes:
158
+ action: min_max
159
+ vision_backbone: resnet18
160
+ pretrained_backbone_weights: null
161
+ transforms:
162
+ - _target_: torchaug.transforms.RandomAffine
163
+ degrees:
164
+ - -5
165
+ - 5
166
+ translate:
167
+ - 0.05
168
+ - 0.05
169
+ batch_transform: true
170
+ num_chunks: -1
171
+ batch_inplace: true
172
+ - _target_: torchaug.transforms.RandomColorJitter
173
+ brightness: 0.3
174
+ contrast: 0.4
175
+ saturation: 0.5
176
+ hue: 0.08
177
+ batch_transform: true
178
+ num_chunks: -1
179
+ batch_inplace: true
180
+ use_group_norm: true
181
+ spatial_softmax_num_keypoints: 32
182
+ action_history_encoder_config:
183
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
184
+ in_channels: 7
185
+ out_channels: 32
186
+ history_length: 6
187
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
188
+ downsample_kernel_size: 3
189
+ downsample_stride: 2
190
+ downsample_padding: 1
191
+ down_dims:
192
+ - 256
193
+ - 512
194
+ - 1024
195
+ kernel_size: 5
196
+ n_groups: 8
197
+ diffusion_step_embed_dim: 128
198
+ use_film_scale_modulation: true
199
+ noise_scheduler_type: DDIM
200
+ beta_schedule: squaredcos_cap_v2
201
+ beta_start: 0.0001
202
+ beta_end: 0.02
203
+ prediction_type: epsilon
204
+ clip_sample: true
205
+ clip_sample_range: 1.0
206
+ num_train_timesteps: 50
207
+ num_inference_steps: 10
208
+ do_mask_loss_for_padding: false
209
+ input_shapes:
210
+ observation.image:
211
+ - 13
212
+ - 180
213
+ - 240
214
+ context_observation.image:
215
+ - 13
216
+ - 180
217
+ - 240
218
+ observation.state:
219
+ - 8
220
+ observation.action_history:
221
+ - 7
222
+ train_cfg:
223
+ _target_: utils.TrainConfig
224
+ lr: 0.0001
225
+ lr_scheduler: cosine
226
+ lr_warmup_steps: 500
227
+ adam_betas:
228
+ - 0.95
229
+ - 0.999
230
+ adam_eps: 1.0e-08
231
+ adam_weight_decay: 1.0e-06
232
+ grad_clip_norm: 10
233
+ offline_steps: ${num_train_frames_diffusion}
234
+ use_amp: true
235
+ observation_cfg:
236
+ _target_: agent.encoder.VisualFeatureSet
237
+ use_depth: ${use_depth}
238
+ use_color: ${use_color}
239
+ mask_input_dict:
240
+ _target_: agent.encoder.MaskInputDict
241
+ enable: ${use_masks}
242
+ representation: ${mask_representation}
243
+ mask_list: ${mask_list}
244
+ crop_input_config:
245
+ _target_: agent.encoder.CropInputConfig
246
+ color_crop_type: ${color_crop_type}
247
+ depth_crop_type: ${depth_crop_type}
248
+ segmask_crop_type: ${segmask_crop_type}
249
+ crop_hw: ${crop_hw}
250
+ crop_down_offset: ${crop_down_offset}
251
+ add_crop_binary_mask: ${add_crop_binary_mask}
252
+ add_coord_conv_map: ${add_coord_conv_map}
253
+ context_input_config:
254
+ _target_: agent.encoder.ContextInputConfig
255
+ use_color: ${use_context_color}
256
+ use_depth: ${use_context_depth}
257
+ mask_input_dict:
258
+ _target_: agent.encoder.MaskInputDict
259
+ enable: ${use_context_segmask}
260
+ representation: ${mask_representation}
261
+ mask_list: ${mask_list}
262
+ crop_input_config:
263
+ _target_: agent.encoder.CropInputConfig
264
+ color_crop_type: ${context_color_crop_type}
265
+ depth_crop_type: ${context_depth_crop_type}
266
+ segmask_crop_type: ${context_segmask_crop_type}
267
+ crop_hw: ${crop_hw}
268
+ crop_down_offset: ${crop_down_offset}
269
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
270
+ add_coord_conv_map: ${context_add_coord_conv_map}
271
+ mask_soft_approx_scheduler_config:
272
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
273
+ num_steps: 40000
274
+ initial_value: 10.0
275
+ final_value: 1000.0
276
+ interpolation_scheme: cosine
277
+ use_contact_map: ${use_contact_map}
278
+ use_sdf_maps: ${use_sdf_maps}
279
+ use_normals_maps: ${use_normals_maps}
280
+ which_objects: ${which_objects}
281
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
282
+ env_dtc_max_value: ${env_dtc_max_value}
283
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
284
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
285
+ clamp_dtc: ${clamp_dtc}
286
+ max_contact_prob: ${max_contact_prob}
287
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
288
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
289
+ adaptive_normals_mask: ${adaptive_normals_mask}
290
+ max_depth: ${max_depth}
291
+ image_shape: ${agent.desired_image_shape}
292
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
293
+ learning_rate: 0.0001
294
+ weight_decay: 0.0
295
+ contact_model_name: ${contact_model_name}
296
+ zero_centered: false
297
+ suite:
298
+ suite: frankagym
299
+ name: frankagym
300
+ frame_stack: ${agent.n_obs_steps}
301
+ action_repeat: 1
302
+ discount: 0.99
303
+ hidden_dim: 1024
304
+ num_train_frames: 1000000
305
+ num_seed_frames: 0
306
+ num_train_epochs: 15000
307
+ validate_every_epochs: 250
308
+ validate_diffusion_on_action_loss_every_epochs: 250
309
+ train_eval_diffusion_on_action_loss_every_epochs: 250
310
+ check_topk_every_epochs: 250
311
+ save_snapshot_every_epochs: 1500
312
+ eval_every_frames: 2000
313
+ num_eval_episodes: 5
314
+ save_snapshot: true
315
+ wait_for_user_to_start_episode: true
316
+ task_make_fn:
317
+ _target_: suite.frankagym.make
318
+ name: ${task_name}
319
+ height: 240
320
+ width: 320
321
+ frame_stack: ${suite.frame_stack}
322
+ action_repeat: ${suite.action_repeat}
323
+ seed: ${seed}
324
+ enable_arm: ${agent.enable_arm}
325
+ enable_gripper: ${enable_gripper}
326
+ start_with_gripper_open: ${start_with_gripper_open}
327
+ enable_camera: ${agent.enable_camera}
328
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
329
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
330
+ x_limit: ${x_limit}
331
+ y_limit: ${y_limit}
332
+ z_limit: ${z_limit}
333
+ device: ${device}
334
+ interpolation_frequency: ${interpolation_frequency}
335
+ policy_frequency: ${policy_frequency}
336
+ debug_timestamps: ${debug_timestamps}
337
+ stop_after_action: ${stop_after_action}
338
+ open_loop: ${open_loop}
339
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
340
+ action_key: ${action_key}
341
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
342
+ action_trajectories: ${action_trajectories}
343
+ path_to_zarr_dataset: ${expert_dataset}
344
+ agent_policy_cfg:
345
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
346
+ compile: false
347
+ device: ${device}
348
+ cam_resize_shape: ${agent.desired_image_shape}
349
+ orig_cam_shape: ${agent.orig_cam_shape}
350
+ policy_frequency: ${policy_frequency}
351
+ interpolation_frequency: ${interpolation_frequency}
352
+ policy_cfg:
353
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
354
+ n_obs_steps: 1
355
+ horizon: 36
356
+ n_action_steps: ${agent.config.policy_cfg.horizon}
357
+ output_shapes:
358
+ action:
359
+ - 7
360
+ input_normalization_modes:
361
+ observation.image: mean_std
362
+ observation.state: min_max
363
+ observation.action_history: min_max
364
+ output_normalization_modes:
365
+ action: min_max
366
+ vision_backbone: resnet18
367
+ pretrained_backbone_weights: null
368
+ transforms:
369
+ - _target_: torchaug.transforms.RandomAffine
370
+ degrees:
371
+ - -5
372
+ - 5
373
+ translate:
374
+ - 0.05
375
+ - 0.05
376
+ batch_transform: true
377
+ num_chunks: -1
378
+ batch_inplace: true
379
+ - _target_: torchaug.transforms.RandomColorJitter
380
+ brightness: 0.3
381
+ contrast: 0.4
382
+ saturation: 0.5
383
+ hue: 0.08
384
+ batch_transform: true
385
+ num_chunks: -1
386
+ batch_inplace: true
387
+ use_group_norm: true
388
+ spatial_softmax_num_keypoints: 32
389
+ action_history_encoder_config:
390
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
391
+ in_channels: 7
392
+ out_channels: 32
393
+ history_length: 6
394
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
395
+ downsample_kernel_size: 3
396
+ downsample_stride: 2
397
+ downsample_padding: 1
398
+ down_dims:
399
+ - 256
400
+ - 512
401
+ - 1024
402
+ kernel_size: 5
403
+ n_groups: 8
404
+ diffusion_step_embed_dim: 128
405
+ use_film_scale_modulation: true
406
+ noise_scheduler_type: DDIM
407
+ beta_schedule: squaredcos_cap_v2
408
+ beta_start: 0.0001
409
+ beta_end: 0.02
410
+ prediction_type: epsilon
411
+ clip_sample: true
412
+ clip_sample_range: 1.0
413
+ num_train_timesteps: 50
414
+ num_inference_steps: 10
415
+ do_mask_loss_for_padding: false
416
+ input_shapes:
417
+ observation.image:
418
+ - 13
419
+ - 180
420
+ - 240
421
+ context_observation.image:
422
+ - 13
423
+ - 180
424
+ - 240
425
+ observation.state:
426
+ - 8
427
+ observation.action_history:
428
+ - 7
429
+ train_cfg:
430
+ _target_: utils.TrainConfig
431
+ lr: 0.0001
432
+ lr_scheduler: cosine
433
+ lr_warmup_steps: 500
434
+ adam_betas:
435
+ - 0.95
436
+ - 0.999
437
+ adam_eps: 1.0e-08
438
+ adam_weight_decay: 1.0e-06
439
+ grad_clip_norm: 10
440
+ offline_steps: ${num_train_frames_diffusion}
441
+ use_amp: true
442
+ observation_cfg:
443
+ _target_: agent.encoder.VisualFeatureSet
444
+ use_depth: ${use_depth}
445
+ use_color: ${use_color}
446
+ mask_input_dict:
447
+ _target_: agent.encoder.MaskInputDict
448
+ enable: ${use_masks}
449
+ representation: ${mask_representation}
450
+ mask_list: ${mask_list}
451
+ crop_input_config:
452
+ _target_: agent.encoder.CropInputConfig
453
+ color_crop_type: ${color_crop_type}
454
+ depth_crop_type: ${depth_crop_type}
455
+ segmask_crop_type: ${segmask_crop_type}
456
+ crop_hw: ${crop_hw}
457
+ crop_down_offset: ${crop_down_offset}
458
+ add_crop_binary_mask: ${add_crop_binary_mask}
459
+ add_coord_conv_map: ${add_coord_conv_map}
460
+ context_input_config:
461
+ _target_: agent.encoder.ContextInputConfig
462
+ use_color: ${use_context_color}
463
+ use_depth: ${use_context_depth}
464
+ mask_input_dict:
465
+ _target_: agent.encoder.MaskInputDict
466
+ enable: ${use_context_segmask}
467
+ representation: ${mask_representation}
468
+ mask_list: ${mask_list}
469
+ crop_input_config:
470
+ _target_: agent.encoder.CropInputConfig
471
+ color_crop_type: ${context_color_crop_type}
472
+ depth_crop_type: ${context_depth_crop_type}
473
+ segmask_crop_type: ${context_segmask_crop_type}
474
+ crop_hw: ${crop_hw}
475
+ crop_down_offset: ${crop_down_offset}
476
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
477
+ add_coord_conv_map: ${context_add_coord_conv_map}
478
+ mask_soft_approx_scheduler_config:
479
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
480
+ num_steps: 40000
481
+ initial_value: 10.0
482
+ final_value: 1000.0
483
+ interpolation_scheme: cosine
484
+ use_contact_map: ${use_contact_map}
485
+ use_sdf_maps: ${use_sdf_maps}
486
+ use_normals_maps: ${use_normals_maps}
487
+ which_objects: ${which_objects}
488
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
489
+ env_dtc_max_value: ${env_dtc_max_value}
490
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
491
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
492
+ clamp_dtc: ${clamp_dtc}
493
+ max_contact_prob: ${max_contact_prob}
494
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
495
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
496
+ adaptive_normals_mask: ${adaptive_normals_mask}
497
+ max_depth: ${max_depth}
498
+ image_shape: ${agent.desired_image_shape}
499
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
500
+ learning_rate: 0.0001
501
+ weight_decay: 0.0
502
+ contact_model_name: ${contact_model_name}
503
+ zero_centered: false
504
+ true_action_history: ${true_action_history}
505
+ num_train_frames_bc: 50000
506
+ num_train_frames_drq: 1100000
507
+ stddev_schedule_drq: linear(1.0,0.1,100000)
508
+ task_name: FrankaInsertion-v1
509
+ num_train_frames_vinn: 25000
510
+ num_train_frames_diffusion: 1000000
511
+ num_train_epochs_bc: 5000
512
+ num_train_epochs_diffusion: 15000
513
+ validate_every_epochs_bc: 5
514
+ validate_every_epochs_diffusion: 250
515
+ validate_diffusion_on_action_loss_every_epochs: 250
516
+ train_eval_diffusion_on_action_loss_every_epochs: 250
517
+ check_topk_every_epochs: 5
518
+ check_topk_every_epochs_diffusion: 250
519
+ save_snapshot_every_epochs_diffusion: 1500
520
+ x_limit:
521
+ - 0.2
522
+ - 0.7
523
+ y_limit:
524
+ - -0.4
525
+ - 0.4
526
+ z_limit:
527
+ - -0.05
528
+ - 0.55
529
+ home_displacement:
530
+ - 0.55
531
+ - 0.0
532
+ - 0.55
533
+ - 180.0
534
+ - 0.0
535
+ - 0.0
536
+ enable_gripper: true
537
+ start_with_gripper_open: true
538
+ offset_mask:
539
+ - 1
540
+ - 1
541
+ - 1
542
+ - 1
543
+ - 1
544
+ - 1
545
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
546
+ feature_type: 180x240_1_RGB_D_2.0_msk_channels_EE_obj_mask_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1
snapshot_10500.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fa0770fd2cb8be049f6611b019974aec2bb2b7fe7678d6bfe88ad1ee5447bef2
3
+ size 910102870
snapshot_10999.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:99ce2b49f4e0e75a57bda5210acc3afe0eb45c9b249d62cc0aa33a8283d4f6f4
3
+ size 910102870
snapshot_11249.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1a2a671f4894e792c623f385fe7f4e4778201617b83359bcaae21a3883f27016
3
+ size 910102870
snapshot_11499.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d11f1dfabe263e7b58fb9bf21b98c01be444fee75403a93b6d146df800381f7e
3
+ size 910102870
snapshot_11749.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8004793f91f54dad4864acbffa9fc265998e4ad1078a9a7827cda955ccfc7691
3
+ size 910102870
snapshot_11999.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2f19206e897f5aa706e4d0f28d12f8158642a42d05cc3ea4bc86c76aa389bc33
3
+ size 910102870
snapshot_12000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5bca6c2b52d9837b9cea05dfccae4c0e0f143a5972269755579163b7ad0c03e4
3
+ size 910102870
snapshot_12208.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d592fad964da8a0a6529d9502a2224c366bf237dda36e4e60116732b45ca2a6a
3
+ size 910102870