Problem
Every measurement in docs/evaluation.md and docs/methods_and_models.md §6.7 compared two configs on the
same SfM output. That pairing is what made small effects visible, and it also means SfM quality cancelled out
of every result. We have no evidence the current COLMAP settings are good, and none that they are bad.
scripts/sfm.sh has never had any of its knobs varied in an experiment: --matcher
(exhaustive/sequential/vocab_tree), --extra (affine shape estimation, domain size pooling, guided matching,
CPU only), the GLOMAP path, and camera model.
What is already answered elsewhere
MUGSQA (2511.06830) varies the input axes on 1,970 samples from 55
Sketchfab meshes: view count (72/36/9), resolution (1080/720/480), camera distance (5 m/2 m/1 m), and point
cloud initialisation quality. docs/evaluation.md calls it "the synthetic ground-truth benchmark we sketched
out for ourselves. It exists, and the code and data are released."
Read their per-axis numbers before re-running our own view-count experiment. That experiment is void (the
ceil bug) and would cost about 40 minutes a config to redo.
The part worth building, which is small
MUGSQA renders in Blender with exact poses in NeRF-synthetic format, so COLMAP is never in their loop. Their
initialisation axis degrades a point cloud synthetically rather than testing whether a matcher produced a
good one.
That also means their release is an SfM benchmark we get for free: rendered views plus known extrinsics is
exactly what scores COLMAP. Run each matcher variant on their images, compare against their poses, read
rotation and translation error. No rendering, no training run, minutes per config.
Caveat that decides how far to trust it: Blender renders of Sketchfab objects have no motion blur, no rolling
shutter, no textureless plaster, no auto-exposure wander. Use it to rank candidates cheaply, then confirm the
winner with one paired A/B on a real scene, everything downstream held fixed.
Coverage, so this does not get re-derived again
Measured on our own data:
| Axis |
Where |
| Opacity pruning ladder |
docs/evaluation.md |
| Container (PLY/SPZ/SOG) sizes |
docs/methods_and_models.md §6.7 |
max_gs_num / cap_max |
§6.7 |
| Training steps, seeding, MCMC vs ADC |
§6.7 |
| Appearance embeddings vs exposure drift, 55 scenes |
§6.7 |
| Transients and person masking |
§6.7, docs/evaluation.md |
| Synthetic occluders (person cutouts over R2D2, 49 of 154 frames) |
not written up |
| JPEG encoding contamination |
docs/evaluation.md |
| Eval-frame autocorrelation |
docs/evaluation.md |
Not measured by us, and not by MUGSQA either:
- Motion blur, sensor noise, low light. These appear in
docs/troubleshooting.md as capture advice ("prevent
motion blur, avoid fast motion or low light") with nothing behind them.
- Rolling shutter.
- Matcher, feature extraction and SfM backend, per above.
3DGS-QA degrades exported assets with positional noise and SH perturbation, which is a different thing from
capture-side noise and does not substitute for it.
Plan
- Read MUGSQA's view-count and initialisation results. Decide from those whether the frame-count rerun is
worth 40 minutes a config.
- If a matcher question survives that, score COLMAP variants against MUGSQA's poses.
- Confirm any winner with one paired A/B on
gaudi_fountain, everything after SfM held fixed.
- Seed
gandalf, legolas, lizard_landscape and lizard_portrait, which lack sparse_pc.ply. Check
whether the COLMAP sparse model survived first; if it did, this is a processing re-run and not an SfM one.
Do not build a synthetic benchmark for this. Step 2 uses someone else's.
Related
Problem
Every measurement in
docs/evaluation.mdanddocs/methods_and_models.md§6.7 compared two configs on thesame SfM output. That pairing is what made small effects visible, and it also means SfM quality cancelled out
of every result. We have no evidence the current COLMAP settings are good, and none that they are bad.
scripts/sfm.shhas never had any of its knobs varied in an experiment:--matcher(exhaustive/sequential/vocab_tree),
--extra(affine shape estimation, domain size pooling, guided matching,CPU only), the GLOMAP path, and camera model.
What is already answered elsewhere
MUGSQA (2511.06830) varies the input axes on 1,970 samples from 55
Sketchfab meshes: view count (72/36/9), resolution (1080/720/480), camera distance (5 m/2 m/1 m), and point
cloud initialisation quality.
docs/evaluation.mdcalls it "the synthetic ground-truth benchmark we sketchedout for ourselves. It exists, and the code and data are released."
Read their per-axis numbers before re-running our own view-count experiment. That experiment is void (the
ceilbug) and would cost about 40 minutes a config to redo.The part worth building, which is small
MUGSQA renders in Blender with exact poses in NeRF-synthetic format, so COLMAP is never in their loop. Their
initialisation axis degrades a point cloud synthetically rather than testing whether a matcher produced a
good one.
That also means their release is an SfM benchmark we get for free: rendered views plus known extrinsics is
exactly what scores COLMAP. Run each matcher variant on their images, compare against their poses, read
rotation and translation error. No rendering, no training run, minutes per config.
Caveat that decides how far to trust it: Blender renders of Sketchfab objects have no motion blur, no rolling
shutter, no textureless plaster, no auto-exposure wander. Use it to rank candidates cheaply, then confirm the
winner with one paired A/B on a real scene, everything downstream held fixed.
Coverage, so this does not get re-derived again
Measured on our own data:
docs/evaluation.mddocs/methods_and_models.md§6.7max_gs_num/ cap_maxdocs/evaluation.mddocs/evaluation.mddocs/evaluation.mdNot measured by us, and not by MUGSQA either:
docs/troubleshooting.mdas capture advice ("preventmotion blur, avoid fast motion or low light") with nothing behind them.
3DGS-QA degrades exported assets with positional noise and SH perturbation, which is a different thing from
capture-side noise and does not substitute for it.
Plan
worth 40 minutes a config.
gaudi_fountain, everything after SfM held fixed.gandalf,legolas,lizard_landscapeandlizard_portrait, which lacksparse_pc.ply. Checkwhether the COLMAP sparse model survived first; if it did, this is a processing re-run and not an SfM one.
Do not build a synthetic benchmark for this. Step 2 uses someone else's.
Related
step 2 gives Evaluate VGGT / MASt3R-SfM as future SfM backends #18 a way to be answered.
which folds SfM error, training and mesh extraction into one number.