NVIDIA Instant NeRF 설치 튜토리얼

NVIDIA Instant nerf

NVIDIA Instant NeRF는 3D 공간을 빠르게 생성하는 기술로, 2022년 최고의 발명품으로 TIME지에 선정됐다.

이 기술은 기존의 3D 스캔 방식보다 빠르고 정확하며, 더 적은 데이터로 3D 공간을 만들 수 있다.

공부하면서 설치부터 우여곡절이 많아 다시 공부한다는 생각으로 누군가에게 도움이 되면 좋을 것 같다.

먼저, CUDA가 설치되어 있는 지 명령 프롬프트 창을 실행하고 nvcc –version명령어를 입력하여 현재 CUDA 버전을 확인할 수 있습니다.

1. 명령 프롬프트창을 실해 후  먼저, NVIDIA CUDA버젼 확인: nvcc –version

 

 

PowerShell 7: nvcc –version

1_1. 만약 CUDA Toolkit이 설치되어 있지 않다면, CUDA Toolkit 11.6을 설치해야 합니다.

1_2. 몇 번의 시행 찾오를 격으면서 최신 버전 보다 해당 버전을 설치하길 권장 함. CUDA Toolkit의 최신 버전보다는 해당 버전을 설치하는 것이 좋습니다. OS 타입, 버전 및 인스톨 타입에 맞게 다운로드하십시오.

1_3. CUDA Toolkit을 사용하는 경우, 설치 타입을 선택할 때 “사용자 정의 설치(C)(고급)”을 선택하고, 설치 과정에서 설치할 컴포넌트를 선택할 수 있습니다.

2. NVIDIA OptiX SDK 7.6설치: https://developer.nvidia.com/designworks/optix/download

2_1. 사용자의 Windows 버전에 관계 없이 “Windows 10, 64-bit” 버전을 다운로드하여 설치하면 됩니다.

2_3. 시스템 환경 변수 편집 창에서 “새로 만들기” 버튼을 누르면 “변수 이름”과 “변수 값”을 입력할 수 있는 창이 나타납니다. ‘System Properties = ‘시스템 환경 변수 편집’ (검색)’

“시스템 변수” 창에서 “새로 만들기” 버튼을 클릭하여 변수 이름에 “Optix_INSTALL_DIR”를 입력하고 변수 값에 “C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6″를 설치한 경로를 입력합니다.

3. Visual Studio 2019 다운로드: https://learn.microsoft.com/en-us/visualstudio/releases/2019/history

3_1. 설치 버전은 3가지 중, ‘Download Community 2019’ 다운로드

3_2. 설치 과정 중 ‘C++를 사용한 데스크톱 개발’ 체크 후 설치.

4. Anaconda 다운로드: https://www.anaconda.com/products/distribution

4_1. 우리가 작업한 결과물을 실행하기 위해서는 Anaconda 프롬프트에서…




5. Git 설치 확인

 PowerShell 7

git clone –recursive https://github.com/nvlabs/instant-ngp

5_1. Git Clone 다운로드: https://git-scm.com/download/win

5_2. ’64-bit Git for Windows Setup.’ 설치 후 환경 변수 등록을 해줘야 합니다.

5_3. 환경 변수 등록. ‘시스템 환경 변수 편집 창’을 열고 >> 환경 변수(N) 클릭 >> 하단 ‘시스템  변수(S) 內 Path 더블클릭 >> 새로 만들기를 눌러 경로 추가 해준다.

5_4. 기존 설치가 되어 있을 경우 ‘환경 변수 편집에서 해당 경로 위치 확인한다.

6. CUDA 파일 복사: MSBuildExtensions 폴더의 ‘4개’ 파일 or ‘MSBuildExtensions’ 폴더 >> BuildCustomizations 폴더에 붙여넣기

  • 경로: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\extras\visual_studio_integration\MSBuildExtensions
  • 경로: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations

이걸로 설치 파일은 다 끝남. 휴~~

프롬프트를 실행한 후 다음과 같이 명령어를 작성합니다.

7. 다음과 같이 PowerShell 7 프롬프트를 실행한 후, 아래와 같은 명령어를 입력하면 C 드라이브에 ‘ngp’ 폴더를 생성할 수 있습니다.

PowerShell 7

cd\
mkdir ngp

8. Git 프롬프트 창에서 아래 와 같은 명령어를 작성하면 ‘instant-ngp 폴더가 생성 됨.

Git 프롬프트 창

cd\
cd ngp
git clone --recursive https://github.com/nvlabs/instant-ngp

8_1.  Git Prompt or Anaconda Prompt 창 실행 후, 다음 코드를 사용하여 폴더에 모든 하위 모듈을 복제하여 시작하게 된다.

  • git clone –recursive https://github.com/nvlabs/instant-ngp
  • Enter를 치면 아래 와 같은 진행 상황을 볼 수 있다.

8_2. 새롭게 생성된 ‘instant-ngp’ 디렉토리로 이동: cd instant-ngp

 

 

cd instant-ngp 

9. 이제 개발자 명령 프롬프트 ‘Developer Command Prompt for VS 2022 실행

10_1. 명령 프롬프트 창에서 ‘instant-ngp 디렉토리 이동

