Dimios45 commited on
Commit
33919f2
Β·
verified Β·
1 Parent(s): a26dd6f

Upload geomatch_v2_repro/EVAL_INFO.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. geomatch_v2_repro/EVAL_INFO.md +48 -23
geomatch_v2_repro/EVAL_INFO.md CHANGED
@@ -1,35 +1,58 @@
1
- # GeoMatch v2 β€” Reproduction Runs (epoch 50 checkpoints)
2
 
3
- **Status: intermediate checkpoints from ongoing training.** These are epoch-50 snapshots from three
4
- parallel training runs launched to reproduce the GeoMatch paper's (arXiv:2312.03864) reported Isaac
5
- Gym success rates (EZGripper 75.0%, Barrett 90.0%, ShadowHand 72.5%). All three runs use the
6
- **fixed keypoints** dataset (`grasp_gnn_v2`) β€” see "Bug History" below. Training continues to
7
- epoch 200; these checkpoints are provided for early evaluation only, not as final models.
 
 
 
8
 
9
  ## Which file is which
10
 
11
  | File | Seed | LR | Batch size | Rationale |
12
  |---|---|---|---|---|
13
- | `runA_paper_exact_epoch50.pth` | 42 | 1e-4 | 256 | Exact paper-matching recipe (control) |
14
- | `runB_seed123_epoch50.pth` | 123 | 1e-4 | 256 | Same recipe, different seed (init/data-order sensitivity check) |
15
- | `runC_lr5e-5_bs128_epoch50.pth` | 7 | 5e-5 | 128 | Half LR, half batch β€” hedge against batch-size/LR sensitivity |
16
 
17
  All three: Adam optimizer (Ξ²=0.9, 0.99), weight_decay=0, no AMP (FP32), 200 total epochs planned,
18
  single-GPU (no DDP), `num_workers=0`.
19
 
20
- ## Loss/accuracy at epoch 50 (as logged during training)
21
 
22
- | Run | Train loss | Train acc | Val loss | Val acc |
23
- |---|---|---|---|---|
24
- | A | 1.690662 | 0.6269 | 1.699793 | 0.5926 |
25
- | B | 1.691613 | 0.6280 | 1.694283 | 0.5801 |
26
- | C | 1.701282 | 0.6126 | 1.713473 | 0.6481 |
 
 
 
27
 
28
  **Caveat on val numbers:** the validation set is only 10 objects, so epoch-to-epoch val accuracy is
29
  noisy (observed swings of Β±0.05 between adjacent epochs in these runs). Don't read too much into
30
  small val differences between runs at a single epoch β€” training (contact-map) loss/acc is the more
31
  stable signal at this stage. Isaac Gym grasp success rate is the metric that actually matters; these
32
- loss numbers are only a training-health sanity check.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
  ## Model architecture / loading
35
 
@@ -74,14 +97,16 @@ GenDexGrasp's split): 48 train objects (YCB + ContactDB); **10 held-out validati
74
  `ycb+potted_meat_can`, `ycb+tomato_soup_can`. These 10 are the objects to use for Isaac Gym
75
  evaluation (unseen at training time), matching the paper's protocol.
76
 
77
- ## What's NOT yet implemented (matters for grasp generation, not for raw contact-map eval)
78
 
79
- The inference pipeline (`generate_grasps_for_obj.py`) currently stops at the raw SciPy TRF IK
80
- result. The paper describes an additional **contact-refinement step** (single Adam step, step size
81
- 0.05, pulling fingers to within 5mm of the object surface) that is **not yet added** to this repo's
82
- grasp-generation script. If you're evaluating via full grasp generation β†’ Isaac Gym (not just raw
83
- contact-map precision), be aware raw-IK grasps from these checkpoints may under-perform until that
84
- refinement step is added.
 
 
85
 
86
  ## Suggested evaluation protocol (matches paper)
87
 
 
1
+ # GeoMatch v2 β€” Reproduction Runs (epoch 50 & 100 checkpoints)
2
 
3
+ **Status: intermediate checkpoints from ongoing training.** Three parallel training runs launched
4
+ to reproduce the GeoMatch paper's (arXiv:2312.03864) reported Isaac Gym success rates
5
+ (EZGripper 75.0%, Barrett 90.0%, ShadowHand 72.5%). All three runs use the **fixed keypoints**
6
+ dataset (`grasp_gnn_v2`) β€” see "Bug History" below. Training continues to epoch 200; these
7
+ checkpoints are provided for early/intermediate evaluation, not as final models. Epoch 50
8
+ checkpoints were evaluated at 5-10% Isaac Gym success β€” see "Eval feedback so far" below for what
9
+ that does and doesn't tell us. Epoch 100 (halfway) checkpoints are now also available for a second
10
+ data point on the success-rate-vs-training-maturity trend.
11
 
12
  ## Which file is which
13
 
