3D Point-Cloud Segmentation Harness — Implementation Plan

2026-08-12 · Miro · designed by Sol, critiqued by Opus, reviewed & finalized by Fable

Summary

Build the 3D analog of the 2D line-bitmap training harness in the new repo 3dai.iolabs.pointcloud.mlsegmentation: semantic segmentation of roadside assets (guardrails, signs/gantries, trees, walls, fences, poles, terrain, structures) on dense highway MLS LAS corridors. Lane markings stay out of scope.

Every model/training method is one experiment config (E1–E14 from the research plan). Deliverable one makes E2 (CPU voxel-size oracle) and E1 (Superpoint Transformer pilot scaffold, oracle-gated) runnable; E3–E14 ship as schema-valid templates or gated configs that fail closed with a named unmet gate.

SSOT: shared ML code lives in the existing iolabs-ml-harness package (bumped to 0.2.0, image deps optionalized); pre-annotations come from the classical seg3d fusion package plus the ReCap annotation round-trip. Full spec: docs/plans/2026-08-12-harness-implementation-spec.md (in-repo, ~1,700 lines).

Key decisions

Phases

WP1 — mlharness 0.2.0 parallel

Branch feat/3d-generalization in the mlharness repo. Optionalize image deps behind [image], add registry.py, generalized metrics, masked losses, provenance.py; keep the image Lightning loop untouched. Acceptance: core suite green without OpenCV/SMP, full suite green with [image], and the 2D shared-harness worktree passes its existing tests + fast-dev-run against the built wheel in a freshly created environment.

WP2 — 3D repo scaffold parallel

pyproject.toml (core = NumPy/SciPy/laspy/DVC + upstream seg3d package; ml extra = torch stack + mlharness), DVC config and data lanes, Azure scripts (env.sh, submit/run/sync/promote/tb), conda environment template, README, CLAUDE.md, dev script overlaying the sibling mlharness checkout. Interim editable path sources with TODO markers until 0.2.0 is published to the private index.

WP3 — Phase-0 contracts parallel, freezes first

Frozen ontology YAML (train IDs, LAS maps, colors, void policy), three-tier corridor splits with leakage validation and locked-tier authorization guard, metrics (delegating classification wrapper + FP/km, continuity, corridor-clustered bootstrap), provenance manifest wrapper. ontology.py/splits.py interfaces freeze before WP4 starts implementing against them.

WP4 — Ingest + adapter after WP3 freeze

Bounded LAS/LAZ/COPC readers with stable source-row identity, seg3d/ReCap artifact validation and exact 1 mm label join (unmatched → void, ≤2% ceiling), deterministic corridor-axis tiling with pinned origins, canonical NPZ schema, SPT/Pointcept NumPy emitters, overlap-logit blending and exact index remapping, plus prepare_dataset.py, ingest_preannotations.py, and the adapter round-trip verifier.

WP5 — Experiments + runners after WP1/3/4

All 14 experiment configs + experiment cards, strict config schema with typed study/gate constructs, dispatcher (fail-closed statuses), SPT/Pointcept overlays and runner shell scripts (Hydra --config-dir + searchpath; Pointcept registry import preflight), E2 voxel-oracle implementation, train.py / evaluate.py with the TensorBoard evaluation contract.

Integration & review
  1. Integration agent: uv sync, full CPU suites in both repos, lock checks, cross-WP import smoke, fix breakage.
  2. Adversarial review: Opus + Sol in parallel over the full diff, findings fixed by a dedicated agent, then a final Fable pass.
  3. Nothing is committed or published without explicit approval; mlharness work stays on its feature branch.
Experiment matrix (E1–E14)
IDWhatStatus
E1SPT pilot, superpoint-purity oracle gate before trainingimplement-now
E2CPU voxel-survival oracle at 2/3/5 cm, full-resolution labelsimplement-now
E3–E6Feature ablation, rare-class losses, imbalance factorial, multiclass-vs-OVRtemplate-only
E7–E9EZ-SP scale-up; corridor tiling matrix; Pointcept challengers (SpUNet screen, PTv3/LitePT T4 gates)gated / template
E10–E14Pseudo-labels, gold+pseudo, weak supervision, own-corridor SSL, active learninggated-later

Risks

Open questions