Reconstruction review

Clip 9fc15f8c-5974-4a8f-a0d1-b64539474ed7 · 2 reconstruction modes: Instant NuRec, Full NuRec · built 2026-10-11T17:53:03+00:00 · code 8b49dcae25
real footage reconstruction

Front camera, static-only scores

ModePSNR sSSIM sLPIPS sPSNR fullSSIM fullLPIPS fullActorsStatic Gaussians
Instant NuRec12.520.3670.57212.530.3650.592171,912,472
Full NuRec13.670.5230.57313.730.5200.590172,710,811
These frames were also training frames for both reconstructions, which flatters every score on this page. There is no held-out view here; the lane-shift section is the only novel-view test.
Static-only masks out the ego vehicle and every detected track's projected 3D box, so it scores the background alone. Full frame also counts the cars, including the many the detector missed or the QA gate rejected, which were never placed back. Neither reconstruction models the sky: the renders leave it black, and both variants count those pixels.

Real camera vs reconstruction

Front camera every frame; the other cameras every 2 frames (render budget: 0.33 s/frame measured on the first 20 front frames, 22.0 min per mode). Boxes: cyan = composed actor (labelled with its track id), thin grey = detected by the LiDAR detector but not composed (no usable Step 1 crop, Step 2 failed, or rejected by the QA gate). Space plays/pauses, ←/→ steps one frame, F flips A/B.

Metrics per camera

CameraFramesInstant NuRecFull NuRec
PSNR sSSIM sLPIPS sPSNRSSIMLPIPSPSNR sSSIM sLPIPS sPSNRSSIMLPIPS
Front wide 120°59912.520.3670.57212.530.3650.59213.670.5230.57313.730.5200.590
Cross left 120°30010.620.2960.67110.750.2980.70313.470.5340.52813.540.5280.558
Cross right 120°30012.880.3240.65212.870.3210.68115.470.5670.52115.440.5620.544
Rear left 70°3009.130.2270.7929.260.2280.83014.810.6610.49214.840.6510.521
Rear right 70°3009.760.2210.8039.840.2180.83514.060.6140.50814.060.6060.533
Front tele 30°30017.000.4780.62315.970.4600.68416.990.5660.50716.750.5560.550

"s" = static-only (ego vehicle + every detected box masked). PSNR over unmasked pixels; SSIM = mean of the SSIM map over unmasked pixels; LPIPS (AlexNet) after filling masked pixels of the render with the real ones. 6 cameras, 960 px wide.

Alignment check (before any metric)

Each render uses the camera's own calibration and its rolling-shutter start/end pose at that frame. Orange = edges in the real frame, cyan = edges in the render, white = both. The shift is the sub-pixel phase-correlation offset between the two frames (ego vehicle masked).

Instant NuRec

edge overlay Instant NuRec frame 149
t=4.868 s · shift (-0.45, +0.13) px · 50% of real edges have a render edge within 2 px
edge overlay Instant NuRec frame 299
t=9.868 s · shift (+0.55, -0.07) px · 49% of real edges have a render edge within 2 px
edge overlay Instant NuRec frame 449
t=14.868 s · shift (+0.07, +0.06) px · 43% of real edges have a render edge within 2 px

Full NuRec

edge overlay Full NuRec frame 149
t=4.868 s · shift (+0.03, +0.13) px · 31% of real edges have a render edge within 2 px
edge overlay Full NuRec frame 299
t=9.868 s · shift (+0.83, +0.05) px · 26% of real edges have a render edge within 2 px
edge overlay Full NuRec frame 449
t=14.868 s · shift (+0.20, +0.15) px · 22% of real edges have a render edge within 2 px

Lane shift: front camera, ego moved left

The same drive with the camera moved 1.5 m and 3.0 m to the left (rig +y). There is no real footage for these views, since the car never drove there. This is the novel-view test: the scene has to hold up away from the path it was trained on. Instant NuRec: a point 15 m ahead moved from u=483.3 px to u=535.6 px for 1.5 m left — the expected direction. Full NuRec: a point 15 m ahead moved from u=483.3 px to u=535.6 px for 1.5 m left — the expected direction.

Removed-actor check

For each mode the scene was composed again without the actor that covers the most of the front camera (into a scratch directory; the real scene is untouched), and rendered at the frames where that car was closest. If the background behind it was reconstructed, the right image shows road; if not, a hole or a smear.

Instant NuRec — removed ext_0047 (automobile)

real
Real · t=6.968 s
normal
Instant NuRec, all actors
removed
Instant NuRec, without ext_0047 (21,741 px box)
real
Real · t=7.334 s
normal
Instant NuRec, all actors
removed
Instant NuRec, without ext_0047 (79,863 px box)
real
Real · t=7.834 s
normal
Instant NuRec, all actors
removed
Instant NuRec, without ext_0047 (44,144 px box)

