Skip to content

3DAgentWorld/RegGS

Repository files navigation

RegGS: Unposed Sparse Views Gaussian Splatting with 3DGS Registration

Chong Cheng1* · Yu Hu1* · Sicheng Yu1 · Beizhen Zhao1 · Zijian Wang1 · Hao Wang1†

International Conference on Computer Vision, ICCV 2025

1The Hong Kong University of Science and Technology (Guangzhou)

arXiv ProjectPage License: MIT

🛠️ Setup

The code has been tested on systems with:

  • Ubuntu 22.04 LTS
  • Python 3.10.18
  • CUDA 11.8
  • NVIDIA GeForce RTX 3090 or A6000

📦 Repository

Clone the repo with --recursive because we have submodules:

git clone https://github.com/3DAgentWorld/RegGS.git --recursive
cd RegGS

💻 Installation

Python Environment

This codebase has been successfully tested with Python 3.10, CUDA 11.8, and PyTorch 2.5.1. We recommend installing the dependencies in a virtual environment such as Anaconda.

  1. Install main libraries:

    conda env create -f environment.yaml
    
    conda activate reggs
    
    pip install -r requirements.txt
  2. Install thirdparty submodules:

    pip install thirdparty/diff-gaussian-rasterization-w-pose
    
    pip install thirdparty/gaussian_rasterizer`
    
    pip install thirdparty/simple-knn
  3. Compile the cuda kernels for RoPE (as in CroCo v2):

    cd src/noposplat/model/encoder/backbone/croco/curope
    python setup.py build_ext --inplace
  4. If you encounter cannot import torch. add option --no-build-isolation to pip install

Downloading Pretrained Checkpoints

Download NoPoSplat re10k checkpoints and acid checkpoints to ./pretrained_weights directory, run:

wget -c https://huggingface.co/botaoye/NoPoSplat/resolve/main/re10k.ckpt -P ./pretrained_weights

wget -c https://huggingface.co/botaoye/NoPoSplat/resolve/main/acid.ckpt -P ./pretrained_weights

Run RegGS on re10k sample

The official RE10K dataset can be downloaded from: https://google.github.io/realestate10k/download.html

The preprocessed re10k data is placed in the directory ./sample_data. To run RegGS on sample data, run:

  1. The inference stage:
    CUDA_VISIBLE_DEVICES=0 python3 run_infer.py config/re10k.yaml
  2. The refinement stage:
    CUDA_VISIBLE_DEVICES=0 python3 run_refine.py --checkpoint_path output/re10k/000c3ab189999a83
  3. The evaluation stage:
    CUDA_VISIBLE_DEVICES=0 python3 run_metric.py --checkpoint_path output/re10k/000c3ab189999a83

Preprocessing RE10K Data

To convert raw RE10K trajectory files to RegGS sample format, use the preprocessing script:

python scripts/preprocess_re10k.py \
  --scene-txt datasets/RealEstate10K/test/SCENE_ID.txt \
  --original-width 455 \
  --target-width 256 \
  --download-video

Parameters:

  • --scene-txt: Path to RE10K scene txt file (required)
  • --out-root: Output root directory (default: sample_data)
  • --original-width: Original frame width from video (e.g., 455) for intrinsics adjustment
  • --target-width: Target frame width after cropping (default: 256)
  • --video-path: Path to local video file (mp4)
  • --download-video: Download video using yt-dlp if --video-path not provided
  • --max-frames: Maximum number of frames to process (default: -1, meaning all frames)
  • --overwrite: Overwrite existing output directory

The script outputs:

  • images/: PNG frames extracted from video
  • cameras.json: Per-frame camera poses and intrinsics in RegGS format
  • intrinsics.json: Normalized camera intrinsics parameters

Run RegGS on ACID dataset

The ACID (Airborne Coastal Imagery Dataset) can be downloaded from: https://infinite-nature.github.io/

Preprocessing ACID Data

To convert raw ACID trajectory files to RegGS sample format, use:

python scripts/preprocess_acid.py \
  --scene-txt datasets/acid/test/SCENE_ID.txt \
  --original-width 455 \
  --target-width 256 \
  --download-video

Parameters:

  • --scene-txt: Path to ACID scene txt file (required)
  • --out-root: Output root directory (default: sample_data)
  • --original-width: Original frame width before 256 preprocessing (default: 455)
  • --target-width: Target frame width after preprocessing (default: 256)
  • --video-path: Path to local video file (mp4)
  • --download-video: Download video using yt-dlp if --video-path is not provided
  • --max-frames: Maximum number of frames to process (default: -1, meaning all frames)
  • --overwrite: Overwrite existing output directory

The script outputs:

  • images/: PNG frames extracted from video
  • cameras.json: Per-frame camera poses and intrinsics in RegGS format
  • intrinsics.json: Normalized camera intrinsics parameters

✏️ TODO

  • create codebase
  • add evaluation script
  • prepare sample data
  • write installation guide
  • add data preprocessing script
  • implement GPU-optimized k-means
  • add Gradio visualization

🎓 Citation

@inproceedings{cc2025_reggs,
  title     = {{RegGS}: Unposed Sparse Views Gaussian Splatting with {3DGS} Registration},
  author    = {Cheng, Chong and Hu, Yu and Yu, Sicheng and Zhao, Beizhen and Wang, Zijian and Wang, Hao},
  booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
  year      = {2025}
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages