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

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트