← mep

Explorer: slice the 5-way comparison yourself

interactive · every policy × split · surface-coverage recall@K=1 · 5 seeds · n_cand=20 · hybrid_top_k=12

Pick a split and a model version; the bar chart, the delta panel, and the per-version readout below all re-render from the committed numbers. The metric is locked to surface coverage: mep_recall is too sparse on the OOD set to compare meaningfully (most scenes capture 0 instances, so per-scene recall is mostly zeros). The honest read: the learned ranker alone never tops greedy_coverage; what ships is the hybrid (learned scores, top-K=12, then 2-step lookahead).

How it works: from a building to a scan

Before the interactive comparison, three pictures of the actual task: choose a pose, see what one scan captures, then watch coverage accumulate. recall@K=1 (the headline metric) is just how much of the hidden MEP the growing union of scans covers.

Top-down view of one building with 20 candidate scanner rings, one chosen pose marked with a white star and its field of view drawn as a translucent wedge out to 30m.
1. We choose where to scan. Top-down view of one building with 20 candidate scanner rings; we pick one pose (white star) and show its field of view out to the 30m range. The task is to decide, before scanning, which pose reveals the most hidden piping.
A single scanner pose marked with a white triangle firing rays to surface points; the roughly 5,400 captured points are bright, the rest are faint grey.
2. What one scan captures. A single scanner pose (white triangle) fires rays to every reachable surface point; the bright points are the roughly 5,400 it captures, the faint grey points are the rest it cannot see from here. One viewpoint sees only a slice, which is why view selection matters.
Three panels showing the captured point cloud after 1, 2, and 3 scans, growing from about 28,000 to 46,000 points.
3. Coverage accumulates, one scan at a time. The point cloud after 1, 2, and 3 scans grows from roughly 28,000 to 46,000 captured points. recall@K=1 reads how much of the hidden MEP this growing union covers. A better policy gets there in fewer scans.
The MEP network shown alone with the building removed: the pipe grid, an equipment block, ducts and a fitting, plus thin lines for the 130 connectivity-graph edges joining physically-connected parts.
The network we are recovering. The MEP system on its own, building removed: the pipe grid, equipment block, ducts and fitting, plus thin lines for the 130 connectivity-graph edges joining physically-connected parts. This graph is the ground-truth network the method discovers, and the basis of the connectivity-aware edge_recall metric.

Controls

metric
split
model

Every policy on the selected split

hybrid (selected version) baseline learned-only (selected version) oracle ceiling (myopic Δ)
What to notice.

Hybrid vs the baselines that matter

For the selected split and version, the hybrid minus three reference policies: greedy_coverage (the strongest classical heuristic), octomap_ig (the classical info-gain planner, Bircher et al., ICRA 2016), and greedy_lookahead_1 (the same 2-step lookahead the hybrid wraps, but with a true extractor and no learned prefilter). Combined SE = √(SEₐ² + SE_b²); σ = Δ / combined SE.

How to read it. Positive Δ and σ ≳ 2 means a real win at this sample size. The headline cross-split fact: hybrid beats octomap_ig by +5.4σ test_locked, +5.0σ held_out, +5.6σ OOD on surface coverage: every split, not one lucky cut. Note this is also where the honest story bites, on test_locked the hybrid still trails the strong greedy_coverage baseline.

Model version: training signal vs eval

The finding: higher training Spearman ρ does not buy eval wins. Three target-engineering bumps, namely v5 surface-target, v7_attn's 2.6M-param cross-attention head (ρ 0.13), and v7_k12's combined K2+0.1·K1 target, all regressed or no-gained. The one win, v7_realsynth (ρ 0.156), came from a realism-fixed procedural synth corpus, not a loss tweak. The bottleneck is corpus diversity, not target formulation.

Hybrid top_k: cost vs quality (documented sweep)

A static, documented finding (not re-derived here): how many of the model's top candidates you hand to the lookahead wrapper. More candidates means higher recall, but the true extractor runs on every pair, so extractor calls scale K². Quality saturates around K=12. Past that you pay quadratic compute for a recall that flattens (and dips at K=20).

recall@K=1 (surface) vs hybrid_top_k · extractor cost ∝ K² shown in the right column
Why K=12 is the shipped default. K=1 (0.443) is just the raw ranker: no lookahead. By K=5 (0.597) most of the gain is in; K=12 (0.615) is the knee; K=20 (0.598) actually regresses while costing ~2.8× the extractor calls of K=12. So the shipped hybrid_top_k=12 sits exactly at the cost/quality knee.

Why the learned ranker is a filter, not a policy

The ranker scores each candidate pose in isolation, so it learns the marginal MEP density of the scene cloud and not much else. The value of a pose depends on what the next pose will be: that joint reasoning is what the lookahead wrapper supplies. Left: the learned ranker prefilters candidates (top-K=12). Right: the classical lookahead does the 2-step joint search over that shortlist. Hybrid is both, in series.

learned ranker (v_joint_v4) · top-K=12 filter

2-step lookahead over the shortlist