WebGPU 기반 3D 가우시안 스플래팅 엔진 'Brush' 공개, 모바일과 브라우저서 동작
개발자 아서 브뤼세(ArthurBrussee)가 3D 가우시안 스플래팅(Gaussian splatting) 재구성 엔진 'Brush'를 GitHub에 오픈소스로 공개했다. 머신러닝 기반 실시간 렌더링이 잠재력에도 불구하고 실시간 인터랙티비티, 동적 형태와 연산, 다양한 플랫폼에서의 실행, 무거운 CUDA 의존성을 함께 배포해야 하는 어려움 등으로 보급에 한계를 보였다는 문제의식에서 출발한 프로젝트로, 의존성 없는 단순 바이너리만으로 거의 모든 디바이스에서 별도 셋업 없이 실행되도록 설계됐다고 프로젝트는 설명했다.
Brush는 macOS, Windows, Linux는 물론 Android와 웹 브라우저에서도 학습과 렌더링이 모두 가능하다. 지원 GPU 역시 Nvidia에 한정되지 않고 AMD와 Intel 그래픽카드까지 포함한다. 기반 기술로는 WebGPU 호환 스택과 머신러닝 프레임워크 'Burn'을 사용한다. 학습은 PC 환경뿐 아니라 모바일과 브라우저에서도 네이티브로 지원돼, 사용자는 학습 도중 장면과 직접 상호작용하며 학습 다이내믹스를 실시간으로 관찰하고 현재 렌더링과 입력 뷰를 비교할 수 있다.
입력 데이터로는 COLMAP과 Nerfstudio 형식 데이터셋을 지원한다. 마스킹도 두 가지 방식으로 받는다. 투명도가 포함된 이미지를 넣으면 최종 스플랫이 입력 이미지의 투명도를 따라가도록 강제할 수 있고, 'masks'라는 이름의 폴더를 별도로 두면 마스크 처리된 영역을 학습에서 배제하게 된다.
뷰어 기능도 갖추고 있다. .ply와 .compressed.ply 파일을 그대로 로드해 표시할 수 있고, 웹 앱에서는 URL 뒤에 '?url='을 붙여 외부 데이터를 스트리밍하는 사용도 가능하다. 또 여러 스플랫 파일을 한 .zip으로 묶어 애니메이션으로 재생하거나, cat-4D, Cap4D 등에서 활용되는 델타 프레임 형식의 특수 ply 파일도 읽어들인다.
CLI 명령 방식도 함께 제공된다. 'brush --help'로 전체 옵션을 확인할 수 있고, 어떤 CLI 명령에든 '--with-viewer' 플래그를 붙이면 UI 뷰어가 함께 떠 디버깅을 돕는다. 학습 중 추가 데이터 시각화에는 외부 도구 'rerun'을 활용한다. 별도 머신에 rerun을 설치하고 함께 제공되는 brush_blueprint.rbl 청사진을 뷰어에 열면 학습 메트릭과 카메라 궤적 등을 한 화면에서 확인할 수 있다.
빌드 환경은 Rust 1.88 이상이 필요하다. 'cargo run --release'로 최적화 빌드를 실행하고, 'cargo run'으로는 디버그 빌드, 'cargo test --all'로 테스트를 돌릴 수 있다. 웹 데모는 Next.js로 작성된 데모 사이트에서 'npm run dev'로 띄울 수 있으며, WASM 번들 빌드에는 'wasm-pack'을 사용한다. 단 WebGPU가 아직 표준화 진행 중이라 웹에서의 호환성은 제한적이다. 웹 데모는 Chrome과 Edge에서만 동작하고 Firefox, Safari는 향후 지원이 기대되며, WebGPU 차원에서는 Windows와 macOS의 Chrome 134 이상이 현재 지원된다고 명시했다.
Android 빌드는 사전에 Android SDK와 NDK가 설치돼 있어야 하고, ANDROID_NDK_HOME과 ANDROID_HOME 환경변수가 설정돼야 한다. 'rustup target add aarch64-linux-android'로 Rust 타깃을 추가하고 'cargo install cargo-ndk'로 cargo-ndk를 설치한 뒤, 'cargo ndk -t arm64-v8a -o crates/brush-app/app/src/main/jniLibs/ build' 명령으로 라이브러리를 만들 수 있다. 성능을 위해서는 '--release' 플래그를 붙여 릴리스 모드로 빌드하는 것이 권장된다.
성능 면에서 프로젝트는 렌더링과 학습 모두 기준 구현인 gsplat 대비 일반적으로 더 빠르다고 밝혔다. 일부 커널은 'cargo bench'로 직접 벤치마크를 돌려볼 수 있다. 감사 인사에는 가우시안 스플래팅 연구를 함께 한 피터 헤드먼(Peter Hedman), 게오르게 코파나스(George Kopanas), 베른하르트 케르블(Bernhard Kerbl), GPU 라딕스 소트의 원형을 제공한 라프 르비엔(Raph Levien), Burn 팀, 장면을 제공한 GradeEterna 등이 이름을 올렸다.
마지막으로 저장소는 "공식 Google 제품이 아니며, google-research 저장소의 포크 형태로 공개된 버전"이라고 명시했다.