AI3D-360: guardrail rail-vs-support split — real-segment validation

2026-08-15 · iolabs AI3D team · generated by Claude Fable 5 · all imagery: intensity rasters (A4_5 dataset policy)

Feature

The guardrail detector now separates the rail beam (B/W-profile band, 0.35–0.85 m) from its supporting posts. Each accepted rail run gets a corridor-scoped low-band evidence pass (0.10–0.50 m above road), an autocorrelation cadence estimate snapped to the Swiss/German catalog {1.33, 2.00, 4.00} m, and a guardrail_support companion instance — a new exported class in guardrails.json, its own XML <Feature>, the overlays (violet line, one dot per detected post), and point_masks.npz (support points re-labelled per point). Validated on real Abschnitt 4/5 segments; verdict: working, one real defect found on real data and fixed (station quantization, see Segment 118).

Rail instances carry post_spacing_m (snapped), post_spacing_raw_m, post_spacing_snapped, post_count, post_confidence and post_gap_spans (each span flagged occluded when it overlaps an occlusion interval already bridged on the rail — gaps mean unobserved-or-missing, never “defect”). Everything sits behind three config flags (enable_post_cadence, enable_support_class, enable_component_masks, all default on); with all three off, every output is byte-identical to the pre-feature detector.

CommitWhat
942f58ePost cadence + guardrail_support class (instances, masks, overlays, config)
216e410Supports exported as their own XML Type="guardrail_support" Feature; evidence-dump lever
9bf5bafFix: continuous RoadSpine.project_fine station for the cadence passes (1.0 m grid artifact)

Segment 107 — clean 2.00 m cadence on all four rails

Segment 107 top-down overlay
Full tile. Green = w_beam rails (G00–G04), violet = the four guardrail_support companions (S05–S08) with one dot per detected post.
Segment 107 zoom on rails with post dots
Zoom: 25 posts over ~48 m on each rail — a 2.00 m train, snapped from raw estimates 1.997–2.001 m, confidences 0.52–1.0.

Segment 118 — the quantization artifact, before and after

The first real-segment run reported an unphysical 1.0 m spacing on two rails. The dumped evidence histograms showed 100% of the low-band mass in one residue class modulo 1.0 m: RoadSpine.project snaps stations to its ~1 m sample grid, which the 1 m-binned main pipeline never notices but which folds a 0.10 m cadence histogram onto the grid — and aliases genuine 1.33 m post trains to 4.0 m. Fixed by project_fine (along-tangent refinement), used only by the new passes so pre-feature outputs stay byte-identical.

Before — S06 fabricated 1.0 m posts
118 before fix
After — S06 genuine 1.33 m posts
118 after fix
Left rail (G02/S06, vegetation side): dot cadence drops from a fabricated 1.0 m (51 “posts”) to a genuine 1.33 m (38 posts, raw estimate 1.323–1.330 m) — the tighter ASTRA 11005 pitch, previously disguised as 4.0 m by aliasing. Median rails stay at 2.00 m.
Segment 118 full overlay after fix
Full tile after the fix: two 2.00 m rails, two 1.33 m rails, all snapped, zero gap spans.

Segment 135 — weak evidence is rejected, not invented

Segment 135 full overlay
Mixed segment (10 rails incl. far-field zone-recovered ones, noise walls in cyan). Only the two rails with solid low-band evidence get supports — both 2.00 m.
Segment 135 zoom on supports
Zoom on S11 (2.00 m, 48 m span) crossing the interchange; noise walls in cyan. Before the fix this segment reported nine cadences, seven of them the bogus 1.0 m; after the fix the weak far-field rails correctly get no cadence instead of a fabricated one.

Cadence results (after fix)

SegmentParent railSpacingRawSnappedPostsConfidenceGap spans
107G002.00 m1.998yes251.0000
107G022.00 m2.001yes250.9830
107G032.00 m2.000yes240.8781
107G042.00 m1.997yes250.5210
118G002.00 m2.000yes260.9390
118G011.33 m1.330yes380.8600
118G021.33 m1.323yes380.7390
118G032.00 m2.003yes250.9940
135G002.00 m1.999yes250.9840
135G012.00 m2.004yes260.5140
135G02–G10 (8 rails)no cadence — weak/far-field low-band evidence, correctly rejected

Verification

Notes & open items