M3 EventVGGT checkpoints (EventGS)
Event-only, pose-free, feed-forward 3D Gaussian Splatting model.
Setup
- Input: event voxel (5-bin polarity), 3 views, 448x448, calibrated intrinsics
- Backbone: EventVGGT LoRA-DINO patch embed -> STream3R causal aggregator -> token-conditioned anchor decoder (anchor64x4, 32768 Gaussians)
- Training: EV3DS 80/10/10, three-stage schedule, validation selection on zeroed PSNR with guards
Best model (r448-20k)
Metrics on the ten EV3DS validation scenes (zeroed-GT grayscale PSNR = the EvGGS paper protocol, same scenes):
| zeroed | masked | photometric | alpha IoU | AbsRel | pose ATE |
|---|---|---|---|---|---|
| 26.25 | 16.82 | 24.86 | 0.938 | 0.0196 | 1.2 mm |
Held-out test split (10 scenes, never used for training/selection): zeroed 23.57, AbsRel 0.0272, ATE 1.0 mm.
Comparison with EvGGS (official ft_evggs.pth, re-run by us on the same
ten scenes and same protocol): EvGGS 19.90 dB; ours +6.35 dB. The
27.95 dB in the EvGGS paper is not reproducible from its released weights.
LPIPS (VGG, same network): ours 0.102 vs EvGGS 0.115.
Zero-shot real data: MVSEC depth AbsRel 0.175 / pose 1.33 deg; TUM-VIE pose 1.3-2.0 deg; IncEventGS Replica photometric PSNR 15.4/11.9.
Files
validation_selected.pt: EventVGGT 3-view 50k @ render256 (zeroed 25.50)r448-2k_validation_selected.pt: 2k finetune @ 448 (zeroed 26.16)r448-20k_validation_selected.pt: 20k finetune @ 448 (zeroed 26.25, best)
Each checkpoint is a torch dict with config, gaussian_head,
selected_allowed_parameter_groups, etc.
Loading
import torch
ckpt = torch.load('r448-20k_validation_selected.pt', map_location='cpu', weights_only=False)
Reproduction commands: see paper/REPRODUCIBILITY_2026_08_21.md in
github.com/TermInaL1111/p-re (branch m3-baseline-fix).