Robotics
LeRobot
Safetensors
imitation-learning
aloha
act
LeTau commited on
Commit
b3855d5
·
verified ·
1 Parent(s): ec1d5b2

Upload folder using huggingface_hub

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ 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
+ eval_episode_3.mp4 filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ library_name: lerobot
4
+ tags:
5
+ - robotics
6
+ - imitation-learning
7
+ - aloha
8
+ - act
9
+ - lerobot
10
+ datasets:
11
+ - lerobot/aloha_sim_insertion_human_image
12
+ pipeline_tag: robotics
13
+ ---
14
+
15
+ # ACT Model for ALOHA Insertion Task
16
+
17
+ A lightweight Action Chunking with Transformers (ACT) model trained on the ALOHA simulation Insertion task. This is a **difficult bimanual coordination task** with lower success rate compared to TransferCube.
18
+
19
+ ## Model Description
20
+
21
+ | Property | Value |
22
+ |----------|-------|
23
+ | Architecture | ACT (Action Chunking with Transformers) |
24
+ | Parameters | 52M |
25
+ | Task | ALOHA Insertion-v0 |
26
+ | Training Steps | 200,000 |
27
+ | Batch Size | 32 |
28
+ | Success Rate | ~15% |
29
+
30
+ ## Training Data
31
+
32
+ - **Dataset**: [lerobot/aloha_sim_insertion_human_image](https://huggingface.co/datasets/lerobot/aloha_sim_insertion_human_image)
33
+ - **Episodes**: 50 human demonstrations
34
+ - **Frames**: 20,000
35
+
36
+ ## Task Description
37
+
38
+ The Insertion task requires a bimanual robot to:
39
+ 1. Pick up a socket with the left arm
40
+ 2. Pick up a peg with the right arm
41
+ 3. Insert the peg into the socket in mid-air
42
+
43
+ ⚠️ **This is a difficult task** requiring precise bimanual coordination. Success rate is significantly lower than TransferCube.
44
+
45
+ ## Demo Video
46
+
47
+ <video controls src="eval_episode_3.mp4" title="Insertion Demo"></video>
48
+
49
+ ## Training Environment
50
+
51
+ - **GPU**: RTX A6000
52
+ - **Framework**: LeRobot 0.4.3
53
+ - **Training Time**: Around 13 hours
54
+
55
+ ## Usage
56
+
57
+ ### Installation
58
+ ```bash
59
+ pip install lerobot gym-aloha
60
+ ```
61
+
62
+ ### Training
63
+ ```bash
64
+ lerobot-train \
65
+ --policy.type=act \
66
+ --dataset.repo_id=lerobot/aloha_sim_insertion_human_image \
67
+ --env.type=aloha \
68
+ --env.task=AlohaInsertion-v0 \
69
+ --batch_size=32 \
70
+ --steps=200000 \
71
+ --eval.n_episodes=10 \
72
+ --eval_freq=20000 \
73
+ --save_freq=20000 \
74
+ --output_dir=./outputs/act_aloha_insertion \
75
+ --wandb.enable=false \
76
+ --policy.push_to_hub=false
77
+ ```
78
+
79
+ ### Evaluation
80
+ ```bash
81
+ lerobot-eval \
82
+ --policy.path=LeTau/act_aloha_insertion \
83
+ --env.type=aloha \
84
+ --env.task=AlohaInsertion-v0 \
85
+ --eval.batch_size=1 \
86
+ --eval.n_episodes=20
87
+ ```
88
+
89
+ ### Fine-tuning
90
+ ```bash
91
+ lerobot-train \
92
+ --resume=true \
93
+ --config_path=LeTau/act_aloha_insertion/train_config.json \
94
+ --steps=300000
95
+ ```
96
+
97
+ ## Results
98
+
99
+ | Evaluation | Episodes | Success Rate | Avg Sum Reward |
100
+ |------------|----------|--------------|----------------|
101
+ | Training (120K) | 10 | 10% | 40.3 |
102
+ | Training (200K) | 10 | 20% | 40.4 |
103
+ | Independent | 20 | 15% | 51.2 |
104
+
105
+ **Expected success rate: 15-20%**
106
+
107
+ ### Task Difficulty Comparison
108
+
109
+ | Task | Difficulty | Success Rate |
110
+ |------|------------|--------------|
111
+ | TransferCube | Easy | 35-42% |
112
+ | **Insertion** | **Hard** | **15-20%** |
113
+
114
+ ## Detailed Evaluation Results (Independent)
115
+ ```
116
+ Sum Rewards: [0.0, 0.0, 0.0, 240.0, 121.0, 0.0, 0.0, 0.0, 43.0, 0.0,
117
+ 256.0, 0.0, 0.0, 321.0, 0.0, 0.0, 0.0, 0.0, 43.0, 0.0]
118
+
119
+ Successes: 3/20 episodes
120
+ ```
121
+
122
+ ## Limitations
123
+
124
+ - **Difficult task**: Insertion requires precise bimanual coordination
125
+ - **Limited training data**: Only 50 demonstration episodes available
126
+ - **Low success rate**: This is a baseline model for a challenging task
127
+ - **Single task**: Only trained on Insertion, no multi-task capability
128
+
129
+
130
+ ## Acknowledgments
131
+
132
+ - [LeRobot](https://github.com/huggingface/lerobot) framework by HuggingFace
133
+ - [ALOHA](https://tonyzhaozh.github.io/aloha/) project by Stanford
config.json ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "type": "act",
3
+ "n_obs_steps": 1,
4
+ "input_features": {
5
+ "observation.images.top": {
6
+ "type": "VISUAL",
7
+ "shape": [
8
+ 3,
9
+ 480,
10
+ 640
11
+ ]
12
+ },
13
+ "observation.state": {
14
+ "type": "STATE",
15
+ "shape": [
16
+ 14
17
+ ]
18
+ }
19
+ },
20
+ "output_features": {
21
+ "action": {
22
+ "type": "ACTION",
23
+ "shape": [
24
+ 14
25
+ ]
26
+ }
27
+ },
28
+ "device": "cuda",
29
+ "use_amp": false,
30
+ "push_to_hub": false,
31
+ "repo_id": "LeTau/act_aloha_insertion",
32
+ "private": null,
33
+ "tags": null,
34
+ "license": null,
35
+ "pretrained_path": "outputs/act_aloha_insertion/checkpoints/120000/pretrained_model",
36
+ "chunk_size": 100,
37
+ "n_action_steps": 100,
38
+ "normalization_mapping": {
39
+ "VISUAL": "MEAN_STD",
40
+ "STATE": "MEAN_STD",
41
+ "ACTION": "MEAN_STD"
42
+ },
43
+ "vision_backbone": "resnet18",
44
+ "pretrained_backbone_weights": "ResNet18_Weights.IMAGENET1K_V1",
45
+ "replace_final_stride_with_dilation": 0,
46
+ "pre_norm": false,
47
+ "dim_model": 512,
48
+ "n_heads": 8,
49
+ "dim_feedforward": 3200,
50
+ "feedforward_activation": "relu",
51
+ "n_encoder_layers": 4,
52
+ "n_decoder_layers": 1,
53
+ "use_vae": true,
54
+ "latent_dim": 32,
55
+ "n_vae_encoder_layers": 4,
56
+ "temporal_ensemble_coeff": null,
57
+ "dropout": 0.1,
58
+ "kl_weight": 10.0,
59
+ "optimizer_lr": 1e-05,
60
+ "optimizer_weight_decay": 0.0001,
61
+ "optimizer_lr_backbone": 1e-05
62
+ }
eval_episode_3.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2f765663c13d22619e353e75779529613058ebb15194bbf5067605b1f95edf33
3
+ size 209726
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ebfbc706321db770c2d70705ca1ebf451854b2f3a42b44f56ded21404edd9249
3
+ size 206765304
policy_postprocessor.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "policy_postprocessor",
3
+ "steps": [
4
+ {
5
+ "registry_name": "unnormalizer_processor",
6
+ "config": {
7
+ "eps": 1e-08,
8
+ "features": {
9
+ "action": {
10
+ "type": "ACTION",
11
+ "shape": [
12
+ 14
13
+ ]
14
+ }
15
+ },
16
+ "norm_map": {
17
+ "VISUAL": "MEAN_STD",
18
+ "STATE": "MEAN_STD",
19
+ "ACTION": "MEAN_STD"
20
+ }
21
+ },
22
+ "state_file": "policy_postprocessor_step_0_unnormalizer_processor.safetensors"
23
+ },
24
+ {
25
+ "registry_name": "device_processor",
26
+ "config": {
27
+ "device": "cpu",
28
+ "float_dtype": null
29
+ }
30
+ }
31
+ ]
32
+ }
policy_postprocessor_step_0_unnormalizer_processor.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2e6a772396a0edb89347d065ba58e3e5f5ad853b2629db0527554ee54ad13be7
3
+ size 3892
policy_preprocessor.json ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "policy_preprocessor",
3
+ "steps": [
4
+ {
5
+ "registry_name": "rename_observations_processor",
6
+ "config": {
7
+ "rename_map": {}
8
+ }
9
+ },
10
+ {
11
+ "registry_name": "to_batch_processor",
12
+ "config": {}
13
+ },
14
+ {
15
+ "registry_name": "device_processor",
16
+ "config": {
17
+ "device": "cuda",
18
+ "float_dtype": null
19
+ }
20
+ },
21
+ {
22
+ "registry_name": "normalizer_processor",
23
+ "config": {
24
+ "eps": 1e-08,
25
+ "features": {
26
+ "observation.images.top": {
27
+ "type": "VISUAL",
28
+ "shape": [
29
+ 3,
30
+ 480,
31
+ 640
32
+ ]
33
+ },
34
+ "observation.state": {
35
+ "type": "STATE",
36
+ "shape": [
37
+ 14
38
+ ]
39
+ },
40
+ "action": {
41
+ "type": "ACTION",
42
+ "shape": [
43
+ 14
44
+ ]
45
+ }
46
+ },
47
+ "norm_map": {
48
+ "VISUAL": "MEAN_STD",
49
+ "STATE": "MEAN_STD",
50
+ "ACTION": "MEAN_STD"
51
+ }
52
+ },
53
+ "state_file": "policy_preprocessor_step_3_normalizer_processor.safetensors"
54
+ }
55
+ ]
56
+ }
policy_preprocessor_step_3_normalizer_processor.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2e6a772396a0edb89347d065ba58e3e5f5ad853b2629db0527554ee54ad13be7
3
+ size 3892
train_config.json ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dataset": {
3
+ "repo_id": "lerobot/aloha_sim_insertion_human_image",
4
+ "root": null,
5
+ "episodes": null,
6
+ "image_transforms": {
7
+ "enable": false,
8
+ "max_num_transforms": 3,
9
+ "random_order": false,
10
+ "tfs": {
11
+ "brightness": {
12
+ "weight": 1.0,
13
+ "type": "ColorJitter",
14
+ "kwargs": {
15
+ "brightness": [
16
+ 0.8,
17
+ 1.2
18
+ ]
19
+ }
20
+ },
21
+ "contrast": {
22
+ "weight": 1.0,
23
+ "type": "ColorJitter",
24
+ "kwargs": {
25
+ "contrast": [
26
+ 0.8,
27
+ 1.2
28
+ ]
29
+ }
30
+ },
31
+ "saturation": {
32
+ "weight": 1.0,
33
+ "type": "ColorJitter",
34
+ "kwargs": {
35
+ "saturation": [
36
+ 0.5,
37
+ 1.5
38
+ ]
39
+ }
40
+ },
41
+ "hue": {
42
+ "weight": 1.0,
43
+ "type": "ColorJitter",
44
+ "kwargs": {
45
+ "hue": [
46
+ -0.05,
47
+ 0.05
48
+ ]
49
+ }
50
+ },
51
+ "sharpness": {
52
+ "weight": 1.0,
53
+ "type": "SharpnessJitter",
54
+ "kwargs": {
55
+ "sharpness": [
56
+ 0.5,
57
+ 1.5
58
+ ]
59
+ }
60
+ },
61
+ "affine": {
62
+ "weight": 1.0,
63
+ "type": "RandomAffine",
64
+ "kwargs": {
65
+ "degrees": [
66
+ -5.0,
67
+ 5.0
68
+ ],
69
+ "translate": [
70
+ 0.05,
71
+ 0.05
72
+ ]
73
+ }
74
+ }
75
+ }
76
+ },
77
+ "revision": null,
78
+ "use_imagenet_stats": true,
79
+ "video_backend": "torchcodec",
80
+ "streaming": false
81
+ },
82
+ "env": {
83
+ "type": "aloha",
84
+ "task": "AlohaInsertion-v0",
85
+ "fps": 50,
86
+ "features": {
87
+ "action": {
88
+ "type": "ACTION",
89
+ "shape": [
90
+ 14
91
+ ]
92
+ },
93
+ "agent_pos": {
94
+ "type": "STATE",
95
+ "shape": [
96
+ 14
97
+ ]
98
+ },
99
+ "pixels/top": {
100
+ "type": "VISUAL",
101
+ "shape": [
102
+ 480,
103
+ 640,
104
+ 3
105
+ ]
106
+ }
107
+ },
108
+ "features_map": {
109
+ "action": "action",
110
+ "agent_pos": "observation.state",
111
+ "top": "observation.image.top",
112
+ "pixels/top": "observation.images.top"
113
+ },
114
+ "max_parallel_tasks": 1,
115
+ "disable_env_checker": true,
116
+ "episode_length": 400,
117
+ "obs_type": "pixels_agent_pos",
118
+ "observation_height": 480,
119
+ "observation_width": 640,
120
+ "render_mode": "rgb_array"
121
+ },
122
+ "policy": {
123
+ "type": "act",
124
+ "n_obs_steps": 1,
125
+ "input_features": {
126
+ "observation.images.top": {
127
+ "type": "VISUAL",
128
+ "shape": [
129
+ 3,
130
+ 480,
131
+ 640
132
+ ]
133
+ },
134
+ "observation.state": {
135
+ "type": "STATE",
136
+ "shape": [
137
+ 14
138
+ ]
139
+ }
140
+ },
141
+ "output_features": {
142
+ "action": {
143
+ "type": "ACTION",
144
+ "shape": [
145
+ 14
146
+ ]
147
+ }
148
+ },
149
+ "device": "cuda",
150
+ "use_amp": false,
151
+ "push_to_hub": false,
152
+ "repo_id": "LeTau/act_aloha_insertion",
153
+ "private": null,
154
+ "tags": null,
155
+ "license": null,
156
+ "pretrained_path": "outputs/act_aloha_insertion/checkpoints/120000/pretrained_model",
157
+ "chunk_size": 100,
158
+ "n_action_steps": 100,
159
+ "normalization_mapping": {
160
+ "VISUAL": "MEAN_STD",
161
+ "STATE": "MEAN_STD",
162
+ "ACTION": "MEAN_STD"
163
+ },
164
+ "vision_backbone": "resnet18",
165
+ "pretrained_backbone_weights": "ResNet18_Weights.IMAGENET1K_V1",
166
+ "replace_final_stride_with_dilation": 0,
167
+ "pre_norm": false,
168
+ "dim_model": 512,
169
+ "n_heads": 8,
170
+ "dim_feedforward": 3200,
171
+ "feedforward_activation": "relu",
172
+ "n_encoder_layers": 4,
173
+ "n_decoder_layers": 1,
174
+ "use_vae": true,
175
+ "latent_dim": 32,
176
+ "n_vae_encoder_layers": 4,
177
+ "temporal_ensemble_coeff": null,
178
+ "dropout": 0.1,
179
+ "kl_weight": 10.0,
180
+ "optimizer_lr": 1e-05,
181
+ "optimizer_weight_decay": 0.0001,
182
+ "optimizer_lr_backbone": 1e-05
183
+ },
184
+ "output_dir": "outputs/act_aloha_insertion",
185
+ "job_name": "aloha_act",
186
+ "resume": true,
187
+ "seed": 1000,
188
+ "num_workers": 4,
189
+ "batch_size": 32,
190
+ "steps": 200000,
191
+ "eval_freq": 20000,
192
+ "log_freq": 200,
193
+ "tolerance_s": 0.0001,
194
+ "save_checkpoint": true,
195
+ "save_freq": 20000,
196
+ "use_policy_training_preset": true,
197
+ "optimizer": {
198
+ "type": "adamw",
199
+ "lr": 1e-05,
200
+ "weight_decay": 0.0001,
201
+ "grad_clip_norm": 10.0,
202
+ "betas": [
203
+ 0.9,
204
+ 0.999
205
+ ],
206
+ "eps": 1e-08
207
+ },
208
+ "scheduler": null,
209
+ "eval": {
210
+ "n_episodes": 10,
211
+ "batch_size": 1,
212
+ "use_async_envs": false
213
+ },
214
+ "wandb": {
215
+ "enable": false,
216
+ "disable_artifact": false,
217
+ "project": "lerobot",
218
+ "entity": null,
219
+ "notes": null,
220
+ "run_id": null,
221
+ "mode": null
222
+ },
223
+ "use_rabc": false,
224
+ "rabc_progress_path": null,
225
+ "rabc_kappa": 0.01,
226
+ "rabc_epsilon": 1e-06,
227
+ "rabc_head_mode": "sparse",
228
+ "rename_map": {},
229
+ "checkpoint_path": "outputs/act_aloha_insertion/checkpoints/120000"
230
+ }