This project implements Gaussian Splatting for 3D scene reconstruction, designed to work as part of a larger Neural Radiance Fields (NeRF) pipeline. It provides functionality for training Gaussian models, rendering scenes, and serving results through a web interface.
The Gaussian Splatting system consists of several key components:
- Job Dispatcher: Manages the queue of training jobs and dispatches them to available GPUs.
- Training Pipeline: Implements the core Gaussian Splatting algorithm for learning 3D scene representations.
- Rendering Engine: Renders the learned 3D scenes from various viewpoints.
- File Server: Provides HTTP access to the generated outputs.
- Utility Functions: Includes various helper functions for data conversion, output generation, and more.
- Multi-GPU support for concurrent job processing
- RabbitMQ integration for job queueing and management
- Dynamic configuration of training parameters
- Output generation in multiple formats (PLY, SPLAT, video)
- Web server for accessing rendered results
- CUDA-capable 11.7 GPU(s)
- NVCC for Pytorch Extension compilation READ THIS
- Python 3.7+
- PyTorch
- RabbitMQ
- Flask
Refer to the backend setup instructions
If you wish to manually build the container
- Build the image
docker build -t nerf-worker
- Start the image
docker run nerf-worker
- Clone this repository
- Install the required Python packages:
pip install -r requirements.txt
- Set up RabbitMQ and configure the connection details in the
.env
file
- Start the job dispatcher:
python dispatcher.py
- Start the file server:
python fileserver.py
- Submit jobs to the
nerf-in
queue in RabbitMQ
The system can be configured through various parameters in the train.py
file and environment variables. Key configuration options include:
- Number of training iterations
- Output types (PLY, SPLAT, video)
- GPU allocation strategy
- RabbitMQ connection details
Contributions to improve the Gaussian Splatting system are welcome. Please submit pull requests or open issues for any bugs or feature requests.
This project is licensed under [LICENSE NAME] - see the LICENSE.md file for details.
- INRIA GRAPHDECO research group for the original Gaussian Splatting implementation
- [Spring '24 Team] for adapting and extending the system
For more detailed information on specific components and processes, please refer to the wiki pages.