Full NuRec — removed ext_0047 (automobile)

real
Real · t=6.968 s
normal
Full NuRec, all actors
removed
Full NuRec, without ext_0047 (21,741 px box)
real
Real · t=7.334 s
normal
Full NuRec, all actors
removed
Full NuRec, without ext_0047 (79,863 px box)
real
Real · t=7.834 s
normal
Full NuRec, all actors
removed
Full NuRec, without ext_0047 (44,144 px box)

Actors (20 harvested tracks, Step 2 seed 0)

Left: real Step 1 crops the diffusion model saw. Right: the generated asset, fitted to the LiDAR cuboid, from the front, three-quarter, side and rear.

ext_0006

accepted Instant Full
automobile · spread 1.39x <= 1.8x threshold
Step 1 cropStep 1 crop
ext_0006 frontext_0006 three_quarterext_0006 sideext_0006 rear
cuboid L×W×H (LiDAR)4.77 × 1.95 × 1.69 masset extent after fit (p1–p99)4.48 × 1.77 × 1.43 mraw harvested extent0.456 × 0.264 × 0.912anisotropy spread1.40× (gate 1.8×)Gaussians89,633

ext_0009

accepted Instant Full
automobile · spread 1.22x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 crop
ext_0009 frontext_0009 three_quarterext_0009 sideext_0009 rear
cuboid L×W×H (LiDAR)4.53 × 1.93 × 1.72 masset extent after fit (p1–p99)4.22 × 1.70 × 1.57 mraw harvested extent0.414 × 0.351 × 0.844anisotropy spread1.22× (gate 1.8×)Gaussians96,389

ext_0019

rejected
automobile · anisotropy spread 2.35x > 1.8x threshold (QA gate)
Step 1 cropStep 1 crop
ext_0019 frontext_0019 three_quarterext_0019 sideext_0019 rear
cuboid L×W×H (LiDAR)4.53 × 1.95 × 1.76 masset extent after fit (p1–p99)4.14 × 1.81 × 1.46 mraw harvested extent0.797 × 0.348 × 0.775anisotropy spread2.35× (gate 1.8×)Gaussians96,308

ext_0002

accepted Instant Full
automobile · spread 1.10x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 cropStep 1 crop
ext_0002 frontext_0002 three_quarterext_0002 sideext_0002 rear
cuboid L×W×H (LiDAR)4.52 × 1.87 × 1.63 masset extent after fit (p1–p99)4.22 × 1.74 × 1.56 mraw harvested extent0.404 × 0.344 × 0.893anisotropy spread1.10× (gate 1.8×)Gaussians101,816

ext_0000

accepted Instant Full
automobile · spread 1.18x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 cropStep 1 crop
ext_0000 frontext_0000 three_quarterext_0000 sideext_0000 rear
cuboid L×W×H (LiDAR)4.23 × 1.74 × 1.61 masset extent after fit (p1–p99)4.05 × 1.61 × 1.50 mraw harvested extent0.391 × 0.329 × 0.834anisotropy spread1.18× (gate 1.8×)Gaussians101,335

ext_0004

accepted Instant Full
automobile · spread 1.23x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 cropStep 1 crop
ext_0004 frontext_0004 three_quarterext_0004 sideext_0004 rear
cuboid L×W×H (LiDAR)4.66 × 1.89 × 1.59 masset extent after fit (p1–p99)4.42 × 1.68 × 1.51 mraw harvested extent0.384 × 0.286 × 1.027anisotropy spread1.23× (gate 1.8×)Gaussians98,945

ext_0047

accepted Instant Full
automobile · spread 1.09x <= 1.8x threshold
Step 1 crop
ext_0047 frontext_0047 three_quarterext_0047 sideext_0047 rear
cuboid L×W×H (LiDAR)6.15 × 2.44 × 2.23 masset extent after fit (p1–p99)5.91 × 2.11 × 2.05 mraw harvested extent0.311 × 0.279 × 0.879anisotropy spread1.09× (gate 1.8×)Gaussians101,586

ext_0121

rejected
two_wheeler · anisotropy spread 4.26x > 1.8x threshold (QA gate)
Step 1 crop
ext_0121 frontext_0121 three_quarterext_0121 sideext_0121 rear
cuboid L×W×H (LiDAR)1.99 × 0.59 × 1.41 masset extent after fit (p1–p99)1.60 × 0.50 × 1.23 mraw harvested extent0.664 × 0.383 × 0.658anisotropy spread4.26× (gate 1.8×)Gaussians70,303

ext_0026

