빠른 시작
자세히 알아보기
지원되는 기능
nerfstudio를 사용하면 플러그 앤 플레이만큼 간단합니다!
Nerfstudio는 NeRF 생성, 교육 및 테스트의 단순화된 엔드투엔드 프로세스를 허용하는 간단한 API를 제공합니다. 라이브러리는 각 구성 요소를 모듈화하여 NeRF의 보다 해석 가능한 구현을 지원합니다. 더 많은 모듈식 NeRF를 통해 기술 탐색에 있어 보다 사용자 친화적인 경험을 제공할 수 있기를 바랍니다.
이는 사용자가 서로의 기여를 더욱 쉽게 구축할 수 있는 커뮤니티를 구축하는 것을 목표로 하는 기여자 친화적인 저장소입니다. Nerfstudio는 처음에는 Berkeley AI Research(BAIR)의 KAIR 연구실에서 Berkeley 학생들이 연구 프로젝트(논문)의 일환으로 오픈소스 프로젝트로 시작했습니다. 현재 버클리 학생들과 커뮤니티 기여자들에 의해 개발되었습니다.
우리는 귀하가 (방금 시작한 경우) 기본 사항을 이해하고 (노련한 베테랑인 경우) NeRF의 모든 것에 대한 최신 정보를 유지하는 데 도움이 되는 학습 리소스를 제공하기 위해 최선을 다하고 있습니다. 연구원으로서 우리는 이 차세대 기술에 참여하는 것이 얼마나 어려운지 알고 있습니다. 그래서 우리는 튜토리얼, 문서화 등을 도와드리기 위해 왔습니다!
기능 요청이 있으십니까? 아주 새로운 NeRF 모델을 추가하고 싶으십니까? 새로운 데이터세트가 있나요? 우리는 기여를 환영합니다! 궁금한 점이 있으면 Discord를 통해 주저하지 말고 nerfstudio 팀에 문의하세요.
피드백이 있으신가요? 귀하가 누구인지, 왜 Nerfstudio에 관심이 있는지 알려주시거나 피드백을 제공하고 싶으시면 Nerfstudio 피드백 양식을 작성해 주시기 바랍니다!
nerfstudio를 통해 더 빠르게 구축할 수 있기를 바랍니다. 함께 배워요? NeRF 커뮤니티에 기여하시겠습니까?
이 작업의 후원자에는 Luma AI와 BAIR Commons가 포함됩니다.
빠른 시작은 클래식 Blender Lego 장면에서 훈련된 기본 바닐라 NeRF를 시작하는 데 도움이 됩니다. 보다 복잡한 변경 사항(예: 자체 데이터로 실행/새 NeRF 그래프 설정)에 대해서는 참조 자료를 참조하세요.
시스템에 CUDA가 설치된 NVIDIA 비디오 카드가 있어야 합니다. 이 라이브러리는 CUDA 버전 11.8에서 테스트되었습니다. CUDA 설치에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
Nerfstudio에는 python >= 3.8
필요합니다. 종속성을 관리하려면 conda를 사용하는 것이 좋습니다. 계속하기 전에 Conda를 설치했는지 확인하세요.
conda create --name nerfstudio -y python=3.8 콘다 활성화 nerfstudio pip 설치 - pip 업그레이드
CUDA(이 저장소는 CUDA 11.7 및 CUDA 11.8에서 테스트됨) 및tiny-cuda-nn과 함께 PyTorch를 설치합니다. tiny-cuda-nn
구축하려면 cuda-toolkit
이 필요합니다.
CUDA 11.8의 경우:
pip 설치 토치==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118 conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit pip 설치 닌자 git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
자세한 내용은 설치 설명서의 종속성을 참조하세요.
쉬운 옵션:
pip 설치 nerfstudio
또는 최신의 최고의 제품을 원한다면:
자식 클론 https://github.com/nerfstudio-project/nerfstudio.gitcd nerfstudio pip install --업그레이드 pip setuptools pip 설치 -e .
또는 모든 설치 단계를 건너뛰고 nerfstudio 사용을 직접 시작하려면 docker 이미지를 사용하세요.
설치 - Docker 이미지 사용을 참조하세요.
다음은 실제 장면에 권장되는 모델인 nerfacto 모델을 학습합니다.
# 일부 테스트 데이터 다운로드:ns-download-data nerfstudio --capture-name=poster# 모델 훈련ns-train nerfacto --data data/nerfstudio/poster
모든 것이 작동하면 다음과 같은 학습 진행 상황이 표시됩니다.
터미널 끝에 있는 링크로 이동하면 웹뷰어가 로드됩니다. 원격 시스템에서 실행 중인 경우 웹소켓 포트(기본값은 7007)를 포트 전달해야 합니다.
다음을 실행하여 사전 훈련된 모델을 로드할 수 있습니다.
ns-train nerfacto --data data/nerfstudio/poster --load-dir {outputs/.../nerfstudio_models}
사전 훈련된 모델 체크포인트가 주어지면 다음을 실행하여 뷰어를 시작할 수 있습니다.
ns-viewer --load-config {outputs/.../config.yml}
NeRF 모델이 있으면 비디오를 렌더링하거나 포인트 클라우드를 내보낼 수 있습니다.
먼저 카메라가 따라갈 경로를 만들어야 합니다. 이 작업은 뷰어의 "RENDER" 탭에서 수행할 수 있습니다. 비디오를 시작하려는 위치로 3D 보기 방향을 맞춘 다음 "카메라 추가"를 누르세요. 그러면 첫 번째 카메라 키 프레임이 설정됩니다. 카메라 경로를 생성하기 위해 추가 카메라를 추가하는 새 관측점을 계속 진행합니다. 카메라 경로를 더욱 구체화하기 위해 다른 매개변수를 제공합니다. 만족스러우면 "RENDER"를 누르면 비디오 렌더링에 필요한 명령이 포함된 모달이 표시됩니다. 훈련 작업을 종료하고(또는 컴퓨팅량이 많은 경우 새 터미널을 생성) 명령을 실행하여 비디오를 생성합니다.
다른 비디오 내보내기 옵션도 사용할 수 있습니다. 자세한 내용은 다음을 실행하여 알아보세요.
ns-렌더 --help
NeRF 모델은 포인트 클라우드를 생성하도록 설계되지 않았지만 여전히 가능합니다. 3D 뷰어에서 "내보내기" 탭으로 이동하여 "포인트 클라우드"를 선택하세요. 자르기 옵션을 선택하면 노란색 사각형의 모든 내용이 포인트 클라우드로 내보내집니다. 원하는 대로 설정을 수정한 다음 명령줄의 패널 하단에 있는 명령을 실행합니다.
또는 뷰어 없이 CLI를 사용할 수 있습니다. 다음을 실행하여 내보내기 옵션에 대해 알아보세요.
ns-export pointcloud --help
기존 데이터세트를 사용하는 것도 좋지만 자신의 데이터를 사용하고 싶을 수도 있습니다. 자신의 데이터를 활용하는 다양한 방법을 지원합니다. nerfstudio에서 사용하기 전에 카메라 위치와 방향을 결정한 다음 ns-process-data
사용하여 형식으로 변환해야 합니다. 이를 위해 외부 도구를 사용하며 지침과 정보는 설명서에서 찾을 수 있습니다.
데이터 | 캡처 장치 | 요구사항 | ns-process-data 속도 |
---|---|---|---|
이미지 | 어느 | 콜맵 | |
동영상 | 어느 | 콜맵 | |
360 데이터 | 어느 | 콜맵 | |
폴리캠 | LiDAR를 탑재한 IOS | 폴리캠 앱 | |
기록3D | LiDAR를 탑재한 IOS | Record3D 앱 | |
메타셰이프 | 어느 | 메타셰이프 | |
ODM | 어느 | ODM | |
아리아 | 아리아 안경 | 프로젝트 아리아 | |
관습 | 어느 | 카메라 포즈 |
우리는 nerfacto 이외의 다른 모델을 제공합니다. 예를 들어 원래 nerf 모델을 훈련하려면 다음 명령을 사용하십시오.
ns-train 바닐라-nerf --data DATA_PATH
포함된 모델의 전체 목록을 보려면 ns-train --help
실행하세요.
각 모델에는 변경할 수 있는 많은 매개변수가 포함되어 있으며 여기에 나열하기에는 너무 많습니다. 구성 옵션의 전체 목록을 보려면 --help
명령을 사용하십시오.
ns-train nerfacto --help
뷰어텐서보드, 가중치 및 편향, Comet을 사용하여 훈련 진행 상황을 추적하는 네 가지 방법을 지원합니다. 훈련 명령에 --vis {viewer, tensorboard, wandb, comet viewer+wandb, viewer+tensorboard, viewer+comet}
추가하여 사용할 시각화 도우미를 지정할 수 있습니다. wandb 또는 텐서보드와 함께 뷰어를 동시에 활용하면 평가 단계에서 끊김 문제가 발생할 수 있습니다. 뷰어는 빠른 방법(예: nerfacto, instant-ngp)에 대해서만 작동하며, NeRF와 같은 느린 방법의 경우 다른 로거를 사용합니다.
이것이 nerfstudio의 기본 사항을 시작하는 방법입니다.
자신만의 파이프라인을 만드는 방법, 뷰어를 사용하여 개발하는 방법, 벤치마크 실행 방법 등에 대해 자세히 알아보려면 아래 빠른 링크 중 일부를 확인하거나 설명서를 직접 방문하세요.
부분 | 설명 |
---|---|
선적 서류 비치 | 전체 API 문서 및 튜토리얼 |
뷰어 | 웹뷰어 홈페이지 |
교육적 | |
모델 설명 | nerfstudio에서 지원하는 모든 모델에 대한 설명과 구성요소에 대한 설명입니다. |
구성요소 설명 | 다양한 모델에서 주목할 만한/일반적으로 사용되는 모듈을 설명하는 대화형 노트북입니다. |
튜토리얼 | |
시작하기 | 설치부터 기여까지 nerfstudio를 시작하는 방법에 대한 보다 심층적인 가이드입니다. |
뷰어 사용 | 뷰어를 탐색하는 방법에 대한 빠른 데모 비디오입니다. |
Record3D 사용 | COLMAP을 사용하지 않고 nerfstudio를 실행하는 방법에 대한 데모 비디오입니다. |
개발자용 | |
파이프라인 만들기 | 새로운 모듈을 사용 및/또는 구현하여 새로운 신경 렌더링 파이프라인을 쉽게 구축하는 방법을 알아보세요. |
데이터 세트 만들기 | 새로운 데이터세트가 있나요? nerfstudio로 실행하는 방법을 알아보세요. |
기여 | 지금 기여를 시작할 수 있는 방법을 살펴보세요. |
불화 | 우리 커뮤니티에 가입하여 더 많은 논의를 해보세요. 우리는 당신의 의견을 듣고 싶습니다! |
지저귀다 | 멋진 업데이트와 공지 사항을 보려면 Twitter @nerfstudioteam을 팔로우하세요. |
피드백 양식 | 우리는 어떤 피드백이라도 환영합니다! 이것은 여러분 모두가 Nerfstudio를 어떤 용도로 사용하고 있는지 알아볼 수 있는 기회입니다. |
우리는 NeRF를 더 쉽게 시작할 수 있도록 다음과 같은 지원 구조를 제공합니다.
현재 지원되지 않는 기능을 찾고 있다면 주저하지 말고 Discord의 Nerfstudio 팀에 문의하세요!
다음을 수행할 수 있는 웹 기반 시각화 도구:
실시간으로 훈련 시각화 + 현장과 상호작용
맞춤형 카메라 궤적을 사용하여 장면 생성 및 렌더링
다양한 출력 유형 보기
그리고 더!
다중 로깅 인터페이스(Tensorboard, Wandb), 코드 프로파일링 및 기타 내장 디버깅 도구 지원
Blender 데이터 세트에 대한 사용하기 쉬운 벤치마킹 스크립트
휴대폰의 비디오에서 풀 3D 렌더링으로 전환하기 위한 전체 파이프라인 지원(Colmap, Polycam 또는 Record3D 포함)
사용하기 쉬운 구성 시스템
브렌트 이(Brent Yi)가 개발함
NeRF 렌더링 가속화를 위한 라이브러리
Ruilong Li가 개발함
arXiv에서 프레임워크에 대한 논문을 찾을 수 있습니다.
이 라이브러리를 사용하거나 연구에 유용한 문서를 찾으면 다음을 인용해 보세요.
@inproceedings{nerfstudio, title = {Nerfstudio: A Modular Framework for Neural Radiance Field Development}, author = { Tancik, Matthew and Weber, Ethan and Ng, Evonne and Li, Ruilong and Yi, Brent and Kerr, Justin and Wang, Terrance and Kristoffersen, Alexander and Austin, Jake and Salahi, Kamyar and Ahuja, Abhik and McAllister, David and Kanazawa, Angjoo }, year = 2023, booktitle = {ACM SIGGRAPH 2023 Conference Proceedings}, series = {SIGGRAPH '23} }