P7 — Relighting decision protocol (v0.8: real inverse rendering vs formal descope)¶
This note is the pre-registered decision protocol for AURA's relighting path (audit item M1). It fixes, before the GPU attempt, exactly what will be tried, the benchmarks and numeric bar it must clear, the descope alternative, and the rule that chooses between them — so the v0.8 outcome is a measurement, not a narrative. Scope discipline matches the rest of the repo: every target number below is either a CONFIRMED figure quoted from a cited paper table, or explicitly marked UNCONFIRMED (to be filled at eval time) rather than guessed.
Companion code: the CPU-buildable, GPU-runnable evaluation harness
experiments/relight_benchmark_harness.py (+ tests/test_relight_harness.py)
already implements the metrics, dataset loaders, and results tables used here.
1. Current state (the preview being judged)¶
src/aura/relight.py is a preview, not inverse rendering:
- Albedo = the baked SH DC term (
0.5 + C0·dc) — the diffuse colour the scene trained with; it still contains residual baked-in shading. - Normals = the covariance short axis; unsigned (both faces lit, brighter kept) and noisy for near-isotropic carriers.
- No per-carrier material optimization — nothing is fit to observations; the
Lambertian / Cook-Torrance BRDFs in
shading.pyare applied forward to these guessed fields. The B3 publication gate honestly titles this "Relighting response on real asset" and only checks that the relit output responds to light/albedo.
2. What v0.8 will attempt¶
A genuine per-scene inverse-rendering pass on GPU:
- Per-carrier material optimization — optimize an explicit per-carrier
(albedo, roughness, metallic)(theRelightingPayloadcontract already exists) against the multi-view training images under the known/estimated illumination, so albedo is de-lit rather than the baked DC colour. - Signed-normal recovery — replace the unsigned covariance axis with a sign-disambiguated, optimized normal (view-consistency / photometric loss), which is what the TensoIR normal-MAE metric actually measures.
- Evaluation on TensoIR-Synthetic (4 object scenes; GT albedo + GT normals
- relighting under novel environment maps) and Stanford-ORB (real objects, ground-truth environment relighting), via the harness, against the published object-centric relighting SOTA.
3. The numeric bar¶
Metrics (all implemented in the harness): relit-render PSNR/SSIM/LPIPS under novel illumination; albedo PSNR where GT albedo exists; normal mean-angular- error (deg) where GT normals exist. Stanford-ORB additionally uses PSNR-H (HDR) and PSNR-L (LDR after sRGB tone-map).
3a. Important correction to the M1 baseline list¶
The audit (CLAUDE.md M1) names SSD-GS, R3GW, and GS³ as the relighting
SOTA "to meet on TensoIR / Stanford-ORB." Verified against the papers, none of the
three actually reports TensoIR-Synthetic or Stanford-ORB numbers — they evaluate
on different relighting regimes:
| Named baseline | TensoIR? | Stanford-ORB? | Datasets it does report | Own-dataset headline | Status |
|---|---|---|---|---|---|
| SSD-GS — Scattering & Shadow Decomposition for Relightable 3DGS (arXiv:2604.13333, Victoria Univ. Wellington) | No | No | NRHints OLAT (real), GS³-synthetic, SSS-GS-synthetic | OLAT relighting PSNR/SSIM/LPIPS (Tables 1, 3) | UNCONFIRMED on TensoIR/ORB — not reported |
| R3GW — Relightable 3D Gaussians for Outdoor Scenes in the Wild (arXiv:2603.02801) | No | No | NeRF-OSR (outdoor, in-the-wild) | NVS under varying illumination on NeRF-OSR | UNCONFIRMED — different problem class (outdoor scenes, not object-centric) |
| GS³ — Efficient Relighting with Triple Gaussian Splatting (arXiv:2410.11419) | No | No | Lightstage, NRHints, synthetic point-lit | e.g. NRHints Pikachu PSNR 32.39, Cup-Fabric 37.09 (PSNR/SSIM/LPIPS only; no albedo/normal metrics) | UNCONFIRMED on TensoIR/ORB — not reported |
(Named-baseline own-dataset numbers above are CONFIRMED from each paper's HTML; sources in §5.)
Resolution (pre-registered): keep TensoIR-Synthetic + Stanford-ORB as the eval standard (they are the field's object-relighting benchmarks and the only ones with GT albedo/normals), and anchor the numeric bar to the object-centric Gaussian relighting SOTA that does report there (below). SSD-GS / GS³ / R3GW are retained as qualitative cross-references and, if a head-to-head is wanted, would require running AURA on their datasets (NRHints OLAT / lightstage / NeRF-OSR) — a separate, different-capture-regime effort, not the v0.8 object-relighting bar.
3b. TensoIR-Synthetic bar — CONFIRMED published numbers¶
| Method | Albedo PSNR↑ | NVS PSNR↑ | Relight PSNR↑ | Relight SSIM↑ | Relight LPIPS↓ | Normal MAE°↓ | Source (CONFIRMED) |
|---|---|---|---|---|---|---|---|
| TensoIR (CVPR'23) | 29.275 | 35.088 | 28.580 | 0.944 | 0.081 | 4.100 | GS-IR Tab. [A] |
| GS-IR (CVPR'24) | 30.286 | 35.333 | 24.374 | 0.885 | 0.096 | 4.948 | GS-IR Tab. [A] |
| Relightable-3DGS / R3DG | 29.27 | 33.35 | 27.37 | — | — | 5.927 | PT-IR Tab. 1 [B] |
| SVG-IR (arXiv:2504.06815) | 30.48 | 36.71 | 31.10 | — | — | 4.358 | PT-IR Tab. 1 [B] |
| IRGS (CVPR'25, arXiv:2412.15867) | 33.796¹ | 35.43 | 29.907 | — | — | 4.112 | IRGS Tab. 2 [C] / PT-IR [B] |
| Path-traced IR (arXiv:2606.09606) | 32.12 | 36.17 | 31.84 | — | — | 4.028 | PT-IR Tab. 1 [B] |
¹ IRGS albedo PSNR is 33.796 in its own Table 2 [C] but re-tabulated as 30.62 in PT-IR Table 1 [B]; the gap is an albedo scale-alignment convention difference. SSIM/ LPIPS are only CONFIRMED for the TensoIR and GS-IR rows (source [A]); "—" = not captured, not zero.
Reading of the field: object-relighting SOTA sits at relight PSNR ≈ 28–32 dB, albedo PSNR ≈ 29–32 dB, normal MAE ≈ 4°. Even GS-IR — a strong Gaussian method — lands at relight PSNR 24.37 and normal MAE 4.95, i.e. entering the arena credibly is itself a high bar for a method whose starting point is a baked-DC preview.
3c. Stanford-ORB bar — UNCONFIRMED (fill at eval time)¶
Stanford-ORB (Kuang et al., NeurIPS 2023; live leaderboard at
https://stanfordorb.github.io/) reports PSNR-H / PSNR-L / SSIM / LPIPS and
geometry (depth/normal) scores on 14 real objects. The Gaussian-method rows on ORB
were not confirmable from the paper HTML fetched for this note (IRGS and PT-IR
show ORB only qualitatively). The GPU eval session must pull the current
published Gaussian-relighting PSNR-L / PSNR-H from the live leaderboard and record
it here before applying the rule; treat every Stanford-ORB target as UNCONFIRMED
until then.
4. Pre-registered decision rule¶
Run the v0.8 attempt on all four TensoIR-Synthetic scenes (armadillo, ficus, hotdog, lego) at the standard eval resolution, single run, plus the Stanford-ORB eval set. Report the harness aggregate before any per-scene inspection (no cherry-picking). Then:
PROMOTE to "real inverse-rendered relighting" (v0.8 = real) iff all hold:
- (i) mean TensoIR relight PSNR ≥ 27.0 dB — within ~2 dB of TensoIR (28.58) / IRGS (29.91), i.e. clears the R3DG (27.37) floor;
- (ii) mean TensoIR albedo PSNR ≥ 27.0 dB — within ~3 dB of GS-IR (30.29), demonstrating genuine de-lighting vs the baked DC;
- (iii) mean TensoIR signed normal MAE ≤ 8.0° — within ~2× of the ~4° SOTA, demonstrating real signed-normal recovery (the preview's unsigned axis cannot score this);
- (iv) Stanford-ORB relight PSNR-L within 3 dB of the current published Gaussian leaderboard entry (threshold value UNCONFIRMED — set from the live leaderboard at eval time).
DESCOPE (default if any criterion fails): formally rename the capability to a
"confidence-weighted relighting preview" everywhere it is user-facing —
README.md, docs/, the CLI (relight-preview stays; help/text updated),
src/aura/relight.py, and the B3 gate title — leaning into AURA's existing
calibrated per-carrier confidence (P0): the preview annotates/weights its relit
output by carrier confidence, which is honest and unique, rather than claiming
material recovery. Keep the honest B3 gate ("Relighting response on real asset")
and the preview scope note unchanged. Record the measured sub-bar numbers as a
published honest negative (the repo's ethos: negatives are kept, not hidden).
Rationale for the asymmetry: PROMOTE requires all criteria because "real inverse rendering" is a conjunction of de-lit albedo + signed normals + relight fidelity; missing any one means the preview framing is the honest one.
5. How the harness plugs in¶
experiments/relight_benchmark_harness.py:
--dataset {tensoir,stanford_orb}resolvesAURA_TENSOIR_ROOT/AURA_STANFORD_ORB_ROOT; never downloads — prints the source URL and exits2when absent (URLs in §3).- Reads an
aura_relight_eval.jsonmanifest (schema in the module docstring) mapping GT frames to the GPU-rendered predictions, then computes relit PSNR/SSIM/LPIPS, albedo PSNR (where GT albedo exists), and signed and unsigned normal MAE (where GT normals exist), and writes a JSON + Markdown table. --smokeruns the full metric pipeline on synthetic fixtures with no dataset/GPU (CI-tested end to end). LPIPS is a real metric only when thelpipsbackbone loads; otherwise the step reports an honest backend label andnull, never a fabricated score.
The GPU session's only new work is (a) the material/normal optimizer, (b) rendering predictions, (c) writing the manifest, and (d) filling the Stanford-ORB UNCONFIRMED threshold — then this rule decides v0.8.
Sources (confirmed via arXiv HTML, 2026-07-03)¶
- [A] GS-IR — arXiv:2311.16473v3, TensoIR-Synthetic comparison table (TensoIR & GS-IR rows, incl. relight SSIM/LPIPS).
- [B] Path-traced Inverse Rendering (PT-IR) — arXiv:2606.09606, Table 1 (TensoIR): TensoIR / GS-IR / R3DG / SVG-IR / IRGS / proposed rows.
- [C] IRGS — arXiv:2412.15867, Table 2 (TensoIR): relight PSNR 29.907, albedo PSNR 33.796, normal MAE 4.112.
- SSD-GS — arXiv:2604.13333 (datasets: NRHints OLAT, GS³-synthetic, SSS-GS); R3GW — arXiv:2603.02801 (dataset: NeRF-OSR); GS³ — arXiv:2410.11419 (datasets: lightstage / NRHints / synthetic point-lit). All three: no TensoIR / Stanford-ORB numbers reported.
- Stanford-ORB — Kuang et al., NeurIPS 2023, arXiv:2310.16044;
leaderboard
https://stanfordorb.github.io/(Gaussian ORB numbers UNCONFIRMED here — pull at eval time).