Skip to content

E-RayZer implementation#55

Merged
themattinthehatt merged 45 commits into
mainfrom
erayzer
Jun 24, 2026
Merged

E-RayZer implementation#55
themattinthehatt merged 45 commits into
mainfrom
erayzer

Conversation

@themattinthehatt

@themattinthehatt themattinthehatt commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Adds ERayZer, a multi-view 3D model that reconstructs scenes via Gaussian splatting from posed camera views. This is the core model behind BEAST3D.

New model: ERayZer

  • Full implementation of the ERayZer model (beast/models/erayzer/) including camera prediction, Gaussian splatting renderer, and novel view synthesis
  • Gaussian splatting renderer wrapping a custom gsplat fork with intrinsics gradient support
  • Perceptual losses (DINO, VGG) and rendering losses (L2, regularization)

Multi-view data pipeline

  • MultiViewDataset and MultiViewDataModule for loading multi-view scenes with images, camera poses, and intrinsics
  • MultiViewExampleDict typed batch dict

Geometry and rendering utilities

  • beast/geometry/ — camera transforms, intrinsic normalization, SE(3) helpers, rotation representations, 2D sinusoidal positional encoding
  • beast/rendering/ — gsplat-based Gaussian splatting renderer
  • beast/nn/ — transformer blocks, DINO feature extractor, perceptual loss modules

Architecture refactor

  • Introduced model registry (MODEL_REGISTRY, TRAIN_REGISTRY, CONFIG_REGISTRY) for clean model dispatch
  • Moved existing models into per-model packages: beast/models/beast_resnet/, beast/models/beast_vit/
  • Per-model Pydantic config classes with discriminated unions
  • Removed xformers and lpips dependencies

Docs and install

  • Developer guide (docs/developer_guide.md) with step-by-step checklist for adding new models
  • BEAST3D user documentation (docs/beast3d.md)
  • Updated install instructions for gsplat build-from-source requirement (--no-build-isolation)

Tests

  • Comprehensive tests for ERayZer model, geometry utilities, rendering, transformer blocks, perceptual losses, and config validation
  • Integration test for ERayZer training loop

New dependencies

  • gsplat (custom fork — compiled from source)
  • einops, matplotlib, plyfile, typing_extensions

@codecov

codecov Bot commented Jun 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 82.67059% with 353 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.03%. Comparing base (f7570a6) to head (fa618cf).

Files with missing lines Patch % Lines
beast/rendering/gaussians_renderer.py 40.15% 231 Missing ⚠️
beast/models/erayzer/erayzer_model.py 88.16% 80 Missing ⚠️
beast/models/erayzer/visualize.py 88.60% 18 Missing ⚠️
beast/geometry/camera.py 92.53% 15 Missing ⚠️
beast/nn/transformer.py 92.20% 6 Missing ⚠️
beast/data/datasets.py 96.59% 3 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main      #55      +/-   ##
==========================================
- Coverage   88.22%   86.03%   -2.20%     
==========================================
  Files          32       51      +19     
  Lines        2972     4890    +1918     
==========================================
+ Hits         2622     4207    +1585     
- Misses        350      683     +333     
Files with missing lines Coverage Δ
beast/api/model.py 97.43% <100.00%> (ø)
beast/config.py 100.00% <100.00%> (ø)
beast/data/datamodules.py 96.73% <100.00%> (+1.07%) ⬆️
beast/data/types.py 100.00% <100.00%> (ø)
beast/geometry/positional_encoding.py 100.00% <100.00%> (ø)
beast/geometry/rotations.py 100.00% <100.00%> (ø)
beast/io.py 100.00% <100.00%> (ø)
beast/losses.py 100.00% <100.00%> (ø)
beast/models/beast_resnet/__init__.py 100.00% <100.00%> (ø)
beast/models/beast_resnet/beast_resnet_config.py 100.00% <100.00%> (ø)
... and 19 more

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@themattinthehatt themattinthehatt merged commit 56ef9a6 into main Jun 24, 2026
3 of 9 checks passed
@themattinthehatt themattinthehatt deleted the erayzer branch June 24, 2026 00:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants