gscodec_studio

An open-source framework for Gaussian Splats Compression research

https://github.com/jasonlsc/gscodec_studio

Science Score: 41.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

An open-source framework for Gaussian Splats Compression research

Basic Info
  • Host: GitHub
  • Owner: JasonLSC
  • License: apache-2.0
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 30.2 MB
Statistics
  • Stars: 74
  • Watchers: 4
  • Forks: 7
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

GSCodec Studio

GSCodec Studio is an open-source framework for Gaussian Splats Compression, including static and dynamic splats representation, reconstruction and compression. It is bulit upon an open-source 3D Gaussian Splatting library gsplat, and extended to support 1) dynamic splats representation, 2) training-time compression simulation, 3) more test-time compression strategies.

Teaser

News

June 5, 2025: The paper about this framework has been released on arXiv.

Installation

Repo. & Environment

```bash

Clone the repo.

git clone https://github.com/JasonLSC/GSCodecStudio.git --recursive cd GSCodecStudio

Make a conda environment

conda create --name gscodecstudio python=3.10 conda activate gscodecstudio ```

Packages Installation

Please install Pytorch first. Then, you can install the gsplat library extended with more compression features from source code. In this way it will build the CUDA code during installation.

bash pip install .

If you want to do further development based on this framework, you use following command to install Python packages in editable mode. bash pip install -e . # (develop)

Examples

Preparations

Same as gsplat, we need to install some extra dependencies and download the relevant datasets before the evaluation.

```bash cd examples pip install -r requirements.txt

download mipnerf_360 benchmark data

python datasets/download_dataset.py You can download the Tanks and Temples dataset and Deep Blending dataset used in original 3DGS via [this link](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip) and place these datasets under 'data' folder. bash

place other dataset, e.g Tanks and Temples dataset, under 'data' folder

ln -s data/tandt /xxxx/Dataset/tandt ```

We also use third-party library, 'python-fpnge', to accelerate image saving operations during the experiment for now. We also use third-party library, 'gridencoder', to facilitate hash encoding.

bash cd .. pip install third_party/python-fpnge-master pip install third_party/gridencoder

Before we start running scripts, we also need to install library for vector quantization and plas sorting. ```bash

refer to https://github.com/DeMoriarty/TorchPQ?tab=readme-ov-file#install to see how to install TorchPQ

pip install git+https://github.com/fraunhoferhhi/PLAS.git ```

Static Gaussian Splats Training and Compression

We provide a script that enables more memory-efficient Gaussian splats while maintaining high visual quality, such as representing the Truck scene with only about 8MB of storage. The script includes 1) the static splats training with compression simulation, 2) the compression of trained static splats, and 3) the metric evaluation of uncompressed and compressed static splats.

```bash

Tanks and Temples dataset

bash benchmarks/compression/finalexp/mcmctt_sim.sh ```

Dynamic Gaussian Splats Training and Compression

First, please follow the dataset preprocessing instruction described in this file for training data prepration.

Next, run the script for dynamic gaussian splats training and compression. bash cd examples bash benchmarks/dyngs/dyngs.sh

Extract Per-Frame Static Gaussian from Dynamic Splats

If you finsh the training of dynamic splats, then you can use the script to extract static gaussian splats stored at discrte timesteps in ".ply" file bash cd examples bash benchmarks/dyngs/export_plys.sh

Load .ply File and Render

If you want to directly read and render splats exported as PLY files, you can use the following script. Note: You need to modify the PLY file path in the scripts. bash cd examples bash benchmarks/load_ply_and_render.sh

Compress Tracked Gaussian Splats Sequences via Video Codec

If you're interested in MPEG Gaussian Splats Coding, we have implemented a simple coding method for compressing temporally tracked Gaussian Splats using Video Codec as the core component. You can try this method using the script below. bash cd examples bash benchmarks/mpeg/video_anchor_bench.sh

To compare with the Point Cloud Compression-based approach in MPEG Gaussian Splats Coding group, we have developed a simple wrapper based on their software. This allows us to evaluate both methods using the same evaluation protocol. You can try the Point Cloud Compression-based approach using the script below. bash cd examples bash benchmarks/mpeg/pcc_anchor_bench.sh

Note: Before using the scripts mentioned above, please note the following: 1. Please modify the input parameters --ply_dir, --data_dir, and --result_dir in the script to match your local paths. 2. These experiments involve third-party programs, including point cloud codec and QMIV (quality evaluation software). If you need newer versions, you can compile them yourself and replace the current executables under examples/helper.

Contributors

This project is developed by the following contributors:

  • Sicheng Li: jasonlisicheng@zju.edu.cn
  • Chengzhen Wu: chengzhenwu@zju.edu.cn

If you have any questions about this project, please feel free to contact us.

Acknowledgement

This project is bulit on gsplat. We thank all contributors from gsplat for building such a great open-source project.

Owner

  • Name: Sicheng Li
  • Login: JasonLSC
  • Kind: user
  • Location: Hangzhou, Zhejiang
  • Company: Zhejiang Univ.

Citation (CITATION.bib)

@article{ye2024gsplatopensourcelibrarygaussian,
      title={gsplat: An Open-Source Library for {Gaussian} Splatting}, 
      author={Vickie Ye and Ruilong Li and Justin Kerr and Matias Turkulainen and Brent Yi and Zhuoyang Pan and Otto Seiskari and Jianbo Ye and Jeffrey Hu and Matthew Tancik and Angjoo Kanazawa},
      year={2024},
      eprint={2409.06765},
      journal={arXiv preprint arXiv:2409.06765},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2409.06765}, 
}

GitHub Events

Total
  • Issues event: 2
  • Watch event: 63
  • Issue comment event: 3
  • Push event: 20
  • Pull request event: 2
  • Fork event: 6
  • Create event: 2
Last Year
  • Issues event: 2
  • Watch event: 63
  • Issue comment event: 3
  • Push event: 20
  • Pull request event: 2
  • Fork event: 6
  • Create event: 2

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 1
  • Total pull requests: 1
  • Average time to close issues: 8 days
  • Average time to close pull requests: 1 minute
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 1
  • Average time to close issues: 8 days
  • Average time to close pull requests: 1 minute
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • zhuzhiwei99 (1)
Pull Request Authors
  • SS-hj (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/building.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v3 composite
.github/workflows/core_tests.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v5 composite
.github/workflows/doc.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • peaceiris/actions-gh-pages v4 composite
.github/workflows/generate_simple_index_pages.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v5 composite
  • peaceiris/actions-gh-pages v3 composite
.github/workflows/publish.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • peaceiris/actions-gh-pages v3 composite
docs/requirements.txt pypi
  • furo *
  • sphinx *
  • sphinx-copybutton *
  • sphinx-design *
  • sphinxcontrib-bibtex *
  • sphinxcontrib-video *
examples/requirements.txt pypi
  • Pillow *
  • imageio *
  • matplotlib *
  • nerfview ==0.0.2
  • numpy <2.0.0
  • opencv-python *
  • pyyaml *
  • scikit-learn *
  • tensorboard *
  • tensorly *
  • torchmetrics *
  • tqdm *
  • tyro >=0.8.8
  • viser *
setup.py pypi
  • jaxtyping *
  • ninja *
  • numpy *
  • rich >=12
  • torch *
  • typing_extensions *
third_party/gridencoder/setup.py pypi
third_party/python-fpnge-master/requirements.txt pypi
  • Pillow *
  • black *
  • numpy *
  • opencv-python-headless *
  • pytest *
third_party/python-fpnge-master/setup.py pypi