zju3dv/street_gaussians

[ECCV 2024] Street Gaussians: Modeling Dynamic Urban Scenes with Gaussian Splatting

Street Gaussians – 使用 Gaussian Splatting 进行动态城市场景建模

简介

  • 这是 ECCV 2024 论文 Street Gaussians: Modeling Dynamic Urban Scenes with Gaussian Splatting 的开源实现。
  • 该代码基于 3-D Gaussian Splatting 范式,并将其扩展以处理大规模街景数据集(如 Waymo Open Dataset)中的移动物体。

主要功能

  • 动态场景重建:支持单眼视频或多镜头街景数据。
  • 基于 Gaussian 的表示:可透过光栅化进行即时渲染。
  • 支持 LiDAR 深度与天空遮罩生成:以提升真实感。
  • 可配置的管道:用于训练、评估、轨迹渲染以及导出至 SIBR 查看器格式。

如何开始

  1. 克隆仓库
    git clone https://github.com/zju3dv/street_gaussians.git
    
  2. 建立 conda 环境 (Python 3.8) 并安装与 CUDA 版本匹配的 PyTorch。
    conda create -n street-gaussian python=3.8
    conda activate street-gaussian
    pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 \
        --extra-index-url https://download.pytorch.org/whl/cu116
    
  3. 安装剩余的 Python 依赖项
    pip install -r requirements.txt
    
  4. 构建所需的子模块 (diff-gaussian rasterizer, simple-knn, Waymo reader)
    pip install ./submodules/diff-gaussian-rasterization
    pip install ./submodules/simple-knn
    pip install ./submodules/simple-waymo-open-dataset-reader
    python script/test_gaussian_rasterization.py   # 完整性检查
    

数据准备

  • 作者提供了 Waymo 场景范例(下载链接在 README 中)。若要进行完整实验,您必须下载 Waymo Open Dataset 的训练/验证集以及随附的追踪预测数据。
  • 转换脚本 (script/waymo/waymo_converter.py) 可将原始 Waymo 文件转换为代码所需的格式。文件中提供了两个示例指令——一个用于小型演示集,另一个用于完整验证集(后者还需要追踪器文件)。
  • 可选的预处理步骤:
    • generate_lidar_depth.py 建立合成 LiDAR 深度图。
    • generate_sky_mask.py 使用 GroundingDINO 和 Segment-Anything (SAM) 建立天空遮罩。请依照指示分别安装 GroundingDINO 并下载 SAM 检查点。

执行管道

  • 配置 – 所有超参数皆位于 config.py 中。现成的 YAML 文件位于 configs/experiments_waymo(针对论文的单眼视频设置)与 configs/default.yaml(通用序列)。
  • 训练
    python train.py --config configs/xxxx.yaml
    # 辅助脚本
    bash script/waymo/train_waymo_expample.sh   # 演示场景
    bash script/waymo/train_waymo_exp.sh        # 完整实验
    
  • 渲染
    python render.py --config configs/xxxx.yaml mode {evaluate,trajectory}
    # 辅助脚本
    bash script/waymo/render_waymo_expample.sh
    bash script/waymo/render_waymo_exp.sh
    
  • 可视化 – 将单帧导出为与 SIBR 查看器兼容的 PLY 文件:
    python make_ply.py --config configs/xxxx.yaml viewer.frame_id {frame_idx} mode evaluate
    

项目结构重点

  • lib/ – 核心实现(Gaussian splatting, 优化器, 数据加载器)。
  • submodules/ – 编译为 Python 套件的第三方组件。
  • script/waymo/ – 数据转换与预处理工具。
  • configs/ – 驱动训练/评估的 YAML 文件。
  • images/pipeline.jpg – 端到端工作流程的视觉概览。

引用 若您在研究中使用此代码,请引用 ECCV 2024 论文:

@inproceedings{yan2024street,
    title={Street Gaussians: Modeling Dynamic Urban Scenes with Gaussian Splatting},
    author={Yunzhi Yan and Haotong Lin and Chenxu Zhou and Weijie Wang and Haiyang Sun and Kun Zhan and Xianpeng Lang and Xiaowei Zhou and Sida Peng},
    booktitle={ECCV},
    year={2024}
}

相关

  • 项目
  • 项目
  • 项目
  • 项目