10_2. 위 명령어는 CMake로 생성된 빌드 파일을 사용하여 프로젝트를 빌드하는 명령어입니다. –build 옵션은 CMake가 생성한 빌드 파일을 실행하여 빌드하는 옵션입니다. build는 CMake가 생성한 빌드 파일이 있는 디렉토리를 나타냅니다. build디렉토리에서 config RelWithDebInfo구성으로 프로젝트를 빌드하며, 최대 16개의 스레드를 사용하여 병렬 빌드를 수행합니다.

Developer Command 프롬프트

 

 

cd\
cd ngp
cd instant-ngp
cmake . -B build
cmake --build build --config RelWithDebInfo -j 16

10_2. 명령어 ‘cmake –build build –config RelWithDebInfo -j 16’ 작성 후 엔터 –  오류가 뜬다. 아래 13번 ‘colmap’ 다운로드.




11. COLMAP-3.7-windows-cuda.zip 다운로드: https://github.com/colmap/colmap/releases/tag/3.7

11_1. 다운로드 후 압축을 풀고 ‘instant-ngp‘ 폴더에 붙여 넣기.

검색 창에서 “System Properties = ‘시스템 환경 변수 편집’ (검색)”창에서 새로 만들기를 눌러 ‘변수 이름 및 변수 값’ 등록(시스템 변수 값 위치 확인)

11_2. colmap 환경 변수를 등록 하기 위해서 환경 변수 하단 ‘시스템 변수(S)’ Path 더블 클릭 >> 새로 만들기 >> 위치 값 등록

11_3. 환경 변수 등록을 해야 함.. 기존 설치가 되어 있으므로 ‘환경 변수 편집 창 >> ‘COLMAP’ 클릭 >> 해당 경로 위치 확인(C:\ngp\instant-ngp\COLMAP)

12. Anaconda prompt 실행 후 아래 와 같이 명령어를 작성한다. ‘conda create -n ngp python=3.9’ 입력 후 프롬프트 화면에서 설치 여부가 나오면 ‘Y’를 눌러 진행한다.

Anaconda 프롬프트

 

cd\
cd ngp
cd instant-ngp
conda create -n ngp python=3.9
conda activate ngp
pip install -r requirements.txt

12_1. ‘conda activate ngp’ 명령어를 통해 가상 환경이 실행된다.

13. Open EXR 다운로드: https://www.lfd.uci.edu/~gohlke/pythonlibs/#openexr

13_1. 버젼: OpenEXR-1.3.2-cp39-cp39-win_amd64.whl

13_2. 다운로드 후 루트 폴더(instant-ngp)에 붙여 넣기

 

끝, 이제 촬영 된 결과물을 아래 디렉토리 처럼 위치 시킴 “예”

14. 루트 디렉토리 폴더의 ‘data’폴더에 폴더를 새로 만들어 촬영 된 파일을 넣는다.

14_1. Anaconda Prompt 창에서 아래와 같이 타이핑한다. Enter를 친 후 Y를 눌러 진행한다.

예) python scripts/colmap2nerf.py –colmap_matcher exhaustive –run_colmap –aabb_scale 16 –images data/폴더명(sky)

 

‘transform.json’을 생성하기 ‘전’에 파일 구조

📂instant-ngp/ # this is root
├── 📂data/
│	├── 📂sky/
│	│	├── 📜img_001.jpg
│	│	├── 📜img_002.jpg

14_2. 촬영 된 각각의 파일에 대한 카메라 위치 값을 분석한다. GPU 구동 시작.

15. instant-ngp폴더에 ‘transforms.json‘ 파일이 생성된다.

15_1. 새롭게 생성된 .json 파일 및 촬영 파일을 아래 구조와 위치 시킨다.

 

 

transform.json 생성 ‘‘ 파일 구조

📂instant-ngp/ # this is root
├── 📂data/
│	├── 📂sky/
│	│	├── 📜transforms.json/
│	│	├── 📂data/
│	│	│	├── 📂sky/
│	│	│	│	├── 📜img_001.jpg
│	│	│	│	├── 📜img_002.jpg

15_2. Anaconda Prompt 창에서 아래와 같이 타이핑 한다.

예) C:\ngp\instant-ngp\build\instant-ngp.exe –scene data/폴더 명

16. 성공_작업한 파일 데이터는 Pix4d 예제 샘플을 이용하여 생성한 결과물입니다.

재 실행 시

12. Anaconda prompt 실행

Anaconda 프롬프트

 

cd\
cd ngp
cd instant-ngp
conda activate ngp
python scripts/colmap2nerf.py --colmap_matcher exhaustive --run_colmap --aabb_scale 16 --images data/폴더명(sky)
C:\ngp\instant-ngp\build\instant-ngp.exe --scene data/폴더 명

12_0. 비디오 추출 명령어: python scripts/colmap2nerf.py –video_in ‘su/su.mp4’ –video_fps 2 –run_colmap –aabb_scale 16 –overwrite

12_1. 위 ‘명령어’ 입력(이 창을 닫으면 실행 창도 닫힘, 주의)

12_2. 새 창이 열리고 실행 된 모습