Experiments
The repository ships two scoring studies beside the package: a driver per study in experiments/ and its write-up in results/, checked in together so that a result and the code that produced it travel together. Both exercise the selection rule alone, with no local optimization: every scorer scores the same stored minimal-sample hypotheses of the PhotoTourism essential-matrix pool (PT-E-SIFT-4K, RootSIFT), and every scorer is called from the package itself; the drivers contain no scoring code.
These are not the paper's Profile and Sensitivity experiments, whose drivers are not in this repository (see the Overview).
| driver | write-up | question |
|---|---|---|
experiments/sample_budget_miscal.jl (+ .sbatch) | results/sample_budget_miscal.md | how selection improves with the hypothesis budget, calibrated and under a 32× miscalibrated scale |
experiments/score_timing.jl (+ .sbatch) | results/score_timing.md | the per-hypothesis CPU cost of each scorer |
experiments/f32_radix_probe.jl | — | a decision probe: does a Float32 sort key speed up the sweep's radix sort at these problem sizes? |
Environment
experiments/ is its own Julia project, not a dependency of the package: the drivers need pool IO (VisualGeometryEval) and the concrete problem types (RobustVisualGeometry), which the package deliberately does not depend on.
cd experiments && julia --project=. -e 'using Pkg; Pkg.develop(path=".."); Pkg.instantiate()'The pools are read with VisualGeometryEval's load_pool and load_pool_residuals. Data roots resolve through ENV["CAU_DATA_ROOT"] (default /raid/data/jpr); heavy outputs land under <root>/accv2026/results/<experiment>/. The .sbatch launchers carry the exact invocation behind the published numbers.
Sample budget under scale miscalibration
Each scorer's operating point is read from the deployed cross-validation sidecar, tuned at calibration (ζ = 1) and not re-tuned; miscalibration multiplies every scorer's native width by the same ζ, which is principled for both families because both natives are linear in the noise scale. The budget is counted in minimal samples, from 100 to 4 000, on 8 800 pairs of four held-out test scenes.
sbatch experiments/sample_budget_miscal.sbatchThe write-up reports mAA@10° and median pose error at every budget for the Jeffreys score, MSAC, GaU, RANSAC and MAGSAC++. Calibrated, the five are within 0.013 mAA of one another at 4 000 samples; at ζ = 32 the Jeffreys score retains 83 % of its calibrated mAA and keeps improving with the budget, while the four baselines retain 16–23 % and get worse as the budget grows.
Per-hypothesis scoring cost
Single-threaded, on the stored residuals of one PhotoTourism scene, every scorer at one shared operating point; the figure is the minimum over three repetitions, per hypothesis scored.
sbatch experiments/score_timing.sbatchThe sort-and-sweep costs more than RANSAC and MSAC and less than GaU and closed-form MAGSAC++; its cost grows linearly with the number of points, since both its radix sort and its sweep are linear. The write-up's MAGSAC++ lookup-table row was measured with a tabulated scorer that has since been removed from the package; the current driver times the exact forms only.