Awesome
[ARXIV'24] FCGS
Official Pytorch implementation of Fast Feedforward 3D Gaussian Splatting Compression.
Compress existing 3DGS rapidly in seconds without optimization!
Yihang Chen, Qianyi Wu, Mengyao Li, Weiyao Lin, Mehrtash Harandi, Jianfei Cai
Links
Welcome to check a series of works from our group on 3D radiance field representation compression as listed below:
- 🎉 CNC [CVPR'24] is now released for efficient NeRF compression! [
Paper
] [Arxiv
] [Project
] - 🏠 HAC [ECCV'24] is now released for efficient 3DGS compression! [
Paper
]Arxiv
] [Project
] - 🚀 FCGS [ARXIV'24] is now released for fast optimization-free 3DGS compression! [
Arxiv
] [Project
]
Overview
<p align="left"> <img src="assets/teaser.png" width=80% height=80% class="center"> </p>Although various compression techniques have been proposed, previous art suffers from a common limitation: for any existing 3DGS, per-scene optimization is needed to achieve compression, making the compression sluggish and slow. To address this issue, we introduce Fast Compression of 3D Gaussian Splatting (FCGS), an optimization-free model that can compress 3DGS representations rapidly in a single feed-forward pass, which significantly reduces compression time from minutes to seconds.
Performance
<p align="left"> <img src="assets/main_curve.png" width=80% height=80% class="center"> </p>While all the other approaches are optimization-based compression which have natural advantages for a better RD performance, we still outperform most of them in an optimization-free manner for fast compression.
Our compression time is only 1/10
compared to others!
Installation
We tested our code on a server with Ubuntu 20.04.1, cuda 11.8, gcc 9.4.0. We use NVIDIA L40s GPU (48G).
- Clone our code
git clone git@github.com:YihangChen-ee/FCGS.git --recursive
- Install environment
conda env create --file environment.yml
conda activate FCGS_env
- Install
tmc3
(for GPCC)
- Please refer to tmc3 github for installation.
- Don't forget to add
tmc3
to your environment variable, otherwise you must manually specify its location in our code by searchingchange tmc3 path
(2 places in total). - Tips:
tmc3
is commonly located atPATH/TO/mpeg-pcc-tmc13/build/tmc3
.
Run
FCGS can directly compress any existing 3DGS representations to bitstreams. The input should be a .ply file following the 3DGS format.
To compress a .ply file to bitstreams, run:
python encode_single_scene.py --lmd A_lambda --ply_path_from PATH/TO/LOAD/point_cloud.ply --bit_path_to PATH/TO/SAVE/BITSTREAMS --determ 1
lmd
: the trade-off parameter for size and fidelity. Chosen in [1e-4
,2e-4
,4e-4
,8e-4
,16e-4
].ply_path_from
: A .ply file. Path to load the source .ply file.bit_path_to
: A directory. Path to save the compressed bitstreams.determ
: see atomic statement
To decompress a .ply file from bitstreams, run:
python decode_single_scene.py --lmd A_lambda --bit_path_from PATH/TO/LOAD/BITSTREAMS --ply_path_to PATH/TO/SAVE/point_cloud.ply
lmd
: the trade-off parameter for size and fidelity. Chosen in [1e-4
,2e-4
,4e-4
,8e-4
,16e-4
].bit_path_from
: A directory. Path to load the compressed bitstreams.ply_path_to
: A .ply file. Path to save the decompressed .ply file.
To decompress a .ply file from bitstreams and validate fidelity of the decompressed 3DGS, run:
python decode_single_scene_validate.py --lmd A_lambda --bit_path_from PATH/TO/LOAD/BITSTREAMS --ply_path_to PATH/TO/SAVE/point_cloud.ply --source_path PATH/TO/SOURCE/SCENES
source_path
: A directory. Path to load the source scene images for validation.
Tips
FCGS is compatible with pruning-based techniques such as Mini-Splatting and Trimming the fat. You can directly apply FCGS to the .ply file output by these two approaches to further boost the compression performance.
CUDA accelerated arithmetic codec
We alongside publish a CUDA-based arithmetic codec implementation (based on torchac), you can find it in arithmetic and its usage here.
Contact
- Yihang Chen: yhchen.ee@sjtu.edu.cn
Citation
If you find our work helpful, please consider citing:
@article{fcgs2024,
title={Fast Feedforward 3D Gaussian Splatting Compression},
author={Chen, Yihang and Wu, Qianyi and Li, Mengyao and Lin, Weiyao and Harandi, Mehrtash and Cai, Jianfei},
journal={arXiv preprint arXiv:2410.08017},
year={2024}
}