3dgeer

boschresearchAGPL-3.0活跃维护

面向鱼眼等通用相机的 3D 高斯泼溅渲染实现,让新视角合成在非针孔相机下既精确又高效,适用于自动驾驶与 AR 场景。

[ICLR 2026] The official implementation associated with the paper "3DGEER: 3D Gaussian Rendering Made Exact and Efficient for Generic Cameras"

暂无版本216star27fork同步于 2026-11-07 07:30 UTC

怎么上手

由 README 提炼,执行前请确认
bash ./docker/build.sh 4090
bash ./docker/init_my_docker.sh
硬件要求按 README 说明

README 未说明具体显存要求;Docker 构建脚本示例以 4090 为参数,需 NVIDIA GPU 与 CUDA 环境。

需要 CUDA
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

面向鱼眼等通用相机的精确高效 3D 高斯渲染实现,替代有损 splatting 近似

面向鱼眼等通用相机的 3D 高斯泼溅渲染实现,让新视角合成在非针孔相机下既精确又高效,适用于自动驾驶与 AR 场景。

核心能力

  • 用射线-高斯积分做解析前向渲染与数值稳定反向梯度
  • 用粒子包围视锥做精确最小的射线-粒子关联
  • 用双极等角投影在任意视场保持均匀射线采样
  • 兼容 diff-gaussian-rasterization、gsplat、drivestudio 等框架
  • 支持针孔、鱼眼及宽视场动态室外场景渲染

容易踩的坑

