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}
}

相關

  • 專案
  • 專案
  • 專案
  • 專案