
CUDA 11.8
CUDNN 8.7.0
GCC 11.2
GitHub Desktop
conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
python -m pip install --upgrade pip
pip install torch==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 install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
⛔바로 에러남.....
ERROR: Could not build wheels for tinycudann, which is required to install pyproject.toml-based projects
![]()
이전에 Tri-MipRT 환경설정할때 났던 에러여서 같은 방법으로 해결함
바로바로 x64 Native Tools Command Prompt 에서 설치하기!
- 시스템변수 Path에 'C:\Users\myName\anaconda3\Scripts' 추가
- x64 Native Tools Command Prompt for VS 2022 실행
conda init입력
==> For changes to take effect, close and re-open your current shell. <==
이거 나오면 껐다가 Prompt 다시 실행
이제 conda 명령어를 사용할 수 있음conda activate nerfstudio로 환경 활성화- 다시 tiny-cuda-nn 설치
- FFmpeg공식 홈페이지에서 Windows builds from gyan.dev 들어가서 ffmpeg-git-full.7z 다운로드
- 압축풀고 C:\Program Files\ffmpeg 폴더로 이동
- 환경변수 path에 ffmpeg경로(C:\Program Files\ffmpeg\bin) 등록
Colmap(3.9.1) 설치 Releases버전말고 vcpkg로 install할꺼임
1. COLMAP git에서 3.9.1-windows-cuda 버전 다운로드
2. 압축풀고 C:\Program Files\colmap 폴더로 이동
3. 환경변수 path에 colmap경로(C:\Program Files\colmap) 등록
환경구성 완료!👌
방법1> pip 사용해서 다운로드하기
pip install nerfstudio
방법2> git clone으로 최신 개발 버전 다운로드하기
git clone https://github.com/nerfstudio-project/nerfstudio.git
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .
nerfstudio가 업데이트 된다면 다시 실행해야함
ns-install-cli
⛔path 에러
nerfstudio 는 기본적으로 Home path를 사용하기 때문에 아래에서 파일을 관리한다고 함
C:\Users\사용자이름\data
에러코드에서 보이는 install.py:352를 들어가면
인데... 리눅스에선 HOME이 기본 디렉터리지만 난 윈도우고 심지어 E드라이브 사용중이라서...
시스템 변수 HOME을 만들어서 내 디렉토리(E:\NeRF)를 추가해준다.
그럼 이제 다시 ns-install-cli를 입력하면 정상작동한다!
pip install -e .[dev]
pip install -e .[docs]
이것까지 끝내면 nerfstudio 설치 완료!👌
- 여전히 nerfstudio 공식 홈페이지의 학습하기 페이지 따라하는중
- 내 data로 학습하기 부턴 xoft님도 알차게 보고있다
- joongwon00님의 글도 참고중
nerfstudio에서 나와서 (nerfstudio) E:\NeRF> 에서 다운받는다.
ns-download-data nerfstudio --capture-name=poster
⛔데이서 다운받으려는데 에러가 나요
gdown.exceptions.FileURLRetrievalError: Cannot retrieve the public link of the file. You may need to change the permission to 'Anyone with the link', or have had many accesses.
흠.... 에러나는 파일에서 url을 print해서 직접 들어가 봤지만 404에러 발생...
아니 코드에서 주는 url인데 왜 틀리나요💦
공식홈페이지에서 주는 Google Drive directly에 들어가니 poster가 없다.
ns-download-data nerfstudio --capture-name=kitchen
그래서 있는 kitchen으로 다운로드
다행이 잘 다운로드 된다.
ns-train nerfacto --data ./data/nerfstudio/kitchen
nerfacto는 nerfstduio 제작자가 만든 알고리즘이라고 한다.
다행이도 잘 학습되었다😊
이미지에서 초록색으로 표시된 주소를 클릭하면 Web Viewer로 들어간다.
Web Viewer에서 카메라 각도를 마음대로 추가해 rendering 동영상을 다운받을 수 있다.
회의실을 찍은 동영상을 E:\NeRF\data경로에 두었다.
공식홈페이지에 있는 Installing COLMAP Windows-CUDA 명령어 실행
git clone https://github.com/microsoft/vcpkg
cd vcpkg
./bootstrap-vcpkg.bat
./vcpkg install colmap[cuda]:x64-windows
⛔마지막 명령에서 에러
error: building colmap:x64-windows failed with: BUILD_FAILED
./vcpkg install colmap[cuda]:x64-windows 이 명령어 실행하면 이런 에러 등장....
검색해서 여러 방법을 시도해 봤지만 다 실패...
System32폴더에 colmap\lib폴더에 있는 파일을 옮겨도 보고, patch파일 만들라해서 만들어도 봤지만.... 해결되지 않았다.
./vcpkg install colmap
그냥 이렇게 했더니 성공함
vcpkg에 colmap폴더가 있는거 보면 잘 깔린것같다!
환경변수 path에 colmap경로(E:\NeRF\vcpkg\packages\colmap_x64-windows\tools\colmap) 추가
cmd창에선 colmap하면 잘 실행되는데 conda환경에선 에러가 나서 보니, 아까 vcpkg colmap:x64-windows bulid 에러 해결한다고 이것저것 따라해서 그런가보다...
conda install -c conda-forge colmap
이걸 했었어서...
conda uninstall colmap
으로 지웠다.
cmd창이나 conda환경에서나 colmap gui가 잘 실행된다.
ns-process-data video --data ./data/conference-room.mp4 --output-dir ./data/nerfstudio/conference-room
⛔ns-process-data 명령어를 실행하는데 에러 아닌 에러가 등장한다.
gpt는 메모리 오버플로우나 무한 루프 같은걸로 프로그램이 비정상적으로 중단되었다는데....
nerfstudio git issues 보고있으니 PyInit_pycolmap가 많이 보인다고 pip install --upgrade pycolmap 해보란 소리가 있었다.
vcpkg으로 colmap을 깔았으니 내 conda 환경엔 없어야 하는거 아닐까? 해서
pip uninstall pycolmap를 실행했더니 ns-process-data를 쳤을때 나오는 에러가 해결되었다!😁
git issues에 처음으로 댓글도 달아줬다. 뿌듯
다시 data process명령어 실행!
ns-process-data video --data ./data/conference-room.mp4 --output-dir ./data/nerfstudio/conference-room
잘 나왔네요. 라고 하고싶은데 불길한 빨간색.....
colmap이 25.86%의 프레임에서만 poses를 찾았다고 한다. 낮은 수준이라고...
영상이 좀 빠르게 흘러가서 흐릿한 이미지가 있는것같다.
다시 천천히 영상을 찍어서 올렸고
이번엔 포즈를 잘 찾았다.
내가 찍은 영상으로 만든 data를 학습하였다.
ns-train nerfacto --data ./data/nerfstudio/conference-room
모델은 똑같이 nerfacto 사용
잘 학습되었다~!
이건 학습했던 모델을 viewer로 다시 볼 수 있게 하는 명령어다.
ns-viewer --load-config {outputs/.../config.yml}
⛔콘솔에 있는 http://0.0.0.0:7007 에 들어가면 연결이 되지 않는다.
disabled local writer
![]()
http://localhost:7007/
왜인지 이 주소로 들어가야 연결이 된다.
⛔mipnerf로 학습하고 ns-viewer를 실행할때 depth가 없음
KeyError: 'depth'
![]()
depth를 못찾는다고 하고 viewer에서도 depth가 없이 보인다.
해결방법도 딱히 없는듯...
학습한 3D모델을 다른 tool에서도 사용할 수있게 mesh 파일로 만들어야한다.
다행이도 viewer에서 export버튼이 따로있어 viewer에서 생성해주는 명령어를 입력하기만 하면 된다.
ns-export poisson --load-config outputs/conference-room/nerfacto/2024-03-15_083208/config.yml --output-dir exports/mesh/ --target-num-faces 50000 --num-pixels-per-side 2048 --num-points 1000000 --remove-outliers True --normal-method open3d --use_bounding_box False --obb_center -0.0011565200 -0.5618804914 -0.0000005987 --obb_rotation 0.0000000000 0.0000000000 0.0000000000 --obb_scale 1.0000000000 1.0000000000 1.0000000000
아무것도 건들지 않고 기본값으로 설정해서 만든 명령어다.
⛔ _sqlite3 모듈이 없다는 에러가 난다.
ImportError: DLL load failed while importing _sqlite3: 지정된 모듈을 찾을 수 없습니다.
stack overflow를 참고해서
C:\Users\myName\anaconda3\Library\bin
에 있는 sqlite3.dll, sqlite3.exe를
C:\Users\myName\anaconda3\envs\nerfstudio\DLLs
내가 사용하는 conda 환경의 DLLs폴더로 복사했다.
잘 export되었다!
export 결과에서 이상값들이 많아 명령어 옵션을 수정했다.
ns-export pointcloud --load-config outputs/conference-room/nerfacto/2024-03-19_134522/config.yml --output-dir exports/pcd/conference-room/nerfacto_box/ --num-points 2000000 --remove-outliers True --normal-method open3d --use_bounding_box True --save-world-frame True --obb_center 0.1957430605 0.0393399931 0.0111813489 --obb_rotation -1.4570181614 -0.9951155291 0.9524088949 --obb_scale 2.0000000000 2.0000000000 2.0000000000
nerfstudio viewer에서 Use Crop에 체크하고 중앙의 좌표계를 조절해준다. ns-process-data video --data ./data/conference-room.mp4 --output-dir ./data/nerfstudio/conference-room --num-frames-target 1000 --matching-method exhaustive
default값인 sequential에선 colmap이 poses를 잘 찾지 못해 exhaustive method 사용함 (sequential 에선 1.26%를 exhaustive 에선 88.37%를 찾음) zip-nerf는 nerfstudio에 내장된게 아니라서 공식홈페이지 에서 따로 다운받아야 한다.
pip install git+https://github.com/SuLvXiangXin/zipnerf-pytorch
내 버전(torch2.1.2 / cuda11.8 / python 3.8) 에 맞는 torch_scatter 도 다운받아야한다.
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-2.1.2%2Bcu118.html
zip-nerf로 학습 시작
ns-train zipnerf --data ./data/nerfstudio/conference-room
⛔path가 없다는 에러 등장
AssertionError: Colmap path data\nerfstudio\conference-room3\sparse\0 does not exist.
에러에서 여기⬇가 없다는데
data\nerfstudio\conference-room3\sparse\0
ns-process-data로 만든 data의 path를 보면 이렇게⬇ 있다.
data\nerfstudio\conference-room3\colmap\sparse\0
그래서 colmap 폴더안의 sparse 폴더를 복사해 밖으로 꺼내놨더니 해결됐다.
⛔하나 해결하면 다음 에러 등장
OSError: Unable to open file: /configs/360.gin. Searched config paths: [''].
그래도 다행이 참고할 git issues가 있었다.
git clone https://github.com/SuLvXiangXin/zipnerf-pytorch.git
zipnerf-pytorch git clone하고,
E:/NeRF/zipnerf-pytorch에 있는 configs폴더 전체를 E:/NeRF로 복사해서 해결했다.
⛔ 다시 zipnerf 학습을 시도하니 이렇게 cuda_backend를 못찾겠다고 나왔다.
ModuleNotFoundError: No module named '_cuda_backend'
In call to configurable 'Model' (<class 'internal.models.Model'>)
아무래도 공홈에서 이 명령어 안쳐서 그런듯...
그래서 다시 install 하는데
pip install git+https://github.com/SuLvXiangXin/zipnerf-pytorch#subdirectory=extensions/cuda
⛔ 또 이런 에러 속 에러가...
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for cuda_backend
Running setup.py clean for cuda_backend
Failed to build cuda_backend
ERROR: Could not build wheels for cuda_backend, which is required to install pyproject.toml-based projects
아까 clone한 zipnerf-pytorch에서 다운로드 하려고 해도 똑같은 에러...
cd zipnerf-pytorch
pip install ./extensions/cuda
# 새로운 환경 만들기
conda create --name zipnerf python=3.9
conda activate zipnerf
python -m pip install --upgrade pip
cd zipnerf-pytorch
pip install -r requirements.txt
# torch 버전 2.0.1으로 깔아줌
pip uninstall torch torchvision functorch tinycudann
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
pip install git+https://github.com/SuLvXiangXin/zipnerf-pytorch#subdirectory=extensions/cuda
pip install git+https://github.com/SuLvXiangXin/zipnerf-pytorch
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-2.0.0%2Bcu118.html
# 근데 2.1.2로 설치됨🤷♀️
pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
# nerfstudio도 설치하기
cd ..
# git clone https://github.com/nerfstudio-project/nerfstudio.git
# 난 이미 clone해둔게 있어서 안함
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .
ns-install-cli
ns-train zipnerf --data ./data/nerfstudio/conference-room
학습완료~!
mip-nerf 360 데이터들을 다운받아 zip-nerf로 학습 시도하였다.
ns-train zipnerf --data ./data/Mip-NeRF_360/room
⛔학습 시작하는듯하다 에러발생
RuntimeError: CUDA error: device-side assert triggered "E:\NeRF\nerfstudio\nerfstudio\cameras\cameras.py", line 288, in is_jagged
zip-nerf git에 이에 대한 설명이 있었다.
nerfstudio의 ColmapDataParser는 축소 시 이미지 크기를 반올림하는데 이부분이 Mip-NeRF 360 dataset와 충돌하기 때문이라고 한다.
그래서 dataset을 nerfstudio에 맞게 다시 처리하거나(ns-process-data 참고), 축소하는 코드를 수정해야한다.
nerfstudio/nerfstudio/cameras/cameras.py, line 1009~1010을
self.height = (self.height * scaling_factor).to(torch.int64)
self.width = (self.width * scaling_factor).to(torch.int64)
에서
self.height = torch.ceil(self.height * scaling_factor).to(torch.int64)
self.width = torch.ceil(self.width * scaling_factor).to(torch.int64)
이렇게 수정하였다.
다시 학습 시도하니 잘 된다!
(mip-nerf 360 data 학습 끝난후에는 다시 처음으로 되돌려 놓았다.)
ns-process-data images --data ./data/Mip-NeRF_360/room/images --output-dir ./data/nerfstudio/room --skip-colmap --colmap-model-path E:/NeRF/data/Mip-NeRF_360/room/sparse/0/
이 명령어로 data에 transforms.json 파일을 만들어 줘야한다.transforms파일 생성 성공!
ns-export poisson --load-config outputs/conference-room/zipnerf/2024-03-19_112807/config.yml --output-dir exports/mesh/conference-room/zipnerf/ --target-num-faces 50000 --num-pixels-per-side 2048 --num-points 1000000 --remove-outliers True --normal-method open3d --use_bounding_box False --obb_center 0.0000000000 0.0000000000 0.0000000000 --obb_rotation 0.0000000000 0.0000000000 0.0000000000 --obb_scale 1.0000000000 1.0000000000 1.0000000000
⛔get_rgba_image가 없다니요?
NotImplementedError: get_rgba_image is not implemented for model ZipNerfModel
zipnerf 모델은 아직 구현되지 않았다구요?
git issues에도 최근 질문(24.03.19 수정기점 3주전)으로 올라와있지만 해결책은 없는듯하다.