How cvlab-uos/viewsplat works
ViewSplat is a feed-forward novel-view synthesis system that predicts and refines 3D Gaussian attributes for a requested camera pose. The principal workflow is configured in src/main.py: it constructs the model and data module, then trains or tests them; the model wrapper coordinates encoding, rendering, and losses. Separate capabilities include pose evaluation and in-the-wild point-cloud/video visualization. Edges are limited to relationships supported by the README, excerpts, or SOURCE INDEX; unsampled subsystem links are omitted where callers are not evidenced.
Main entry points: validate_in_the_wild.py Wild-Scene Validation · encoder_spf_viewsplat.py ViewSplat Encoder · main.py Train / Test · model_wrapper.py Model Wrapper
Components 21
Training Workflow
- Train / Test
src/main.py - Configuration
src/config.py - Data Loading
src/dataset/data_module.py - RE10K Dataset
src/dataset/dataset_re10k.py - View Sampling
src/dataset/view_sampler/view_sampler_bounded.py - Model Wrapper
src/model/model_wrapper.py - Training Losses
src/loss/loss_ssim.py
Scene Reconstruction
- ViewSplat Encoder
src/model/encoder/encoder_spf_viewsplat.py - Feature Backbones
src/model/encoder/backbone - Gaussian Adapter
src/model/encoder/common/gaussian_adapter.py - Camera Geometry
src/geometry/projection.py - Gaussian Renderer
src/model/decoder/decoder_splatting_cuda.py
Evaluation
- Pose Evaluation Entry
src/eval_pose.py - Pose Evaluator
src/evaluation/pose_evaluator.py - Image Metrics
src/evaluation/metrics.py - Evaluation Indices
src/evaluation/evaluation_index_generator.py
Visualization
- Wild-Scene Validation
src/paper/validate_in_the_wild.py - Point-Cloud Export
src/model/ply_export.py - Result Visualization
src/visualization/layout.py - Image I/O
src/misc/image_io.py
Other components
- Researcher
Connections 24
- Researcher → Train / Test: runs
README.md - Train / Test → Configuration: loads configuration
src/main.py - Train / Test → Data Loading: constructs data
src/main.py - Train / Test → Model Wrapper: trains or tests
src/main.py - Data Loading → RE10K Dataset: gets datasets
src/dataset/data_module.py - Data Loading → View Sampling: configures sampling
- Model Wrapper → ViewSplat Encoder: runs encoder
src/model/model_wrapper.py - Model Wrapper → Gaussian Renderer: renders predictions
- Model Wrapper → Training Losses: computes losses
src/model/model_wrapper.py - ViewSplat Encoder → Feature Backbones: extracts features
src/model/encoder/encoder_spf_viewsplat.py - ViewSplat Encoder → Gaussian Adapter: adapts Gaussians
src/model/encoder/encoder_spf_viewsplat.py - ViewSplat Encoder → Camera Geometry: projects geometry
src/model/encoder/encoder_spf_viewsplat.py - Gaussian Renderer → Camera Geometry: uses projection
- Pose Evaluation Entry → Pose Evaluator: runs evaluation
src/eval_pose.py - Pose Evaluation Entry → Data Loading: loads evaluation data
src/eval_pose.py - Pose Evaluator → Image Metrics: uses metrics
src/evaluation/pose_evaluator.py - Researcher → Pose Evaluation Entry: evaluates poses
src/eval_pose.py - Evaluation Indices → Camera Geometry: computes geometry
src/evaluation/evaluation_index_generator.py - Evaluation Indices → Result Visualization: lays out previews
src/evaluation/evaluation_index_generator.py - Wild-Scene Validation → ViewSplat Encoder: builds reconstruction
src/paper/validate_in_the_wild.py - Wild-Scene Validation → Gaussian Renderer: renders views
src/paper/validate_in_the_wild.py - Wild-Scene Validation → Point-Cloud Export: exports point cloud
src/paper/validate_in_the_wild.py - Wild-Scene Validation → Image I/O: writes images
src/paper/validate_in_the_wild.py - Wild-Scene Validation → Result Visualization: creates visual outputs
src/paper/validate_in_the_wild.py