需先按 3dgs 官方仓库搭好 Conda 环境再替换依赖;修改 geer-rasterizer 后需在容器内用 pip install --no-build-isolation ./submodules/geer-rasterizer 重新编译;SIBR_gaussianViewer_app 不支持 GEER,离线渲染会调用原版 splatting 光栅器导致结果无效,应改用 SIBR_remoteGaussian_app 或 gsplat-geer。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Zixun Huang · Cho-Ying Wu · Yuliang Guo · Xinyu Huang · Liu Ren

    Bosch Center for AI, Bosch Research North America

    🧐Overview

    😺Key Features

    This repository contains the official authors implementation associated with the ICLR 2026 paper "3DGEER: 3D Gaussian Rendering Made Exact and Efficient for Generic Cameras". The gsplat-geer OSS extension can be found here.

    🎉News

    • TBD: stormGaussian-geer will be released here as well.
    • 2026-06-25: drivestudio-geer is released under our gsplat-geer branch, including a customized dynamic, temporal viewer!
    • 2026-03-19: 3DGEER now supports dynamic outdoor scene rendering under wide-FoV fisheye cameras with the integration into DriveStudio.
    • 2026-03-17: SIBR_remoteGaussian_app is adapted to our work as an interactive viewer for training and trained checkpoints. Try the BEAP mode in the viewer; Pinhole and Fisheye modes are supported as well.
    • 2026-03-09: gsplat-geer released here!
    • 2026-03-09: Code released! Can Gaussian rendering be both exact and fast without relying on lossy splatting? Check out 3DGEER!
    • 2026-03-09: Code release approved. License updated. Requested admin to push code to BoschResearch.
    • 2026-01-25: 3DGEER accepted to ICLR 2026, with an initial review of average 7 (top 1% score).
    • 2025-05-29: Preprint released on Arxiv.

    📷3DGEER-CUDA-Rasterizer

    The full CUDA implementation can be found here: ./submodules/geer-rasterizer/.

    Key Insight 1: Fixing the Math Behind Gaussian Projection
    • Ray–Gaussian Integral (Forward & Backward): Analytical forward rendering and numerical stable backward gradient computation. (See paper Appendix C for the math.)

    Key Insight 2: Fixing the Math Behind Gaussian Association
    • Particle Bounding Frustum: Exact and minimal boundary geometry for ray–particle association. (See paper Appendix D for the math.)

    Key Insight 3: Optimizing the Ray Distribution Behind Pixelwise Color Supervision
    • Bipolar Equiangular Projection: Maintains uniform ray sampling across arbitrary fields of view, thereby providing stable, FoV-invariant supervision for radiance field training.

    🔧Dependency

    Conda Based Installation

    Following the 3dgs dependencies https://github.com/graphdeco-inria/gaussian-splatting to install the 3dgs environment, and then run the following command to replace the diff-gaussian-rasterization for using a geer-version CUDA rasterizer:

    pip install ./submodules/geer-rasterizer
    
    Docker Configuration (Recommend)

    Set you data path and 3dgeer codebase path in ./docker/init_my_docker.sh.

    # Build up 3dgs environments for 3DGEER. Example:
    bash ./docker/build.sh 4090
    # Reset Docker on Terminal 1
    bash ./docker/init_my_docker.sh
    # If you modify algorithm upon our geer-rasterizer, inside docker container, recompile:
    pip install --no-build-isolation ./submodules/geer-rasterizer
    

    🔧Interactive Viewer Setup

    SIBR Viewer Configuration with Docker

    ⚠️ Important Notice on Visualization: SIBR_gaussianViewer_app is currently not supported for Gaussian Exact and Efficient Rendering (GEER). Please do not use:

      $sibr_gv -m "./output/scnt/<SCENE_ID>/dslr"
    

    as it invokes the vanilla 3D Gaussian Splatting rasterizer for offline rendering from checkpoints. This leads to invalid results, since GEER-trained (ray-based) scenes are incompatible with splatting-based rendering.

    ✅ Recommended Alternatives:

    • During training, use SIBR_remoteGaussian_app, which connects via port and calls our modified GEER rasterizer.
    # Enter Workspace for SIBR Viewer on Terminal 2
    bash ./docker/run_my_docker.sh
    # Inside docker container, run:
    $sibr_rg
    
    • To use SIBR_remoteGaussian_app from checkpoints, first run the following on Terminal 1.
    bash scripts/visualize.sh <SCENE_ID> <DATA_ROOT> <CKPT_DIR> <MODE: BEAP, PH or KB> # Example: 1d003b07bd/dslr data/scnt/datasets ckpt/scnt KB
    # Then (on Terminal 2) launch:
    $sibr_rg
    

    Note: the mismatched culling issue in UT is resolved using our PBF-based fix.

    🏃Quick Start

    1. Data Preparation

    Our framework follows the standard COLMAP data structure. For generic cameras (e.g., Fisheye), ensure your cameras.txt includes the specific intrinsic parameters. Link to detailed data format documentation.

    Expected Directory Structure:

    |_./data/scnt
        |_datasets # e.g., download data into this folder
            |_1d003b07bd
            |   |_colmap
            |   |   |_images.txt
            |   |   |_points3D.txt
            |   |   |_cameras.txt
            |   |   |_...
            |   |_nerfstudio
            |   |   |_transforms.json
            |   |_resized_images
            |       |_000000.jpg
            |       |_000001.jpg
            |       |_...
            |_e3ecd49e2b
            |_...
    

    2. Training 3DGEER

    To train 3DGEER on ScanNet++ data in BEAP mode (default, recommended):

    bash ./scripts/train.sh
    

    Key training arguments:

    ArgumentDescriptionDefault
    -s / --source_pathPath to the scene dataset directory—
    -m / --model_pathOutput directory for checkpoints and logs./output/
    --render_modelTraining projection mode: BEAP, KB, EQ, or PHBEAP
    --sample_stepRay sampling interval in radians (BEAP/KB)—
    --fov_modFoV scale factor applied during training (BEAP mode)—
    --mask_pathPath to validity mask PNG—
    --raymap_pathPath to per-pixel ray-direction map .npy (KB/EQ mode)—
    --focal_scalingScale factor for focal length (KB/PH modes)1.0
    --distortion_scalingScale factor for distortion coefficients (KB mode; 0 → EQ)1.0
    --mirror_shiftMirror-model shift ξ for omnidirectional mapping (KB)0.0
    --iterationsTotal training iterations30000

    See detailed training documentation and examples for BEAP, KB, and PH mode commands.

    3. Rendering & Evaluation

    To render high-quality images and compute PSNR/SSIM/LPIPS:

    bash scripts/render.sh <SCENE_ID> <DATA_ROOT> <CKPT_DIR> <MODE>
    bash scripts/eval.sh <SCENE_ID> <DATA_ROOT> <CKPT_DIR> <MODE>
    

    Arguments:

    SCENE_ID : scene name (e.g. steakhouse, 1d003b07bd/dslr)

    DATA_ROOT : root directory of the formatted dataset

    CKPT_DIR : directory containing the trained model checkpoint

    MODE : rendering backend, (BEAP, KB or PH)

    Set DIST_SCALING as 0 in the shell to render EQ under KB mode; Enlarge the value of FOCAL_SCALING to test extreme large FoV; For fair comparison, we recommend evaluating with BEAP mode, which ensures consistent metric computation across different rendering backends.

    Example: See examples in detailed train and eval documentation.

    Please ensure that the corresponding ground truth is used. For example, evaluating extreme KB images using the original KB images as ground truth is invalid due to mismatched distortion parameters.

    4. Available Checkpoints

    You can download our trained checkpoints for the following open dataset:

    🙏Special Extension

    ⛽️Contributing

    Feel free to drop a pull request whenever!

    👀Visuals (More)

    💡License

    3DGEER is released under the AGPL-3.0 License. See the LICENSE file for details. This project is built upon 3D Gaussian Splatting by Inria. We thank the authors for their excellent open-source work. The original license and copyright notice are included in this repository, see the file 3dgs-license.txt.