accepted Instant Full
automobile · spread 1.25x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 cropStep 1 crop
ext_0026 frontext_0026 three_quarterext_0026 sideext_0026 rear
cuboid L×W×H (LiDAR)4.61 × 1.92 × 1.69 masset extent after fit (p1–p99)4.41 × 1.72 × 1.59 mraw harvested extent0.368 × 0.272 × 0.934anisotropy spread1.25× (gate 1.8×)Gaussians98,395

ext_0128

accepted Instant Full
automobile · spread 1.28x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 cropStep 1 crop
ext_0128 frontext_0128 three_quarterext_0128 sideext_0128 rear
cuboid L×W×H (LiDAR)5.64 × 2.12 × 1.88 masset extent after fit (p1–p99)5.43 × 1.96 × 1.71 mraw harvested extent0.504 × 0.342 × 1.215anisotropy spread1.28× (gate 1.8×)Gaussians96,182

ext_0142

accepted Instant Full
automobile · spread 1.17x <= 1.8x threshold
Step 1 crop
ext_0142 frontext_0142 three_quarterext_0142 sideext_0142 rear
cuboid L×W×H (LiDAR)4.94 × 2.10 × 1.99 masset extent after fit (p1–p99)4.70 × 1.96 × 1.91 mraw harvested extent0.401 × 0.338 × 0.973anisotropy spread1.17× (gate 1.8×)Gaussians92,285

ext_0007

accepted Instant Full
automobile · spread 1.41x <= 1.8x threshold
Step 1 crop
ext_0007 frontext_0007 three_quarterext_0007 sideext_0007 rear
cuboid L×W×H (LiDAR)4.27 × 1.81 × 1.67 masset extent after fit (p1–p99)4.11 × 1.63 × 1.57 mraw harvested extent0.406 × 0.279 × 0.971anisotropy spread1.41× (gate 1.8×)Gaussians98,776

ext_0221

rejected
two_wheeler · anisotropy spread 4.46x > 1.8x threshold (QA gate)
Step 1 cropStep 1 crop
ext_0221 frontext_0221 three_quarterext_0221 sideext_0221 rear
cuboid L×W×H (LiDAR)1.59 × 0.56 × 1.07 masset extent after fit (p1–p99)1.28 × 0.50 × 0.96 mraw harvested extent0.719 × 0.805 × 0.410anisotropy spread4.46× (gate 1.8×)Gaussians103,479

ext_0003

accepted Instant Full
automobile · spread 1.15x <= 1.8x threshold
Step 1 crop
ext_0003 frontext_0003 three_quarterext_0003 sideext_0003 rear
cuboid L×W×H (LiDAR)4.51 × 1.94 × 1.66 masset extent after fit (p1–p99)4.32 × 1.78 × 1.54 mraw harvested extent0.392 × 0.302 × 0.975anisotropy spread1.15× (gate 1.8×)Gaussians99,679

ext_0217

accepted Instant Full
automobile · spread 1.13x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 crop
ext_0217 frontext_0217 three_quarterext_0217 sideext_0217 rear
cuboid L×W×H (LiDAR)4.62 × 1.92 × 1.73 masset extent after fit (p1–p99)4.28 × 1.61 × 1.64 mraw harvested extent0.396 × 0.356 × 0.971anisotropy spread1.13× (gate 1.8×)Gaussians96,391

ext_0067

accepted Instant Full
automobile · spread 1.17x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 cropStep 1 crop
ext_0067 frontext_0067 three_quarterext_0067 sideext_0067 rear
cuboid L×W×H (LiDAR)4.93 × 2.09 × 1.95 masset extent after fit (p1–p99)4.67 × 1.83 × 1.86 mraw harvested extent0.382 × 0.332 × 0.896anisotropy spread1.17× (gate 1.8×)Gaussians97,805

ext_0292

accepted Instant Full
automobile · spread 1.21x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 cropStep 1 crop
ext_0292 frontext_0292 three_quarterext_0292 sideext_0292 rear
cuboid L×W×H (LiDAR)4.90 × 1.94 × 1.85 masset extent after fit (p1–p99)4.61 × 1.71 × 1.76 mraw harvested extent0.365 × 0.361 × 1.148anisotropy spread1.22× (gate 1.8×)Gaussians91,997

ext_0109

accepted Instant Full
automobile · spread 1.25x <= 1.8x threshold
Step 1 crop
ext_0109 frontext_0109 three_quarterext_0109 sideext_0109 rear
cuboid L×W×H (LiDAR)4.97 × 2.12 × 2.12 masset extent after fit (p1–p99)4.78 × 1.97 × 2.00 mraw harvested extent0.410 × 0.332 × 0.957anisotropy spread1.25× (gate 1.8×)Gaussians98,537

