VFX 아티스트, 리서치 동료 또는 그래픽 아마추어이든 Blendernerf는 Blender 내에서 합성 NERF 및 Gaussian Splatting 데이터 세트를 만드는 가장 쉽고 빠른 방법입니다. 3D 장면과 카메라를 완전히 제어하면서 한 번의 클릭으로 렌즈와 카메라 매개 변수를 얻으십시오!
당신은 nerf 할 준비가 되셨습니까? 이 튜토리얼을 확인하여 블렌더에서 한 번의 클릭으로 시작하십시오!
NERF (Neural Radiance Fields)는 3D 장면을 각 카메라 정보와 함께 2D 이미지의 뷰 종속 부피 객체로 표현하는 것을 목표로합니다. 3D 장면은 간단한 신경망의 도움으로 교육 이미지에서 리버스 엔지니어링됩니다.
가우스 스플 래팅은 포인트 기반 방식으로 래디언스 필드를 렌더링하기위한 후속 방법입니다. 이 표현은 GPU 렌더링에 최적화되어 있으며 더 전통적인 그래픽 기술을 활용하여 높은 프레임 속도를 달성합니다.
Corridor Crew 가이 YouTube 비디오를 시청하여 NERF의 몇 가지 사용 사례 및 향후 잠재적 인 응용 프로그램에 대한 스릴 넘치는 조사를 권장합니다.
렌더링은 비싼 계산입니다. 사진 장면은 장면 복잡성, 하드웨어 및 사용 가능한 소프트웨어 리소스에 따라 렌더링하는 데 몇 초에서 몇 시간이 걸릴 수 있습니다.
NERFS 및 GAUSSIAN SPLATS는이 프로세스 속도를 높일 수 있지만 일반적으로 번거로운 코드를 통해 추출되는 카메라 정보가 필요합니다. 이 플러그인을 사용하면 누구나 블렌더에서 한 번의 클릭으로 렌즈와 카메라를 얻을 수 있습니다.
Blendernerf 의 릴리스 버전은 다운로드 할 수 있지만 주로 주요 코드 변경 및 인용 목적을 추적하기위한 것입니다. 사소한 변경 또는 버그 수정이 릴리스에 바로 포함되지 않을 수 있으므로 현재 저장소를 직접 다운로드하는 것이 좋습니다.
Blendernerf는 아래 하위 섹션에서 논의 된 3 가지 방법으로 구성됩니다. 각 방법은 교육 이미지의 형태로 NERF에 대한 교육 데이터 및 테스트 데이터를 작성할 수 있으며 transforms_train.json 각각 해당 카메라 정보가 포함 된 transforms_test.json 파일을 작성할 수 있습니다. 데이터는 훈련 및 테스트 폴더가 포함 된 단일 zip 파일로 보관됩니다. 그런 다음 NERF 모델에서 훈련 데이터를 사용하여 3D 장면 표현을 학습 할 수 있습니다. 일단 훈련되면, 모델은 새로운 렌더링을 얻기 위해 테스트 데이터 (카메라 정보 전용)에 대해 평가 (또는 테스트) 될 수 있습니다.
프레임 (SOF)의 서브 세트는 카메라 애니메이션의 모든 N 프레임을 렌더링하고 프레임의 렌더링 된 서브 세트를 NERF 교육 데이터로 사용합니다. 등록 된 테스트 데이터는 교육 프레임을 포함하여 동일한 카메라 애니메이션의 모든 프레임에 걸쳐 있습니다. 교육을 받으면 NERF 모델은 전체 카메라 애니메이션을 렌더링 할 수 있으며 결과적으로 정적 장면의 큰 애니메이션을 보간하거나 렌더링하는 데 적합합니다.
TTC (Train and Test Cameras)는 두 개의 별도 사용자 정의 카메라의 교육 및 테스트 데이터를 등록합니다. 그런 다음 NERF 모델에는 훈련 카메라에서 추출한 데이터가 장착되어 테스트 데이터에서 평가 될 수 있습니다.
Sphere (COS) 카메라 (COS)는 사용자 제어 구역에서 중앙에있는 임의의 카메라보기를 균일하게 샘플링하여 훈련 프레임을 렌더링합니다. 테스트 데이터는 선택한 카메라에서 추출됩니다.
애드온 속성 패널은 3D View > N panel > BlenderNeRF 에서 사용할 수 있습니다 ( n 패널은 N 누를 때 3D 뷰포트에서 액세스 할 수 있습니다). 3 가지 방법 ( SOF , TTC 및 COS ) 모두 아래에 나열된 제어 가능한 속성과 BlenderNeRF shared UI 라는 공통 탭을 공유합니다.
Train (기본적으로 활성화) : 교육 데이터 등록 여부 (렌더링 + 카메라 정보)Test (기본적으로 활성화) : 테스트 데이터 등록 여부 (카메라 정보 전용)AABB (기본적으로 4 로 설정) : Instant NGP에 설명 된 AABB 스케일 매개 변수 (아래 자세한 내용)Render Frames (기본적으로 활성화) : 프레임 렌더링 여부Save Log File (기본적으로 비활성화) : Blendernerf Run에 재현성 정보가 포함 된 로그 파일을 저장할지 여부File Format (기본적으로 NGP ) : 인스턴트 NGP 또는 DEFAUT NERF 파일 형식 컨벤션에서 카메라 파일을 내보낼지 여부Gaussian Points (기본적으로 비활성화) : 가우시안 스플릿을위한 points3d.ply 파일을 내보낼지 여부Gaussian Test Camera Poses (기본적으로 더미 ) : 더미 테스트 카메라 파일을 내보낼 것인지 또는 전체 테스트 카메라 포즈 세트 ( Gaussian Points 만 포함)Save Path (기본적으로 빈) : 데이터 세트가 생성 될 출력 디렉토리로의 경로 Gaussian Points 속성이 활성화되면 Blendernerf는 각 정점이 초기화 지점으로 사용되는 모든 가시성 메시 (렌더링 시간)에서 추가 points3d.ply 파일을 만듭니다. Vertex Colors는 사용 가능한 경우 저장되며 그렇지 않으면 검은 색으로 설정됩니다.
가우스 플래팅 저장소는 기본적으로 NERF 데이터 세트를 지원하지만 열차 및 테스트 데이터가 모두 필요합니다. Gaussian Test Camera Poses 의 Dummy 옵션은 빈 테스트 카메라 포즈 파일을 만듭니다. 경우 테스트 이미지가 필요하지 않습니다. Full 옵션은 기본 테스트 카메라 포즈를 내보내지 만 모든 테스트 렌즈를 포함하는 test 폴더를 별도로 렌더링해야합니다.
AABB 2의 정수 전력으로 제한되며 NERF가 광선을 추적하는 경계 박스 볼륨의 측면 길이를 정의합니다. 이 호텔은 Nvidia의 Instant NGP 버전 인 NERF와 함께 소개되었습니다.
File Format 속성은 NGP 또는 NERF 일 수 있습니다. NGP 파일 형식 컨벤션은 NERF One과 동일하며 Instant NGP에서 액세스 할 수있는 몇 가지 추가 매개 변수가 있습니다.
각 메소드에는 데이터 세트 이름에 해당하는 고유 한 Name 속성 (기본적으로 dataset 세트로 설정)을 가지고 있으며 각 메소드에 대한 Zip Filename이 생성됩니다. 공백, # 또는 / 와 같은 지원되지 않는 문자는 밑줄로 자동으로 대체됩니다.
아래는 각 방법에 특정한 속성에 대해 설명합니다 ( Name 속성은 이미 위에서 논의 된 이후에 제외됩니다).
Frame Step (기본적으로 3 으로 설정) : n (설정 섹션에 정의 된대로) = 교육 프레임이 등록되는 주파수Camera (항상 활성 카메라로 설정) : 교육 및 테스트 데이터 등록에 사용되는 카메라PLAY SOF : 프레임 메서드 연산자의 하위 집합을 재생하여 NERF 데이터를 내보내십시오.Frames (기본적으로 100 으로 설정) : 훈련 카메라에서 사용되는 교육 프레임 수Train Cam (기본적으로 빈) : 교육 데이터 등록에 사용되는 카메라Test Cam (기본적으로 비어 있음) : 테스트 데이터 등록에 사용되는 카메라PLAY TTC : NERF 데이터를 내보내기 위해 기차 및 테스트 카메라 메소드 작업자 Frames 의 훈련 프레임의 양은 장면 시작 프레임에서 시작하여 Train Cam 객체를 사용하여 캡처됩니다.
Camera (항상 액티브 카메라로 설정) : 테스트 데이터 등록에 사용되는 카메라Location (기본적으로 0 m 벡터로 설정) : 카메라보기가 샘플링되는 훈련 구체의 중심 위치Rotation (기본적으로 0 ° 벡터로 설정) : 카메라 뷰가 샘플링되는 훈련 구의 회전Scale (기본적으로 1 벡터로 설정) : XYZ 축에서 훈련 구체의 스케일 벡터Radius (기본적으로 4m 로 설정) : 훈련 구체의 반경 스칼라Lens (기본적으로 50 mm 로 설정) : 훈련 카메라의 초점 길이Seed (기본적으로 0 으로 설정) : 랜덤 카메라보기 샘플링 절차를 초기화하는 시드Frames (기본적으로 100 으로 설정) : 훈련 영역에서 샘플링 및 렌더링 된 교육 프레임 수Sphere (기본적으로 비활성화) : 임의의 뷰가 샘플링 될 훈련 구체를 보여줄지 여부Camera (기본적으로 비활성화) : 교육 데이터 등록에 사용되는 카메라 표시 여부Upper Views (기본적으로 비활성화) : 상부 훈련 반구에서만 샘플 뷰를 샘플링할지 (회전 변형)Outwards (기본적으로 비활성화) : 훈련 영역의 바깥쪽으로 카메라를 가리 려는지 여부PLAY COS : Sphere Method Operator에서 카메라를 재생하여 NERF 데이터를 내보내십시오. Sphere 및 Camera 특성을 활성화하면 BlenderNeRF Sphere 빈 객체와 BlenderNeRF Camera 객체가 각각 생성됩니다. 애드온 기능을 중단 할 수 있으므로이 이름을 가진 객체를 수동으로 만들지 마십시오.
Frames 의 훈련 프레임 양은 장면 시작 프레임에서 시작하여 BlenderNeRF Camera 객체를 사용하여 캡처됩니다. 마지막으로, 훈련 카메라가 제자리에 고정되어 수동으로 움직일 수 없다는 점을 명심하십시오.
NVIDIA는 Instant NGP를 사용하여 NERF 모델을 훈련시키는 방법에 대한 몇 가지 유용한 팁을 제공합니다. 추가 도움을 받으려면 저장소를 방문하십시오. 다음은 개인적인 경험에서 얻은 최적의 Nerfing 을위한 몇 가지 빠른 팁입니다.
AABB 장면 규모에 최대한 단단히 유지하면 더 높은 값은 훈련 속도를 늦출 것입니다.AABB 조정하면서 2의 전력을 유지하십시오.Vertical 카메라 센서 핏이 때때로 왜곡 된 NERF 볼륨으로 이어지면 가능하면 피하십시오. NVIDIA GPU에 액세스 할 수있는 경우 리포지토리에 제공된 지침에 따라 최적의 사용자 경험을 위해 자체 장치에 인스턴트 NGP를 설치할 수 있습니다. 그렇지 않으면 Google GPUS의 Colab 노트북에서 NERF를 Google 계정으로 무료로 실행할 수 있습니다.
이 Colab 노트북 (여기에서 다운로드 가능)을 열고 지침을 따르십시오.
이 애드온은 여러 달 동안 재미있는 측면 프로젝트로 개발되고 있으며 주로 MACOS에서 블렌더 버전입니다. 플러그인 기능 과 관련된 문제가 발생하면 문제에 대한 명확한 설명으로 GitHub 문제를 열어야합니다.
이 확장은 합성 데이터 세트 생성을위한 것이지만 실제 카메라에서 모션 추적 데이터를 가져 오기위한 기존 도구를 사용할 수 있습니다. 그러한 예 중 하나는 Open Source iOS 앱인 Shopify 의 추적 및 iPhone의 Arkit 세션에서 인접한 블렌더 플러그인 녹화 모션 추적 데이터입니다. 그러나 추적 데이터에는 드리프트 및 부정확성이 적용될 수 있으며, 이는 결과 NERF 재구성 품질에 영향을 줄 수 있습니다.
이 저장소가 연구에 유용한 경우 위의 전용 Github 버튼을 사용하여 Blendernerf를 인용하는 것을 고려하십시오. 예술 프로젝트 에이 확장을 사용했다면 소셜 미디어에서 #blendernerf 해시 태그를 사용하여 일부 작업을 공유하십시오! :)