mseritan's picture
LabelFormer AV2 smoke checkpoint + Mojo export
060316c verified
|
Raw
History Blame Contribute Delete
3.06 kB
---
license: cc-by-nc-sa-4.0
library_name: pytorch
tags:
- lidar
- autonomous-driving
- trajectory-refinement
- auto-labeling
- argoverse-2
- mojo
- smoke-checkpoint
---
# LabelFormer — AV2 smoke checkpoint
> ⚠️ **This is a small-scale smoke checkpoint, not a paper reproduction.** It is a 1.16M-parameter model trained locally on a laptop (Apple Silicon, MPS) on **12 of the 700** ArgoVerse 2 sensor train logs for 30 epochs (~11 minutes). It exists so that the reference implementations below can be run end-to-end without training. Do not use it to benchmark against the paper.
Reference checkpoint for two open-source implementations of **LabelFormer** (*Object Trajectory Refinement for Offboard Perception from LiDAR Point Clouds*, Yang et al., CoRL 2023, [arXiv:2311.01444](https://arxiv.org/abs/2311.01444)):
- **[labelrefinery/LabelFormer.py](https://github.com/labelrefinery/LabelFormer.py)** — PyTorch implementation + ArgoVerse 2 training pipeline (this checkpoint was trained with it).
- **[labelrefinery/LabelFormer.mojo](https://github.com/labelrefinery/LabelFormer.mojo)** — pure-Mojo inferencer, verified to match PyTorch within 1.5e-6 on the refined boxes using the `mojo/` files here.
## What the model does
LabelFormer refines noisy BEV object trajectories (auto-labels) from LiDAR point clouds: per-frame boxes and object points are encoded independently (box MLP + PointPillars-style CNN), a transformer with ALiBi relative position biases reasons over the whole trajectory, and the model decodes per-frame pose residuals plus one trajectory-level object size.
## Training setup (differs from the paper)
| | this checkpoint | paper |
|---|---|---|
| params | 1.16M (d=128, 3 layers) | ~6M (d=256, 6 layers) |
| data | 12 AV2 train logs (739 vehicle tracks) | 700 logs |
| initial noisy tracks | perturbed ground truth (±0.25 m, ±10°, size jitter) | detector + tracker outputs |
| training | 30 epochs, ~11 min, Apple M-series (MPS) | 40 epochs, GPU |
| pillar grid | 0.2 m, 19.2 m × 6.4 m | 0.1 m, 24 m × 8 m |
## Results (4 AV2 val logs, 261 tracks, refined vs. perturbed input)
| metric | initial | refined |
|---|---|---|
| mean IoU | 0.794 | 0.939 |
| recall@0.7 | 0.966 | 0.999 |
| recall@0.8 | 0.450 | 0.992 |
Full numbers in `eval_val.json`; per-epoch curves in `history.json`.
## Files
- `best.pt` — PyTorch checkpoint (`model` state dict + `config`), load with LabelFormer.py's `evaluate.py` or `torch.load`.
- `config.yaml` — the exact training config (`configs/smoke.yaml`).
- `mojo/weights.lft` — weights with BatchNorms folded into convs, in the LFT1 container consumed by LabelFormer.mojo.
- `mojo/sample_*.lft` — three real AV2 val trajectories with expected per-stage outputs, for parity testing the Mojo inferencer.
## License and data provenance
Trained on the [ArgoVerse 2 sensor dataset](https://www.argoverse.org/av2.html), which is released under **CC BY-NC-SA 4.0**; these weights are published under the same license and are intended for **non-commercial research use**.