14
  | File | Seed | LR | Batch size | Rationale |
15
  |---|---|---|---|---|
16
+ | `runA_paper_exact_epoch{50,100}.pth` | 42 | 1e-4 | 256 | Exact paper-matching recipe (control) |
17
+ | `runB_seed123_epoch{50,100}.pth` | 123 | 1e-4 | 256 | Same recipe, different seed (init/data-order sensitivity check) |
18
+ | `runC_lr5e-5_bs128_epoch{50,100}.pth` | 7 | 5e-5 | 128 | Half LR, half batch β€” hedge against batch-size/LR sensitivity |
19
 
20
  All three: Adam optimizer (Ξ²=0.9, 0.99), weight_decay=0, no AMP (FP32), 200 total epochs planned,
21
  single-GPU (no DDP), `num_workers=0`.
22
 
23
+ ## Loss/accuracy (as logged during training)
24
 
25
+ | Run | Epoch | Train loss | Train acc | Val loss | Val acc |
26
+ |---|---|---|---|---|---|
27
+ | A | 50 | 1.690662 | 0.6269 | 1.699793 | 0.5926 |
28
+ | A | 100 | 1.656710 | 0.6666 | 1.670935 | 0.6288 |
29
+ | B | 50 | 1.691613 | 0.6280 | 1.694283 | 0.5801 |
30
+ | B | 100 | 1.659709 | 0.6586 | 1.674850 | 0.6756 |
31
+ | C | 50 | 1.701282 | 0.6126 | 1.713473 | 0.6481 |
32
+ | C | 100 | 1.670215 | 0.6517 | 1.682868 | 0.6043 |
33
 
34
  **Caveat on val numbers:** the validation set is only 10 objects, so epoch-to-epoch val accuracy is
35
  noisy (observed swings of Β±0.05 between adjacent epochs in these runs). Don't read too much into
36
  small val differences between runs at a single epoch β€” training (contact-map) loss/acc is the more
37
  stable signal at this stage. Isaac Gym grasp success rate is the metric that actually matters; these
38
+ loss numbers are only a training-health sanity check. Train loss/acc is trending steadily better at
39
+ epoch 100 vs. 50 for all three runs (e.g. Run A train acc 0.627 β†’ 0.667), consistent with continued
40
+ learning, not a plateau.
41
+
42
+ ## Eval feedback so far (epoch 50 β†’ 5-10% Isaac Gym success)
43
+
44
+ Epoch-50 checkpoints were evaluated at only 5-10% Isaac Gym success, well below paper targets. This
45
+ was investigated jointly and resolved: the eval-side contact-refinement step (`refine_grasps_cmap_adam.py`,
46
+ one Adam step at `learning_rate=0.05` on the full pose via `CMapAdam`, applied before
47
+ `run_grasp_test.py`) is **confirmed correctly implemented and was already applied** to those 5-10%
48
+ results β€” this matches the paper's Appendix C description exactly ("Isaac Gym scripts used as is,
49
+ aside from the one Adam step of force closure... step size 0.05"). So the low success rate is **not**
50
+ a pipeline bug. The most likely explanation is genuine undertraining: the paper's own Table 2 shows
51
+ even the easier single-embodiment ablation needs the full 200 epochs to reach 40-70% success, and
52
+ epoch 50 is only 25% through this schedule. **Please re-run the same 40-grasps-per-gripper eval on
53
+ these epoch-100 checkpoints and report success rate per gripper** β€” if it climbs meaningfully from
54
+ the epoch-50 numbers, that confirms training maturity (not pipeline correctness) is the operative
55
+ variable, and epoch 200 should be worth waiting for.
56
 
57
  ## Model architecture / loading
58
 
 
97
  `ycb+potted_meat_can`, `ycb+tomato_soup_can`. These 10 are the objects to use for Isaac Gym
98
  evaluation (unseen at training time), matching the paper's protocol.
99
 
100
+ ## Contact-refinement step β€” resolved, no action needed
101
 
102
+ Earlier concern: `generate_grasps_for_obj.py` in this repo stops at the raw SciPy TRF IK result
103
+ with no further refinement, which looked like a possible gap. This is **not a bug** β€” per the
104
+ paper's Appendix C, the 5mm figure is a pre-grasp keypoint offset applied *before* IK (already
105
+ correctly implemented here), and the separate one-Adam-step force-closure refinement
106
+ (`learning_rate=0.05`) is applied by the **Isaac Gym evaluation harness itself**, reused as-is from
107
+ GenDexGrasp per the paper's own wording. That refinement already exists and runs correctly on the
108
+ eval side (`refine_grasps_cmap_adam.py` β†’ `bridge_to_gendexgrasp.py` β†’ `run_grasp_test.py`,
109
+ confirmed by direct code read). No changes needed in this repo's `generate_grasps_for_obj.py`.
110
 
111
  ## Suggested evaluation protocol (matches paper)
112