Repository navigation
First public release of the PoseGuard-NeRF study: 45 controlled NeRF training runs on Lego under camera-pose noise, with a Sim(3) diagnostic that separates reconstruction quality from global coordinate drift. See the README for the findings and docs/EXPERIMENTS.md for the protocol.
Checkpoints
Seven final checkpoints (step 29,999, Nerfstudio 1.1.5, seed 42), enough to reproduce the full GT-condition alignment table and the T5 comparison in the README without training.
| File | Condition | Method | Test PSNR (raw) |
|---|---|---|---|
poseguard_lego_SV100-GT_fixed_step29999.ckpt |
GT poses | Fixed cameras | 27.12 |
poseguard_lego_SV100-GT_naive_step29999.ckpt |
GT poses | Naive | 17.91 |
poseguard_lego_SV100-GT_camp_step29999.ckpt |
GT poses | CamP-style | 19.90 |
poseguard_lego_SV100-GT_naive-warmup_step29999.ckpt |
GT poses | Naive + warm-up | 22.71 |
poseguard_lego_SV100-GT_camp-warmup_step29999.ckpt |
GT poses | CamP-style + warm-up | 21.08 |
poseguard_lego_SV100-T5_fixed_step29999.ckpt |
5% translation noise | Fixed cameras | 14.14 |
poseguard_lego_SV100-T5_naive-warmup_step29999.ckpt |
5% translation noise | Naive + warm-up | 22.68 |
Verify downloads with shasum -a 256 -c SHA256SUMS (macOS) or sha256sum -c SHA256SUMS (Linux).
Loading a checkpoint
Each checkpoint pairs with the config.yml archived in the repository:
| Checkpoint | Config | Place the checkpoint at <output_dir>/… |
|---|---|---|
| GT fixed | artifacts/experiments/baseline/fixed/SV100-GT/config.yml |
lego_sv100/vanilla-nerf/2026-09-30_141114/nerfstudio_models/step-000029999.ckpt |
| GT naive | artifacts/experiments/pose_optimization/naive/SV100-GT/config.yml |
SV100-GT/poseguard-naive/run/nerfstudio_models/step-000029999.ckpt |
| GT camp | artifacts/experiments/pose_optimization/camp/SV100-GT/config.yml |
SV100-GT/poseguard-camp/run/nerfstudio_models/step-000029999.ckpt |
| GT naive + warm-up | artifacts/experiments/warmup/naive/SV100-GT/config.yml |
SV100-GT/poseguard-naive/run/nerfstudio_models/step-000029999.ckpt |
| GT camp + warm-up | artifacts/experiments/warmup/camp/SV100-GT/config.yml |
SV100-GT/poseguard-camp/run/nerfstudio_models/step-000029999.ckpt |
| T5 fixed | artifacts/experiments/baseline/fixed/SV100-T5/config.yml |
lego_sv100_tnoise_5pct/vanilla-nerf/2026-10-01_013952/nerfstudio_models/step-000029999.ckpt |
| T5 naive + warm-up | artifacts/experiments/warmup/naive/SV100-T5/config.yml |
SV100-T5/poseguard-naive/run/nerfstudio_models/step-000029999.ckpt |
- Copy the config, then edit
output_dir(your checkpoint root) and the dataparserdatapath (yournerf_synthetic/lego; the test split is the same GT for every condition). The configs record the original server paths. - Rename the checkpoint to
step-000029999.ckptand place it at the path in the table, under youroutput_dir. Use a separateoutput_dirper checkpoint, since some share a relative path. - For the pose-optimization runs, register the project methods from a repository checkout:
export PYTHONPATH=/path/to/PoseGuard-NeRF export NERFSTUDIO_METHOD_CONFIGS='poseguard-naive=poseguard.methods:naive,poseguard-camp=poseguard.methods:camp'
- Evaluate with
ns-eval --load-config path/to/config.yml --output-path metrics.json.
This follows Nerfstudio 1.1.5's standard checkpoint layout, which is how the original evaluation loaded these files; the steps have not yet been re-run on a fresh machine. Reported test metrics use Nerfstudio's inference behavior (near reset to 0, far 6); see docs/EXPERIMENTS.md.
Scope
Single scene (Lego), single seed (42). The full aligned evaluation covers the GT condition only. CamP-style is a controlled re-implementation of the preconditioning idea, not the original CamP code.