Dimios45 commited on
Commit
28d046f
Β·
verified Β·
1 Parent(s): cc7e76f

Document seed-conditioned models and results

Browse files
Files changed (1) hide show
  1. README.md +80 -0
README.md CHANGED
@@ -102,3 +102,83 @@ Note: `me-full_25000_*` checkpoints were trained with flax 0.11 using a per-path
102
  `nnx.Param` layout in `TPWithWeightsAndBiases` (`kin_flow/net/module/fctp.py`) β€”
103
  restore with a matching code state; they are not compatible with the original
104
  Param-of-list layout.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  `nnx.Param` layout in `TPWithWeightsAndBiases` (`kin_flow/net/module/fctp.py`) β€”
103
  restore with a matching code state; they are not compatible with the original
104
  Param-of-list layout.
105
+
106
+ ---
107
+
108
+ # Seed-conditioned models
109
+
110
+ Extension of the multi-embodiment model with an **equivariant seed point** β€” a 3D point
111
+ marking *which* object to grasp β€” after SeededGrasp ([arXiv 2607.20207](https://arxiv.org/abs/2607.20207)),
112
+ expressed in irreps so SE(3) equivariance is preserved by construction.
113
+
114
+ These are fine-tuned from `me-full_25000_120`. The seed enters the scene encoder as one
115
+ virtual graph edge from every node to the seed point, contributing an β„“=1 direction vector
116
+ and β„“=0 distance β€” the two quantities the encoder already consumes. Only ~10k new
117
+ parameters (`unet.seed_mlp`) on an 18.8M-parameter model.
118
+
119
+ ## Models
120
+
121
+ | Folder | Fine-tune | Epoch | Best for | seeded `targeted` |
122
+ |---|---|---|---|---|
123
+ | `me-seed-anneal_25000_4` | annealed LR | 4 | **best overall** Β· Panda Β· Allegro | 0.4582 (Panda) |
124
+ | `me-seed-anneal_25000_6` | annealed LR | 6 | VX300 | 0.4339 |
125
+ | `me-seed-anneal_25000_8` | annealed LR | 8 | DexEE | 0.1599 |
126
+ | `me-seed_25000_2` | constant LR | 2 | Shadow Hand | 0.3502 |
127
+
128
+ `me-seed-anneal_25000_4` has the highest mean across all five grippers (0.3289) and is the
129
+ recommended default. The `-anneal` runs use a learning rate annealed 8e-5 β†’ 0; the original
130
+ schedule held a constant 8e-5 (`decay_steps` was 10,000 against a 200k-step run) which
131
+ degraded results over training.
132
+
133
+ ## Evaluation
134
+
135
+ `targeted = yield Γ— hit Γ— SR|target` β€” successful grasps on the *intended* object per raw
136
+ sample drawn. Measured on 119 held-out cluttered scenes (4 objects each), 100 grasps per
137
+ scene, both conditions scored on identical grasps (same RNG, same seed point, differing only
138
+ in whether the seed mask is on).
139
+
140
+ | Gripper | DoF | unseeded | seeded | + collision projection | total gain |
141
+ |---|---|---|---|---|---|
142
+ | Panda | 2 | 0.2067 | 0.4611 | **0.5190** | +151% |
143
+ | VX300 | 2 | 0.2027 | 0.4410 | **0.4752** | +134% |
144
+ | DexEE | 12 | 0.0914 | 0.1578 | **0.1597** | +75% |
145
+ | Allegro | 16 | 0.1261 | 0.2601 | **0.3220** | +155% |
146
+ | Shadow Hand | 22 | 0.1510 | 0.3060 | **0.3813** | +152% |
147
+ | **mean** | | **0.1556** | **0.3252** | **0.3714** | **+139%** |
148
+
149
+ Seed conditioning raises the fraction of grasps aimed at the intended object from chance
150
+ (~0.28 for ~3.5 objects/scene) to 0.61–0.79. Collision projection is a separate, training-free
151
+ post-processing step that recovers the collision-free yield seeding costs.
152
+
153
+ **Supporting numbers** β€” 46 evaluations across 15 checkpoints and 5 grippers. Seeded and
154
+ unseeded results are identical to 4 decimal places on the pre-fine-tune checkpoint, where the
155
+ seed pathway is zero-initialised, confirming the conditioning is inert at initialisation.
156
+
157
+ ## Caveats
158
+
159
+ - Test clouds are **analytically sampled** from MuJoCo geometry, not rendered scans (the
160
+ renderer segfaults on our hardware). Validated to 2 mm geometric agreement but carrying a
161
+ measured βˆ’2.7 pp systematic offset β€” valid for A/B comparison, **not** directly comparable
162
+ to the `me-full_25000_*` numbers above.
163
+ - Performance saturates within ~4,000 steps; epochs 2–8 are statistically indistinguishable
164
+ and longer training does not help.
165
+ - DexEE is an outlier (+75%, `SR|target` 0.26 vs 0.55–0.77 elsewhere): it aims correctly but
166
+ still fails to hold objects.
167
+
168
+ ## Loading
169
+
170
+ Same as the `me-full_*` checkpoints, but the model must be built with seed conditioning so
171
+ `unet.seed_mlp` exists:
172
+
173
+ ```python
174
+ # model config needs seed_zero_init; then
175
+ model = Trainer.get_model_from_checkpoint(model, "<path>/me-seed-anneal_25000_4",
176
+ partial=True)
177
+
178
+ # inference: seed is (xyz, mask) in world metres; mask=0 => unconditional
179
+ se3, dof = inference("Flow", model, sample, num_samples, cfg,
180
+ seed=(seed_xyz, np.float32(1.0)))
181
+ ```
182
+
183
+ `partial=True` restores only the parameters present in a checkpoint, which is also how these
184
+ were created from the unconditional model.