ext_0129

accepted Instant Full
automobile · spread 1.13x <= 1.8x threshold
Step 1 cropStep 1 crop
ext_0129 frontext_0129 three_quarterext_0129 sideext_0129 rear
cuboid L×W×H (LiDAR)4.30 × 1.83 × 1.59 masset extent after fit (p1–p99)4.07 × 1.58 × 1.50 mraw harvested extent0.372 × 0.325 × 0.852anisotropy spread1.12× (gate 1.8×)Gaussians97,778

ext_0319

accepted Instant Full
automobile · spread 1.16x <= 1.8x threshold
Step 1 cropStep 1 cropStep 1 cropStep 1 crop
ext_0319 frontext_0319 three_quarterext_0319 sideext_0319 rear
cuboid L×W×H (LiDAR)4.00 × 1.70 × 1.45 masset extent after fit (p1–p99)3.79 × 1.52 × 1.36 mraw harvested extent0.405 × 0.311 × 0.949anisotropy spread1.16× (gate 1.8×)Gaussians102,076

Explore it yourself

Raw scene files (usdz/PLY, 2.15 GB) available on request.

File (not hosted)MBWhat
review_assets/instant/scene_instant.usdz632.9Composed scene (instant background + actors), OpenUSD, for Isaac Sim
review_assets/instant/static_scene_instant.ply147.3Static background only (instant), 3DGS PLY, SH degree 0
review_assets/instant/combined_busiest_instant.ply176.7Static + actors at the busiest instant (instant), 3DGS PLY, for SuperSplat
review_assets/full/scene_full.usdz781.0Composed scene (full background + actors), OpenUSD, for Isaac Sim
review_assets/full/static_scene_full.ply184.3Static background only (full), 3DGS PLY, SH degree 0
review_assets/full/combined_busiest_full.ply231.0Static + actors at the busiest instant (full), 3DGS PLY, for SuperSplat
Isaac Sim opens the usdz and plays the timeline, but renders these splats with a known milky haze compared to 3DGRUT. 3DGRUT is the canonical renderer for this pipeline; every image on this page is a 3DGRUT render.

SuperSplat (superspl.at/editor) opens the PLYs in a browser. It could not be tested headless here; instead the combined PLY was read back with plyfile. Instant NuRec: 2,599,045 Gaussians at t=0.0 s with 7 actors; standard 3DGS properties present: yes (checked with plyfile). Full NuRec: 3,397,384 Gaussians at t=0.0 s with 7 actors; standard 3DGS properties present: yes (checked with plyfile).

About

Input: one clip from NVIDIA's PhysicalAI Autonomous Vehicles dataset, with 7 cameras and a roof LiDAR, about 20 s at an intersection. These are not Indian roads and not EdgeRecon's own rig.

Measured vs generated. The background is reconstructed from this clip's own camera and LiDAR data. The vehicles are not reconstructed: Asset Harvester's diffusion model generates them from a few camera crops, then they are placed on their LiDAR-tracked trajectories. A generated car can look plausible and still not match the real one.
Full NuRec colour is time-averaged. nre-ga trains a Fourier temporal appearance per Gaussian; this pipeline keeps only the constant term (collapse method: first), i.e. the clip-average colour, so lighting that changes during the clip is averaged out.
Known limits. The detector misses many vehicles (grey and unboxed cars in the overlay). Without a fixed Step 2 seed the actor count varies between runs (15–17 seen); this run used Step 2 seed 0. Neither background models the sky. Isaac Sim renders the splats with a haze. Each actor is shown only inside its observed time window; the USD holds the end pose outside it.

live Raw clip → NCore conversion · aux masking/depth · Instant NuRec · full NuRec training (A100) · Asset Harvester · USD composition + validation
roadmap EdgeRecon's own rig and Indian-road capture · scenario variation (Replicator, Cosmos) · NuRec's native dynamic-actor layer (not functional in the public release)
gap close-range LiDAR cuboid fitting in dense traffic (diagnosed, not solved)

Status pills follow EdgeRecon_Master_Status.md §7 and §3; nothing here goes beyond what it records as run.

This run's GPU steps (from the watchdog logs)

StepWall (m:s)Card peak MiBRuns
01_detect_all_vehicles_nuscenes0:351,1601
02_ncore_convert2:165071
03_aux_container——1
03_reconstruction_full_export——3
03_reconstruction_full_train——1
03_reconstruction_instant1:1011,0351
04_harvest_step1_ncore_parser1:455,6741
04_harvest_step217:4920,3241
07_review_render_full—3,2762
07_review_render_instant5:112,9101

"—": the docker steps' watchdog is stopped before it writes its peak line, and a re-run appends to the same log, so no single wall time or peak can be read from it.