WebODM/OpenSplat

Production-grade 3D gaussian splatting with CPU/GPU support for Windows, Mac and Linux 💦

OpenSplat – 빠르고 오픈소스인 3D 가우시안 스플래터링

무엇인가 – OpenSplat은 3D 가우시안 스플래터링의 C++ 구현체로, COLMAP, OpenSfM, ODX, nerfstudio 등에서 나온 희소한 카메라 자세와 점들로부터 작고 컴팩트한 3D 가우시안으로 구성된 장면을 생성하는 최신 신경 그래픽스 기술입니다. 결과물은 .ply, .splat, .spz, 또는 .rad 형식으로 저장할 수 있으며, 다양한 가우시안 스플래터링 뷰어에서 열거나 편집할 수 있습니다.

왜 중요한가 – 가우시안 스플래터링은 훈련과 렌더링 비용이 훨씬 낮으면서도 NeRF와 비슷한 실시간 수준의 렌더링 품질을 제공합니다. OpenSplat은 이식성, 가벼움, 빠름을 목표로 하며, NVIDIA, AMD, Apple GPU(Metal을 통해)를 지원하고 순수 CPU 백업도 제공합니다.


주요 기능 (README에 설명된 내용)

  • 크로스 플랫폼: Windows, macOS, Linux에서 빌드 가능.
  • GPU 가속: CUDA, ROCm(HIP), Apple Metal 지원; CPU 전용 모드도 작동함(약 100배 느림).
  • 간단한 데이터 입력: ODX, OpenSfM, COLMAP, OpenMVG, nerfstudio 형식의 프로젝트를 수용.
  • 다양한 출력 형식: .ply, .splat, .spz, .rad – Antimatter15 웹 뷰어나 PlayCanvas와 같은 뷰어에서 바로 사용 가능.
  • Docker 이미지: 재현 가능한 환경을 위한 미리 준비된 CUDA 및 ROCm Dockerfile 제공.
  • 훈련 유틸리티: 훈련 재개, 이미지 영역 마스크 기반 제외, 좌표계 보존, 선택적 압축 기능 제공.
  • 확장성: AMD 지원, 분산 훈련, 실시간 뷰어 출력 등에 대한 기여를 환영합니다.

시작하기 (빠른 시작 단계)

  1. 의존성 설치 – OpenCV와 호환되는 LibTorch 빌드(CPU, CUDA, ROCm). README에는 Ubuntu, Homebrew, Windows용 정확한 패키지 이름이 나와 있습니다.
  2. 빌드 –
    git clone https://github.com/pierotofy/OpenSplat OpenSplat
    cd OpenSplat
    mkdir build && cd build
    cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch/ ..
    make -j$(nproc)   # 원하는 경우 Ninja 사용 가능
    
    ROCm 지원을 원하면 -DGPU_RUNTIME="HIP" 및 -DOPENSPLAT_BUILD_SIMPLE_TRAINER=ON을 추가하거나, CPU 전용 바이너리 생성 시 -DGPU_RUNTIME=CPU를 설정합니다.
  3. 실행 – 샘플 데이터셋(예: banana 또는 truck)을 다운로드하고 다음을 실행합니다:
    ./opensplat /path/to/banana -n 2000   # 2000개의 가우시안
    
    프로그램은 splat.ply 파일(또는 -o 옵션으로 banana.splat)을 생성하며, 이 파일은 호환되는 뷰어에 바로 드롭할 수 있습니다.
  4. 선택 사항 – 기존 .ply 파일의 훈련을 이어가려면 --resume 사용, 카메라 JSON을 내보내려면 --output-cameras 사용, 이미지의 일부를 무시하려면 masks/ 폴더에 각 이미지별 마스크 파일을 배치합니다.

Docker 사용법 (요약)

  • CUDA 이미지 – docker build -t opensplat . (기본 Ubuntu/CUDA/libtorch).
  • ROCm 이미지 – docker build -f Dockerfile.rocm -t opensplat ..
  • 컨테이너를 실행하고 데이터를 마운트한 후, README에 나와 있는 대로 컨테이너 내부에서 ./opensplat를 호출합니다.

프로젝트 상태 및 기여 방법

  • 코드는 AGPL-v3 라이선스로 배포되며, 원본 splatfacto 구현체에서 일부 Apache-2.0 컴포넌트를 포함합니다.
  • 현재 목표는 더 나은 AMD 지원, 메모리 사용량 감소, 분산 훈련, 실시간 뷰어 출력 개선 등입니다.
  • 기여는 풀 리퀘스트를 통해 환영하며, 개선을 위한 이슈는 라벨이 지정되어 있습니다.

TL;DR

OpenSplat은 포토그램메트리 출력물을 빠르게 렌더링 가능한 3D 가우시안 스플래터링 장면으로 변환하는 실용적이고 오픈소스 도구입니다. 모든 주요 GPU 플랫폼에서 작동하며 CPU 백업도 제공하고, Docker 이미지를 제공하며, 훈련, 재개, 마스킹, 내보내기 등을 위한 간단한 CLI를 제공합니다. 더 큰 NeRF 프레임워크의 부담 없이 가볍고 이식 가능한 가우시안 스플래터링 파이프라인을 원하는 연구자나 개발자에게 완벽합니다.

관련

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