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ファイルをコードが期待する形式に変換します。2つのサンプルコマンドが提供されています(小規模なデモセット用と、完全な検証セット用。後者はトラッカーファイルも必要です)。
  • オプションの前処理ステップ:
    • 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}
}

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト